Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos.

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

INTRODUÇÃO A COMPUTAÇÃO ENG. CIVIL
Um programa em C Bibliotecas Variáveis globais
Capítulo II – Algoritmos e Programas
Estruturas de Repetição
Linguagem de Programação IV
Algoritmos e Programação Linguagens de Programação Teoria Aula 7 (19/05) Universidade Federal do Vale do São.
Introdução à Computação - Jorge Macêdo
Introdução à Programação
Linguagem C Estruturas de Controle de Fluxos
LINGUAGEM ESTRUTURADA TURBO C
Universidade Federal do Espírito Santo
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Laboratório de Programação de Computadores II 2S/2009.
Cronograma de SCII - 2o. Ano de STPD - Profs. Fátima e Paulo
Armazenamento de Dados em Arquivos
Estruturas de Repetição
Slides: Prof. João Fabro UTFPR - Curitiba
Linguagem C Estruturas de Seleção.
Armazenamento de Dados em Arquivos
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Estruturas de Decisão Permitir testes para decidir acções alternativas: if if - else switch (?:) Operador Condicional MF.
Revisão da Linguagem C.
Linguagem de Programação
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
O Portal do Estudante de Computação
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação I Parte II
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Linguagens de programação
Tipos Abstratos de Dados
Programação II Estruturas de Dados Aula 02 - continuação
Introdução à linguagem C
Aula 6 - Estruturas de Controle
Algoritmo e Programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
APRENDER A APRENDER deve ser nossa meta. Comandos de Controle de Programa Comandos de Seleção Prof. Me. Jeime Nunes.
PROGRAMAÇÃO ou LINGUAGEM C?
Introdução à Linguagem C
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo IV Comandos de Controle de Fluxo.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Prof. Alessandro Gonçalves
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Revisão Luis Antonio Tavares
Comando de Seleção switch
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo III Comandos de Controle.
CES-41 COMPILADORES Aulas Práticas
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo X Encadeamento de Estruturas por Ponteiros.
Professora: Flávia Balbino da Costa. RRevisão (estruturas de decisão e repetição, procedimentos e funções ) TTrabalhando com a Linguagem C EEstrutura.
Profº Antonio Carlos Marcelino de Paula
Profa. Maria Augusta Constante Puget
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
Algoritmo e Estrutura de Dados I Linguagem C – Comandos if-else-if e Switch Márcia Marra.
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Fundamentos de Programação1 Aula N. 01 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Introdução e elementos principais”
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
Fundamentos de Programação 1 Slides C – Número 4 Prof. SIMÃO Jean Marcelo SIMÃO Estrutura de Dados Homogêneas “vetores de números e de caracteres”
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
Transcrição da apresentação:

Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos 4.5 – Comandos de escape 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.6 – Comandos de Seleção – Importante estrutura algoritmica Expressão Lista de comandos V 11, V 12,..., V 1i V 21, V 22,..., V 2j V n1, V n2,..., V np Outros Escolher um de vários caminhos alternativos, conforme o valor da expressão A expressão e os valores V 11, V 12,..., V np são inteiros ou caracteres

Em C aplainada: switch (Expressao) { V 11, V 12,..., V 1i : Lista de Comandos; V 21, V 22,..., V 2j : Lista de Comandos;... V n1, V n2,..., V np : Lista de Comandos; default: Lista de Comandos; }

switch (Expressao) { case V 11 : case V 12 :... case V 1i : Lista de comandos; break; case V 21 : case V 22 :... case V 2j : Lista de comandos; break;.. case V n1 : case V n2 :... case V np : Lista de comandos; break; default: Lista de comandos; } switch (Expressao) { V 11, V 12,..., V 1i : Lista de Comandos; V 21, V 22,..., V 2j : Lista de Comandos;... V n1, V n2,..., V np : Lista de Comandos; default: Lista de Comandos; } Em C O comando break é necessário para que somente uma lista de comandos seja executada Obs.: o ramo default é opcional

#include #include void main ( ) { char c; int n; printf ("Levantar o astral? (s/n): "); c = getche(); while (c == 's' || c == 'S') { while (c == 's' || c == 'S') { printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n); switch (n) { case 1: printf ("\n\tVoce eh inteligente"); break; case 1: printf ("\n\tVoce eh inteligente"); break; case 2: printf ("\n\tVoce eh campeao"); break; case 3: printf ("\n\tVoce estah com tudo"); break; case 4: printf ("\n\tSeu destino eh vencer"); break; case 5: printf ("\n\tTudo coopera para seu sucesso"); break; case 6: printf ("\n\tA vida sorri para voce"); break; case 7: printf ("\n\tNada pode impedir sua vitoria"); break; default: printf ("\n\tO numero deve ser de 1 a 7"); } printf ("\n\nLevantar o astral? (s/n): "); c = getche (); }} Exemplo: seja o seguinte programa Resultado para n = 5 Tudo coopera para seu sucesso

#include #include void main ( ) { char c; int n; printf ("Levantar o astral? (s/n): "); c = getche(); while (c == 's' || c == 'S') { while (c == 's' || c == 'S') { printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n); switch (n) { case 1: printf ("\n\tVoce eh inteligente"); case 1: printf ("\n\tVoce eh inteligente"); case 2: printf ("\n\tVoce eh campeao"); case 3: printf ("\n\tVoce estah com tudo"); case 4: printf ("\n\tSeu destino eh vencer"); case 5: printf ("\n\tTudo coopera para seu sucesso"); case 6: printf ("\n\tA vida sorri para voce"); case 7: printf ("\n\tNada pode impedir sua vitoria"); default: printf ("\n\tO numero deve ser de 1 a 7"); } printf ("\n\nLevantar o astral? (s/n): "); c = getche (); }} Resultado para n = 5 Tudo coopera para seu sucesso A vida sorri para voce Nada pode impedir sua vitoria O numero deve ser de 1 a 7 Retirando-se os comandos break

Fluxograma do switch sem usar break: Expressão Lista de comandos V 11, V 12,..., V 1i V 21, V 22,..., V 2j V n1, V n2,..., V np Outros

Exemplo: programa para contar diversos tipos de caracteres Digitar uma frase, guardando-a no buffer do teclado Digitar uma frase, guardando-a no buffer do teclado Ler cada caractere da frase, classificando-o Ler cada caractere da frase, classificando-o Acrescentar 1 ao contador da classe do caractere Acrescentar 1 ao contador da classe do caractere No final, escrever no vídeo o valor do contador de cada classe No final, escrever no vídeo o valor do contador de cada classe Classes: 1) A ou a2) E ou e 3) I ou i4) O ou o 5) U ou u6) W ou w 7) Y ou y8) Consoantes 9) Dígitos decimais10) Outros caracteres

#include #include /* Cabecalho e declaracoes */ int main ( ) { char c; int ct_a, ct_e, ct_i, ct_o, ct_u, ct_w, ct_y, ct_cons, ct_dig, ct_outros; /* Zerar todos os contadores */ ct_a = ct_e = ct_i = ct_o = ct_u = ct_w = ct_y = ct_cons = ct_dig = ct_outros = 0;

/* Ler e classificar cada caractere */ printf ("Digite uma frase:\n\n\t"); scanf ("%c", &c); while (c != '\n') { switch (c) { case 'a': case 'A': ct_a++; break; case 'e': case 'E': ct_e++; break; case 'i': case 'I': ct_i++; break; case 'o': case 'O': ct_o++; break; case 'u': case 'U': ct_u++; break; case 'w': case 'W': ct_w++; break; case 'y': case 'Y': ct_y++; break; default: if (c >= '0' && c = '0' && c <= '9') ct_dig++; else if (c >= 'B' && c = 'b' && c = 'B' && c = 'b' && c <= 'z')ct_cons++; else ct_outros++; } scanf ("%c", &c); }

/* Imprimir os contadores e fechar a tela*/ printf ("\nLetra A : %3d\nLetra E : %3d", ct_a, ct_e); printf ("\nLetra I : %3d\nLetra O : %3d", ct_i, ct_o); printf ("\nLetra U : %3d\nLetra W : %3d", ct_u, ct_w); printf ("\nLetra Y : %3d\nConsoantes: %3d", ct_y, ct_cons); printf ("\nDigitos : %3d\nOutros : %3d", ct_dig, ct_outros); printf ("\n\n"); system ("pause"); return 0; } Digite uma frase: hberoçh 9g59y9 )_Y(HHU Letra A : 1 Letra E : 1 Letra I : 0 Letra O : 2 Letra U : 3 Letra W : 0 Letra Y : 3 Consoantes: 11 Digitos : 5 Outros : 14 Pressione... Resultado

Exercícios 4.6: 1.Dizer que características uma frase digitada deve ter para que o programa do próximo slide a considere correta

#include #include int main ( ) { char c, erro; int c1, c2, c3, c4, c5, c6; c1 = c2 = c3 = c4 = c5 = c6 = 0; erro = 0; printf ("Digite uma frase: "); do { scanf ("%c", &c); if (c != '\n') { switch (c) { case ' ( ' : c1++; break ;case ' ) ' : c2++; break ; case ' [ ' : c3++; break ;case ' ] ' : c4++; break ; case ' { ' : c5++; break ;case ' } ' : c6++; break ; } if (c2 > c1 | | c4 > c3 | | c6 > c5) erro = 1; } } while (c ! = ' \n ' && erro == 0); if (erro == 0 && c1 == c2 && c3 == c4 && c5 == c6) printf ("Frase correta"); else printf ("Frase com erros"); printf ("\n\n"); system ("pause"); return 0; }

Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos 4.5 – Comandos de escape 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.7 – Introdução à Metodologia Top- down – Conceito É a decomposição de uma grande tarefa numa coleção de tarefas menores interligadas É a decomposição de uma grande tarefa numa coleção de tarefas menores interligadas Cada uma dessas tarefas menores pode ser decomposta da mesma forma Cada uma dessas tarefas menores pode ser decomposta da mesma forma No final, chega-se a uma coleção de tarefas triviais interligadas No final, chega-se a uma coleção de tarefas triviais interligadas Cada uma delas poderá ser resolvida por um comando típico dos algoritmos Cada uma delas poderá ser resolvida por um comando típico dos algoritmos

4.7.2 – Desenvolvimento de um algoritmo para encontrar os n primeiros números naturais primos Método: Por definição, 1 não é primo Por definição, 1 não é primo Percorrer o campo dos naturais, do n o 2 em diante, até encontrar n números primos Percorrer o campo dos naturais, do n o 2 em diante, até encontrar n números primos

4.7.2 – Desenvolvimento de um algoritmo para encontrar os n primeiros números naturais primos Método: Para ver se um número num é primo: Para ver se um número num é primo: 0123num/2num AB 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-down”: 1ª Etapa: N_PrimeirosNúmerosPrimos { Escrever o título da tarefa; Pedir e ler o valor de n; Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } int n; Declarações

N_PrimeirosNúmerosPrimos { Escrever o título da tarefa; Pedir e ler o valor de n; Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); Se (n <= 0) Escrever mensagem de erro; Senão Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else Encontrar e Escrever os n 1 os números primos; } 2ª Etapa int n; Declarações

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { Testar se num é primo; if (num é primo) { write (num); cont++; }num++; } while (cont < n); }} 2ª Etapa num: número a ser testado cont: contador de números primos encontrados Faltam detalhes int n, num, cont; Declarações

Desenvolvimento de: Testar se num é primo; if (num é primo) Procurar divisor para num, no intervalo [ 2,   ]; if (não encontrar divisor para num) 3ª Etapa

Desenvolvimento de: Procurar divisor para num, no intervalo [ 2,   ]; if (não encontrar divisor para num) div = 2; while ((não encontrar divisor) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (não encontrar divisor para num) 4ª Etapa int n, num, cont, div; Declarações

div = 2; while ((não encontrar divisor) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (não encontrar divisor para num) 5ª e última Etapa int n, num, cont, div; Declarações

div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (achou == False) int n, num, cont, div; logic achou; Declarações 5ª e última Etapa

div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { Testar div; if (div é divisor de num) Encontrou divisor; else div++; } if (achou == False) int n, num, cont, div; logic achou; Declarações 5ª e última Etapa

div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } if (achou == False) int n, num, cont, div, resto; logic achou; Declarações 5ª e última Etapa Copia-se este trecho no resultado da 2ª Etapa

N_PrimeirosNúmerosPrimos { write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { Testar se num é primo; if (num é primo) { write (num); cont++; }num++; } while (cont < n); }} Faltam detalhes int n, num, cont; Declarações

N_PrimeirosNúmerosPrimos { int n, num, cont, div, resto; logic achou; write (“Relacao dos n primeiros numeros primos”); write (“Digite o valor de n:”); read (n); if (n <= 0) write (n, “ - valor improprio para n”); else { num = 2; cont = 0; do { div = 2; achou = False; while ((achou == False) && (div 2 <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } if (achou == False) { write (num); cont++; } num++; } while (cont < n); }} Obs.: todos os comandos resolvem problemas triviais e já podem ser traduzidos para a Linguagem C

#include #include /*Declaracao do tipo e das constantes logicas */ typedef char logic; const logic True = 1, False = 0; /*Cabecalho e declaracoes das variaveis locais */ int main () { int n, num, cont, div, resto; logic achou;

/*Escrita do titulo e leitura de n */ printf ("Relacao dos n primeiros numeros primos"); printf ("\n\n\tDigite o valor de n: "); scanf ("%d", &n); printf ("\n"); printf ("\n"); /*Caso de valor improprio para n */ if (n <= 0) printf ("%d - valor improprio para n", n); /*Caso de valor correto para n Procura dos n primeiros numeros primos */ else { num = 2; cont = 0; do {

/*Procura de divisor para um numero */ div = 2; achou = False; while ((achou == False) && (div*div <= num)) { resto = num % div; if (resto == 0) achou = True; else div++; } /*Escrita de cada numero primo encontrado; 10 numeros em cada linha*/ if (achou == False) { printf ("%5d", num); cont++; printf ("%5d", num); cont++; if (cont % 10 == 0) printf ("\n"); if (cont % 10 == 0) printf ("\n"); } } Não será usado ‘for’, pois o último comando do ‘while’ é um ‘if’

/*Preparando para testar o proximo numero, ate que os n primeiros numeros primos sejam encontrados */ num++; } while (cont < n); } /*Fechamento da tela de execucao */ printf ("\n\n"); system ("pause"); return 0; printf ("\n\n"); system ("pause"); return 0;} Relacao dos n primeiros numeros primos Digite o valor de n: Digite algo para encerrar: Resultado para n = 26

4.7.3 – Desenvolvimento de um algoritmo para encontrar os fatores primos de números lidos Requisitos para o programa: Gerar relatórios do Gerar relatórios dotipo: 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 504, 348 e 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-down”: 1ª Etapa: FatoresPrimos { Escrever o título da tarefa; Perguntar se quer fatorar número; Aguardar a resposta; Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }}

FatoresPrimos { Escrever o título da tarefa; Perguntar se quer fatorar número; Aguardar a resposta; Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); Enquanto a resposta for sim { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { Perguntar qual o número; Aguardar o número; Fatorar o número e escrever seus fatores; Perguntar se quer fatorar outro número; Aguardar a resposta; }} 2ª Etapa char resposta;

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); Fatorar o número e escrever seus fatores; write (“Fatorar numero? (s/n): ”); read (resposta); }} 2ª Etapa char resposta; int num;

FatoresPrimos { write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); Fatorar o número e escrever seus fatores; write (“Fatorar numero? (s/n): ”); read (resposta); }} 2ª Etapa char resposta; int num; A ser desenvolvido na próxima etapa

Desenvolvimento de Fatorar num e escrever seus fatores: % 2 = % 2 = % 2 = * 2 ≤ % 2 ≠ 03 * 3 ≤ 6363 % 3 = % 3 = * 4 > x 2x 1x 504 = 2 3 * 3 2 * % 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 Fatorar num e escrever seus fatores: % 2 = % 2 = * 2 ≤ % 2 ≠ 03 * 3 ≤ 8787 % 3 = * 4 ≤ 29 2x 1x 348 = 2 2 * 3 1 * % 3 ≠ 029 % 4 ≠ 05 * 5 ≤ 2929 % 5 ≠ 06 * 6 > 29 3ª Etapa Aqui, aux é primo aux

Desenvolvimento de Fatorar num e escrever seus fatores: % 2 = % 2 ≠ % 3 = * 2 ≤ % 3 ≠ 0 3 * 3 ≤ % 4 ≠ % 5 = * 4 ≤ 125 3x 1x 750 = 2 1 * 3 1 * % 5 = 0 5 * 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 Fatorar num e escrever seus fatores: write (“Fatores primos de ”, num, “:”); aux = num; Procurar fatores para aux no intervalo [2,   ] Atualizando o valor de aux, ou seja Dividindo aux pelos fatores encontrados Imprimindo cada fator ao lado de seu expoente Testar se aux restante é um fator; 3ª Etapa char resposta; int num, aux;

write (“Fatores primos de ”, num, “:”); aux = num; Procurar fatores para aux no intervalo [2,   ] Atualizando o valor de aux, ou seja Dividindo aux pelos fatores encontrados imprimindo cada fator ao lado de seu expoente Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux;

write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux, fat;

write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} Testar se aux restante é um fator; 4ª Etapa char resposta; int num, aux, fat;

write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} if (aux > 1 || num == 1) write (aux, “^1”); 4ª Etapa char resposta; int num, aux, fat;

write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} if (aux > 1 || num == 1) write (aux, “^1”); 5ª Etapa char resposta; int num, aux, fat;

fat = 2; while (fat 2 <= aux ) { Calcular expoente de fat e atualizar aux; se expoente de fat > 0 Escrever fat ao lado do expoente; fat++;} 5ª Etapa char resposta; int num, aux, fat;

fat = 2; while (fat 2 <= aux ) { expo = 0; while (aux % fat == 0) { expo++; aux /= fat; } if (expo > 0) write (fat, “^”, expo); fat++;} 5ª Etapa char resposta; int num, aux, fat, expo;

FatoresPrimos { char resposta; int num, aux, fat, expo; write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); write (“Fatores primos de ”, num, “:”); aux = num; fat = 2; while (fat*fat <= aux ) { expo = 0; while (aux % fat == 0) { expo++; aux /= fat; } if (expo > 0) write (fat, “^”, expo); fat++;} if (aux > 1 || num == 1) write (aux, “^1”); write (“Fatorar numero? (s/n): ”); read (resposta); }} Algoritmo final

FatoresPrimos { char resposta; int num, aux, fat, expo; write (“FATORES PRIMOS DE NUMEROS INTEIROS”); write (“Fatorar numero? (s/n): ”); read (resposta); while (resposta == ‘s’ || resposta == ‘S’) { write (“Digite o numero:”); read (num); write (“Fatores primos de ”, num, “:”); aux = num; for (fat = 2; fat*fat <= aux; fat++ ) { for (expo = 0; aux % fat == 0; expo++, aux /= fat); if (expo > 0) write (fat, “^”, expo); } if (aux > 1 || num == 1) write (aux, “^1”); write (“Fatorar numero? (s/n): ”); read (resposta); }} Algoritmo final, usando comandos for

#include #include /*Cabecalho e declaracoes*/ int main () { char resposta, lixo; int num, aux, fat, expo; /*Escrita do titulo da tarefa e oferecimento de servico ao operador*/ printf ("FATORES PRIMOS DE NUMEROS INTEIROS"); printf ("\n\nFatorar numero? (s/n): "); scanf ("%c", &resposta); while (resposta == 's' || resposta == 'S') { /*Solicitacao do numero a fatorar */ printf ("\n\tDigite o numero: "); scanf ("%d%c", &num, &lixo); printf ("\n\tFatores primos de %d: ", num); Programa em C

/*Pesquisa por fatores primos no intervalo [2, sqrt(aux)]*/ aux = num; for (fat = 2; fat*fat <= aux; fat++) { /*Calculo do expoente de um fator*/ for (expo = 0; aux % fat == 0; expo++, aux /= fat); /*Escrita de um fator ao lado de seu expoente*/ if (expo > 0) printf ("%d^%d ", fat, expo); }

/*Testando se o ultimo aux eh fator primo*/ if (aux > 1 || num == 1) printf ("%d^1", aux); /*Novo oferecimento de servico ao operador*/ printf ("\n\nFatorar numero? (s/n): "); scanf ("%c", &resposta); } /*Fechamento da tela */ printf ("\n\n"); system ("pause"); return 0; }