Controles de fluxo em Swift
- #Swift
Swift é uma linguagem de programação que foi projetada para ser moderna, segura, eficiente e de alto desempenho. Portanto Swift oferece vários controles básicos de fluxo que permitem controlar a execução do seu código com base em condições específicas. Neste artigo, vamos explorar as estruturas condicionais e de repetição em Swift e como usá-las em seus programas.
1- Conceito básico dos escopos:
Tudo o que for declarado dentro de uma chave { de inicio e outra de fim } , cria um escopo independente a aquele que tinha anteriormente.
Exemplo:
var a = 10
do {
var b = 20
print(a, b)
}
print(b)
/* Não será possível printar essa váriavel porque "var b = 20" está sendo declarado dentro do escopo das chaves de início e fim do "do". Qualquer estrutura que esteja dentro de duas chaves cria o seu própio escopo, por isso o que está sendo declarado nelas não afeta o que está fora do escopo. */
2 - Estrutura de controle if:
São maneiras que nós temos de conduzir o fluxo do programa para um lado ou para o outro, em função de uma condição que nós iremos avaliar e que vai determinar para onde o nosso programa deve ir ou o fluxo do mesmo.
Exemplo:
Essas são imagens tiradas do APP swift playgrounds, disponível para Mac e iPad que deixa o aprendizado de Swift mais divertido.
3- Estrutura de controle Switch:
A sentença Switch, faz parte do importante processo de fluxo de controle do nosso código o qual nos permite de uma forma mais limpa e clara visualizar condições lógicas assim como fazemos com o if e else. Vale ressaltar que no switch nós temos que passar todos os possíveis casos da variável que está sendo validada.
Exemplo:
var myNumber = 4
switch myNumber {
case 1:
print("number is 1")
case 2:
print("number is 2")
case 3:
print("number is 3")
case 4:
print("number is 4")
}
/* Essa é a estrutura de uma setência de switch case, mas se tentarmos rodar desse jeito nosso código irá dar um erro, porque não especificamos todos os casos, o que seria impossível pois definimos a variável myNumber como inteiro, então existe milhões de possibilidades.
Como nessa situação nós não podemos escrever todos os casos, então devemos terminar com a instrução padrão "default". Exemplo logo á baixo: */
switch myNumber {
case 1:
print("number is 1")
case 2:
print("number is 2")
case 3:
print("number is 3")
case 4:
print("number is 4")
default:
print("unknown")
}
IMPORTANTE:
O switch case adiciona uma camada a mais de segurança no código, não conseguimos copilar sem antes atender todos os cenários.
O switch case é sequencial, atende em ordem cada um dos casos, ao conseguir atender a um cenário ele sai fora do switch e nem executa os outros cases.
4- Bucles for in / Laço de repetição:
Repete um número determinado de vezes ou de voltas de uma instrução que esteja dentro do escopo do mesmo. Também nos permite capturar em uma constante os diferentes valores que irão mudar em cada uma das voltas desse laço de repetição.
Exemplo de um for in:
for number in 1...10 {
if number % 2 == 0 {
print(number)
}
}
/* No exemplo acima podemos observar a sintaxe de um for, o "number" que vem logo após a palavra for, nada mais é do que uma variável que você poderá mudar dependendo do contexto em que esteja. Após nós temos o "in" que faz parte dessa sintaxe e logo em seguida temos o número de vezes que será repetido o código que ficará dentro do escopo, nesse caso usamos um range(ou rango em espanhol). */
Exemplo de um where utilizado no for:
for number in 1...10 where number % 2 == 0 {
print(number)
}
/* No exemplo acima nós estamos colando uma condição antes de entrar no nosso escopo, o que acaba sendo mais eficiente do que vimos no exemplo anterior. Mais eficiente em questão de quantidade de código e também é mais eficiente para o copilador já que o for só vai ser repetido o número de vezes que se respeite essa condição. Que no caso do exemplo será repetido apenas 5 vezes esse for que são ás vezes em que temos um número que dividido por 2 o resto da divisão dele será igual a zero. */
5- Estrutura de Controle while:
O controle while é usado para executar um bloco de código enquanto uma condição específica for verdadeira. Ele verifica a condição antes de entrar no bloco de código. Se a condição for falsa desde o início, o bloco de código nunca será executado.
Exemplo:
var contador = 0
while contador < 5 {
print("Contador: \(contador)")
contador += 1
}
// Neste exemplo, o código dentro do bloco while será executado enquanto contador for menor que 5.
6- Estrutura de Controle repeat-while:
O controle repeat-while é semelhante ao while, mas garante que o bloco de código seja executado pelo menos uma vez antes de verificar a condição. A condição é verificada após a primeira execução.
Exemplo:
var contador = 0
repeat {
print("Contador: \(contador)")
contador += 1
} while contador < 5
/* Neste exemplo, o bloco de código é executado pelo menos uma vez antes de verificar se contador é menor que 5. Se a condição for verdadeira, o bloco de código será executado novamente. */
Esses são alguns dos controles básicos de fluxo em Swift os quais podemos usar para controlar o comportamento do nosso programa com base em diferentes condições e iterações. Eles são fundamentais para a lógica de programação em Swift e em muitas outras linguagens de programação.
Me diz aí o que mais você acrescentaria?