A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Lógica de Programação I

Apresentações semelhantes


Apresentação em tema: "Lógica de Programação I"— Transcrição da apresentação:

1 Lógica de Programação I
Gilson de Souza Carvalho Produzindo conhecimento, transformando vidas

2 Lógica de Programação I
Comandos de Repetição Comandos de repetição encadeados Apesar de seguir o mesmo padrão de encadeamento de outros comandos já vistos, a utilização de comandos de repetição encadeados geralmente causa uma certa dificuldade para o seu acompanhamento à primeira vista. A estrutura do algoritmo que contém laços encadeados segue: Produzindo conhecimento, transformando vidas

3 Lógica de Programação I
Comandos de Repetição { <declaração de variáveis> while <valor boolean> ... while <valor boolean > } //final do bloco while interno} } //final do bloco while externo} <continuação do algoritmo> } Produzindo conhecimento, transformando vidas

4 Lógica de Programação I
Comandos de Repetição De fato, podemos ter tantos laços encadeados quanto precisarmos. E ainda podemos tê-los combinados com comandos de decisão e assim por diante. Até agora, usamos os laços para fazer operações sobre um conjunto de elementos. Por exemplo, no caso da soma dos números primos, tínhamos que executar um bloco de condição para cada possível divisor do número em questão. No caso da soma de 100 números, os números entrados eram acumulados dentro do laço, repetindo-se o processo para cada número. Produzindo conhecimento, transformando vidas

5 Lógica de Programação I
Comandos de Repetição A utilização de laços encadeados pode ser necessária quando precisamos fazer uma operação repetitiva para cada elemento dentro de um conjunto. Imaginemos que precisássemos calcular a média das notas de uma classe. Até aí,um único laço seria suficiente. Porém, imaginemos agora que precisássemos calcular a média das notas de todas as turmas de uma escola. As turmas são um conjunto. As notas dos alunos dentro de cada turma são outro conjunto. Para cada conjunto, precisaríamos de um laço, nesse caso, dois laços encadeados. E if precisássemos ainda fazer o cálculo para todas as escolas de uma cidade. Nesse caso precisaríamos de três laços encadeados (escolas/turmas/alunos). Produzindo conhecimento, transformando vidas

6 Lógica de Programação I
Comandos de Repetição Calcular a média das turmas de uma escola Faça um algoritmo que calcule a média de todas as turmas de uma escola. Considere como entradas o número de turmas e o número de alunos de cada turma. A média de cada turma deve ser apresentada, além da média geral, que será o resultado da média das turmas. Produzindo conhecimento, transformando vidas

7 Lógica de Programação I
Comandos de Repetição Um detalhe importante de if notar na resolução desse tipo de algoritmo é o fato de os laços geralmente terem condições diferentes e independentes. Podemos até mesmo resolver um exercício de cada vez, abstraindo um dos laços e if concentrando no segundo. Vejamos, então, a solução do problema para apenas uma turma, para depois resolvermos o problema de todas as turmas: Produzindo conhecimento, transformando vidas

8 Lógica de Programação I
Comandos de Repetição #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_ALL,"portuguese"); int i, qt_aluno; float med_aluno, tot_turma; i = qt_aluno = med_aluno = tot_turma = 0; ... Produzindo conhecimento, transformando vidas

9 Lógica de Programação I
Comandos de Repetição ... printf("Informe a quantidade de alunos: "); scanf("%d", &qt_aluno); while (i < qt_aluno) { printf("Informe a média do %dº aluno: ", i+1); scanf("%f", &med_aluno); tot_turma += med_aluno; i++; } printf("\nA média da turma é: %.2f\n", tot_turma/i); return 0; Produzindo conhecimento, transformando vidas

10 Lógica de Programação I
Comandos de Repetição LP1_18 Produzindo conhecimento, transformando vidas

11 Lógica de Programação I
Comandos de Repetição Agora, vamos resolver o que seria o cálculo das médias de uma escola, considerando que temos as médias de cada turma já preparadas pelo usuário. Produzindo conhecimento, transformando vidas

12 Lógica de Programação I
Comandos de Repetição #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_ALL,"portuguese"); int j, qt_turma; float med_turma, tot_turma; j = qt_turma = med_turma = tot_turma = 0; ... Produzindo conhecimento, transformando vidas

13 Lógica de Programação I
Comandos de Repetição ... printf("Informe a quantidade de turmas: "); scanf("%d", &qt_turma); while (j < qt_turma) { printf("Informe a média da %dª turma: ", j+1); scanf("%f", &med_turma); tot_turma += med_turma; j++; } printf("\nA média da escola é: %.2f\n", tot_turma/j); return 0; Produzindo conhecimento, transformando vidas

14 Lógica de Programação I
Comandos de Repetição LP1_19 Produzindo conhecimento, transformando vidas

15 Lógica de Programação I
Comandos de Repetição Bem, resolvemos as duas partes do algoritmo. Entretanto, a parte da média das escolas conta com uma situação que não temos: a média de cada turma não é conhecida de antemão pelo usuários, a não ser que estes executassem o primeiro algoritmo, anotassem num papel o resultado de cada turma e executassem o segundo algoritmo para passar esses valores. É claro que esta solução não é razoável. Produzindo conhecimento, transformando vidas

16 Lógica de Programação I
Comandos de Repetição De fato, o que precisa ser feito é substituir o trecho do segundo algoritmo em que o usuário entra com as médias das turmas pelo primeiro algoritmo, que é quem calcula a média de cada turma. Atenção especial deve ser dada ao possível conflito de variáveis. Por exemplo, os contadores utilizados nos 2 algoritmos tratam de elementos diferentes (alunos e turmas, respectivamente) e devem ser tratados como variáveis independentes... Produzindo conhecimento, transformando vidas

17 Lógica de Programação I
Comandos de Repetição #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_ALL,"portuguese"); int i, j, qt_aluno, qt_turma; float med_aluno, tot_turma, med_turma, tot_escola, med_escola; i = j = qt_aluno = qt_turma = 0; med_aluno = tot_turma = med_turma = tot_escola = med_escola = 0; printf("Informe a quantidade de turmas: "); scanf("%d", &qt_turma); ... Produzindo conhecimento, transformando vidas

18 Lógica de Programação I
Comandos de Repetição ... while (j < qt_turma) { //Inicia o laço para cada turma da escola printf("\nInforme a quantidade de alunos da %dª turma: ", j+1); scanf("%d", &qt_aluno); i = tot_turma = 0; //iniciar as variáveis para uma nova turma while (i < qt_aluno) { //Inicia o laço para cada aluno da turma printf("Informe a média do %dº aluno: ", i+1); scanf("%f", &med_aluno); tot_turma += med_aluno; //Totaliza (soma) a media de cada aluno i++; //Incrementa +1 a cada laço do aluno } med_turma = tot_turma / i; //Calcula media da turma printf("\nA média da turma é: %.2f\n", med_turma); tot_escola += med_turma; //Totaliza (soma) a media de cada turma j++; //Incrementa +1 a cada laço da turma Produzindo conhecimento, transformando vidas

19 Lógica de Programação I
Comandos de Repetição ... med_escola = tot_escola / j; //Calcula média da escola printf("\nA média da escola é: %.2f\n", med_escola); return 0; } Produzindo conhecimento, transformando vidas

20 Lógica de Programação I
Comandos de Repetição LP1_20 Produzindo conhecimento, transformando vidas

21 Lógica de Programação I
Comandos de Repetição EXERCICIO: Faça um algoritmo que calcule a media de todas as escolas de uma cidade. Cada escola tem diversas turmas. Considere como entrada o numero de escolas, o numero de turmas de cada escola e o numero de alunos de cada turma. A media de cada escola deve ser apresentada alem da media geral de todas as escolas da cidade. Produzindo conhecimento, transformando vidas

22 Lógica de Programação I
Produzindo conhecimento, transformando vidas


Carregar ppt "Lógica de Programação I"

Apresentações semelhantes


Anúncios Google