This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;
}}Digite uma frase:
hberoçh 9g59y9 )_Y(HHU 3@$%UDFUYapok
Letra A : 1Letra E : 1Letra I : 0Letra O : 2Letra U : 3Letra W : 0Letra Y : 3Consoantes: 11Digitos : 5Outros : 14
Pressione . . .
Resultado
Exercícios 4.6:Exercícios 4.6:
1.1.Dizer que características uma frase digitada Dizer que características uma frase digitada deve ter para que o programa do próximo slide deve ter para que o programa do próximo slide a considere corretaa considere correta
#include <stdio.h>#include <stdio.h>
#include <stdlib.h>#include <stdlib.h>
intint main ( ) { main ( ) {
charchar c, erro; c, erro; int int c1, c2, c3, c4, c5, c6;c1, c2, c3, c4, c5, c6;
4.6 – Comandos de seleção4.6 – Comandos de seleção
4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-downdown
4.7 – Introdução à 4.7 – Introdução à Metodologia Top-downMetodologia Top-down
4.7.1 – Conceito4.7.1 – Conceito
É a decomposição de uma É a decomposição de uma grande tarefagrande tarefa numa numa coleção de coleção de tarefas menorestarefas menores interligadas interligadas
Cada umaCada uma dessas tarefas menores pode ser dessas tarefas menores pode ser decomposta da mesma formadecomposta da mesma forma
No final, chega-se a uma coleção de No final, chega-se a uma coleção de tarefas tarefas triviaistriviais interligadas interligadas
Cada uma delas poderá ser resolvida por um Cada uma delas poderá ser resolvida por um comando típico dos algoritmoscomando típico dos algoritmos
4.7.2 – Desenvolvimento de um 4.7.2 – Desenvolvimento de um algoritmo para encontrar os n algoritmo para encontrar os n primeiros números naturais primosprimeiros números naturais primos
Método:Método:
Por definição, Por definição, 1 não é primo1 não é primo
Percorrer o campo dos naturais, do nPercorrer o campo dos naturais, do noo 2 em 2 em diante, até encontrar diante, até encontrar n n números primosnúmeros primos
4.7.2 – Desenvolvimento de um 4.7.2 – Desenvolvimento de um algoritmo para encontrar os n algoritmo para encontrar os n primeiros números naturais primosprimeiros números naturais primos
Método:Método:
Para ver se um número Para ver se um número numnum é primo: é primo:
0 1 2 3 num/2 num
A B
num tem divisor na região B se e somente se tem divisor na região A
Então basta procurar divisores para num na região A
Desenvolvimento do algoritmo por “top-Desenvolvimento do algoritmo por “top-down”:down”:
4.7.3 – Desenvolvimento de um 4.7.3 – Desenvolvimento de um algoritmo para encontrar os fatores algoritmo para encontrar os fatores primos de números lidosprimos de números lidos
Requisitos para o Requisitos para o
programa:programa:
Gerar relatórios do Gerar relatórios do
tipo:tipo:
FATORES PRIMOS DE NUMEROS INTEIROS
Fatorar numero? (s/n): s
Digite o numero: 504
Fatores primos de 504: 2^3 3^2 7^1
Fatorar numero? (s/n): s
Digite o numero: 348
Fatores primos de 348: 2^2 3^1 29^1
Fatorar numero? (s/n): s
Digite o numero: 750
Fatores primos de 750: 2^1 3^1 5^3
Fatorar numero? (s/n): n
Pressione qualquer tecla para continuar. . .
Método: ilustrado com os fatores primos de Método: ilustrado com os fatores primos de 504, 348 e 750504, 348 e 750
504 2252 2
126 263 3
21 3
7 7
1
348 2174 2
87 329 29
1
750 2375 3
125 525 5
5 5
1
Encontrar o próximo primo como divisor é de programação trabalhosa
Mais fácil é testar divisores consecutivos a partir de 2
Desenvolvimento do algoritmo por “top-Desenvolvimento do algoritmo por “top-down”:down”:
1ª Etapa:1ª Etapa:
FatoresPrimos {FatoresPrimos {
Escrever o título da tarefa;Escrever o título da tarefa;
Perguntar se quer fatorar número;Perguntar se quer fatorar número;
Aguardar a resposta; Aguardar a resposta;
Enquanto a resposta for sim {Enquanto a resposta for sim {
Perguntar qual o número;Perguntar qual o número;
Aguardar o número;Aguardar o número;
Fatorar o número e escrever seus fatores;Fatorar o número e escrever seus fatores;
Perguntar se quer fatorar outro número;Perguntar se quer fatorar outro número;
Aguardar a resposta; Aguardar a resposta;
}}
}}
FatoresPrimos {FatoresPrimos {
Escrever o título da tarefa;Escrever o título da tarefa;
Perguntar se quer fatorar número;Perguntar se quer fatorar número;
Aguardar a resposta; Aguardar a resposta;
Enquanto a resposta for sim {Enquanto a resposta for sim {
Perguntar qual o número;Perguntar qual o número;
Aguardar o número;Aguardar o número;
Fatorar o número e escrever seus fatores;Fatorar o número e escrever seus fatores;
Perguntar se quer fatorar outro número;Perguntar se quer fatorar outro número;
Aguardar a resposta; Aguardar a resposta;
}}
}}
2ª Etapa
FatoresPrimos {FatoresPrimos {
write (“FATORES PRIMOS DE NUMEROS write (“FATORES PRIMOS DE NUMEROS INTEIROS”);INTEIROS”);
Desenvolvimento de Desenvolvimento de Fatorar num e escrever Fatorar num e escrever seus fatoresseus fatores::
504 504 % 2 = 02252 252 % 2 = 02
126 126 % 2 = 02
2 * 2 ≤ 504
63 63 % 2 ≠ 03 * 3 ≤ 63
63 % 3 = 03
21 21 % 3 = 03
7 4 * 4 > 77
1
3x
2x
1x
504 = 23 * 32 * 71
7 % 3 ≠ 0
3ª Etapa
Copiar ‘num’ numa variável ‘aux’
Dividir ‘aux’ pelos fatores encontrados
aux
Fatores devem ser procurados em[2, ]
Aqui, aux é primo
Desenvolvimento de Desenvolvimento de Fatorar num e escrever Fatorar num e escrever seus fatoresseus fatores::
348 348 % 2 = 02174 174 % 2 = 02
87 3
2 * 2 ≤ 348
2987 % 2 ≠ 03 * 3 ≤
8787 % 3 = 0
29
14 * 4 ≤ 29
2x
1x1x
348 = 22 * 31 * 291
29 % 3 ≠ 029 % 4 ≠ 05 * 5 ≤ 29
29 % 5 ≠ 06 * 6 > 29
3ª Etapa
Aqui, aux é primo
aux
Desenvolvimento de Desenvolvimento de Fatorar num e escrever Fatorar num e escrever seus fatoresseus fatores::
750 750 % 2 = 02375 375 % 2 ≠ 03
125
375 % 3 = 0
5
2 * 2 ≤ 750
25125 % 3 ≠ 0
3 * 3 ≤ 375 125 % 4 ≠ 0
5
5
125 % 5 = 0
5
1
4 * 4 ≤ 1253x
1x1x
750 = 21 * 31 * 53
25 % 5 = 0
5 * 5 ≤ 125
5 % 5 = 0
3ª Etapa
Aqui, aux não é primo
Terminada a procura de fatores em [2, ], se aux > 1, então aux é um fator de expoente 1
aux
Desenvolvimento de Desenvolvimento de Fatorar num e escrever Fatorar num e escrever seus fatoresseus fatores::
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num;aux = num;
Procurar fatores para aux no intervalo [2, Procurar fatores para aux no intervalo [2, ]]Atualizando o valor de aux, ou seja Atualizando o valor de aux, ou seja
Dividindo aux pelos fatores encontradosDividindo aux pelos fatores encontrados
Imprimindo cada fator ao lado de seu Imprimindo cada fator ao lado de seu expoenteexpoente
Testar se aux restante é um fator;Testar se aux restante é um fator;
3ª Etapa
char resposta;int num, aux;
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num;aux = num;
Procurar fatores para aux no intervalo [2, Procurar fatores para aux no intervalo [2, ]]Atualizando o valor de aux, ou seja Atualizando o valor de aux, ou seja
Dividindo aux pelos fatores encontradosDividindo aux pelos fatores encontrados
imprimindo cada fator ao lado de seu imprimindo cada fator ao lado de seu expoenteexpoente
Testar se aux restante é um fator;Testar se aux restante é um fator;
4ª Etapa
char resposta;int num, aux;
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num; aux = num;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
Calcular expoente de fat e atualizar aux;Calcular expoente de fat e atualizar aux;
se expoente de fat > 0se expoente de fat > 0
Escrever fat ao lado do expoente;Escrever fat ao lado do expoente;
fat++;fat++;
}}
Testar se aux restante é um fator;Testar se aux restante é um fator;
4ª Etapa
char resposta;int num, aux, fat;
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num; aux = num;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
Calcular expoente de fat e atualizar aux;Calcular expoente de fat e atualizar aux;
se expoente de fat > 0se expoente de fat > 0
Escrever fat ao lado do expoente;Escrever fat ao lado do expoente;
fat++;fat++;
}}
Testar se aux restante é um fator;Testar se aux restante é um fator;
4ª Etapa
char resposta;int num, aux, fat;
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num; aux = num;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
Calcular expoente de fat e atualizar aux;Calcular expoente de fat e atualizar aux;
se expoente de fat > 0se expoente de fat > 0
Escrever fat ao lado do expoente;Escrever fat ao lado do expoente;
fat++;fat++;
}}
if (aux > 1 || num == 1)if (aux > 1 || num == 1)
write (aux, “^1”);write (aux, “^1”);
4ª Etapa
char resposta;int num, aux, fat;
write (“Fatores primos de ”, num, “:”);write (“Fatores primos de ”, num, “:”);
aux = num; aux = num;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
Calcular expoente de fat e atualizar aux;Calcular expoente de fat e atualizar aux;
se expoente de fat > 0se expoente de fat > 0
Escrever fat ao lado do expoente;Escrever fat ao lado do expoente;
fat++;fat++;
}}
if (aux > 1 || num == 1)if (aux > 1 || num == 1)
write (aux, “^1”);write (aux, “^1”);
5ª Etapa
char resposta;int num, aux, fat;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
Calcular expoente de fat e atualizar aux;Calcular expoente de fat e atualizar aux;
se expoente de fat > 0se expoente de fat > 0
Escrever fat ao lado do expoente;Escrever fat ao lado do expoente;
fat++;fat++;
}}
5ª Etapa
char resposta;int num, aux, fat;
fat = 2;fat = 2;
while (fatwhile (fat22 <= aux ) { <= aux ) {
expo = 0;expo = 0;
while (aux % fat == 0) {while (aux % fat == 0) {
expo++;expo++;
aux /= fat;aux /= fat;
}}
if (expo > 0)if (expo > 0)
write (fat, “^”, expo);write (fat, “^”, expo);
fat++;fat++;
}}
5ª Etapa
char resposta;int num, aux, fat, expo;
FatoresPrimos {FatoresPrimos {
char resposta; int num, aux, fat, expo; char resposta; int num, aux, fat, expo;
write (“FATORES PRIMOS DE NUMEROS INTEIROS”);write (“FATORES PRIMOS DE NUMEROS INTEIROS”);