0% acharam este documento útil (0 voto)
424 visualizações197 páginas

02 - Aprendendo A Programar - Linguagem Swift

Enviado por

leaodefogo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
424 visualizações197 páginas

02 - Aprendendo A Programar - Linguagem Swift

Enviado por

leaodefogo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Aprendendo a Programar - Linguagem Swift

Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Copyright © ​2020​ de ​Tito Petri


Todos os direitos reservados. Este ebook ou qualquer parte dele
não pode ser reproduzido ou usado de forma alguma sem
autorização expressa, por escrito, do autor ou editor, exceto pelo
uso de citações breves em uma resenha do ebook.

Primeira edição, 2020


ISBN 0-5487263-1-5
www.titopetri.com

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 2


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

ÍNDICE
1. O Que Aprenderemos neste Livro? 8

2. Linguagem de Programação Swift 12

3. Entenda bem este Material 13


a) Quadro de Exemplos de Código 13
b) Códigos e Projetos para Baixar 14
c) Curso Online de iOS com Swift 14

4. Compilador Online de Swift 15

5. Xcode IDE 16

6. Download e Instalação do Xcode 17

Clique em Obter / Get para fazer o download e a instalação


do Xcode. 18

7. Escrevendo o Primeiro Código 19

8. Regras Básicas para Programar 23


a) Case Sensitive 23
b) Aspas Duplas 23
c) Caracteres com Acentuação 27
d) Camel Case 28
e) Limites ou Escopos 29

6. Variáveis no Swift 32

7. Constantes no Swift 39

7. Comentando o Código 41

9. Operações com Strings 44

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 3


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

a) uppercased() 44
b) count 44
c) replacingOccurrences(of: a, with: b) 44

9. Comandos Unicode para Strings 46

10. Convertendo Tipos de Variáveis 48


a) String para Int 48
b) Int para String 48

11. Operações Matemáticas 51


a) Módulo 52
b) Raiz Quadrada - sqrt() 53
c) Potência - pow() 54

12. Arredondamento de Decimais 55


a) round() 56
b) floor() 57
c) ceil() 57

14. Ângulos e Pi Radianos 58

15. Seno Cosseno e Tangente 59

16. Operadores de Comparação 60

14. Operadores de Atribuição 62

15. Números Aleatórios (Randômicos) 64

17. Operadores Lógicos 66


a) Operador And ( && ) 66
b) Operador Or ( || ) 67

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 4


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

c) Operador Not ( ! ) 68

18. Condição If 69

19. Escopos ou Limites 75

20. Projeto #1 - Jogo do Par ou Ímpar 78

21. Estrutura de Condição Switch 82

22. Projeto #2 - Jo Ken Pô 84

23. Enumeradores 88

23. Repetição for 92


a) Decrementando o Contador - reversed() 95
b) Incrementando o Contador por Intervalos 95

24. Repetição while 98

25. Arrays, Listas ou Vetores 101

26. Array Multidimensional ou Matriz 105

27. Métodos do Array 109


a) Atributo count 109

b) Último Item do Array - last 110

c) Primeiro Item do Array - first 110

d) Ordenando os Arrays em Swift 111

28. Métodos de Strings 113


a) Método count 113

30. Percorrendo uma Lista com for 114

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 5


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

31. Projeto #3 - Sorteio de Nomes 117

28. Adicionando e Removendo Itens do Array 120

33. Projeto #4 - Busca por Nome e ID 123

34. Métodos e Procedimentos 126

35. Função ou Método com Retorno 130

37. Projeto #6 - Números Primos 138

38. Classes no Swift 142

39. Hierarquia de Classes 149

40. Modificadores de Acesso 152


a) Public 152
b) Private 152
c) Default 153
d) Protected 153

42. Sobrescrita e Sobrecarga de Método 154


a) Sobrescrita de Método - @Override 154
b) Sobrecarga de Método - Overload 155

43. Modelo de Dados 157

44. Projeto #7 - Cadastro e Busca 160

42. Banco de Dados 165

43. Armazenamento de Dados 170

45. Linguagens de Programação 172

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 6


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 7


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

1. O Que Aprenderemos neste Livro?


Neste material você vai aprender sobre ​Programação de
Softwares,​ começando do zero, até criar suas ​Sete
Primeiras Aplicações​, com a ​Linguagem Swift​.

O objetivo deste Livro é fazer com que o aluno aprenda a


parte teórica da ​Lógica de Programação​, conhecendo os
principais termos, conceitos e a técnica de se criar
algoritmos e programas de computador.

Quando falamos sobre ​Códigos de Programação​,


muitos pensam que a parte teórica não é muito importante
e acabam apenas decorando ou copiando códigos.

Através deste Livro, vou te ensinar que programar é o


mesmo que criar um método para ​solucionar algum
problema​. Esta é uma grande habilidade de raciocínio
que você levará para sua vida.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 8


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Ao final deste material, você terá adquirido novos


conhecimentos em:

● Lógica de Programação
● Criação de Algoritmos
● Linguagem de Programação Swift
● Criação do seu Primeiro Aplicativo iOS

Diga "Olá!" para o


Felpudo​!

O Passarinho
Desenvolvedor mais
Geek,​ ​Nerd e
Intelectual que você
jamais conheceu!

Felpudo

O Felpudo vai nos ensinar tudo sobre programação,


passando as idéias e conceitos de forma ilustrada, lúdica
e divertida.

Este Livro busca trazer uma experiência nova e mais


divertida para o aprendizado, para que um jovem ou até
uma criança aprenda a programar e adquira um maior
gosto pela prática.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 9


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Criaremos ​sete Projetos desafiadores, para treinar a


técnica de desenvolver programas com a Linguagem
Swift, desde o conceito inicial, até a aplicação
funcionando.

Para isso, vamos utilizar o Xcode, o programa


desenvolvido pela Apple para criar aplicações para seus
dispositivos Mac OS (computadores e notebooks), iOS
(iPhones e iPads), tvOS (Apple TV) e até watchOS (Apple
Watch).

Ao final do material, também vou te ensinar a ​Instalar ​e


dar os Primeiros Passos no ​Xcode IDE​, para que você
crie o seu ​Primeiro Aplicativo iOS ​utilizando o Swift.

O conhecimento adquirido com este material, vai te dar


um ótimo embasamento para aprender qualquer outra
linguagem de programação como ​Java, C++, Swift​, ​C#
(C-Sharp)​, ​Python​ ou ​JavaScript​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 10


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Programar é uma valiosa habilidade que nos próximos


anos se aplicará em praticamente todos os campos e
áreas de atuação.

Lembre-se de que os conhecimentos em Lógica e


Algoritmo, são aplicados ao desenvolvimento de ​todo
tipo de Aplicação Digital​, como em ​Videogames​,
Criação de ​Sites,​ ​Sistemas​, Produtos Eletrônicos​,
Robótica​, e outros!

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 11


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

2. Linguagem de Programação Swift


Swift é a Linguagem criada pela Apple Computers, para
que os desenvolvedores possam criar aplicações para
seus dispositivos. É uma linguagem poderosa e muito fácil
de entender, pois o código é bem simplificado, além do
Xcode nos dar boas dicas e pistas enquanto estamos
programando.

Acompanhando este material, você vai aprender rápida e


metodicamente tudo sobre o fundamento da ​Lógica de
Programação​, já aplicada à linguagem ​Swift​.

Criaremos juntos ​Sete Programas Completos em Swift


enquanto aprendemos Swift e a Lógica de Programação.
Veja abaixo os algoritmos que iremos desenvolver:

1. Par ou Ímpar
2. Jokempô
3. Sorteio de Nomes
4. Buscar Nome
5. Validação do CPF
6. Números Primos
7. Criar e Consultar Cadastro

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 12


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

3. Entenda bem este Material


Antes de sair escrevendo as linhas de código, é muito
importante entender alguns conceitos fundamentais da
programação em geral.

Preste atenção nestes pontos para conseguir entender e


absorver bem este material.

a) Quadro de Exemplos de Código


Todos os códigos que aparecem pela primeira vez,
​ egrito ​dentro do quadro de
estarão destacados em n
exemplo.

Exemplo:

print​("Olá! Vamos Programar em Swift!")

let​ pais ​=​ "Brasil"

Os códigos que aparecerão no quadro de exemplo


procuram mostrar apenas os novos comandos, que
dificilmente vão se repetir.

Comandos referentes ao assunto que estamos


abordando, aparecerão sempre em ​negrito​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 13


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

b) Códigos e Projetos para Baixar


Todos os códigos e projetos desenvolvidos durante este
Livro estarão disponíveis através do ​link​ abaixo:

http://www.titopetri.com/recursos/AnexosLivroSwift.zip

c) Curso Online de iOS com Swift


Este Livro também foi desenvolvido em formato de
videoaulas ​online​. Caso você queira, poderá assistir às
videoaulas, enquanto acompanha por este Livro.

Acesse a página do curso online de programação em


Swift e aprenda junto com o Livro a programar. Use este
como seu material de apoio.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 14


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

4. Compilador Online de Swift


Existem duas maneiras diferentes de programar em Swift.

A Primeira é utilizando o Xcode IDE, a ferramenta oficial


da Apple para criar aplicativos. Só funciona no MacOS.

Lembre-se que se você quiser se tornar um


Desenvolvedor iOS, inevitavelmente terá um dia que
adquirir um computador Mac e um iPhone.

Porém, por enquanto, se você ainda não possui um


computador Mac ou Sistema MacOS, pode utilizar um
compilador online de Swift. Segue uma sugestão:

https://www.tutorialspoint.com/compile_swift_online.php

Lembrando que este compilador utiliza uma versão


anterior do Swift (4) e possui várias limitações.

Não é possível gerar uma aplicação para iOS ou MacOS


através do compilador online. Somente utilizando o Xcode
IDE, que vamos conhecer adiante.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 15


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

5. Xcode IDE
O Xcode IDE (​Integrated Development Environment ou
Ambiente de Desenvolvimento Integrado)​ é o programa
capaz de juntar a Linguagem Swift com qualquer outro
tipo de recurso gráfico (Imagens, Animações, Vídeos) e
de funcionalidades (​Internet​, Banco de Dados e todo tipo
de recurso dos iPhones e iPads, como ​Internet​, Câmera,
Acelerômetro ou Geolocalização).

Porém, o IDE requer muito mais conhecimento para ser


utilizado. Recomendo sempre aos alunos tentarem
entender antes a Linguagem Swift (princípios, regras e
fundamentos) e depois partirem para o Xcode (para
construir apps e trabalhar com toda a parte visual).

Atualmente o Xcode está na versão ​10.2.1 (de 17 de abril


de 2019) e você pode baixá-lo gratuitamente através da
appStore.

Basta ter uma conta de usuário da Apple (a mesma que


utilizamos para baixar aplicativos iOS da appStore).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 16


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

6. Download e Instalação do Xcode


Lembre-se então que o requisito mínimo para instalar o
Xcode, é o Sistema Operacional Mac OS.

Abra o aplicativo App Store

No campo de busca por aplicativos, digite ​xcode

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 17


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Caso seja necessário, faça o ​login c​ om a sua conta da


Apple.

Clique em ​Obter / Get ​para fazer o download e a instalação do


Xcode.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 18


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

7. Escrevendo o Primeiro Código


Agora que já temos todos os conhecimentos preliminares
sobre o Swift, e já fizemos o Download e Instalação do
Xcode, vamos escrever nosso primeiro programa.

Abra o Xcode. Aparecerão algumas opções para iniciar


novo projeto ou abrir projetos recentes.

Vamos começar brincando de programação com o


Playground. Clique na opção ​Get Started with Playground.​

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 19


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Selecione a opção ​Blank ​e clique em ​Next.​


Depois dê um nome qualquer para seu projeto e salve na
sua pasta.

O Playground é um ambiente bem simplificado que iremos


utilizar para escrever nossos primeiros programas em
Swift. É a opção ideal para quem ainda não conhece a
linguagem e está tentando entender os primeiros códigos
e comandos ou até para prototipar e testar algum código
ou algoritmo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 20


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Abra o Playground e espere até que tudo seja carregado,


isso pode demorar até alguns minutos.

Escreva o mesmo exemplo que vimos anteriormente, e


clique no botão Play que vai aparecer ao lado da linha de
comando.

Perceba que ao executar o código, o Playground vai te


mostrar dois resultados, um no menu lateral direito, onde
é exibido o resultado de cada linha de comando.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 21


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

O outro na barra inferior, onde é exibido o resultado final


do código executado. Mais adiante entenderemos isso
melhor.

Por enquanto tudo que precisamos entender é que para


programar em swift, basta escrever os códigos e
compila-los no Playground para ver o resultado do nosso
algoritmo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 22


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

8. Regras Básicas para Programar


Primeiro, precisamos entender algumas regras básicas do
Swift e de programação em geral para entender 100% do
que está escrito neste código. Comece memorizando
estas informações:

a) Case Sensitive
O Swift é ​Case Sensitive​, ou seja, ele leva em
consideração a diferença entre a letra maiúscula e a letra
minúscula. Veja o seguinte comando para exibir um valor
no console.

Exemplo:

print​("Bem-Vindo ao Xcode e Swift")

Nunca poderá ser escrito como ​PRINT​ ou ​Print. ​Isto


ocasionará erros na sua aplicação.

b) Aspas Duplas
Para escrever uma ​palavra​, ​frase ou ​cadeia de
caracteres (letras) devemos iniciar e terminar sempre
com ​aspas duplas​ ( ​"​ ).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 23


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora, baseando-se nas idéias obtidas, leia


atenciosamente o comando a seguir e perceba os
conceitos envolvidos em uma única linha de código.

Exemplo:

print​("Bem-Vindo ao Xcode e Swift")

Vamos entender palavra por palavra o que diz nosso


código.

O comando ​print() serve para exibir uma mensagem no


console.

Exemplo:

print​("Oi! Eu sou o Felpudo!")


print​(12345)

Entre os parênteses passamos o argumento para este


comando. Ou seja, o objeto ou valor que deve ser exibido.

Exemplo:

print( ​"Bem-Vindo ao Swift!"​ )

Ao passar por argumento uma frase, ou cadeia de


caracteres (que chamamos de String) então encontra-se
entre aspas duplas.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 24


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para indicar o fim de uma linha de comando, utilizamos o


ponto e vírgula​ ( ​; ​) após o comando.

No Swift, este comando é opcional, ao encontrar um


parágrafo​, o compilador já sabe que chegou ao fim da
instrução.

São algumas idéias como essa que fazem o Swift ficar


mais fácil de escrever do que as outras linguagens.

Exemplo:

print("Bem-Vindo ao Xcode e Swift")

É o mesmo que:

Exemplo:

print("Bem-Vindo ao Xcode e Swift")

Viu? Cada caractere, letra, número, vírgula ou ponto tem


um porquê na programação.

Ao criar um código, você deve saber exatamente o que


cada letrinha está querendo dizer.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 25


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora solucione estes ​Desafios para provar o que você


aprendeu:

DESAFIO #1

Eu te desafio a fazer um
Programa em Swift que
imprima o seu nome completo
no Console de Mensagens.

Faça-o da maneira mais


simples, utilizando o mínimo
possível de linhas de código. Lesmo

DESAFIO #2

Pesquise sobre as Origens da


Linguagem Swift.

Quando e Onde ela foi criada?

Qual foi a empresa ou


programador(es) que a criaram?

Bugado

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 26


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Antes de passar para a próxima fase, certifique-se de que


aprendeu e experimentou de verdade conhecimentos
mencionados nos desafios acima.

Você terá que utilizá-los o tempo todo!

Compartilhe este conhecimento nas suas redes sociais e


mostre aos seus amigos o que você aprendeu de novo!

c) Caracteres com Acentuação


Alguns compiladores assim como o Xcode, não funcionam
com determinados ​Caracteres ASCII da Língua
Portuguesa ​(caracteres com acento principalmente).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 27


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

d) Camel Case

É a prática de
escrever palavras
ou frase compostas
de modo que cada
palavra comece
com uma letra
maiúscula, sem
espaços ou
pontuação
intermediários.

Isto facilita a leitura do código, e tornou-se um padrão


entre os bons programadores.

Exemplo:

eusouumavariavel ​ou ​EuSouUmaVariavel

Perceba que no "Caso do Camelo" a frase fica muito mais


legível.

Então lembre-se de usar esta boa prática na hora de criar


os nomes para suas ​classes​, ​funções e ​variáveis na
programação.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 28


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Outra regra que vale lembrar, é que existe o


lowerCamelCase​, onde a primeira letra inicia em
minúsculo ​(geralmente usamos para declarar ​variáveis
ou ​métodos​).

Exemplos comuns incluem "iPhone" e "eBay".

E o ​UpperCamelCase ​com apenas a primeira letra


iniciada em ​maiúsculo ​(usada geralmente para declarar
classes​).

Não se preocupe pois entenderemos adiante o que são


estas ​variáveis​, ​métodos​ e ​classes​.

e) Limites ou Escopos
Escopo significa um local bem determinado com o intento
de se atingir. Significa o limite ou abrangência de uma
operação.

Na programação, definimos os ​escopos​ ou ​limites​ de um


método​ ou ​classe​ utilizando o caractere das ​chaves {...}​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 29


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Por enquanto, apenas perceba que no trecho de código,


existem três objetos um contido no outro, estes três
objetos são definidos ao ​abrir e fechar as chaves {...}.

Através deste conceito de escopos, estruturamos a nossa


programação em um conceito de ​hierarquia ou
parentesco que também define a ​visibilidade e ​acesso
à estes objetos.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 30


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Por enquanto, entenda que basicamente quando você


abre e fecha uma chave na programação, você está
criando esses blocos de objetos.

E lembre-se de que sempre em que você abrir uma


chave, deverá depois fechá-la.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 31


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

6. Variáveis no Swift
Para programar, precisamos manipular valores ou dados
que são armazenados em "recipientes" identificados.

Imagine uma caixa com algum objeto guardado nela. Esta


caixa possui um nome para você se lembrar o que ela
contém.

É claro que a caixa não


existe, ela representa os
espaços na memória​ do
dispositivo.

Para o computador, esta variável tem um endereço


numérico que indica a posição na memória.

Na nossa programação vamos dar nomes às variáveis,


que representam estes endereços.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 32


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Pense que a Memória RAM do computador é um armário,


separado em vários recipientes, cada um com um nome
(Variável). E, em cada recipiente você pode guardar um
determinado tipo de item (Dado ou Valor).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 33


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Veja abaixo alguns dos principais ​Tipos de Dados ​que


podemos criar e utilizar na programação em geral.

TIPO DESCRIÇÃO EXEMPLO

Bool Verdadeiro ou Falso true, false

Int Números Inteiros 7, -10, 500

Float Números Decimais 1.5f, 0.75f, -5.5f

Double Números Decimais 100.0, 5.7, 1.0, 3.2

String Palavras e Frases "Tito","Felpudo","Fofura"

Cada variável só pode ser de um único tipo, e só pode


armazenar objetos daquele tipo.

Por exemplo, você nunca poderá guardar um nome em


uma variável que já foi numérica.

Para criarmos uma variável na programação em Swift,


precisamos seguir uma regra.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 34


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Veja o exemplo da criação de uma variável do tipo String,


para armazenar um nome.

Exemplo:

var​ nome ​=​ "Tito Petri"

Perceba que precisamos seguir uma regra para dizer para


o compilador que ​tipo de dado estamos criando, ​qual o
nome desta variável, e a sua ​inicialização​, que é o valor
que será guardado na variável.

Para criar uma variável em Swift, você deve primeiro


escrever a palavra var

O segundo argumento é o nome da variável que você vai


criar

Seguindo com : você diz qual é o tipo desta variável


Exemplo:

var nome:String
var idade:Int
var peso:Float

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 35


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

No momento da declaração, podemos ou não inicializar a


variável, ou guardar um valor dentro dela.
Exemplo:

var nome:String = "Tito"


var sobrenome = "Petri"

Perceba as duas declarações anteriores, podemos


inicializar as variáveis com algum valor.

Repare que a declaração do tipo da variável também é


opcional, pois ao guardar a palavra "Petri" na variável, o
Swift já entendeu que o tipo é um String.

Neste momento da ​Declaração das Variáveis,


precisamos entender mais algumas regras:

1) Podemos usar qualquer nome para as variáveis.


Contando que o nome respeite o seguinte:

- Não seja uma ​Palavra Reservadas, ​comandos da


linguagem.
(Exemplo: print, Float, String, Class, func, e muitas outras)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 36


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

- Não pode conter em ​Caractere Especial​.


( Exemplo: ! @ #$%ˆ&* )

- Não pode ​Iniciar em Número​.


( Exemplo: 50nome, 123, 1idade )

2) ​É possível declarar a variável sem inicializá-la de


imediato.

Escreva o seu ​Nome ​e o seu ​Tipo​ e, mais adiante,


atribua à ela um valor no código.

Exemplo:

var nome:String

nome = "Tito Petri e Felpudo"

3) ​O símbolo de igual ( =
​ ​) neste momento não tem o
sentido de ​comparação e sim de ​atribuição​. Ou seja,
estamos atribuindo, ou guardando um valor em uma
determinada variável.

Exemplo:

var idade = 12

No exemplo acima, criamos uma variável do tipo ​Int​,


damos a ela o nome de ​idade e guardamos nela o valor
12​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 37


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

4) ​Os números decimais são representados por dois tipos


diferentes (​Float ​ou ​Double​).

A diferença entre estes dois tipos, é que o ​Double


armazena o dobro de casas decimais depois do ponto (o
que garante uma maior precisão do número, ideal para
aplicações gráficas)

Consequentemente, o ​Float é mais leve e ocupa menos


espaço na memória.

Exemplo:

var idade:Int = 30
var altura:Float = 1.85
var peso:Double = 80.0
var ligado:Bool = true

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 38


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

7. Constantes no Swift

Existem também as constantes. Objetos declarados que


possuem um valor fixo.

Após declarar uma constante, o seu valor não poderá


mais ser modificado.

Para declarar uma constante em Swift,, utilizamos a


palavra ​let ​ao invés da palavra ​var​.

Declare algumas ​variáveis​ e ​constantes​ e execute o seu


código.

Exemplo:

print("Olá! Vamos Programar em Swift!")


print(12345)

var​ nome:String = "Tito Petri"


print(nome)

var​ idade:Int = 30
var​ altura:Float = 1.85
var​ peso:Double = 80.0
var​ ligado:Bool = ​true

let​ pais = "Brasil"


nome = "Felpudo"

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 39


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Faça alguns testes, brinque com o código. Perceba que as


constantes não podem ter o seu valor alterado, já as variáveis
sim.

Execute novamente a aplicação, e se tudo estiver correto,


você verá os valores declarados aparecerem na Barra do
Console Lateral (onde os valores aparecem já ao serem
declarados) e na barra Inferior (comandos ​print​).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 40


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

7. Comentando o Código
Existe a possibilidade de comentar linhas ou pedaços do
código que está escrevendo.

O Compilador irá ignorar a parte comentada na


compilação e execução do programa.

No caso do Swift, utilizamos os seguintes operadores:

// Comenta a linha atual.

/* Inicia um comentário em múltiplas linhas.

*/ Encerra um comentário em múltiplas linhas.

Os comentários servem para você ​descrever e


documentar um determinado trecho do código ou apenas
desativar algum comando​.

Esta documentação vale tanto para você mesmo entender


o que está programando, quanto para outros
programadores que eventualmente venham a usar o seu
código ou projeto.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 41


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

//​ Utilizando o Playground

print("Olá! Vamos Programar em Swift!")


print(12345)

//​ Declaração de Variável

var nome:String = "Tito Petri"


print(nome)

// Tipos de Variáveis
var idade:Int = 30
var altura:Float = 1.85
var peso:Double = 80.0
var ligado:Bool = true

/*
Início do Bloco Comentado
.
.

.
Fim do Bloco Comentado
*/

nome = "Felpudo"

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 42


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

8. Concatenação de Valores

Concatenar é o mesmo que ​juntar ​valores. Quando


trabalhamos com frases ou Strings, podemos adicionar ao
String valores do conteúdo de outras variáveis ou constantes.
Observe o exemplo a seguir:

Exemplo:

let nome = "Felpudo Jr."


let idade = 12
let altura = 0.55

print("Nome: ​\(nome)​ - Idade: ​\(idade)​ - Altura: ​\(altura)​")

Perceba que declaramos 3 variáveis, e armazenamos alguns


valor nelas.

Adiante podemos resgatar o conteúdo dessas variáveis e


exibi-los na linha de comando do print.

Para juntar o valor da variável a um String, utilize o operador


\(...) ​.

Dentro dos parênteses, deve ir o nome da variável que você


está tentando acessar.

Resultado:

Nome: Felpudo Jr. - Idade: 12 - Altura: 0.55

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 43


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

9. Operações com Strings


O tipo ​String​ se refere a uma palavra, frase ou qualquer
cadeia de vários caracteres (ou letras).

Existem algumas operações (ou métodos) que podemos


utilizar com este tipo de objeto. Confira alguns:

a) uppercased()
Converte todos os caracteres em maiúsculo.

b) count
Nos informa o tamanho do String, ou quantas letras
(caracteres) ele tem.

c) replacingOccurrences(of: a, with: b)
Substitui o caractere do argumento 'a' (parâmetro antes
da vírgula) pelo argumento 'b' (depois da vírgula).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 44


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

*Observação: Para os métodos com String funcionarem,


precisaremos carregar mais uma biblioteca de comandos do
Swift, o ​UIKit​. Para isso usamos o comando ​import UIKit ​logo
no início do código.

Veja no quadro de exemplo esses métodos funcionando:

Exemplo:

import UIKit

var nome = "Felpudo Júnior"

print(nome.count)
print(nome.uppercased())
print(nome.lowercased())
print(nome.replacingOccurrences(of: "Fel", with: "ABCD"))

Resultado:

14
FELPUDO JÚNIOR
felpudo júnior
ABCDpudo Júnior

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 45


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

9. Comandos Unicode para Strings


Ao utilizar um ​String podemos usar operadores ​Unicode
(Padrão Internacional de Caracteres), que nos auxiliam a
montar e formatar textos para exibir mensagens no
console, por exemplo.

COMANDO UNICODE DESCRIÇÃO

\t Insere um parágrafo

\n Quebra de Linha

\" Aspas Duplas

\' Aspas SImples

\\ Barra Invertida

Execute no seu compilador alguns comandos Unicode


para testar a formatação dos Strings.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 46


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

print("Eu sou o Felpudo!")


print("\tEu sou o Felpudo!")
print("\nEu sou o Felpudo!")
print("\"Eu sou o Felpudo!\"")
print("\'Eu sou o Felpudo!\'")
print("\\Eu sou o Felpudo!\\")

Resultado:

Eu sou o Felpudo!
Eu sou o Felpudo!

Eu sou o Felpudo!
"Eu sou o Felpudo!"
'Eu sou o Felpudo!'
\Eu sou o Felpudo!\

Perceba, nos últimos três exemplos, que a ​barra


invertida ​( ​\ ​) ​dentro de uma cadeia de caracteres faz o
compilador ​ignorar o próximo caractere e com isso
conseguimos inserir uma barra invertida ou aspas dentro
do ​String​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 47


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

10. Convertendo Tipos de Variáveis


Em determinados momentos na programação, será
necessário manipular os ​Tipos das Variáveis ​para
chegarmos em determinados resultados.

Adiante, neste material, iremos nos deparar com


situações como esta. Por isso vamos entender primeiros
as operações para ​Converter os Tipos de Variáveis​.

Veja alguns exemplos de conversão de tipos:

a) String ​para​ Int


Exemplo:

var palavra = "500"


var numero = Int(palavra)

b) Int ​para​ String


Exemplo:

var numero = 10
var palavra = String(numero)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 48


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Teste alguns destes comandos no Playground.

Perceba que no Console Lateral, podemos enxergar os


dados como String (presença das aspas duplas) ou como
números (sem aspas).

Para converter os tipos no Swift, basta utilizar o nome do


tipo, e passar o argumento que deseja converter entre
parênteses.
Exemplo:

// Declaração de um String
var nome = "10"

// Convertendo o String em Int


Int(nome) *10

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 49


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Mais adiante utilizaremos estas conversões, veremos que


em muitos casos, a conversão de tipos será necessária.

Por enquanto saiba que podemos converter os tipos


facilmente usando este padrão:

Exemplo:

// Declarando um Float
var numero:Float = 10.5

// Convertendo o Float em:


// Double
Double(​numero​)

// Float
Int(​numero​)

// String
String(​numero​)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 50


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

11. Operações Matemáticas


Um recurso indispensável para a programação é o de
fazer facilmente ​Operações Matemáticas pelo
Compilador.

As ​Quatro
Operações
Fundamentais​ são
realizadas facilmente
pelos operadores:

+ Soma

- Subtração

* Multiplicação

/ Divisão

Podemos executar tanto as ​Operações Fundamentais


da Aritmética​, quanto trabalhar com expressões e

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 51


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

funções trigonométricas mais avançadas.

a) Módulo
O módulo é calculado com o operador ​%​. Ele nos retorna
o ​resto ​entre a divisão de dois números.

Exemplo:

print( 7​%​3 )
print( 8​%​2 )
print( 4​%​5 )

Resultado:

1
0
4

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 52


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

b) Raiz Quadrada - sqrt()


O comando ​Math nos permite realizar operações ainda
mais avançadas como o ​cálculo da raiz​ ​quadrada​.

Lembre-se que para usar as funções matemáticas, você


precisará importar a classe UIKit. Veja o exemplo:

Exemplo:

import​ UIKit

print(sqrt(100))
print(sqrt(4))
print(sqrt(121))

Resultado:

10.0
2.0
11.0

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 53


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

c) Potência - pow()
O ​pow​ também nos permite elevar à ​potência​ de um
número.

Exemplo:

print(​ pow(​2​, ​2​) ​)


print( ​pow(​4​, ​2​) ​)
print(​ pow(​3​, ​3​) ​)

Resultado:

4
16
27

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 54


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

12. Arredondamento de Decimais


Conheça também alguns métodos para arredondar
números decimais.

import UIKit

var altura:Float = 1.85


round(altura)

print(round(10.49))
print(floor(10.49))
print(ceil(10.49))

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 55


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

a) round()
Retorna o ​número inteiro mais próximo do número
decimal indicado.

Exemplo:

print(​round(​3.49​) ​)
print(​round(​3.1​) ​)
print(​round(​3.501​) ​)

Resultado:

3
3
4

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 56


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

b) floor()
Retorna o ​número inteiro abaixo​ do decimal indicado.

Exemplo:

print( ​floor(​7.99​) ​)
print( ​floor(​7.01​) ​)

Resultado:

7
7

c) ceil()
Retorna o ​próximo número inteiro acima​ do decimal
apontado.

Exemplo:

print( ​ceil(​7.01​) ​)
print( ​ceil(​7.99​) ​)

Resultado:

8
8

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 57


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

14. Ângulos e Pi Radianos

// Ângulos e PI Radianos
var angulo:Double = 360
var radianos:Double = Double.pi

// Converter Ângulo em Radianos


print(angulo * (Double.pi/180))

// Converter Radianos em Ângulos


print(radianos * (180/Double.pi))

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 58


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

15. Seno Cosseno e Tangente

// Seno Cosseno e Tangente


import UIKit

sin(90.0)
cos(90.0)
tan(90.0)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 59


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

16. Operadores de Comparação


Podemos comparar dois valores e obter ​true ​ou ​false
caso a comparação seja satisfeita ou não.

Observe quais são os ​Operadores de Comparação​:

OPERADOR COMPARAÇÃO

== igual

!= diferente

< menor

> maior

<= menor ou igual

>= maior ou igual

F​aça alguns testes no Playground e observe os


resultados.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 60


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

print(10 ​==​ 10)


print(true ​==​ false)
print(5 ​!=​ 5)
print(1 ​<​ 10)
print(5​ >​ 3)
print(10 ​<=​ 10)
print(5 ​>=​ 1)

Resultado:

true
false
false
true
true
true
true

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 61


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

14. Operadores de Atribuição


Com estes operadores, você pode abreviar um pouco a
escrita do código.

Por exemplo, para incrementar o valor de uma variável,


podemos realizar o seguinte comando:
Exemplo:

var numero = 10
numero = numero + 10

Resultado:

20

Ou seja, iremos armazenar na variável número, o valor da


própria variável somado a 10.

Este comando pode ser abreviado se escrito da seguinte


forma:
Exemplo:

var numero = 10
numero += 10

Resultado:

20

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 62


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Seguindo este padrão, podemos utilizar os operadores


aritméticos de soma, subtração, multiplicação, divisão e
módulo para realizar esta operação.

Veja no quadro abaixo, um teste de valores utilizando os


Operadores de Atribuição​:

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 63


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

15. Números Aleatórios (Randômicos)


Os números aleatórios (​Random​) são utilizados
constantemente.

Tente imaginar onde eventos aleatórios podem estar


acontecendo em aplicações que utilizamos no dia a dia:

● Nos ​games,​ para realizar variações de eventos e


jogadas
● Na ordenação das postagens que vemos na
timeline​ do ​Facebook p
​ or exemplo
● Na segurança de informação para a geração de
senhas e identificações

Para criar um número aleatório em Swift, utilizamos a


seguinte sintaxe:

Exemplo:

print(Int.random(in:0..<5))

Este comando vai gerar um número inteiro aleatório entre 0 e 4


(menor que 5)
Chamamos de operador de intervalo aberto

Também podemos utilizar a seguinte sintaxe para obter o


mesmo resultado

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 64


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

print(Int.random(in:0...4))

Neste caso, o compilador vai nos gerar um número


aleatório de 0 até 4

Podemos também gerar números aleatórios com outros


tipos de variáveis:
Exemplo:

print(Float.random(in:0..<10.0))
print(Bool.random())

No exemplo acima, estamos gerando valores aleatórios


para dados do tipo ​Float ​e ​Boolean​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 65


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

16. Variáveis Opcionais

Em Swift, podemos trabalhar com variáveis vazias, que


chamamos de Opcionais. ‘

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 66


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

17. Operadores Lógicos


As operações lógicas servem para comparar dois valores
Booleanos e retornar um resultado referente à esta
comparação.

Na programação existem basicamente três Operadores


Lógicos:

OPERADOR NOME TRADUÇÃO

&& And E

|| Or OU

! Not NÃO

a) Operador And ( && )


Compara dois ​Booleanos e retornar ​true ​apenas se o
primeiro valor for ​true​ ​E​ o segundo valor também for ​true​.

Exemplo:

print(true ​&&​ true)


print(true ​&&​ false)
print(false ​&&​ true)
print(false ​&&​ false)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 67


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resultado:

true
false
false
false

b) Operador Or ( || )
Vai comparar dois ​Booleanos e retornar ​true ​se o primeiro
valor for ​true​ ​OU​ o segundo valor for ​true​.

Exemplo:

print(true ​||​ true)


print(true ​||​ false)
print(false ​||​ true)
print(false ​||​ false)

Resultado:

true
true
true
false

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 68


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

c) Operador Not ( ! )
Inverte o valor do ​Booleano​.

Exemplo:

print( ​!​ true )


print( ​!​ false )

Resultado:

false
true

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 69


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

18. Condição If
A ​Condição If é utilizada para controlar o fluxo da
aplicação digital. É ela quem diz por qual caminho a
aplicação deve seguir sua execução, baseada em uma
verificação.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 70


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

A ​Condição If ​(Se) faz a execução do programa seguir


determinado caminho, dependendo do resultado de um
teste lógico.

Se o teste resulta em ​true (verdadeiro) o programa segue


executando um determinado trecho de código.

Caso o teste resulta em ​false (falso) o programa ignora


este trecho de código ou, até mesmo, executa outro
determinado trecho.

Veja uma implementação da estrutura de Condição If /


Else no Swift.

Exemplo:

var idade = 16

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 71


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

if ( idade >= 18 ) {
print("Pode Dirigir!")
} else {
print("Nao Pode Dirigir!")
}

Caso a comparação, que está entre parênteses (idade >=


18), seja satisfeita o programa vai executar o que está
dentro das primeiras chaves ​{...}​.
Exemplo:

if ( idade >= 18 ) {
print("Pode Dirigir!")
} else {
print("Nao Pode Dirigir!")
}

Caso o resultado da comparação seja ​false, o programa


ignora o que está contido nas primeiras chaves e executa
o que está na segunda, depois do ​else​.

Exemplo:

if ( idade >= 18 ) {
print("Pode Dirigir!")
} else {
print("Não Pode Dirigir!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 72


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

O ​else ​é opcional! Podemos criar uma condição ​if sem o


else​. Caso a condição seja falsa e o ​else ​não exista, o
programa ignora tudo e continua a execução.

Existe também a estrutura ​else if​, onde podemos utilizar


uma segunda comparação antes de executar o que existe
dentro das chaves do ​else.

Exemplo:

var idade = 16

if​ ( idade >= 18 ){


print("Pode Dirigir!")
}​else​ ​if​ ( idade > 60 ){
print("Deve Renovar a Carta!")
}​else​{
print("Não Pode Dirigir!")
}

Baseado neste exemplo, perceba que você pode utilizar


quantos ​if/else quiser e comparar diferentes valores e
situações.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 73


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Observe que os conceitos de ​Comparações Lógicas e


Estruturas de Condição são utilizados no
desenvolvimento de qualquer tipo de Aplicação Digital,
como em Dispositivos Eletrônicos, Robótica e
Videogames​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 74


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

A ​Estrutura de Condição é o que faz parecer que o


computador ​Pensa​ e toma suas ​Próprias Decisões​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 75


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

19. Escopos ou Limites


A palavra ​Escopo trata-se de definir um ​limite de uma
Ação​, com ​começo e fim. ​Já falamos sobre isso
brevemente, mas agora é hora de entender um pouco
mais.

Trata-se de um conceito delimitante, onde podemos


trabalhar com ​Valores​ e ​Objetos​.

Entenda que tudo que está dentro das chaves ​{...} ​faz
parte do mesmo contexto.

Ao usar uma condição ​if estamos criando um novo ​limite


na nossa programação. Imagine como o conteúdo contido
dentro de outro trecho de código.

Exemplo:

var ​idade​ = 21

if ( ​idade​ > 18 ) ​{
print("Tem \(​idade​) anos. Pode
Dirigir!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 76


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

A estrutura das chaves também representa uma


hierarquia​ (conceito de parentesco, ou pai e filho).

Perceba que a estrutura de condição ​if está contida


dentro do código principal.

Como a variável idade, foi declarada no pai, ela pode ser


acessada pelo filho (dentro dos limites do ​if​).

Observe atentamente o exemplo a seguir:

Exemplo:

var idade = 16

if ( idade >= 18 ){
var ​mensagem​ = "Pode Dirigir!"
}

print(​mensagem​)

Se você tentar executar este código, ele vai ​não vai


funcionar​. Perceba que a variável está sendo criada
dentro da estrutura ​if​, e está tentando ser acessada de
fora do limite.

Diferente do exemplo a seguir, onde a variável foi criada


no pai (fora do limite do ​if)​, e acessada no filho (estrutura
if​).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 77


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 78


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

var idade = 16
var ​mensagem ​=​ “ ”

if ( idade >= 18 ){
​mensagem​ = "Pode Dirigir!"
}

print(​mensagem​)

No exemplo, fizemos apenas uma mudança sutil, e


declaramos a variável ​mensagem fora do ​if​. Isto faz com
que a variável seja visível em por todo os escopos ou
limites do código.

Lembre-se que sempre que há a presença das chaves


{...} ​estamos falando de um contexto dentro do outro.

Lembre-se também que todo limite deve ter ​início e ​fim​.


Ou seja, sempre que ​abrir a chave​, devemos ​fechá-la​!

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 79


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

20. Projeto #1 - Jogo do Par ou Ímpar


Agora, utilizaremos todo conhecimento adquirido até aqui.
Criaremos um ​Jogo de Par ou Ímpar​. Antes de partir
para a programação, é importante que você tenha o
problema 100% solucionado na sua cabeça.

Para isso, recomendo que você use o bom e velho lápis e


papel para você desenhar esse ​Algoritmo à mão, até
visualizar muito bem como ele vai funcionar. Só então
comece a resolver as ​Linhas de Programação​.

Pense como poderia ser desenvolvido um ​Algoritmo para


resolver este problema. Tente dividir todo o processo em
etapas. Por exemplo:

● Sortear dois Números Aleatórios entre 0 e 5


● Exibir os Valores das jogadas sorteadas
● Verificar se a soma das jogadas é par ou é ímpar
● Exibir mensagem dizendo quem venceu

Se você absorveu o conteúdo deste Livro passo a passo


até aqui, já tem todos os conhecimentos necessários para
construir este ​Algoritmo​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 80


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Lembre-se que podem existir diferentes maneiras de se


escrever um programa ou algoritmo de computador. O
importante é chegarmos ao objetivo traçado.

Deixarei o problema aqui como um desafio pra você


resolver.

DESAFIO #3

Eu te desafio a utilizar tudo o que você aprendeu até aqui, e


criar um Jogo de Par ou Ímpar utilizando a Linguagem Swift.

Adiante você tem uma resolução, caso precise de ajuda,


mas o mais importante é tentar e errar. Assim que se
aprende de verdade!

Lesmo

Tente se esforçar e resolver o desafio antes de olhar a


minha resolução.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 81


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

DESAFIO #4

Jogue o jogo que você programou


com um amigo, diga à ele que foi
você mesmo quem criou. Que
escreveu este programa, linha por
linha de código.

Depois ensine seu amigo a


programar. Lembre-se que ensinar
também é uma ótima maneira de
Uruca aprender.

A seguir você pode conferir o meu ​Código final


comentado​ com a minha resolução do problema.

Lembre-se que existem diversas maneiras diferentes para


desenvolver este algoritmo.

O mais importante é que no final você alcance um


resultado satisfatório na sua aplicação, utilize o mínimo
possível de código, e divirta-se bastante no
desenvolvimento.

Boa Diversão e Bons Estudos!

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 82


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resolução do Projeto #1 - Jogo do Par ou Ímpar

// Jogo do Par ou Ímpar


// Jogador A - PAR
// Jogador B - ÍMPAR

var jogadaA = Int.random(in: 0...5)


var jogadaB = Int.random(in: 0...5)

print("JogadaA \(jogadaA)")
print("JogadaB \(jogadaB)")

if((jogadaA+jogadaB)%2 == 0){
print("Número PAR - Jogador A Venceu!")
}else {
print("Número ÍMPAR - Jogador B Venceu!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 83


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

21. Estrutura de Condição Switch


Em alguns casos, ao invés de utilizar vários ​if, else if​…
podemos simplificar o ​Código utilizando a estrutura
switch​. Esta estrutura compara um ​Valor a várias outras
possibilidades, caso a comparação seja verdadeira, o
Comando​ determinado é executado.

Exemplo:

String nome = "Felpudo";

switch(nome) {
​case​ "Tito" ​:​ print("Oi Tito!") ​break;
​case​ "Felpudo" ​:​ print("Oi Felpudo!") ​break;
​case​ "Fofura" ​:​ print("Oi Fofura!") ​break;
​default:​ print("Nao conheco voce!") ​break;
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 84


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Perceba no ​Código do exemplo, os ​Comandos


destacados em negrito fazem parte da estrutura do
switch​.

Entenda cada um dos operadores da estrutura ​Switch​:

● switch()​ seleciona a ​Variável​ a ser comparada.


● case​ compara com o valor do próximo argumento.
● :​ Indica o início do comando a ser executado.
● default será executado, caso nenhuma das
comparações anteriores tenha sido satisfeita.
● break - Indica o fim da ação executada. Faz com
que a execução pule para fora do escopo na
execução do código.

Adiante veremos que o ​break pode ser utilizado também


em outras estruturas na programação para cessar a
execução do escopo atual.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 85


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

22. Projeto #2 - Jo Ken Pô


Já sabemos o que é necessário para desenvolver este
jogo do ​Pedra, Papel ou Tesoura​. Perceba que a
mecânica, a lógica do jogo, é bem similar ao Jogo do Par
ou Ímpar. Desafio você a criar sozinho este jogo.

Tenho certeza que neste desenvolvimento muitos


conceitos e idéias serão formadas no seu raciocínio. Isto
é o mais importante.

Lembrando que existem diversas maneiras diferentes de


se resolver um problema como este.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 86


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

DESAFIO #5

Crie já seu Algoritmo em ​Swift​ do


Jogo Jokenpô! Uma dica, as
estruturas switch ajudam a
diminuir o uso da estrutura if/else.

Mãos à obra, ao final compare


seu algoritmo com a minha
solução que está adiante.

Uruca

DESAFIO #6

Desenvolva novamente o
algoritmo do Jokenpô, porém
desta vez utilizando uma
lógica totalmente diferente
do primeiro algoritmo.

Compartilhe sua solução na


sua rede social e marque o
professor Tito Petri. Lesmo

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 87


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resolução do Projeto #2 - Jo Ken Pô

var jogadaA = Int.random(in: 0...2)


var jogadaB = Int.random(in: 0...2)

switch jogadaA{
case 0: print("Jogada A: PEDRA")
case 1: print("Jogada A: PAPEL")
case 2: print("Jogada A: TESOURA")
default: break
}

switch jogadaB{
case 0: print("Jogada B: PEDRA")
case 1: print("Jogada B: PAPEL")
case 2: print("Jogada B: TESOURA")
default: break
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 88


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

if(jogadaA==jogadaB){
print("Empatou")
}else if((jogadaA == 0 && jogadaB==1)||(jogadaA == 1 &&
jogadaB==2)||(jogadaA == 2 && jogadaB==0)){
print("Jogador B Vence!")
}else{
print("Jogador A Vence!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 89


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

23. Enumeradores

// Declarando a Estrutura do Enumerador

enum Jogada {
case pedra
case papel
case tesoura
}

// Inicializando as variáveis do tipo Enumerador

var jogadaA = Jogada.pedra


jogadaA = .pedra

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 90


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

// Acessando e Comparando um Enumerador

if jogadaA == .tesoura{
// ...
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 91


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 92


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

// Enumeradores
enum​ Jogada{
​case​ pedra
​case​ papel
​case​ tesoura
}

var​ jogadaA:Jogada = Jogada.pedra


var​ jogadaB:Jogada = Jogada.pedra

switch​(Int.random(in: 0...2)){
case​ 0: jogadaA = Jogada.pedra; ​break
case​ 1: jogadaA = Jogada.papel; ​break
case​ 2: jogadaA = Jogada.tesoura; ​break
default​: ​break
}

switch​(Int.random(in: 0...2)){
case​ 0: jogadaB = Jogada.pedra; ​break
case​ 1: jogadaB = Jogada.papel; ​break
case​ 2: jogadaB = Jogada.tesoura; ​break
default​: ​break
}

print(jogadaA)
print(jogadaB)

if​(jogadaA == jogadaB){
print("Empatou")
}​else​ ​if​( ((jogadaA == .pedra) && (jogadaB == .tesoura)) || (
(jogadaA == .papel) && (jogadaB == .pedra)) || ( (jogadaA ==
.tesoura) && (jogadaB == .papel) )) {
print("Jogador A Vence!")
}​else​{
print("Jogador B Vence!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 93


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

23. Repetição for


A estrutura de repetição ​for serve para executar um
determinado comando por várias vezes.

Podemos determinar o número de vezes que uma


instrução será executada.

Execute a estrutura ​for ​abaixo, e observe o resultado no


console.

Exemplo:

for _ in ​1​...​5{
print("Bem-Vindo ao Swift")
}

Perceba que o comando ​print ​foi executado 5 vezes.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 94


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Perceba que usamos o ​underline _ ​ na criação da


estrutura ​for​. Isso caracteriza que não iremos utilizar
nenhuma variável para contar o número de execuções do
for​.

Agora tente executar este outro exemplo:

Exemplo:

for​ i ​in​ 1...5{


print("Índice de Fofura \(i)")
}

Perceba que agora ao invés do ​underline _ ​ d


​ eclaramos
uma variável (geralmente chamada de ​i por boas normas
de programação​) ​durante a execução, a variável numérica
chamada de ​i ​foi incrementada (aumentou de valor) a
cada vez que o comando foi executado.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 95


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora vamos entender o que aconteceu. Observe como


foi criada a estrutura do ​for​.

Exemplo:

for​ i ​in​ 1...5{


print("Índice de Fofura \(i)")
}

É muito importante entender cada um destes argumentos


para utilizar o ​for​.

O ​primeiro argumento (i) cria uma variável do tipo inteira


e chama de ​i​. Inicializamos este número por 1 e ele serve
como um ​contador e nos indicar quantas vezes a
estrutura já foi executada.

* Utilizamos a letra ​i p
​ or questões de boas práticas de
programação. Este ​contador poderia ser declarado por
qualquer nome.

O ​segundo argumento (in) ​especifica o intervalo de


valores que o contador ​(i) ​vai assumir. No exemplo,
mandamos o contador iniciar em 1 e ir até 5.

Ou seja, durante a primeira execução do laço, a variável ​i


terá o valor ​1​. Durante a segunda, o valor ​2​, durante a
terceira o valor ​3​, e assim sucessivamente.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 96


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Veja a seguir mais algumas implementações da estrutura


(ou laço) de repetição ​for​:

a) Decrementando o Contador - reversed()


Podemos executar a estrutura for de trás para frente com o
comando ​reversed()

Execute os comando a seguir no seu Playground e observe os


resultados:

Exemplo:

for​ i ​in​ (1...10).reversed(){


print("Índice de Fofura \(i)")
}

b) Incrementando o Contador por Intervalos


Também podemos incrementar ou decrementar o valor do
contador de acordo com um número específico (de 2 em 2, de
3 em 3). Observe o exemplo:

Exemplo:

for​ i ​in​ stride(from: 0, to: 30, by: 3){


print("Índice de Fofura \(i)")
}

No caso acima, o valor do contador vai de 0 a 30, em


intervalos de 3 em 3.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 97


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Também podemos inverter a execução do ​for​ e especificando o


intervalo utilizando a seguinte sintaxe:

Exemplo:

for​ i ​in​ stride(from: 30, to: 0, by: -2){


print("Índice de Fofura \(i)")
}

Neste caso o ​for ​vai de 30 até 0, decrementando seu


valor em intervalos de -2 em -2.

DESAFIO #7

Crie um algoritmo que imprima no


console todos os números pares de
0 a 50.
Lesmo

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 98


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

DESAFIO #8

Agora crie um algoritmo que


imprime no console todos os
números divisíveis por 5 no
intervalo de 0 a 100.

Compartilhe esta solução com


seus amigos na sua rede social
e marque o professor Tito Petri.

Bugado

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 99


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

24. Repetição while


A estrutura ​while ​é bem parecida com o ​for​, porém a sua
implementação é um pouco diferente. Execute o seguinte
Código​ abaixo e observe o resultado obtido.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 100


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

var​ contador = 0

while​ contador<10 {
contador+=1
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 101


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para utilizar a estrutura ​while​, precisa existir ​três


argumentos​, que são criados e manipulados
separadamente. Contador, Condição e Incremento

Exemplo:

var​ contador = 0 // ​contador

while​ contador<10 { // ​condição


contador += 1 // ​incremento
}

Preste muita atenção ao utilizar a estrutura ​while​. Se


você esquecer de modificar o ​Valor do ​Contador​, a fim
de quebrar a condição do ​while​, isso fará com que a
execução do programa ​nunca saia do ​loop.​ Isto é o que
chamamos de ​loop​ infinito​.

Existem poucas diferenças entre se utilizar uma estrutura


for ​e ​while​.

A estrutura ​for ​sempre vai exigir que o ​contador seja


uma ​nova variável​, declarado na criação do ​for​.

Já a estrutura ​while ​pode utilizar uma ​variável ​já


existente​ no código ou no projeto.

O ​while ​também nos dá mais flexibilidade para manipular


o​ contador​ em situações mais específicas.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 102


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

25. Arrays, Listas ou Vetores


São estruturas de dados ordenadas que armazena vários
objetos (variáveis) do mesmo tipo.

Quando você ouvir os termos Lista​, Vetor​, Array​, Matriz​,


perceba que se tratam basicamente do mesmo conceito.

Ao invés de trabalhar com um único valor ou variável,


podemos utilizar uma estrutura ordenada onde vários
objetos ficam arrumados e são acessados por
coordenadas.

Veja o exemplo a seguir. Ao invés de armazenar um único


valor (palavra) dentro de um String, podemos criar uma
lista, e armazenar diversas palavras, separando-as por
índices, ou posições dentro desta lista.

Observe o código a seguir. Ele exemplifica como


podemos criar uma lista de palavras (Strings).

Exemplo:

var nomes:​[String]​ = ​[​"Felpudo", "Fofura", "Lesmo", "Bugado",


"Peluche", "Uruca", "Felpudo Jr."​]

Perceba que, ao declarar a variável, utilizamos o ​tipo


(String) entre ​colchetes [ ]​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 103


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Os ​colchetes ​definem que a variável criada será um


Array de Strings​.

Depois, definimos o nome da variável (array​) como ​lista


ou qualquer outro nome.

Para inicializar a ​lista com algum valor precisamos utilizar


um array de objetos.

Este array é definido por ​colchetes [...] e irá conter vários


objetos do tipo String, separados por uma vírgula entre
eles.

Veja, a seguir, a declaração de arrays de outros tipos


como ​Boolean​, ​int, ​e ​Float​.

Exemplo:

var​ numeros:[Int] = [1,100,30,5]


var​ estados:[Bool] = [​true​,​true​,t​ rue​,​false​]
var​ decimais:[Float] = [1.001, 5.5, 40.1, 99.9]

Então, lembre-se que para definir uma variável como uma


lista, basta adicionar ​[] ​ao tipo, na hora da declaração.

Já armazenamos uma listagem de dados dentro destas


variáveis, agora precisamos ​acessar​ estes dados.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 104


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para fazer a ​leitura do dado ​ de uma lista, devemos


utilizar o índice da lista.

O índice é a posição de cada objeto dentro do array.

Lembre-se que a primeira posição é a casa 0.

Exemplo:

var​ nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Peluche", "Uruca", "Felpudo Jr."]

"Felpudo" ​- ocupa o ​índice 0​ da lista


"Fofura" ​- ocupa o ​índice 1​ da lista
"Lesmo" ​- ocupa o ​índice 2​ da lista
e assim sucessivamente…

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 105


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para acessar um índice da lista ​nomes ​utilizamos o nome


da variável e o número do índice entre ​colchetes​.

nomes[0]​ - vai nos trazer o valor contido no primeiro


índice (ou posição) da lista.

Exemplo:

var​ nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Uruca"]

print(nomes[0])
print(nomes[1])
print(nomes[4])

Resultado:

Felpudo
Fofura
Uruca

Perceba que a lista tem ​cinco itens​, porém o índice da


última casa é 4​, justamente porque o ​índice da primeira
casa​ ​é 0​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 106


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

26. Array Multidimensional ou Matriz


Além das listas, lembre-se que existem também as
Matrizes de Dados, ou Arrays Multidimensionais.

Variável Lista Matriz

As Matrizes utilizam o conceito de organização em grade.


Seria como acessar um objeto referenciando o índice da
linha​ e da ​coluna.

Exemplo:

var cidades:​[[​String​]]​ = [ ["São Paulo", "Rio de Janeiro", "Belo


Horizonte", "Espírito Santo"], ["Nova Iorque", "São Francisco", "Los
Angeles", "Orlando"], ["Patópolis", "Cucamonga", "Springfield",
"Acapulco"]]

Perceba que agora a ​Matriz ​foi declarada utilizando-se ​2


colchetes​. E inicializada com um "array de arrays", ou
seja, um array com 3 arrays dentro, separados por
vírgula, sempre dentro das chaves.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 107


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para acessar algum dado nesta ​matriz​, você deve


especificar as duas coordenadas dos índices.

Exemplo:

print(cidades​[​0​][​0​]​)
print(cidades​[​0​][​1​]​)
print(cidades​[​1​][​2​]​)

Resultado:

São Paulo
Rio de Janeiro
Los Angeles

No exemplo a seguir veja como podemos percorrer toda


uma matriz, utilizando dois ​loops de repetição, um dentro
do outro, com um contador para as linhas e outro para as
colunas.

Exemplo:

for i in 0..<cidades.count{
for j in 0..<cidades[i].count{
print("Cidade: \(cidades[i][j])")
}
print("-----")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 108


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resultado:

Cidade: São Paulo


Cidade: Rio de Janeiro
Cidade: Belo Horizonte
Cidade: Espírito Santo
-----
Cidade: Nova Iorque
Cidade: São Francisco
Cidade: Los Angeles
Cidade: Orlando
-----
Cidade: Patópolis
Cidade: Cucamonga
Cidade: Springfield
Cidade: Acapulco
-----

​ u
Chamamos este tipo de procedimento de ​nested loop o
"​loops​ aninhados".

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 109


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Significa que a cada execução do ​for​, haverá um outro


for ​acontecendo.

Usamos este tipo de procedimento para varrer as ​linhas ​e


colunas ​de uma matriz.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 110


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

27. Métodos do Array


Conheça algumas das propriedades e métodos que os
arrays ​possuem.

a) Atributo ​count
Retorna o número de ítens da lista, ou seja, o ​tamanho
do array​.

Exemplo:

var​ nomes = ["Tito", "Felpudo", "Fofura"];


print(nomes.​count​)

Resultado:

Sendo assim, podemos facilmente acessar sempre o


último item​ da lista, utilizando o comando:

Exemplo:

var​ nomes = ["Tito", "Felpudo", "Fofura"];


print(nomes[nomes.count-1])

Resultado:

Fofura

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 111


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Independentemente do número de itens existentes, se


obtivermos o ​tamanho da Lista​, podemos subtrair ​-1 e
saber qual o ​Índice do último item da Lista​.

b) Último Item do Array - last


No Swift podemos também utilizar o método ​last ​para obter o
último item do array.

Lembre-se que tratando-se de um ​array v​ azio (não


inicializado), o método ​last ​vai retornar um objeto nulo. Por isso
para utilizar este tipo de método, temos que tratá-lo como uma
variável ​opcional​, e expor o ​conteúdo da variável ​ através do
operador ​!

Exemplo:

var​ nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Peluche", "Uruca", "Felpudo Jr."]

print(nomes.​last​!)

Resultado:

Felpudo Jr.

c) Primeiro Item do Array - first


Podemos acessar também o primeiro item do array, utilizando
o método ​first​. Isto vai trazer em uma variável ​opcional ​o valor
do primeiro item do ​array

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 112


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

var nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Peluche", "Uruca", "Felpudo Jr."]

print(nomes.​first​!)

Resultado:

Felpudo

Lembre-se que aparentemente esse método faz o mesmo que


nomes[0]. Porém lembre-se que ao tentar acessar um índice de
um ​array vazio​ desta maneira, podemos ocasionar um erro.
Como o método ​first ​retorna um objeto ​opcional​, fica mais
fácil lidar com este tipo de situação.

d) Ordenando os Arrays em Swift


Em Swifto podemos ordenar facilmente as listas com o método
sorted()​. Veja só o exemplo abaixo.

Exemplo:

var nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Peluche", "Uruca", "Felpudo Jr."]

print(nomes.sorted())

Podemos também inverter o array, utilizando o método ​reversed().

Perceba que neste caso, o método reversed precisa depois ser


transformado em um objeto do tipo tipo Array.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 113


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para isto basta transformá-lo utilizando o método ​Array().

Exemplo:

["Bugado", "Felpudo", "Felpudo Jr.", "Fofura", "Lesmo", "Peluche",


"Uruca"]

Exemplo:

var​ numeros = [1,100,30,5,12,15]


print( Array(numeros.sorted().reversed()))

Resultado:

[100, 30, 15, 12, 5, 1]

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 114


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

28. Métodos de Strings


Agora que já conhecemos um pouco sobre arrays ​e os
seus métodos, perceba que os Strings são objetos do tipo
lista.

Podemos considerar os Strings como um um ​array de


caracteres​.

Perceba que também possuem métodos semelhantes aos


objetos do tipo array:

a) Método count
Retorna o número de caracteres do ​String​, assim como
nos outros arrays.

Exemplo:

var mensagem = "Oi eu sou o Tito Petri!"


print(mensagem.​count​)

Resultado:

23

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 115


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

30. Percorrendo uma Lista com for


Agora vamos utilizar um método para percorrer uma lista
e acessar cada um dos itens armazenados nesta lista.

Para realizar este procedimento devemos utilizar a


estrutura de repetição for​, que aprendemos
anteriormente.

Veja, no exemplo abaixo, como utilizar uma estrutura ​for


para percorrer a lista dos argumentos passados pelo
console para o array ​args​.

Exemplo:
var nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",
"Peluche", "Uruca", "Felpudo Jr."]

for i in 0..< nomes.count{


print(nomes[i])
}

O ​for ​irá percorrer a lista do índice ( ​i ​)​ ​zero até o último


item do array ​nomes​ ​imprimindo o valor de cada item no
console.

Esta é uma forma bem "artesanal" de fazer um ​for​ em


uma lista.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 116


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Aproveite as idéias e conceitos aprendidos aqui, porém


saiba que existe no Swift um recurso mais simples para
varrer uma lista com um ​for​.

Exemplo:

for​ nome ​in​ nomes {


print(nome)
}

Podemos percorrer um array com outro tipo de estrutura


for​. Perceba que agora os argumentos da estrutura ​for
agora são diferentes.

O ​primeiro argumento é o tipo da variável que vai


receber cada item do array (​nome​).

A partir daqui, durante a execução do ​for​, cada item será


lido e guardado em uma variável chamada ​nome, ​por
exemplo.

O ​segundo argumento​ depois dos dois pontos ( ​:​ ) é o


array que você deseja percorrer (​nomes).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 117


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Pare e perceba quantos


conceitos envolvidos
apenas em uma
pequena instrução.

Reflita sobre o tanto de


conceitos e idéias
envolvidos você precisou
entender para interpretar
este código.

Muitas destas idéias são regras e práticas universais que você vai usar
pra sempre, mesmo se um dia estiver utilizando outra linguagem de
programação. Veja que grande habilidade você adquiriu!

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 118


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

31. Projeto #3 - Sorteio de Nomes


Já temos todo o conhecimentos necessário para
desenvolver a nossa próxima aplicação.

Um programa para ​Sortear Nomes ​a partir de uma lista!

Pense e desenvolva um algoritmo que seja capaz de:

1)​ Obter uma ​Lista​ de nomes.

2) ​Sortear um dos nomes da ​Lista​.

DESAFIO #8

Desafio você a desenvolver


sozinho o Algoritmo do
Sorteio de Nomes antes de
olhar a minha resolução.

Tentar e errar, esta é a


melhor maneira de fixar o
conhecimento! Lesmo

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 119


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Lembre-se de que existem várias maneiras de


desenvolvimento, tente encontrar a sua!

DESAFIO #2

Crie um sorteio entre seus amigos no


Whatsapp.

Para executar o sorteio, utilize o algoritmo


em Swift que você mesmo criou.

Mostre o seu código para que os


participantes vejam que a aplicação é
válida.

Bugado

Veja a seguir a minha resolução para este algoritmo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 120


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resolução do Projeto #3 - Sorteio de Nomes

Exemplo:
var nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",
"Peluche", "Uruca", "Felpudo Jr."]

for _ in 0...10 {
let a = Int.random(in: 0..<nomes.count)
print("Ganhador: \(nomes[a])")
}

Perceba apenas que no algoritmo eu executei o sorteio por 10


vezes.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 121


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

28. Adicionando e Removendo Itens


do Array
Vamos agora entender um pouco melhor como manipular os itens
dentro do array.

Observe o exemplo:

Exemplo:

var​ nomes:[String] = []

nomes.​append​("Felpudo")
nomes.​append​("Fofura")
nomes.​append​("Bugado")
print(nomes)

Podemos também criar um ​array vazio​ e ir adicionando os


itens ao array progressivamente em nosso código, utilizando o
comando ​append​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 122


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Podemos também adicionar o item à um determinado


índice do array. Por exemplo:

Exemplo:

var​ nomes:[String] = []

nomes.append("Felpudo")
nomes.append("Fofura")
nomes.append("Bugado")

nomes.​insert​("Tito Petri", ​at​: 1)

print(nomes)

O comando ​insert​, instrui o compilador a adicionar um


determinado objeto a um índice especificado no array.
Perceba no exemplo anterior que o String “Tito Petri” foi
adicionado logo na segunda casa do array (índice 1).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 123


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Da mesma forma, para Removermos um item de uma


Lista, é preciso declarar o Comando remove(), indicando
o índice (posição) do item que se deseja eliminar através
do argumento ​at​.

Exemplo:

var​ nomes:[String] = []
nomes.append("Felpudo")
nomes.append("Fofura")
nomes.append("Bugado")

nomes.​remove​(​at​: 2)
print(nomes)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 124


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

33. Projeto #4 - Busca por Nome e ID


Neste momento, um belo desafio para você juntar tudo o
que vimos até aqui seria montar uma aplicação que
busque um nome em uma Lista, associando este nome ao
seu respectivo número de registro de matrícula (ID).

Nossa Lista contém os nomes: ["Felpudo", "Fofura",


"Lesmo", "Bugado", "Uruca".

Os IDs de cada um são respectivamente: 10, 20, 33, 100,


999.

Utilize ArrayLists para armazenar os Dados e o Comando


break para sair da busca, ao encontrar o item.

Para realizar a busca de um nome qualquer, você deverá


digitá-lo no campo ​command line arguments​, antes de
executar a aplicação. Ao final, a aplicação deve dizer se
foi ou não encontrado, imprimir o nome pesquisado, e
qual o número de identificação (ID) que atribuímos a este
nome.

Tente desenvolver esta aplicação e depois confira a


minha resolução.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 125


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Dicas Importantes:

Utilize ​dois Array​, um


para armazenar os ​nomes
e o outro os ​IDs​.

A variável Booleana
chamada de ​encontrado
servirá para nos indicar
que o item foi achado na
lista.

Ela permanecerá falsa até


que o nome seja
encontrado na lista.

Caso nenhum nome seja


encontrado, deverá exibir
uma ​mensagem de aviso​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 126


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Solução para o Projeto #4 - Busca por Nome e ID

var​ encontrado:Bool = ​false


var​ busca = "Fofura"

let​ nomes:[String] = ["Felpudo", "Fofura", "Lesmo", "Bugado",


"Uruca"]
let​ ids:[Int] = [10,20,33,100,999]

for​ i ​in​ 0..<nomes.count{


​if​(nomes[i] == busca){
print("Item Encontrado. \(ids[i]) - \(nomes[i])")
encontrado = ​true
​break
}
}

if​(!encontrado){
print("Nome não encontrado!")
}

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 127


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

34. Métodos e Procedimentos


Métodos são blocos de comandos que usamos para
resumir e encapsular uma ação.

Vamos abstrair e imaginar a seguinte situação: Alguém


entrando em um carro.

Esta ação envolveria algumas instruções:

● Ir até o carro
● Usar a chave
● Abrir a porta
● Sentar no banco
● Fechar a porta

Podemos resumir todas estas ações chamando apenas


um comando: ​entrar no carro​. Isto simplificaria muito as
coisas no caso da construção de um algoritmo. Cada vez
que a ​função ​ou ​método ​fosse chamado, todas as
instruções relativas à este método seriam executadas.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 128


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Veja a seguir o exemplo de como podemos ​criar ou


registrar uma nova função​ em nosso código.

Exemplo:

func falar() {
print("Olá eu sou o Felpudo!")
}

Até aqui apenas c ​ riamos (declaramos) o método​.


Precisamos agora ​executá-lo​. Para isso basta usar o
nome do método.

Exemplo:

falar()

Veja a seguir como ficou a ​declaração ​e a ​utilização​ do


método que acabamos de criar.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 129


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

func​ falar(){
print("Olá eu sou o Felpudo!")
}

falar()

Agora temos o método criado e cada vez que usarmos o


comando ​falar( )​, o bloco inteiro do método será
executado.

Preste atenção em alguns detalhes. Existem dois tipos de


métodos. ​Com​ e ​Sem Retorno​ de valor.

Podemos também executar métodos passando ​valores​,


ou ​parâmetros​ como ​argumentos.

Uma coisa é você instruir o Joãozinho a ir até a padaria.


Outra coisa é você instruí-lo a ir na padaria e comprar ​5
pães ​e ​1 leite.

Podemos entender que os ​pães ​e ​leite ​são os


argumentos do método, os parâmetros que foram dados
para que o método fosse executado.

Veja a seguir como seria a utilização de um método com


passagem de argumentos​.

Exemplo:

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 130


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

func correr(​distancia:Float​){
print("Correu \(distancia) metros.")
}

Agora, declaramos qual será o argumento necessário


para executar o método (​Float distância​).

Portanto, para executar o método Falar() precisaremos


sempre passar um ​argumento ou ​parâmetro do tipo
String entre os parênteses.

Observe um segundo exemplo, agora iremos passar ​dois


argumentos​ para o método ser executado.

Exemplo:

func correr(​distancia:Float​){
print("Correu \(distancia) metros.")
}

correr(​distancia: 50.7​)

Perceba que na hora da declaração (criação) do método,


definimos o ​tipo da ​variável e o ​nome​, separando cada
argumento​ por vírgula.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 131


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

35. Função ou Método com Retorno


Até então, criamos métodos que apenas são executados
e acabam ali.

Existem também o que chamamos de ​função​, é


basicamente o mesmo que um método, porém a ​função
nos devolve algum valor como resultado final da sua
execução.

Até então, sempre declaramos nossos métodos usando a


palavra ​void​, isto significa que o ​retorno da função é
vazio​, ou seja, ela ​não tem retorno.

Observe agora como é uma função, ou método com


retorno de valor.

Exemplo:

func multiplica (x:Float, y:Float) ​-> Float​{


​return​ x*y
}

var resultado = ​multiplica(x: 3, y: 10)


print(resultado)

Perceba que depois da passagem dos argumentos,


utilizamos o operador ​-> ​seguido do ​tipo de valor que
esta função deve retornar através do comando ​return​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 132


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Se você executar este código, verá que nada vai


acontecer, a função ​Multiplicar() agora apenas executa a
multiplicação, e retorna o resultado, que vai ser guardado
na variável ​resultado​.

Exemplo:

func multiplica (x:Float, y:Float) -> Float{


return x*y
}

var resultado = ​multiplica(x: 3, y: 10)


print(resultado)

Lembre-se então:

a) Método
É o encapsulamento de uma sequência de ações.
Funções e Procedimentos são considerados Métodos!

b) Função
É um método que necessariamente ​retorna um valor​.
Precisa declarar o tipo que será retornado pela função
(como em nosso exemplo: ​-> Float​) e deve haver o
comando ​return ​dentro do método.

c) Procedimento
É o método que ​não tem retorno​, no caso do Swift, que
não utiliza o operador ​->​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 133


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

É comum os desenvolvedores não darem atenção a estes


detalhes, e saírem chamando tudo de ​função​. Ponto para
você que agora você já sabe exatamente qual é a
diferença!​36. Projeto #5 - Validação do CPF
Existe uma norma para se definir a geração de números
do CPF. É um ​Algoritmo já bem conhecido entre os
programadores e estudantes de Ciência da Computação.

Trata-se de ler os 9 primeiros dígitos e calcular os dois


últimos dígitos da sequência total de 11 números. Vamos
entender como é feito este cálculo:

Vamos utilizar o CPF 123.456.789. Os dígitos finais para


que este CPF seja válido devem ser ​0 ​e ​9​.

Vamos entender os passos para este algoritmo funcionar:

1) ​Primeiro, precisamos multiplicar os valores dos 9


digitos pelos números de 10 a 2 como na grade abaixo:

CPF 1 2 3 4 5 6 7 8 9
x 10 9 8 7 6 5 4 3 2
= 10 18 24 28 30 30 28 24 18

2) ​Agora some todos os resultados e obtenha o ​Resto da


Divisão​ por ​11​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 134


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Se o número for ​menor que 2​, o ​Primeiro Dígito é


considerado o número ​Zero​!

Se o número ​for 2 ou mais​, subtraia o resultado de ​11​.

Exemplo:

Soma Total Divisão Resto da Divisão Primeiro Dígito

210 11 1 0

Agora repita o processo de soma total, ​inserindo o


primeiro dígito encontrado ao final da sequência, e
fazendo a ​multiplicação de 11 até 2​ desta vez.

Exemplo:
CPF 1 2 3 4 5 6 7 8 9 0
x 11 10 9 8 7 6 5 4 3 2
= 11 20 27 32 35 36 35 32 27 0

Veja como fica o resultado final da validação deste CPF.

Exemplo:

Soma Total Divisão Resto da Divisão Segundo Dígito

255 11 9 9

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 135


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora, o que sabemos é que baseado nos nove primeiros


dígitos do CPF (Ex.: 123456789) podemos calcular qual
terá que ser os últimos dois dígitos para que este CPF
seja válido. No caso, descobrimos que são o ​0 ​e o ​9​.

É muito importante que você entenda o funcionamento do


algoritmo muito bem antes de começar a sua
programação.

Aconselho que você faça antes os cálculos em um


pedaço de papel​.

Escreva os valores no formato de uma tabela como aqui


no Livro e faça os cálculos para chegar no resultado.

Estes cálculos manuais chamamos de ​Teste de Mesa​.


Eles são muito importantes para nos assegurarmos do
funcionamento do algoritmo antes de partirmos para os
códigos e a programação.

Use o seu CPF ou de alguns amigos e faça alguns testes.

Depois, confira a seguir a minha resolução para este


algoritmo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 136


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Resolução para o Projeto #5 - Validação do CPF

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 137


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

var numeros:[Int] = [1,2,3,4,5,6,7,8,9,0,0]


var multiplica = 10;
var soma = 0;
var digito = 0;

for i in 0..<9{
soma = soma + (numeros[i] * multiplica)
multiplica -= 1
}

// Calculando o Primeiro Dígito


digito = soma%11

if(digito<2){
numeros[9] = 0
}else{
numeros[9] = 11 - digito
}

multiplica = 11
soma = 0

// Calculando o Segundo Dígito


for i in 0..<10{
soma = soma + (numeros[i]*multiplica)
multiplica-=1
}

digito = soma%11
if(digito<2){
numeros[10] = 0
}else{
numeros[10] = 11 - digito
}

// Exibindo o CPF Completo e Formatado

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 138


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

var cpfFinal = ""


for i in 0..<numeros.count {
if((i>0)&&(i%3==0)&&(i<9)){cpfFinal+="."}
if(i==9){cpfFinal+="-"}
cpfFinal += String(numeros[i])
}
print(cpfFinal)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 139


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

37. Projeto #6 - Números Primos


Os ​Números Primos são números inteiros ​divisíveis
apenas ​por​ ​1 ​e​ por​ ​eles mesmos!

Os números 2, 3, 5, 7, 11, 13 são exemplos de ​números


primos pois são divisíveis apenas por ​eles mesmos ​ou
por​ ​1​.

DESAFIO #1

Eu te desafio a utilizar tudo o


que você aprendeu até aqui
e Desenvolver um algoritmo
para calcular todos os
números primos de zero até
um determinado número
inserido na linha de
comando do compilador. Lesmo

Para resolver este desafio, você vai ter que varrer uma
lista do número zero até o número inserido pelo usuário e
dividi-lo por todos os números menores que ele.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 140


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Para fazer esta verificação do meu exemplo eu resolvi


utilizando dois ​loops de repetição, um dentro do outro,
assim como fizemos no capítulo ​"2. Array
multidimensional ou Matriz" p​ ara varrer uma ​tabela ou
matriz de dados.

Aproveite e observe a foto e a piada a seguir.

Caso você não


entenda a gag ou
meme ou piada à
seguir, sugiro que
estude mais os
laços de repetição,
ou então reformule
seu senso de
humor.

*Observação: o argumento (​terminator:””) s​ erve apenas


para continuar imprimindo na mesma linha do console.
Não expliquei isso anteriormente para não confundir o
leitor. Porém esta é uma boa hora para você entender
mais este comando da linguagem Swift =).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 141


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Já vimos anteriormente como utilizar loops aninhados


para percorrer matrizes. O conceito aqui é parecido.

Agora que você já entendeu bem sobre o ​aninhamento


de ​loops ou ​nested loops (​ conceito de um ​loop de
repetição​ for​ dentro do outro).

Observe a seguir a minha resolução para o problema dos


números primos.

Resolução para o Projeto #6 - Números Primos

var numerosPrimos = ""


var entrada:Int = 50
var lista:[Int] = []

for i in 0...entrada{

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 142


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

lista.append(i)
}

for j in lista{
var primo:Bool = true
if(j>1){
for k in 2..<j{
if(j%k==0){
primo = false
break
}
}
if(primo){
numerosPrimos += "\(j), "
}
}
}

Para executar o código acima ​insira um número na linha


de argumento​ e compile a aplicação.

O resultado obtido no console será todos os números


primos de 0 até o seu número digitado.

Resultado para Primos de 0 a 100:

0, 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 143


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

38. Classes no Swift


As ​classes ​são estruturas que servem de modelos para
criarmos objetos.

Imagine uma receita, um molde, que reúne todas as


características e métodos à respeito da formação de um
determinado ​objeto.

A ​classe ​é praticamente o modelo que reúne os ​métodos


e ​atributos​ refrentes à um determinado ​objeto.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 144


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Cada objeto tem suas


próprias características
(atributos, variáveis) e
métodos de
funcionamento.

Ao criar ou registrar a
classe, você define
todos estes métodos e
atributos uma única
vez.

Depois, você pode reutilizar estes métodos e atributos


novamente. A cada objeto criado na sua programação,
ele já virá com todos estas propriedades.

Para "fabricar" um objeto


dentro da nossa
programação precisamos
primeiro especificar sua
classe​.

Com base nesta classe


podemos criar ​novos
objetos​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 145


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

A seguir, vamos criar e utilizar uma nova classe no Swift.

Exemplo:

class​ Animal{
​var​ nome:String?
​var​ idade:Int?
​var​ peso:Float?
​var​ cor:String?
}
var​ animal:Animal = Animal()

animal.nome = “Felpudo”
animal.idade = 12

A partir do comando ​class ​definimos uma nova classe e


criamos os parâmetros e atributos dentro das chaves ​{...}​.

Exemplo:

class Animal{
var nome:String?
var idade:Int?
var peso:Float?
var cor:String?

func correr(){
print("Correu.")
}

func falar(mensagem:String){
print("Ola eu sou o: \(mensagem)")
}
}

var animal:Animal = Animal()

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 146


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

animal.correr()
animal.falar(mensagem: "Oi eu sou o Felpudo!")

E para instanciar (ou criar) um objeto na sua programação


utilize o método construtor, e declare o objeto seguindo as
regras que utilizaria para criar uma variável qualquer.

Primeiro o ​tipo​, depois o nome da variável, e depois sua


inicialização (onde teremos que utilizar o construtor ​new).

Veja, a seguir o exemplo completo, como criar um novo


objeto, e manipular seus métodos e atributos.

Exemplo:

class Animal{

var nome:String?
var idade:Int?
var peso:Float?
var cor:String?

func correr(){
print("Correu.")
}

func falar(mensagem:String){
print("Ola eu sou o: \(mensagem)")
}
}

var animal:Animal = Animal()

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 147


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

animal.nome = “Felpudo”
animal.idade = 12

animal.correr()
animal.falar(mensagem: "Oi eu sou o Felpudo!")

Perceba que o objeto foi criado e posteriormente foi


inserido os valores nos seus atributos.

Também podemos utilizar o ​Método Construtor para já


criar e parametrizar o objeto, logo no comando da criação.

Para isto, na sua classe você deve utilizar o método


construtor da classe.

Exemplo:

​init​(nome:String, idade:Int, peso:Float, cor:String) {


self.nome = nome
self.idade = idade
self.peso = peso
self.cor = cor
}

Observe que através deste método, que deve ser um


método público e ter o mesmo nome da classe, estamos
passando quatro argumentos como parâmetros. Estes
argumentos serão utilizados para inicializar os atributos
da classe, que são referenciados por ​.self​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 148


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora, na hora de criar o objeto, utilizamos o seguinte


método.

Exemplo:

var animal:Animal = Animal(nome: "Felpudo", idade: 12, peso: 50,


cor: "verde")

Assim, seu objeto já está criado e inicializado.

Confira o código inteiro da implementação da classe já


com o seu ​Método Construtor​.

Exemplo:

class​ Animal{

​var​ nome:String?
​var​ idade:Int?
​var​ peso:Float?
​var​ cor:String?

​init​(nome:String, idade:Int, peso:Float, cor:String) {


​self​.nome = nome
​self​.idade = idade
​self​.peso = peso
​self​.cor = cor
}

​func​ correr(){
print("Correu.")
}

​func​ falar(mensagem:String){
print("Ola eu sou o: \(mensagem)")

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 149


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

}
}

var​ animal:Animal = Animal(nome: "Felpudo", idade: 12, peso: 50,


cor: "verde")

print(animal.nome!)
print(animal.idade!)
print(animal.peso!)
print(animal.cor!)

animal.correr()
animal.falar(mensagem: "Oi eu sou o Felpudo!")

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 150


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

39. Hierarquia de Classes


Hierarquia é o conceito de parentesco (pai e filho) que
criamos entre as classes.

Uma classe pode herdar todos os parâmetros e atributos


de uma classe superior.

Vamos usar de exemplo um ser humano.

No caso, um objeto do tipo Humano poderia compartilhar


de alguns atributos comuns a outros animais, porém ele
pode também ter suas próprias atribuições e funções
específicas.

Observe como podemos estender uma classe como no


caso anterior.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 151


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

class Humano ​: Animal​ {

var profissao:String?
var carro:String?

init(nome:String, idade:Int, peso:Float, cor:String,


profissao:String, carro:String) {

self.profissao = profissao
self.carro = carro
​super.init(nome: nome, idade: idade, peso: peso, cor: cor)
}

override func correr() {


print("Correu 1.000 Metros")
}

var humano:Humano = Humano(nome: "Tito", idade: 12, peso: 50,


cor: "azul", profissao: "Programador", carro: "Fusca")

print(humano.nome)
humano.correr()

Criamos uma nova classe, e usamos o comando ​extend


para estender todos os parâmetros e métodos da classe
referida.

No método construtor podemos utilizar o comando


super.init ​para inicializar os parâmetros da classe
superior (no caso a classe Animal).

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 152


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora, a ​Classe Animal tem seus determinados atributos


e métodos, e a ​Classe Humano tem todos os atributos e
métodos da classe animal, e ainda seus próprios atributos
e métodos.

Entender este conceito de hierarquias facilita muito a


estruturação da programação. E vai tornar nossa
programação muito mais simples, organizada e fácil de
ser reutilizada.

Perceba que em um game, ou aplicativo, cada janela,


componente, objeto, e personagem pode ser organizado
como uma classe para a facilitação do entendimento do
código e o reaproveitamento das​ programações.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 153


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

40. Modificadores de Acesso


São formas de ​ocultar ou ​expor os ​Atributos de
Métodos​ das classes.

a) Public
A variável pode ser vista e modificada de todas as outras
classes que podem acessar o objeto.

No ​modificador público​ todos têm acesso.

b) Private
A variável só poderá ser vista e modificada de dentro da
classe​ em que foi criada.

A única ​Classe que tem acesso ao ​Atributo é a própria


classe que o define.

Ou seja, se uma classe "Pessoa" declara um ​Atributo


Privado chamado "nome", somente a classe "Pessoa"
terá acesso a ele.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 154


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

c) Default
Um atributo default (identificado pela ​ausência de
modificadores​) pode ser acessado por todas as classe
que estiverem no mesmo pacote em que a classe que
possui o atributo se encontra.

d) Protected
Esse ​Modificador é o que mais causa confusão, ele é
praticamente igual ao ​default​, com a diferença de que se
uma classe (mesmo que esteja fora do pacote) estende
alguma classe com o modificador ​protected​, esta classe
poderá ter acesso a este atributo.

O acesso de um atributo protegido é dado por ​pacote e


por ​herança​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 155


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

42. Sobrescrita e Sobrecarga de Método


Aqui entram dois conceitos bem importantes na hora de criar
os Métodos de uma hierarquia de classes:

a) Sobrescrita de Método - @Override


O Operador ​@Override ​é uma forma de garantir que você
está sobrescrevendo um método, e não criando um novo.

Perceba que, no exemplo abaixo, a subclasse (filho)


substituiu o método da superclasse (pai).

Exemplo:

public class ClassePai {


public void imprime() {
print("Mensagem Pai!")
}
}

public class ClasseFilho extends ClassePai {


@Override
public void imprime() {
print("Mensagem Filho!")
}
}

O que causa um pouco de confusão é que este operador


é opcional. Se você removê-lo perceberá que não vai
mudar nada!

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 156


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Este operador existe para reforçar o entendimento da


estrutura dos métodos nas classes.

Em alguns compiladores, se você usar um operador


@Override em um método que não existe na classe
superior, ele pode dar erro!

b) Sobrecarga de Método - Overload


Quando dizemos que um Método é Sobrecarregado
(​Overloaded Method)​ significa que este método é utilizado
para diferentes funções, de acordo com os parâmetros
que receber.

Veja que, na classe do exemplo abaixo, definimos três


métodos com o mesmo nome. Porém, cada um deles
recebe argumentos de diferentes tipos.

De acordo com o argumento passado, o compilador já


entende qual é o método relacionado.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 157


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 158


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

43. Modelo de Dados


A partir de agora, vamos entender um pouco mais sobre a
arquitetura de dados​ de um programa.

Vou utilizar como exemplo o cadastro dos dados de uma


pessoa. Podemos reunir todos estes dados em um objeto
único, estruturando seus atributos no formato de um
modelo de dados​.

Para isso vamos definir uma classe, que vou chamar de


Contato​.

Cada objeto desta classe vai guardar todos os atributos


ou ​dados de uma pessoa​, que eu preciso armazenar.
Basicamente, será uma classe com alguns atributos.

A única novidade é que agora vamos usar os ArrayLists


para armazenar uma lista de ​objetos ​criados a partir da
classe ​Contato.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 159


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

import Swift.util.List;
import Swift.util.ArrayList;

class Contato{

String nome;
String telefone;
String email;
String empresa;

public Contato(String nome, String telefone, String email, String


empresa){
this.nome = nome;
this.telefone = telefone;
this.email = email;
this.empresa = empresa;
}
}

public class OlaMundo


{
public static ArrayList<Contato> minhaLista = new
ArrayList<Contato>()
public static void main(String[] args)
{
Contato meuContato = new Contato("Tito
Petri","555-1234","[email protected]","Tito's Coorp.")

print(meuContato.nome)
print(meuContato.telefone)
print(meuContato.email)
print(meuContato.empresa)

minhaLista.add(meuContato)

print(meuContato)

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 160


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

print(minhaLista.get(0))
}
}

Resultado:

Tito Petri
555-1234
[email protected]
Tito's Coorp.
Contato@6d06d69c
Contato@6d06d69c

Perceba que qualquer objeto do mundo real possui uma


série de características atribuídas a ele (nome, cor,
tamanho, peso, idade entre outros).

Podemos analisar estas características e modelar o nosso


banco de dados a partir delas.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 161


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

44. Projeto #7 - Cadastro e Busca


Neste próximo algoritmo, nossas programações já
começam a ficar maiores e o nível de abstração aumenta
ainda mais.

Serei breve na explicação, para que o próprio leitor pare,


concentre-se e tente entender por si códigos que já foram
explicados isoladamente, ao longo de todo este material.

No programa a seguir, basicamente vamos criar um


​ e objetos da classe ​Contato e inicializá-lo com
ArrayList d
alguns contatos.

Observe que também existe a implementação de alguns


métodos importantes para trabalhar no Banco de Dados:

● Adicionar Contato
● Remover Contato por Nome
● Buscar Contato
● Imprimir Lista Completa

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 162


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

// Declaração da Classe Contato


class Contato{
var nome:String?
var sobrenome:String?
var email:String?
var telefone:String?

init(_ nome:String,_ sobrenome:String,_ email:String,_


telefone:String){
self.nome = nome
self.sobrenome = sobrenome
self.email = email
self.telefone = telefone
}
}

// Criando Objetos da Classe Contato


var contatoA:Contato =
Contato("Tito","Petri","[email protected]","555-1234")
var contatoB:Contato =
Contato("Felpudo","Júnior","[email protected]","555-0000")
var contatoC:Contato = Contato("Fofura","da
Silva","[email protected]","555-0000")

// Declaração do Método para Exibir um Contato


func imprimeContato (_ contato:Contato){
print("Nome: \(contato.nome!) \(contato.sobrenome!)\ne-Mail:
\(contato.email!)\nTelefone: \(contato.telefone!)\n")
}

// Utilizando o Método para Exibir um Contato


imprimeContato(contatoA)
imprimeContato(contatoB)
imprimeContato(contatoC)

// Criando uma Lista de Objetos da Classe Contato

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 163


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

var listaContatos:[Contato] = []

// Adicionando Objetos Contato a Lista


listaContatos.append(contatoA)
listaContatos.append(contatoB)
listaContatos.append(contatoC)
listaContatos.append(Contato("Uruca", "McMoney",
"[email protected]", "555-1313"))

// Percorrendo a Lista e Exibindo os Objetos da Classe Contato


for item in listaContatos{
imprimeContato(item)
}

func imprimeNomes(contatos:[Contato]){
for item in contatos {
print(item.nome!)
}
}

func imprimeNomeComEmail(contatos:[Contato]){
for item in contatos {
let meuContato:Contato = item as Contato
print("Nome: \(meuContato.nome!) - email:
\(meuContato.email!)")
}
}

imprimeNomes(contatos:listaContatos)

// Método para Buscar um Contato na Lista

func buscaContato(contatos:[Contato], nomeBuscado:String){


var encontrado:Bool = false
for item in contatos {
let meuContato:Contato = item as Contato

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 164


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

if meuContato.nome! == nomeBuscado {
print("Nome Encontrado!!!\n...")
print(meuContato.nome!)
print(meuContato.email!)
print(meuContato.telefone!)
encontrado = true
}
}

if !encontrado {
print("Nome Não Encontrado!")
}
}

buscaContato(contatos:listaContatos, nomeBuscado:"Tito")

// Método para Apagar um Contato da Lista

func apagarContato(contatos:[Contato], nomeBuscado:String){


var encontrado:Bool = false

for i in 0...contatos.count-1 {

if contatos[i].nome! == nomeBuscado {
print("Contato Apagado!!!\n...")
print(contatos[i].nome!)
listaContatos.remove(at: i)
encontrado = true
}
}

if !encontrado {
print("Nome Não Apagado!\n...")
}
}

apagarContato(contatos:listaContatos, nomeBuscado:"Tito")

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 165


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

// Exibindo toda a Lista

for item in listaContatos{


imprimeContato(item)
}

DESAFIO FINAL

Agora todo o conhecimento


que obtivemos durante este
Livro será aplicado na
construção deste programa.

Escreva e Compile linha por


linha, método por método,
até entender todos os
conceitos e idéias por trás
da construção de toda esta
aplicação de cadastro de
Uruca contatos.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 166


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

42. Banco de Dados


O que criamos anteriormente é uma tabela relacional de
valores. Pense que toda a estrutura de dados de um
programa ou ​site​ pode estar contida em uma tabela desta.

Além de gravar nomes e dados de usuários, podemos


salvar as preferências do usuário durante a navegação
em um ​site​ ou aplicativo.

Ordenar dados da partida de um jogo, atributos da


construção de objetos visuais ou gráficos.

Os Bancos de Dados mais modernos são ferramentas


que, além de adicionar e remover itens em tabelas
relacionais, oferecem-nos métodos mais sofisticados para
organizar e ler estas tabelas.

Exemplo:
NOME TELEFONE EMAIL EMPRESA
Bugado 555-6666 [email protected] ACME Inc.
Felpudo 1234 [email protected] Escola do VideoGame
Tito Petri 555-1234 [email protected] Tito Coorp.
Fofura 1234 [email protected] Escola do VideoGame
Lesmo 999-8888 [email protected] ACME Inc.
Uruca 555-6666 [email protected] ACME Inc.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 167


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

A tabela anterior está totalmente desordenada. Imagine


se você pudesse ordená-la por cada um dos atributos,
veja quanta coisa interessante poderia descobrir.

Abaixo podemos ordenar todos os itens do Banco, de


acordo com a ordem alfabética do campo NOME por
exemplo.

Exemplo:
NOME TELEFONE EMAIL EMPRESA
Bugado 555-6666 [email protected] ACME Inc.
Felpudo 1234 [email protected] Escola do VideoGame
Fofura 1234 [email protected] Escola do VideoGame
Lesmo 999-8888 [email protected] ACME Inc.
Tito Petri 555-1234 [email protected] Tito Coorp.
Uruca 555-6666 [email protected] ACME Inc.

Ou agora, ordenar pelo número de telefone. Só de


visualizar a tabela conseguimos entender quais são os
usuários que possuem o mesmo telefone, por exemplo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 168


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:
NOME TELEFONE EMAIL EMPRESA
Felpudo 1234 [email protected] Escola do VideoGame
Fofura 1234 [email protected] Escola do VideoGame
Tito Petri 555-1234 [email protected] Tito Coorp.
Bugado 555-6666 [email protected] ACME Inc.
Uruca 555-6666 [email protected] ACME Inc.
Lesmo 999-8888 [email protected] ACME Inc.

E assim, podemos enxergar nossa lista por várias


ordenações diferentes, como o email.

Exemplo:
NOME TELEFONE EMAIL EMPRESA
Bugado 555-6666 [email protected] ACME Inc.
Felpudo 1234 [email protected] Escola do VideoGame
Fofura 1234 [email protected] Escola do VideoGame
Lesmo 999-8888 [email protected] ACME Inc.
Tito Petri 555-1234 [email protected] Tito Coorp.
Uruca 555-6666 [email protected] ACME Inc.

E a empresa, por exemplo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 169


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:
NOME TELEFONE EMAIL EMPRESA
Bugado 555-6666 [email protected] ACME Inc.
Lesmo 999-8888 [email protected] ACME Inc.
Uruca 555-6666 [email protected] ACME Inc.
Felpudo 1234 [email protected] Escola do VideoGame
Fofura 1234 [email protected] Escola do VideoGame
Tito Petri 555-1234 [email protected] Tito Coorp.

Se você fosse programar a listagem de itens de um ​site


ou aplicativo, perceba agora como poderia ser útil este
tipo de recurso.

Hoje em dia existem muitas ferramentas de ​Banco de


Dados​. Entre elas, posso sugerir duas muito úteis e
famosas.

SQL é uma linguagem de programação específica para


Bancos de Dados​. Muitas linguagens de programação
conversam com ​SQL​, e poderiam se integrar facilmente a
um ​Banco de Dados em ​SQL, ​e utilizá-lo em ​sites e
aplicativos ​iOS​ ou ​iOS,​ por exemplo.

Firebase é o que chamamos de ​BackEnd de Dados​. O


Firebase é um ​site​/serviço onde você pode criar e
consultar ​Bancos de Dados​ com muita facilidade.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 170


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Como ainda estamos dando nossos primeiros passos em


Swift e utilizando um compilador um pouco limitado em
recursos, não existe uma integração simples com o ​SQL​.

Porém, quando você der os próximos passos e começar a


programar seus aplicativos para o sistema ​iOS por
exemplo (​utilizando o IDE Xcode​), você já terá entendido
todos os conceitos de base necessários para se trabalhar
com o ​Swift​, e as ideias principais sobre ​Bancos de
Dados​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 171


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

43. Armazenamento de Dados


Quando criamos uma variável, ela fica armazenada
temporariamente na memória do computador. A partir do
momento em que você fechar o ​browser ou a janela do
compilador, esse dado se apaga.

Porém, existem maneiras de armazenar os dados


permanentemente na memória. É o que chamamos de
Dados Persistentes​. Perceba que quando seu
computador ou celular é desligado e ligado novamente,
todos os dados (fotos, vídeos, arquivos) ainda
permanecem lá.

Isto é porque eles foram armazenados permanentemente


em uma memória sólida ou rígida - ​Hard Disk​. Um tipo de
memória em que o dado fica gravado para sempre.

Diferente da memória RAM, onde todos os dados são


zerados quando a máquina desliga.

Podemos armazenar os dados permanentemente de


algumas maneiras.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 172


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Gravando na memória sólida (​HD ou disco rígido). Todo


equipamento possui uma memória pois é lá onde está
instalado o sistema operacional, ou o sistema principal da
máquina (Windows, Mac OS, iOS ou iOS).

Gravando em algum cartão de armazenamento, como o


do seu celular, um ​pendrive ou um HD externo ao seu
computador.

Gravando o dado na nuvem. Como hoje a conexão com a


internet já é quase que constante, muitas aplicações
gravam o dado direto em algum computador/servidor que
esteja conectado através da ​internet​.

Ou seja, o seu aplicativo se conecta ao servidor e manda


o dado para ser armazenado em algum computador
específico (servidor).

Aqui, no compilador ​online de ​Swift​, também seria uma


tarefa bem trabalhosa armazenar o ​Dado
permanentemente na aplicação. Porém, quando for
trabalhar com os ​IDEs como o Xcode​, ​você perceberá
que esta tarefa é feita com muita facilidade.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 173


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

44. Introdução ao Xcode


Até aqui nós já utilizamos o Xcode, porém apenas para
testar os códigos no Playground, utilizando a Linguagem
Swift.

Perceba que com o que conhecemos, ainda não é possível se


criar uma aplicação para os Sistemas da Apple (MacOS,
iPhones, iPads, tvOS e Apple Watch).

Para chegar neste nível, ainda teremos que conhecer um


monte de Ferramentas, Recursos e Bibliotecas do Xcode IDE.

O Xcode é o programa que vai te permitir reunir tudo o que


você já conhece sobre a Linguagem Swift, aos recursos dos
aparelhos iOS (como câmera, acelerômetro, internet, redes
sociais e tudo o que é possível de se realizar com um
dispositivo iOS por exemplo).

A partir desta seção, vou te ensinar os primeiros passos no


Xcode para você aprender o básico e depois assistir às mais
de 500 vídeo-aulas que eu tenho publicadas sobre o assunto.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 174


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

46. Meu Primeiro Aplicativo iOS


Então vamos lá, fecha o seu Playground e reinicie o
Xcode.
Na tela inicial do programa,

escolha agora a opção ​Create a New Xcode Project

Perceba que esta é a opção pra criar projetos de


aplicações para iPhone, Mac, AppleWatch e Apple TV.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 175


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Deixe selecionadas as opções ​iOS e ​Single View App​. e


Clique em ​Next​.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 176


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Agora dê um nome para o seu projeto. Chamarei o meu


de ​Meu Primeiro App​.

No campo ​Organization Identifier: ​coloque o endereço


reverso do seu website. No meu caso que é
www.titopetri.com​, vou utilizar apenas com.titopetri.

Isto é apenas uma maneira de garantir que cada


aplicativo publicado na Apple Store futuramente, tenha
uma identificação única.

Ao clicar novamente em ​Next​, selecione uma pasta para


criar e guardar o seu projeto.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 177


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Perceba que agora o Xcode vai criar nesta pasta, uma


série de sub-pastas e arquivos.

Para programar nosso aplicativo iOS, teremos que


conhecer vários destes arquivos e o que cada um deles
configura ou executa no app.

Esta é a tela inicial do Projeto do Xcode

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 178


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Perceba que no menu lateral esquerdo, conseguimos


navegar entre os mesmos arquivos encontrados no
diretório do projeto.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 179


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

O Xcode é uma espécie de explorador/browser que te


permite navegar e visualizar os arquivos e códigos do
projeto.

Vamos agora conhecer os principais arquivos do nosso


projeto do Xcode.

O arquivo ​.xcodeproj é a raíz do nosso projeto, clicando


duas vezes nele, voce abre o projeto no Xcode.

Selecionando este arquivo dentro do Xcode, você será


levado às configurações básicas do projeto.

Repare também no canto superior direito

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 180


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Estes três botões mostram e escondem os três menus laterais


do Xcode: ​Navegador​, ​Console de Debug​ e ​Inspetor

Você pode ligar ou desligar esses botões de forma a esconder


ou mostrar os menus.

Exibindo os menus:

Escondendo os Menus

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 181


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Existem 3 atalhos bem úteis para este comando:

CMD+0​ - Navegador
CMD+ALT+0​ - Inspector
CMD+SHIFT+Y​ - Console de Debug

Agora pelo Navegador, vamos navegar através dos princiapis


arquivos de um Projeto do Xcode:

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 182


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

AppDelegate.swift

Este arquivo é a raiz de todos os códigos do projeto. Aqui


podemos encontrar os eventos que são disparados ao se abrir,
fechar ou suspender a aplicação iOS.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 183


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

ViewController.swift

A ViewController é o código associado à primeira tela da nossa


aplicação que em nosso caso ela ainda está em branco.

É aqui que vamos escrever nosso programa em Swift. Veremos


adiante.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 184


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Main.storyboard

O Storyboard é o fluxograma de ligação e navegação entre as


telas da aplicação. Por aqui podemos criar novas telas e utilizar
os componentes nativos para o iOS como Botões, Textos,
Imagens, Listas (TableViews), Sliders e vários outros.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 185


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Assets.xcassets

Onde guardaremos os recursos gráficos (como ícones e


arquivos de imagens) da nossa aplicação.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 186


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

LaunchScreen.storyboard

Esta tela é exibida instantaneamenta ao abrir a aplicação. É a


tela de início ou carregamento do app.

Info.plist

Aqui configuramos recursos (como a utilização de outras


línguas ou fontes de texto) e permissões para utilizar a internet,
ou a câmera do aparelho por exemplo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 187


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Por enquanto, vamos apenas executar nosso primeiro


aplicativo iOS no Simulador.

Antes vamos apenas fazer alguma pequena modificação em


alguns arquivos que já conhecemos.

Navegue até o arquivo ​Main.Storyboard

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 188


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

No canto superior direito do Xcode, você vai encontrar o botão


Library​.

Por ela você terá acesso a uma paleta de ​Componentes


Nativos do iOS​. São componentes visuais como botões,
caixas de texto e outros objetos que utilizaremos para montar o
layout do nosso aplicativo.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 189


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Vamos começar pelo mais simples, o ​Label​, a caixa de texto.

Selecione e arraste um ​Label ​da paleta ​Library​ para cima da


tela em branco da nossa ​ViewController​.

Dando dois cliques sobre o texto, você consegue editá-lo.

Agora navegue até o arquivo ​ViewController.swift

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 190


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Insira um comando ​print​ dentro do método ​viewDidLoad()​.

Este método será executado assim que a ​ViewController ​for


carregada.

Vamos agora ​compilar ​e ​executar ​a aplicação no Simulador


iOS. Basta clicar no botão ​Run / Play​ no canto superior direito.

Agora aguarde até o Simulador iOS abrir e executar sua


aplicação. Isto pode demorar até alguns minutos.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 191


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Pronto, já temos nosso primeiro Aplicativo iOS


funcionando.

Agora você já tem todo o embasamento sobre a


Linguagem Swift e o Xcode IDE para iniciar sua jornada
no desenvolvimento de aplicações iOS.

À seguir, vou te direcionar a mais de 400 video aulas de


Swift e Xcode para voce dominar processo desde o zero
até a criação e publicação de Aplicativos, Games e
Realidade Aumentada na AppStore.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 192


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

45. Linguagens de Programação


Existem muitas ferramentas e linguagens de programação
diferentes.

Frequentemente, os alunos me perguntam qual é a


melhor ferramenta, ou qual linguagem aprender?

Sugiro que esta pergunta seja sempre trocada para:

"​Que tipo de aplicação você gostaria de


desenvolver?"

Baseado nesta pergunta, escolha uma ferramenta ou


linguagem que vai te dar os recursos para desenvolver
este seu produto.

Veja as principais ferramentas e linguagens utilizadas


para diferentes tipos de desenvolvimento.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 193


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

Páginas, Web Sites e Sistemas para Internet:

HTML

CSS

Php

SwiftScript

* Lembrando que o HTML e CSS teoricamente não são linguagens de


programação, e sim de marcação, pois servem apenas para montar e
configurar as páginas, e não para montar algoritmos. Porém essas
linguagens e conhecimentos devem estar presentes no dia-a-dia do
Desenvolvedor Web.

Aplicativos ​Mobile​ e ​Desktop​, recomendo as seguintes


linguagens e IDEs.

Exemplo:

Desktop & Mobile Apps IDE Plataforma

Swift Xcode iOS

Swift Xcode Mac OS e iOS

C-Sharp (C#) Visual Studio Windows

E, no caso do desenvolvimento de ​Games​, Realidade


Virtual e Realidade Aumentada, recomendo as seguintes
ferramentas.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 194


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Exemplo:

Games e VR IDE Plataforma

Swift Xcode Mac OS e iOS

C-Sharp (C#) Unity Multiplataformas

Não existe uma linguagem ou ferramenta melhor ou pior,


o principal é entender as diferenças e conhecer qual delas
vai te ajudar a chegar no produto que você deseja criar.

Lembre-se que o primeiro passo sempre será ​"Entender


qual é o produto que você deseja saber criar!"

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 195


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 196


www.titopetri.com
Aprendendo a Programar - Linguagem Swift
Copyright © 2019 Tito Petri - Todos os Direitos Reservados.

Parabéns​ por concluir mais este aprendizado!


Espero que os conhecimentos adquiridos sejam úteis para sua
jornada.

Se quiser conhecer ainda mais sobre a Criação de Jogos,


Aplicativos, Modelagem e Animação 3D e Realidade Virtual,
visite meu site e minhas redes sociais.

titopetri.com

youtube.com/titopetri

instagram.com/tito.petri
facebook.com/paginadotito
twitter.com/titopetri

Tito Petri ​©​ 2019 - Todos os Direitos Reservados. 197


www.titopetri.com

Você também pode gostar