Swift, uma linguagem de programação lançada pela Apple em 2014, rapidamente se tornou uma das linguagens de crescimento mais rápido da história . Se você estiver interessado em criar aplicativos para macOS ou iOS, Swift é a melhor escolha de idioma na minha opinião.

Neste tutorial, nos familiarizaremos com o Swift , aprendendo suas operações básicas e praticando com alguns exemplos relevantes. Vamos começar!

Instalação

O Swift está disponível no Mac, Windows e Linux na versão 5.4.1 . Instalar o Swift é fácil usando Xcode, o fluxo de trabalho gratuito da Apple para desktop e desenvolvimento iOS nativo.

Instalar Swift Xcode Apple Playground

Você pode baixar o Xcode na App Store dentro do macOS ou no site oficial do Swift . Se você estiver usando Windows ou Linux, baixe e instale o Swift em seu site oficial.

Se não quiser instalar o Swift em seu computador, você pode tentar um Playground para Swift online .

Abra um Xcode Playground

Depois de instalar o Swift em seu computador, abra um Playground usando Xcode, onde você pode começar a escrever seu código.

Open Xcode Playground

Xcode New Playground Display

Tipos de dados

Precisamos saber quais tipos de dados são suportados no Swift para entender o que podemos realizar. Usaremos os seguintes seis tipos de dados:

Tipo de dados Exemplo Representa Objetivo
Personagem s , w Um caractere Unicode de 16 bits S edição única de caracteres
String linguagem rápida Dados de texto S avar, atualizar, modificar um texto/mensagem
Int 5 , -5 Um número inteiro Representa qualquer número inteiro
Flutuante 5.5 , -5.5 número de ponto flutuante de 32 bits Representa um número de ponto flutuante de 32 bits
Duplo 5.5 , -5.5 número de ponto flutuante de 64 bits Representa um número de ponto flutuante de 64 bits
Bool true , false Representa estados (verdadeiro/falso) Fornece valor verdadeiro/falso para usar em nosso programa

Variáveis ​​

Escrever um programa requer muitos dados. As variáveis ​​fornecem uma maneira de rotular os dados, facilitando sua modificação e referência.

Estrutura variável

Usaremos a seguinte estrutura para formatar uma variável: Keyword variableName: dataType . Você pode ver a estrutura usada no bloco de código abaixo:

 var name: String

Quando definimos uma variável usando a estrutura acima, não colocamos nenhum dado na variável inicialmente. Vamos adicionar dados na variável para modificá-la de um null , que representa um valor vazio na programação, para uma string :

 var name: String="nerdjfpb"

Posteriormente, podemos consultar o código acima conforme necessário para acessar os dados. Por exemplo, print (name) mostrará nerdjfpb no console do Playground. Você pode pensar em imprimir algo como exibir o resultado. Podemos ver qual valor está dentro do nome.

Podemos alterar o valor da variável facilmente:

 name="Nerd Jfpb"

Ao escrever em Swift, não precisamos especificar o tipo de dados quando começamos com seu valor. Por exemplo, no código a seguir, Swift entende que o nome é uma string:

 var name="nerdjfpb"

Se escrevermos o bloco de código abaixo, receberemos um erro. Como o Swift é uma linguagem digitada, não podemos alterar o tipo de dados de uma variável:

 name=5

Imagine que você deseja fazer referência a uma variável por meio de sua programação, mas não deseja alterar seu valor. O Swift fornece um método específico para referenciar variáveis.

Variáveis ​​de referência

Para fazer referência a uma variável, usaremos a seguinte estrutura: Keyword (let) variableName dataType=Value , que pode ser visto no exemplo abaixo:

  let ownerName="Nerdjfpb"
 

Só podemos definir o valor de ownerName uma vez e não podemos alterá-lo. O valor permanecerá constante durante todo o programa.

Operadores

Para usar o Swift, precisamos entender estes operadores básicos :

Operadores de comparação

Operador Exemplo Explicação
== (Igual
para)
variable1==variable2 Retorna s true
se as variáveis ​​forem iguais
!= (Não
igual a)
variável1!=variável2 Retorno s
verdadeiro se as variáveis ​​não forem iguais
> (Maior
que)
variable1> variable2 Retorna s true se a variável1 for maior que a variável 2
>= (Maior
que ou igual a)
variable1>=variable2 Retorna s verdadeiro se a variável1 for maior que ou
variável igual 2
< (Menos
que)
variable1 Retorna
verdadeiro se a variável1 for menor que a variável 2
<= (Menos
que ou igual a)
variable1 <=variable2 Retorna verdadeiro se a variável1 for menor ou igual à variável 2

Operadores aritméticos

Operador Exemplo Explicação
+ (Adição) print (variable1 + variable2) imprima a adição da variável1 e
variável2
- (Subtração) print (variable1-variable2) imprima a subtração de
variável2 da variável1
* (Multiplicação) print (variable1 * variable2) imprima a multiplicação de variável1 e variável2
/ (Divisão) print (variable1/variable2) imprima a divisão de
variável1 por variável2
% ( Restante) print (variable1% variable2) imprima o lembrete ainder da variável1 e
variável2

Fluxo de controle e condicionais

Programar envolve tomar decisões complexas. Precisamos aprender a tomar decisões em Swift. Suponha que estejamos tentando determinar se um número é par ou ímpar. Para fazer isso, precisamos verificar se um determinado número pode ser dividido por dois sem deixar resto.

Em Swift, usamos % para encontrar o resto e determinar se é ou não igual a zero. Digamos que temos um var num=15 . Vamos escrever condições para descobrir se o número é par ou ímpar.

Estrutura restante

Para encontrar o restante, siga a estrutura abaixo:

 Palavra-chave (condições) { //código para execução aqui
}

A palavra-chave que usaremos é if . A condição será num% 2==0 , e o código para execução será a leitura de impressão O número fornecido é um número par :

 var num=5
if (num% 2==0) {
imprimir ("dado número é um número par")
}

Digamos que também desejamos informar ao usuário se o número não for par. Essa parte é bem fácil! Para cada instrução if , podemos escrever uma instrução else .

If/else estrutura da instrução

Nosso código usará a estrutura abaixo:

 if (condições) { //Execute o código dentro do bloco if
} senão { //Execute o código dentro do bloco else
}

Você verá a estrutura e as condições no bloco de código abaixo:

 var num=5
if (num% 2==0) {
imprimir ("O número dado é um número par")
} senão {
imprimir ("Um número dado é um número ímpar")
}

Devido ao valor num , a instrução if funcionará ou a instrução else funcionará. Você só pode satisfazer um de cada vez.

Vamos estender o problema. Suponha que desejamos ignorar todos os números negativos. Executaremos uma instrução if/else que exclui números abaixo de zero.

Siga a estrutura abaixo para resolver o problema:

 if (condições) { //Execute o código dentro do bloco if
} mais se (condições) { //Execute o código dentro de else if block
} senão { //Execute o código dentro do bloco else
} if (num <0) { imprimir ("dado número é um número negativo")
}
else if (num% 2==0) { imprimir ("dado número é um número par")
}
senão { imprimir ("Um número dado é um número ímpar")
}

Muito fácil, certo?

Agora, suponha que você queira mostrar se um número é positivo ou negativo e se o número é par ou ímpar:

 var num=3 if (num==0) { print ("O número dado é zero")
} else if (num <0) { imprimir ("dado número é um número negativo")
} senão { imprimir ("dado número é um número positivo")
} if (num% 2==0) { imprimir ("O número dado é um número par")
}
senão { imprimir ("Um número dado é um número ímpar")
}

Você receberá a seguinte saída:

 O número dado é um número positivo
O número dado é ímpar

Loops

Imagine que você queira escrever todos os números de zero a 100. Deve ser bastante fácil, certo? E se eu lhe dissesse para escrever todos os números de zero a 1.000? Ou zero a 10.000? Seria difícil, enfadonho e demorado.

Nessa situação, a programação de computador vem ao resgate. Você pode programar seu computador para executar uma determinada tarefa por um determinado período de tempo e pode dizer a ele o que fazer. Pediremos ao computador para escrever de zero a 100 no Swift Playground usando um loop.

Em um loop, podemos fornecer tarefas sequenciais e condições de interrupção. Existem vários loops disponíveis em Swift , incluindo for-in , while e repeat-while .

Cobriremos cada loop e realizaremos a mesma tarefa usando cada um. Suponha que precisemos contar de zero a 100.

estrutura for-in

Use o seguinte layout para construir um loop for-in :

 palavra-chave counterVariable em lowerLimit.. upperLimit {
//código para execução
}

Usaremos for como palavra-chave e índice de contagem como counterVariable . O lowerLimit é o menor número no qual começamos a contagem, e o upperLimit é o maior número no qual paramos de contar:

 para contagem em 1... 100 { print (count)//para impressão
}

Agora, vamos realizar a mesma tarefa com o loop while .

while estrutura de loop

Configure seu loop while seguindo a ordem abaixo:

 condição de palavra-chave {
//código para execução
}

A palavra-chave que usaremos é while , e a condição que especificaremos é para interromper o loop. Em nosso caso, paramos quando a contagem é igual a 100.

 var count=1
enquanto (contagem <=100) { print (count)//para impressão contagem=contagem + 1//para valor de incremento
}

Se não incrementarmos o valor usando count=count + 1 , o loop while continuará indefinidamente, eventualmente travando o programa. Um computador lento pode ser difícil de reiniciar, então certifique-se de ler o código novamente antes de executar o loop while para certificar-se de incluir um ponto de parada.

Estrutura

repetir enquanto

No loop while acima, verificamos a condição primeiro e, em seguida, executamos o código interno. Considere o mesmo exemplo de código visto acima com 101 como entrada:

 var count=101
enquanto (contagem <=100) { print (count)//para impressão contagem=contagem + 1//para valor de incremento
}

Nesse caso, não receberemos saída porque a condição não foi atendida.

Vamos tentar nosso exemplo novamente usando repetir enquanto . Um loop repeat-while primeiro executa a tarefa e, em seguida, verifica as condições, operando essencialmente na ordem inversa do loop while :

 var count=101
repetir { imprimir (contar) contagem=contagem + 1
}
enquanto (contagem <=100)

A saída do código repetir enquanto é 101 .

Felizmente, agora você está familiarizado com os loops Swift!

Aqui está uma questão para você resolver: encontre todos os números pares entre um e 100 e imprima-os no console. Seu código concluído será semelhante ao bloco de código abaixo:

 para contagem em 1... 100 { if (contar% 2==0) { imprimir (contar) }
}

Tente realizar a mesma tarefa usando um while e repeat-while sozinho.

Funções

Para entender as funções, revisitaremos os loops. Os loops nos permitem escrever programas que podem repetir a mesma tarefa continuamente.

Uma função nos permite reutilizar um pedaço de código quando necessário. Podemos escrever uma instrução if/else ou um loop dentro de uma função. Geralmente, uma função pega alguns parâmetros e retorna um resultado usando esses parâmetros.

Vejamos um exemplo. Usando uma função, recebemos o resultado da soma de dois números e podemos alterar os valores de entrada o quanto quisermos. Observe que uma função só funciona quando você a chama e pode chamá-la com a frequência necessária.

Estrutura da função

Usaremos a seguinte estrutura para completar este exemplo:

 palavra-chave functionName (parâmetros: tipo de parâmetros) → returnType { //bloco de código aqui
}

Abaixo, você encontrará o código completo com a palavra-chave, nome da função, parâmetros e tipo de retorno:

 func sumOfTwo (num1: Int, num2: Int)-> Int { retornar num1 + num2
}
var total=sumOfTwo (num1: 10, num2: 20)
imprimir (total)

O bloco de código abaixo demonstra a flexibilidade das funções. Observe que cada linha inclui diferentes valores numéricos:

 func sumOfTwo (num1: Int, num2: Int)-> Int { retornar num1 + num2
} var firstFunc=sumOfTwo (num1: 10, num2: 20)
imprimir (firstFunc) var secondFunc=sumOfTwo (num1: 5, num2: 7)
imprimir (secondFunc) var thirdFunc=sumOfTwo (num1: 12, num2: 51)
imprimir (thirdFunc)

Podemos chamar a função repetidamente com novos valores, recebendo novos resultados a cada vez!

No entanto, podemos simplificar muito nosso código. Se estivermos apenas imprimindo o resultado, podemos melhorar o código encurtando-o:

 func sumOfTwo (num1: Int, num2: Int)-> Void { imprimir (num1 + num2)
} sumOfTwo (num1: 10, num2: 20)
sumOfTwo (num1: 5, num2: 7)
sumOfTwo (num1: 12, num2: 51)

O código usado aqui nos dará o mesmo resultado que o código escrito acima. Podemos imprimir diretamente da função porque não estamos usando esse valor em nenhum outro lugar.

Você deve ter notado que colocamos Void em vez de Int no lugar de returnType . Void significa que não estamos retornando nada e apenas realizando a tarefa interna. Você pode fazer o mesmo executando o seguinte código:

 func emptyReturn () {}
função emptyReturn ()-> Void {}
função emptyReturn ()-> () {}

Você também pode escrever uma função sem nenhum parâmetro:

 func goodMorning () { imprimir ("Bom dia")
} bom Dia()

Veja se escrevemos um log sem passar nenhum valor para dentro.

Vamos usar o que aprendemos e tentar um exemplo difícil! Suponha que estejamos construindo uma mini calculadora usando uma função que pode somar dois números e subtrair dois números:

 func sumOfTwo (num1: Int, num2: Int)-> Int { retornar num1 + num2
} função substractOfTwo (num1: Int, num2: Int)-> Int { retornar num1-num2
} func miniCalculator (num1: Int, num2: Int, work: String) { if (work=="+") { imprimir (sumOfTwo (num1: num1, num2: num2)) } else if (work=="-") { imprimir (substractOfTwo (num1: num1, num2: num2)) } senão { print ("Esta função de operador ainda não está disponível.") }
} miniCalculador (num1: 12, num2: 21, trabalho:"+")
miniCalculador (num1: 12, num2: 5, trabalho:"-")

A tarefa final é imprimir todos os números pares e ímpares em uma determinada matriz usando a seguinte função:

 func oddOrEven (lowerLimit: Int, upperLimit: Int) { para índice em lowerLimit... upperLimit { if (índice% 2==0) { print ("\ (índice) é um número par") } senão { print ("\ (índice) é um número ímpar") } }
} oddOrEven (lowerLimit: 1, upperLimit: 100)

Existem muitas maneiras diferentes de escrever o código acima, mas optei por mantê-lo simples.

Conclusão

Agora, você deve ter um entendimento claro de como funciona a linguagem de programação Swift. Se você entender o básico corretamente, estará pronto para escrever um código mais complicado em Swift.

Lembre-se de que esta é uma maratona, não uma corrida de velocidade. Melhorar suas habilidades de codificação requer que você pratique diariamente. Certifique-se de verificar os documentos oficiais do Swift para saber mais sobre o Swift.

A postagem Dominando os fundamentos do Swift apareceu primeiro em LogRocket Blog .