74
Lógica de Programação Unimep/Pronatec 2° Semestre/2014 AULA 08 - Prof. André Bertoletti - [email protected]

Lógica de Programação - Unimep/Pronatec - Aula08

Embed Size (px)

Citation preview

Page 1: Lógica de Programação - Unimep/Pronatec - Aula08

Lógica de Programação

Unimep/Pronatec

2° Semestre/2014

AULA 08

- Prof. André Bertoletti -

[email protected]

Page 2: Lógica de Programação - Unimep/Pronatec - Aula08

Aula de hoje

• Conhecendo uma nova linguagem de programação

• Estruturas de repetição

• Exercícios Portugol/C#

Page 3: Lógica de Programação - Unimep/Pronatec - Aula08

NÃO ESQUEÇA DA SUA Hora do Código

Acesse, identifique-se e faça os exercícios!

abre.ai/horadocodigo

Page 4: Lógica de Programação - Unimep/Pronatec - Aula08

E se você pudesse escrever e executar programas escritos

em Português?

Conheça a linguagem Portugol

Page 5: Lógica de Programação - Unimep/Pronatec - Aula08

Uma IDE da linguagem Portugol

http://abre.ai/portugolide (http://www.dei.estt.ipt.pt/portugol)

Page 6: Lógica de Programação - Unimep/Pronatec - Aula08
Page 7: Lógica de Programação - Unimep/Pronatec - Aula08

Portugol IDE: Veja como é simples

Page 8: Lógica de Programação - Unimep/Pronatec - Aula08

Depurando e executando o seu código linha a linha na Portugol IDE

Page 9: Lógica de Programação - Unimep/Pronatec - Aula08

Vamos ver ao vivo!

Portugol IDE

Page 10: Lógica de Programação - Unimep/Pronatec - Aula08

Quer aprender mais sobre a Portugol IDE ?

Vídeos: http://abre.ai/videos-portugolide

(https://www.youtube.com/user/programandodozero/videos)

Apostila: http://abre.ai/apostila-portugolide

(GoogleDrive da Turma, Pasta Lógica de Programação -> Apostilas)

Page 11: Lógica de Programação - Unimep/Pronatec - Aula08

Mais uma IDE da linguagem Portugol

http://abre.ai/portugolstudio (http://univali-l2s.github.io/Portugol-Studio-Site)

Page 12: Lógica de Programação - Unimep/Pronatec - Aula08
Page 13: Lógica de Programação - Unimep/Pronatec - Aula08
Page 14: Lógica de Programação - Unimep/Pronatec - Aula08

O Portugol Studio também é simples

Page 15: Lógica de Programação - Unimep/Pronatec - Aula08

Depurando e executando o seu código linha a linha na Portugol Studio

Page 16: Lógica de Programação - Unimep/Pronatec - Aula08

Vamos ver ao vivo!

Portugol Studio

Page 17: Lógica de Programação - Unimep/Pronatec - Aula08

Quer aprender mais sobre a Portugol Studio?

Vídeos: http://abre.ai/videos-portugolstudio

(https://www.youtube.com/user/portugolstudio/videos)

Documentação: Help da própria IDE (tecla F1)

Page 18: Lógica de Programação - Unimep/Pronatec - Aula08

Compare lado a lado e perceba as diferenças

Algoritmo Portugol IDE

Portugol Studio C#

Page 19: Lógica de Programação - Unimep/Pronatec - Aula08

Escala de compreensão das linguagens de programação

Mais próximas do ser humano

Mais próximas da máquina

Algoritmo Portugol Studio

Portugol IDE C#

Page 20: Lógica de Programação - Unimep/Pronatec - Aula08

Estruturas de repetição

(laços/loops)

Quando um trecho de código precisa ser executado diversas vezes

Page 21: Lógica de Programação - Unimep/Pronatec - Aula08

Por que usar estruturas de repetição • Até agora só criamos programas que executam

apenas uma vez

• Muitos problemas requerem um mecanismo de repetição, no qual algum cálculo ou seqüência de instruções é repetida, muitas vezes, usando diferentes condições

• Cada repetição é chamada de iteração ou passagem pelo laço

• CUIDADO! Se a sua condição lógica não for bem pensada, seu programa pode não entrar no laço, ou pior, entrar em loop infinito

Page 22: Lógica de Programação - Unimep/Pronatec - Aula08

São três comandos de repetição

1. Enquanto (while)

– Laço de repetição quando deseja fazer o teste lógico no começo

2. Faça enquanto (do while)

– Laço de repetição quando deseja fazer o teste lógico no final

3. Para (for)

– Laço utilizado quando se conhece o número de vezes que deverá repetir

Page 23: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1

Criar um programa que mostre o texto “Bom dia” 12 vezes na tela.

Page 24: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 – Resolução em Algoritmo (sem estruturas de repetição)

1. Inicio

2. Escrever(“Bom dia”)

3. Escrever(“Bom dia”)

4. Escrever(“Bom dia”)

5. Escrever(“Bom dia”)

6. Escrever(“Bom dia”)

7. Escrever(“Bom dia”)

8. Escrever(“Bom dia”)

9. Escrever(“Bom dia”)

10. Escrever(“Bom dia”)

11. Escrever(“Bom dia”)

12. Escrever(“Bom dia”)

13. Escrever(“Bom dia”)

14. Fim

Page 25: Lógica de Programação - Unimep/Pronatec - Aula08

Resolvendo o problema com a

estrutura de repetição Enquanto

Com o teste lógico no começo

Page 26: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução em Algoritmo (usando o comando Enquanto)

1. Inicio

2. Inteiro Contador

3. Contador <- 1

4. Enquanto (Contador <= 12)

5. Inicio

6. Escrever (“Bom dia”)

7. Contador <- Contador + 1

8. Fim

9. Fim

Page 27: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol IDE (usando o comando Enquanto)

Page 28: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol Studio (usando o comando Enquanto)

Page 29: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no C# (usando o comando Enquanto)

Page 30: Lógica de Programação - Unimep/Pronatec - Aula08

Resolvendo o problema com a

estrutura de repetição Faça Enquanto

Com o teste lógico no final

Page 31: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução em Algoritmo (usando o comando Faça Enquanto)

1. Inicio

2. Inteiro Contador

3. Contador <- 1

4. Faça

5. Escrever (“Bom dia”)

6. Contador <- Contador + 1

7. Enquanto (Contador <= 12)

8. Fim

Page 32: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol IDE (usando o comando Faça Enquanto)

Page 33: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol Studio (usando o comando Faça Enquanto)

Page 34: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no C# (usando o comando Faça Enquanto)

Page 35: Lógica de Programação - Unimep/Pronatec - Aula08

Resolvendo o problema com a

estrutura de repetição Para

Com o teste lógico no final

Page 36: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução em Algoritmo (usando o comando Para)

1. Inicio

2. Inteiro Contador

3. Para (Contador de 1 ate 12 passo 1)

4. Inicio

5. Escrever (“Bom dia”)

6. Fim

7. Fim

Page 37: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol IDE (usando o comando Para)

Page 38: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no Portugol Studio (usando o comando Para)

Page 39: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R1 - Resolução no C# (usando o comando Para)

Page 40: Lógica de Programação - Unimep/Pronatec - Aula08

Vale lembrar!

Operação completo Operação

resumida (C#) O que faz

Contador = Contador + 1 Contador++ Incrementa 1 na variável Contador

Contador = Contador - 1 Contador-- Decrementa 1 na variável Contador

Contador = Contador + 3 Contador+=3 Incrementa 3 na variável Contador

Contador = Contador - 4 Contador-=4 Decrementa 4 na variável Contador

Page 41: Lógica de Programação - Unimep/Pronatec - Aula08

Contador X Acumulador

• Dizemos que uma variável é considerada contador, quando é utilizada para controlar quantas vezes um determinado trecho de programa foi executado

• Uma variável é identificada como acumulador quando é utilizada para acumular um valor dentro de um laço. Por exemplo, podemos acumular um determinado valor até chegar ao nível desejado dentro de um laço e somente sair deste laço quando o nível for atingido.

Page 42: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R2

Numa determinada pré-escola, existe uma regra que diz o seguinte: uma turma de alunos só pode ser fechada quando soma das idades destes alunos for maior que 20. Portanto, criar um programa que leia diversas idades de alunos e vá acumulando suas idades. Quando este acumulo passar de 20, deverá encerrar o programa e mostrar as seguintes informações:

1) Quantos alunos foram lidos

2) Qual é a idade acumulada destes alunos lidos

Page 43: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R2 Resolução em Algoritmo

1. Inicio

2. Inteiro IdadeDoAluno

3. Inteiro IdadesAcumuladas <- 0

4. Inteiro ContadorDeAlunos <- 0

5. Enquanto (IdadesAcumuladas <= 20)

6. Inicio

7. Ler(IdadeDoAluno)

8. IdadesAcumuladas <- IdadesAcumuladas + IdadeDoAluno

9. ContadorDeAlunos <- ContadorDeAlunos + 1

10. Fim

11. Escrever(ContadorDeAlunos)

12. Escrever(IdadesAcumuladas)

13. Fim

Page 44: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R2 Resolução Portugol IDE

Page 45: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R2 Resolução no Portugol Studio

Page 46: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R2 Resolução em C#

Page 47: Lógica de Programação - Unimep/Pronatec - Aula08

Vamos treinar um pouco?!

Page 48: Lógica de Programação - Unimep/Pronatec - Aula08

Lista de Exercícios

Resolva os exercícios a seguir em Algoritmo, Portugol ou C#

Page 49: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R3

Escreva um programa que leia um numero qualquer e exiba a tabuada deste número digitado.

Page 50: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R3 Resolução em Algoritmo

1. Inicio

2. Inteiro Numero, Resultado, Contador

3. Ler(Numero)

4. Para (Contador de 1 ate 10 passo 1)

5. Resultado Numero * Contador

6. Escrever(Resultado)

7. Proximo

8. Fim

Quando as variáveis forem do mesmo

tipo, é possível declará-las todas numa única linha

Page 51: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R3 Resolução em Portugol IDE

Page 52: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R3 Resolução em Portugol Studio

No Portugol Studio, o

comando para() aceita que a variável de

contador seja declarada e inicializada dentro do

próprio comando.

Page 53: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R3 Resolução em C#

No C#, o comando for() também aceita que a variável

de contador seja declarada e inicializada dentro do

próprio comando.

Page 54: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R4

Escreva um programa que leia um numero positivo qualquer e exiba a contagem regressiva deste numero até chegar a zero.

Page 55: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R4 Resolução em Algoritmo

1. Inicio

2. Inteiro Numero, Contador

3. Ler(Numero)

4. Para (Contador de Numero ate 0 passo -1)

5. Escrever(Contador)

6. Proximo

7. Fim

Page 56: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R4 Resolução em Portugol IDE

Page 57: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R4 Resolução em Portugol Studio

Repare nas diferenças quando se faz uma contagem regressiva: 1) Na inicialização do contador

2) Na condição lógica 3) No passo do comando para()

Page 58: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R4 Resolução em C#

Page 59: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R5

Utilizando as estruturas de repetição, escreva um programa que leia uma sequencia de 10 números e no final exiba a média aritmética entre eles.

Page 60: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R5 Resolução em Algoritmo

1. Inicio

2. Decimal NumerosAcumulados <- 0.0

3. Decimal Numero

4. Inteiro Contador

5. Para (Contador de 1 ate 10 passo 1)

6. Ler(Numero)

7. NumerosAcumulados <- NumerosAcumulados + Numero

8. Proximo

9. Decimal Media

10. Media <- NumerosAcumulados / 10

11. Escrever(Media)

12. Fim

Variáveis do tipo Decimal devem ser

inicializadas com um conteúdo numérico

contendo casas decimais

Page 61: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R5 Resolução em Portugol IDE

Page 62: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R5 Resolução em Portugol Studio

Page 63: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R5 Resolução em C#

Em C#, você poderá utilizar a letra “m”

(minúscula) no final de um número para

convertê-lo no tipo decimal.

Outra saída seria utilizar o tradicional comando Convert.ToDecimal()

Page 64: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R6

Escreva um algoritmo para ler dois valores. Após a leitura deve-se calcular a soma dos valores lidos e armazená-la em uma variável. Após o cálculo da soma, escrever o resultado e escrever também a pergunta 'Novo Cálculo (S/N)?'. Faça a leitura a resposta e se ela for 'S' (sim), deverá repetir todos os comandos (instruções) novamente, mas se a resposta for 'N' (não), o algoritmo deve ser finalizado escrevendo a mensagem 'Fim dos Cálculos'.

Page 65: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R6 Resolução em Algoritmo

1. Inicio

2. Decimal Num1, Num2, Resultado

3. Texto Resposta

4. Faça

5. Ler(Num1)

6. Ler(Num2)

7. Resultado <- Num1 + Num2

8. Escrever(Resultado)

9. Ler(Resposta)

10. Enquanto (Resposta = "S" ou Resposta = "s")

11. Escrever("Fim dos cálculos!“)

12. Fim

Page 66: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R6 Resolução em Portugol IDE

Page 67: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R6 Resolução em Portugol Studio

Page 68: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R6 Resolução em C#

Page 69: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R7

Criar uma programa que leia um número positivo (diferente de zero) e exiba o resultado deste mesmo número multiplicado por 5.

OBSERVAÇÃO:

Criar uma validação na leitura deste número para garantir que o usuário digite somente números positivos. Se ele digitar um valor negativo (ou zero), o programa deverá dar um aviso que o número está invalido e solicitar a leitura novamente.

Page 70: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R7 Resolução em Algoritmo

1. Inicio

2. Decimal Num, Resultado

3. Faça

4. Ler Num

5. Se Num <= 0

6. Inicio

7. Escrever “Número invalido, tente novamente!”

8. Fim

9. Enquanto Num <= 0

10. Resultado <- Num * 5

11. Escrever Resultado

12. Fim

Page 71: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R7 Resolução em Portugol IDE

Page 72: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R7 Resolução em Portugol Studio

Page 73: Lógica de Programação - Unimep/Pronatec - Aula08

Exercício_R7 Resolução em C#

Page 74: Lógica de Programação - Unimep/Pronatec - Aula08

Por hoje é só...

Agora é hora de estudar!