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

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

DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de.

Apresentações semelhantes


Apresentação em tema: "DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de."— Transcrição da apresentação:

1 rangel@dsc.ufpb.br DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Carga Horária: 60 h

2 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 2 Tópicos 3.1Introdução 3.2Algoritmos 3.3Pseudocódigo 3.4Estruturas de Controle 3.5Estrutura de Seleção If 3.6Estrutura de Seleção If / Else 3.7Estrutura de Repetição While 3.8Formulação de Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) 3.9Formulação de Algoritmos com Refinamento Top- down por Passos: Estudo de Caso 2 (Repetição Controlada por Sentinela) Tópicos 3.1Introdução 3.2Algoritmos 3.3Pseudocódigo 3.4Estruturas de Controle 3.5Estrutura de Seleção If 3.6Estrutura de Seleção If / Else 3.7Estrutura de Repetição While 3.8Formulação de Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) 3.9Formulação de Algoritmos com Refinamento Top- down por Passos: Estudo de Caso 2 (Repetição Controlada por Sentinela) Introdução à Programação

3 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 3 Tópicos 3.10Formulação de Algoritmos com Refinamento Top- down: Estudo de Caso 3 (Estruturas de Controle Aninhadas) 3.11Operadores de Atribuição 3.12Operadores de Incremento e Decremento Tópicos 3.10Formulação de Algoritmos com Refinamento Top- down: Estudo de Caso 3 (Estruturas de Controle Aninhadas) 3.11Operadores de Atribuição 3.12Operadores de Incremento e Decremento Introdução à Programação

4 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 4 3.1 Introdução  Precauções antes da escrita de um programa  Visão sinóptica do problema  Planejamento cuidadoso de uma estratégia para solução do problema  Precauções durante a escrita de um programa  Conhecimento dos “blocos de construção” disponíveis  Uso de princípios adequados de programação  Precauções antes da escrita de um programa  Visão sinóptica do problema  Planejamento cuidadoso de uma estratégia para solução do problema  Precauções durante a escrita de um programa  Conhecimento dos “blocos de construção” disponíveis  Uso de princípios adequados de programação

5 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 5  Computação de Problemas  Todos os problemas podem ser solucionados a partir da execução de uma série finita de ações em uma ordem específica  Algoritmo  Procedimento em termos de  Ações a serem executadas  Ordem na qual as ações devem ser executadas  Controle do Programa  Especificação da ordem na qual as declarações e comandos devem ser executadas  Computação de Problemas  Todos os problemas podem ser solucionados a partir da execução de uma série finita de ações em uma ordem específica  Algoritmo  Procedimento em termos de  Ações a serem executadas  Ordem na qual as ações devem ser executadas  Controle do Programa  Especificação da ordem na qual as declarações e comandos devem ser executadas 3.2 Algoritmos

6 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 6  Pseudocódigo  Linguagem artificial e informal que auxilia o programador a desenvolver algoritmos  Similar ao Português cotidiano  Não executada em computadores  Suporte para a análise de um programa antes de sua escrita  Facilidade de codificação em uma linguagem de programação (e.g. C, C++, Java)  Composição a partir de declarações executáveis  Pseudocódigo  Linguagem artificial e informal que auxilia o programador a desenvolver algoritmos  Similar ao Português cotidiano  Não executada em computadores  Suporte para a análise de um programa antes de sua escrita  Facilidade de codificação em uma linguagem de programação (e.g. C, C++, Java)  Composição a partir de declarações executáveis 3.3 Pseudocódigo

7 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 7  Execução Seqüencial  Declarações executadas uma após a outra, na ordem pré-definida (na escrita)  Transferência de Controle  Quando a próxima declaração executada não é a seguinte na seqüência  Uso excessivo de declarações goto conduz a muitos problemas (código spaghetti)  Execução Seqüencial  Declarações executadas uma após a outra, na ordem pré-definida (na escrita)  Transferência de Controle  Quando a próxima declaração executada não é a seguinte na seqüência  Uso excessivo de declarações goto conduz a muitos problemas (código spaghetti) 3.4 Estruturas de Controle

8 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 8  Bohm & Jacopini  Todos os programas escritos em termos de 3 estruturas de controle  Estruturas Seqüenciais   Por default, programas executados seqüencialmente (como ocorre em C)  Estruturas de Seleção   Há três tipos em C: if, if / else e switch  Estruturas de Repetição   Há três tipos em C: while, do / while e for  Bohm & Jacopini  Todos os programas escritos em termos de 3 estruturas de controle  Estruturas Seqüenciais   Por default, programas executados seqüencialmente (como ocorre em C)  Estruturas de Seleção   Há três tipos em C: if, if / else e switch  Estruturas de Repetição   Há três tipos em C: while, do / while e for 3.4 Estruturas de Controle

9 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 9  Diagrama de Fluxo (Flowchart)  Representação gráfica de um algoritmo  Uso de símbolos especiais conectados por setas denominadas linhas de fluxo (flowlines)  Retângulo (ação)  Indicação de algum tipo de ação  Oval  Indicação do início ou término de um programa ou uma seção de código  Diagrama de Fluxo (Flowchart)  Representação gráfica de um algoritmo  Uso de símbolos especiais conectados por setas denominadas linhas de fluxo (flowlines)  Retângulo (ação)  Indicação de algum tipo de ação  Oval  Indicação do início ou término de um programa ou uma seção de código 3.4 Estruturas de Controle Incrementar j Início

10 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 10  Estruturas de controle única entrada/ única saída  Conexão da saída de uma estrutura de controle à entrada da estrutura seguinte (empilhamento de estruturas de controle)  Facilidade de construção de programas  Estruturas de controle única entrada/ única saída  Conexão da saída de uma estrutura de controle à entrada da estrutura seguinte (empilhamento de estruturas de controle)  Facilidade de construção de programas 3.4 Estruturas de Controle

11 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 11  Estrutura de Seleção  Uso na escolha entre cursos de ação alternativos  Exemplos em pseudocódigo 1.Se a média final do aluno for maior ou igual a 7 Imprima “Você passou por média” 2.Se o raio for menor do que 3 e maior ou igual a 6 Faça raio igual a 5 3.Se o nome for diferente de RAQUEL Encerre o programa  Estrutura de Seleção  Uso na escolha entre cursos de ação alternativos  Exemplos em pseudocódigo 1.Se a média final do aluno for maior ou igual a 7 Imprima “Você passou por média” 2.Se o raio for menor do que 3 e maior ou igual a 6 Faça raio igual a 5 3.Se o nome for diferente de RAQUEL Encerre o programa 3.5 Estrutura de Seleção if

12 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 12  Estrutura de Seleção  Análise do Exemplo 1  Condição Verdadeira   Execução da declaração imprima “Você passou por média” e prosseguimento do programa a partir da próxima declaração  Condição Falsa   Declaração imprima “Você passou por média” ignorada e prosseguimento do programa a partir da próxima declaração  Identação facilita a leitura de programas   C ignora espaços em branco  Estrutura de Seleção  Análise do Exemplo 1  Condição Verdadeira   Execução da declaração imprima “Você passou por média” e prosseguimento do programa a partir da próxima declaração  Condição Falsa   Declaração imprima “Você passou por média” ignorada e prosseguimento do programa a partir da próxima declaração  Identação facilita a leitura de programas   C ignora espaços em branco 3.5 Estrutura de Seleção if

13 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 13  Estrutura de Seleção  Declaração do Exemplo 1 em C if(media_final >= 7) printf(“Você passou por média\n");  Código em C apresenta uma representação próxima ao pseudocódigo  Losango (decisão)  Indicação de que uma decisão deve ser tomada  Continência de uma expressão que pode ser Verdadeira ou Falsa  Teste da condição  Seleção do caminho apropriado  Estrutura de Seleção  Declaração do Exemplo 1 em C if(media_final >= 7) printf(“Você passou por média\n");  Código em C apresenta uma representação próxima ao pseudocódigo  Losango (decisão)  Indicação de que uma decisão deve ser tomada  Continência de uma expressão que pode ser Verdadeira ou Falsa  Teste da condição  Seleção do caminho apropriado Média final ≥ 7 ? V V F F 3.5 Estrutura de Seleção if

14 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 14  A estrutura de seleção if é uma estrutura do tipo única entrada/ única saída Uma decisão pode ser tomada em qualquer expressão zero - falsa diferente de zero - Verdadeira 3.5 Estrutura de Seleção if Média final ≥ 7 ? V V F F Imprimir “V. passou por média”

15 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 15  If  Só executa uma ação se a condição testada for Verdadeira  If/Else  Especifica um par de ações a serem executadas, uma caso a condição testada seja Verdadeira, outra caso esta seja Falsa  If  Só executa uma ação se a condição testada for Verdadeira  If/Else  Especifica um par de ações a serem executadas, uma caso a condição testada seja Verdadeira, outra caso esta seja Falsa 3.6 Estrutura de Seleção if-else

16 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 16  If/Else  Exemplo em pseudocódigo Se a média final do aluno for maior ou igual a 7,0 Imprima “Você passou por média” Caso contrário Imprima “Você vai para a final ou foi reprovado por média”  If/Else  Exemplo em pseudocódigo Se a média final do aluno for maior ou igual a 7,0 Imprima “Você passou por média” Caso contrário Imprima “Você vai para a final ou foi reprovado por média” 3.6 Estrutura de Seleção if-else Observe que a indentação/ espaçamento facilita a leitura do pseudocódigo, o mesmo ocorrendo mais efetivamente com o código em qualquer linguagem de programação escolhida

17 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 17  If/Else  Código em C if(media_final >= 7) printf(“Você passou por média\n"); else printf("Você vai para a final ou foi reprovado por média\n");  Operador condicional ternário  ? :  Uso de três argumentos   Condição, valor1 se verdadeira, valor2 se falsa  If/Else  Código em C if(media_final >= 7) printf(“Você passou por média\n"); else printf("Você vai para a final ou foi reprovado por média\n");  Operador condicional ternário  ? :  Uso de três argumentos   Condição, valor1 se verdadeira, valor2 se falsa 3.6 Estrutura de Seleção if-else

18 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 18  If/Else  Código em C com ? : media_final >= 7 ? printf(“Você passou por média\n”) : printf(“Você vai para a final ou foi reprovado por média \n”); ou printf("%s\n", media_final >= 7 ? "Você passou por média" : "Você vai para a final ou foi reprovado por média" ); na atribuição quociente = denominador != 0 ? Numerador/denominador : 0 ;  If/Else  Código em C com ? : media_final >= 7 ? printf(“Você passou por média\n”) : printf(“Você vai para a final ou foi reprovado por média \n”); ou printf("%s\n", media_final >= 7 ? "Você passou por média" : "Você vai para a final ou foi reprovado por média" ); na atribuição quociente = denominador != 0 ? Numerador/denominador : 0 ; 3.6 Estrutura de Seleção if-else

19 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 19  Diagrama de fluxo da estrutura If/Else  Estruturas If/Else aninhadas  Teste para casos múltiplos  Inserção de estruturas de seleção If/Else em uma estrutura de seleção If/Else  Diagrama de fluxo da estrutura If/Else  Estruturas If/Else aninhadas  Teste para casos múltiplos  Inserção de estruturas de seleção If/Else em uma estrutura de seleção If/Else 3.6 Estrutura de Seleção if-else Média final ≥ 7 ? V V F F Imprimir “V. passou por média” Imprimir “V. vai para a final ou foi reprovado por média”

20 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 20  Pseudocódigo para uma estrutura If/Else aninhada Se nota for maior ou igual a 9,0 Imprima “Conceito A” Caso contrário Se nota for maior ou igual a 8,0 (e menor do que 9,0) Imprima “Conceito B” Caso contrário Se nota for maior ou igual a 7,0 ( e menor do que 8,0) Imprima “Conceito C” Caso contrário Se nota for maior ou igual a 6,0 (e menor do que 7,0) Imprima “Conceito D” Caso contrário Imprima “Conceito I”  Pseudocódigo para uma estrutura If/Else aninhada Se nota for maior ou igual a 9,0 Imprima “Conceito A” Caso contrário Se nota for maior ou igual a 8,0 (e menor do que 9,0) Imprima “Conceito B” Caso contrário Se nota for maior ou igual a 7,0 ( e menor do que 8,0) Imprima “Conceito C” Caso contrário Se nota for maior ou igual a 6,0 (e menor do que 7,0) Imprima “Conceito D” Caso contrário Imprima “Conceito I” 3.6 Estrutura de Seleção if-else

21 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 21  Instrução Composta  Série de instruções encerradas por um par de chaves ({ })  Exemplo if ( media_final >= 7 ) printf( “Você passou por média\n" ); else { printf( “Se sua soma de notas for maior do que 12,5, você vai para a final\n" ); printf(“Caso contrário, você foi reprovado\n"); }  Instrução Composta  Série de instruções encerradas por um par de chaves ({ })  Exemplo if ( media_final >= 7 ) printf( “Você passou por média\n" ); else { printf( “Se sua soma de notas for maior do que 12,5, você vai para a final\n" ); printf(“Caso contrário, você foi reprovado\n"); } 3.6 Estrutura de Seleção if-else

22 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 22  Instrução Composta  Análise do exemplo  Sem as chaves, a declaração printf(“Caso contrário, você foi reprovado\n"); seria executada em todos os casos  Com as chaves, a referida declaração só será executada se o if for falso  Instrução Composta  Análise do exemplo  Sem as chaves, a declaração printf(“Caso contrário, você foi reprovado\n"); seria executada em todos os casos  Com as chaves, a referida declaração só será executada se o if for falso 3.6 Estrutura de Seleção if-else

23 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 23  Faça um programa que calcula a média de um estudante e determina a sua situação  Pseudo-código:  Obter o nome do aluno  Obter duas notas de provas e uma de exercícios  Calcule a média considerando que as prvoas têm peso 0.4 e a nota dos exercícios tem peso 0.2  Mostre o nome, as três notas e a média  Se a média for igual ou maior que 7 mostre “você passou por média”  Se a média for entre 4 e 7 mostre “você ficou para a final”  Se a média for menor que 4 mostre “você está reprovado”  Faça um programa que calcula a média de um estudante e determina a sua situação  Pseudo-código:  Obter o nome do aluno  Obter duas notas de provas e uma de exercícios  Calcule a média considerando que as prvoas têm peso 0.4 e a nota dos exercícios tem peso 0.2  Mostre o nome, as três notas e a média  Se a média for igual ou maior que 7 mostre “você passou por média”  Se a média for entre 4 e 7 mostre “você ficou para a final”  Se a média for menor que 4 mostre “você está reprovado” Exercício

24 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 24  Blocos  Instruções compostas por declarações  Erros de Sintaxe  Percebidos e acusados pelo compilador  Erros Lógicos  Exercem influência no tempo de execução do programa  Não fatais   Execução do programa  Saída incorreta  Fatais   Encerramento prematuro do programa  Blocos  Instruções compostas por declarações  Erros de Sintaxe  Percebidos e acusados pelo compilador  Erros Lógicos  Exercem influência no tempo de execução do programa  Não fatais   Execução do programa  Saída incorreta  Fatais   Encerramento prematuro do programa 3.6 Estrutura de Seleção if-else

25 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 25  Generalização do if/else  As condições lógicas true/false do if/else são generalizadas para múltiplos valores de uma variável  Exemplo  Atividades condicionais:  (Conceito=‘A’) imprimir “Aprovado com excelência”  (Conceito=‘B’) imprimir “Aprovado bom”  (Conceito=‘C’) imprimir “Aprovado”  (Conceito=‘D’) imprimir “Reprovado”  Generalização do if/else  As condições lógicas true/false do if/else são generalizadas para múltiplos valores de uma variável  Exemplo  Atividades condicionais:  (Conceito=‘A’) imprimir “Aprovado com excelência”  (Conceito=‘B’) imprimir “Aprovado bom”  (Conceito=‘C’) imprimir “Aprovado”  (Conceito=‘D’) imprimir “Reprovado” 3.6 Estrutura de Seleção swich

26 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 26  Na linguagem C swich conceito { case ‘A’: printf(“Aprovado com excelência”); break; case ‘B’: printf( “Aprovado bom”); break; case ‘C’: printf(“Aprovado”); break; case ‘D’: printf(“Reprovado”); break; Default: printf(“conceito indefinido”); }  Na linguagem C swich conceito { case ‘A’: printf(“Aprovado com excelência”); break; case ‘B’: printf( “Aprovado bom”); break; case ‘C’: printf(“Aprovado”); break; case ‘D’: printf(“Reprovado”); break; Default: printf(“conceito indefinido”); } 3.6 Estrutura de Seleção swich

27 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 27  Estrutura de Repetição  Especificação de uma ação a ser repetida enquanto uma dada condição permanecer Verdadeira  Exemplo de pseudocódigo Enquanto houver itens no carrinho de compras Retire um item e adicione seu preço ao somatório de itens já computados  O laço while será repetido até que a condição imposta se torne falsa  Estrutura de Repetição  Especificação de uma ação a ser repetida enquanto uma dada condição permanecer Verdadeira  Exemplo de pseudocódigo Enquanto houver itens no carrinho de compras Retire um item e adicione seu preço ao somatório de itens já computados  O laço while será repetido até que a condição imposta se torne falsa 3.7 Estrutura de Repetição while

28 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 28  Exemplo while(item > 0) { total_a_pagar = total_a_pagar + custo_item; item = item -1; }  Exemplo while(item > 0) { total_a_pagar = total_a_pagar + custo_item; item = item -1; } 3.7 Estrutura de Repetição while Item > 0 ? F F V V Compute um item e adicione seu preço ao total a pagar

29 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 29 3.7 Exercício

30 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 30  Repetição controlada por contador  Laço repetido até que o contador atinja um determinado limiar (pré-definido pelo programador)  Repetição Delimitada  Número de repetições é conhecido  Exemplo  Uma turma com 40 alunos fez uma prova. As notas da prova (números reais com uma casa decimal, na faixa de 0,0 a 10,0) estão disponíveis. Determinar a média da turma na referida prova.  Repetição controlada por contador  Laço repetido até que o contador atinja um determinado limiar (pré-definido pelo programador)  Repetição Delimitada  Número de repetições é conhecido  Exemplo  Uma turma com 40 alunos fez uma prova. As notas da prova (números reais com uma casa decimal, na faixa de 0,0 a 10,0) estão disponíveis. Determinar a média da turma na referida prova. 3.8 Formulação de Algoritmos I

31 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 31  Repetição controlada por contador  Exemplo de Pseudocódigo Variáveis: total, contador de notas, nota, média Faça total igual a zero Faça o contador de notas igual a um Enquanto o contador de notas for menor ou igual a 40 Pegue uma nota Adicione a nota ao total Adicione um ao contador de notas Determine a média da turma dividindo total por 40 Imprima a média da turma  Repetição controlada por contador  Exemplo de Pseudocódigo Variáveis: total, contador de notas, nota, média Faça total igual a zero Faça o contador de notas igual a um Enquanto o contador de notas for menor ou igual a 40 Pegue uma nota Adicione a nota ao total Adicione um ao contador de notas Determine a média da turma dividindo total por 40 Imprima a média da turma 3.8 Formulação de Algoritmos I

32 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 32  Repetição controlada por contador 3.8 Formulação de Algoritmos I 1 /* Programa 01 - Média de uma turma 2 de 40 alunos usando repetição 3 controlada por contador */ 4 #include 5 5 6 main() 7{7{ 7{7{ 8 float nota, total, media; 9 int contador; 10 /* fase de inicialização */ 11 total = 0; 12 contador = 1; 13 14 /* fase de processamento */ 15 while (contador <= 40) { 16 printf(“Digite nota: "); 17 scanf("%d", &nota); 18 total = total + nota; 19 contador = contador + 1; 20 } 22 /* fase de conclusão */ 23 media = total / 40; 24 printf(“A média da turma é %4.1d\n", media); 25 26 return 0; /* indica que o programa terminou satisfatoriamente */ 26 return 0; /* indica que o programa terminou satisfatoriamente */ 27 } Exemplo de Saída Digite nota: 9,8 Digite nota: 9,7 Digite nota: 1,8 Digite nota: 9,7 Digite nota: 6,4 Digite nota: 8,8 Digite nota: 2,8 Digite nota: 7,8 Digite nota: 7,7 Digite nota: 8,5 Digite nota: 3,5 Digite nota: 5,1 Digite nota: 9,2 Digite nota: 5,9 Digite nota: 7,0 Digite nota: 6,3 Digite nota: 5,8 Digite nota: 6,8 Digite nota: 6,1 Digite nota: 7,0 Digite nota: 3,9 Digite nota: 7,8 Digite nota: 5,8 Digite nota: 7,2 Digite nota: 5,1 Digite nota: 8,8 Digite nota: 9,0 Digite nota: 2,9 Digite nota: 9,3 Digite nota: 9,1 Digite nota: 7,3 Digite nota: 3,8 Digite nota: 8,3 Digite nota: 9,4 Digite nota: 7,5 Digite nota: 8,9 Digite nota: 2,8 Digite nota: 4,8 Digite nota: 8,2 Digite nota: 6,6 A média da turma é 6,8 Exemplo de Saída Digite nota: 9,8 Digite nota: 9,7 Digite nota: 1,8 Digite nota: 9,7 Digite nota: 6,4 Digite nota: 8,8 Digite nota: 2,8 Digite nota: 7,8 Digite nota: 7,7 Digite nota: 8,5 Digite nota: 3,5 Digite nota: 5,1 Digite nota: 9,2 Digite nota: 5,9 Digite nota: 7,0 Digite nota: 6,3 Digite nota: 5,8 Digite nota: 6,8 Digite nota: 6,1 Digite nota: 7,0 Digite nota: 3,9 Digite nota: 7,8 Digite nota: 5,8 Digite nota: 7,2 Digite nota: 5,1 Digite nota: 8,8 Digite nota: 9,0 Digite nota: 2,9 Digite nota: 9,3 Digite nota: 9,1 Digite nota: 7,3 Digite nota: 3,8 Digite nota: 8,3 Digite nota: 9,4 Digite nota: 7,5 Digite nota: 8,9 Digite nota: 2,8 Digite nota: 4,8 Digite nota: 8,2 Digite nota: 6,6 A média da turma é 6,8

33 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 33  Algoritmos com Refinamento Top-Down por Passos  Delineamento do Problema sobre o Exemplo Anterior  Desenvolvimento de um programa para a determinação da média de uma turma, considerando que o programa processará um número arbitrário de notas cada vez que for executado   Número desconhecido de alunos   Como o programa será finalizado?  Algoritmos com Refinamento Top-Down por Passos  Delineamento do Problema sobre o Exemplo Anterior  Desenvolvimento de um programa para a determinação da média de uma turma, considerando que o programa processará um número arbitrário de notas cada vez que for executado   Número desconhecido de alunos   Como o programa será finalizado? 3.9 Formulação de Algoritmos II

34 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 34  Algoritmos com Refinamento Top-Down por Passos (Stepwise)  Solução do Problema  Uso de um valor “sentinela”   Também denominado valor de sinalização, “testa de ferro” (dummy value) ou flag   Indicação do final da entrada de dados   Laço finalizado quando o usuário passa para o programa o valor “sentinela”   Valor sentinela não deve ser confundido com uma entrada regular (e.g. -1 no caso do programa da média das notas)  Algoritmos com Refinamento Top-Down por Passos (Stepwise)  Solução do Problema  Uso de um valor “sentinela”   Também denominado valor de sinalização, “testa de ferro” (dummy value) ou flag   Indicação do final da entrada de dados   Laço finalizado quando o usuário passa para o programa o valor “sentinela”   Valor sentinela não deve ser confundido com uma entrada regular (e.g. -1 no caso do programa da média das notas) 3.9 Formulação de Algoritmos II

35 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 35  Refinamento Top-Down por Passos  Representação do topo (top) em pseudocódigo Determine a média da turma  Divisão do topo em tarefas menores e listagem ordenada das tarefas Inicialize as variáveis Receba as notas digitadas, some-as e conte-as Calcule e imprima a média da turma  Refinamento Top-Down por Passos  Representação do topo (top) em pseudocódigo Determine a média da turma  Divisão do topo em tarefas menores e listagem ordenada das tarefas Inicialize as variáveis Receba as notas digitadas, some-as e conte-as Calcule e imprima a média da turma 3.9 Formulação de Algoritmos II

36 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 36  Fases de diversos programas  Inicialização  Fase na qual são atribuídos valores iniciais às variáveis do programa  Processamento  Fase de aquisição dos valores dos dados de entrada e de manipulação apropriada das variáveis do programa  Finalização  Fase de cálculo e impressão dos resultados finais  Fases de diversos programas  Inicialização  Fase na qual são atribuídos valores iniciais às variáveis do programa  Processamento  Fase de aquisição dos valores dos dados de entrada e de manipulação apropriada das variáveis do programa  Finalização  Fase de cálculo e impressão dos resultados finais 3.9 Formulação de Algoritmos II

37 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 37  Refinamento da Fase de Inicialização Inicialize as variáveis Inicialize total com zero Inicialize contador com zero  Refinamento da 2 ª linha do pseudocódigo Receba as notas digitadas, some-as e conte-as Receba a primeira nota (que poderá ser a “sentinela”) Enquanto o usuário não digitar o valor “sentinela” Adicione esta nota a total Adicione um a contador Receba a próxima nota (que poderá ser a “sentinela”)  Refinamento da Fase de Inicialização Inicialize as variáveis Inicialize total com zero Inicialize contador com zero  Refinamento da 2 ª linha do pseudocódigo Receba as notas digitadas, some-as e conte-as Receba a primeira nota (que poderá ser a “sentinela”) Enquanto o usuário não digitar o valor “sentinela” Adicione esta nota a total Adicione um a contador Receba a próxima nota (que poderá ser a “sentinela”) 3.9 Formulação de Algoritmos II

38 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 38  Refinamento da 3 ª linha do pseudocódigo Calcule e imprima a média da turma Se contador for diferente de zero Calcule média dividindo total por contador Imprima média Caso contrário Imprima “Nenhuma nota foi digitada”  Refinamento da 3 ª linha do pseudocódigo Calcule e imprima a média da turma Se contador for diferente de zero Calcule média dividindo total por contador Imprima média Caso contrário Imprima “Nenhuma nota foi digitada” 3.9 Formulação de Algoritmos II

39 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 39  Repetição controlada por sentinela 3.9 Formulação de Algoritmos II 1 /* Programa 02 – Média de uma turma 2 com repetição controlada por 3 sentinela */ 4 #include 5 6 int main() 7{7{ 8 float media, nota, total; /* novo tipo de dados */ 9 int contador; 10 11 /* fase de inicialização */ 12 total = 0; 13 contador = 0; 14 15 /* fase de processamento */ 16 printf( “Digite nota, -1 ao final: " ); 17 scanf( "%f", &nota ); 18 19 while ( nota != -1 ) { 20 total = total + nota; 21 contador = contador + 1; 22 printf( “Digite nota, -1 ao final: " ) 23 scanf( "%f", &nota ); 24 } 25 26 /* fase de finalização */ 27 if ( contador != 0 ) { 28 media = ( float ) total / contador; 29 printf( “A média da turma é %.2f", media ); 30 } 31 else 32 printf( "Nenhuma nota foi digitada\n" ); 33 34 return 0; /* indica que o programa terminou satisfatoriamente */ 35 }

40 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 40  Repetição controlada por sentinela 3.9 Formulação de Algoritmos II Exemplo de Saída Digite nota: 5,8 Digite nota: 9,3 Digite nota: 6,1 Digite nota: 7,8 Digite nota: 7,2 Digite nota: 7,1 Digite nota: 8,2 Digite nota: 6,8 Digite nota: 5,5 Digite nota: 6,1 Digite nota: 8,9 Digite nota: 6,9 Digite nota: 5,8 Digite nota: 6,0 Digite nota: 7,3 Digite nota: 9,5 Digite nota: 8,8 Digite nota: 5,4 Digite nota: 9,8 Digite nota: 7,8 Digite nota: 9,0 Digite nota: 7,0 Digite nota: 8,8 Digite nota: 7,8 Digite nota: 8,2 Digite nota: 1,2 Digite nota: 6,9 Digite nota: 9,0 Digite nota: 4,0 Digite nota: 8,9 Digite nota: 6,5 Digite nota: 5,3 Digite nota: 4,5 Digite nota: 4,8 Digite nota: 5,8 Digite nota: 7,5 Digite nota: 7,1 Digite nota: 9,5 Digite nota: 7,7 Digite nota: -1 A média da turma é 7,0 A média da turma é 7,0 Exemplo de Saída Digite nota: 5,8 Digite nota: 9,3 Digite nota: 6,1 Digite nota: 7,8 Digite nota: 7,2 Digite nota: 7,1 Digite nota: 8,2 Digite nota: 6,8 Digite nota: 5,5 Digite nota: 6,1 Digite nota: 8,9 Digite nota: 6,9 Digite nota: 5,8 Digite nota: 6,0 Digite nota: 7,3 Digite nota: 9,5 Digite nota: 8,8 Digite nota: 5,4 Digite nota: 9,8 Digite nota: 7,8 Digite nota: 9,0 Digite nota: 7,0 Digite nota: 8,8 Digite nota: 7,8 Digite nota: 8,2 Digite nota: 1,2 Digite nota: 6,9 Digite nota: 9,0 Digite nota: 4,0 Digite nota: 8,9 Digite nota: 6,5 Digite nota: 5,3 Digite nota: 4,5 Digite nota: 4,8 Digite nota: 5,8 Digite nota: 7,5 Digite nota: 7,1 Digite nota: 9,5 Digite nota: 7,7 Digite nota: -1 A média da turma é 7,0 A média da turma é 7,0 Situação totalizando 39 notas (observe a última entrada do usuário, -1 )

41 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 41  Problema  Em uma universidade privada, seja uma lista com os resultados de uma prova aplicada em uma turma de 30 alunos, na qual atribui-se 1 a cada aluno aprovado e 2 a cada aluno reprovado  Escrever um programa que analise os resultados  Se mais de 25 alunos forem aprovados, deverá ser comunicado à turma o aumento da mensalidade em 10% (face ao êxito do ensino)  Problema  Em uma universidade privada, seja uma lista com os resultados de uma prova aplicada em uma turma de 30 alunos, na qual atribui-se 1 a cada aluno aprovado e 2 a cada aluno reprovado  Escrever um programa que analise os resultados  Se mais de 25 alunos forem aprovados, deverá ser comunicado à turma o aumento da mensalidade em 10% (face ao êxito do ensino) 3.10 Estruturas de Controle Aninhadas

42 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 42  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  Um para o número de aprovados, outro para o número de reprovados  Cada resultado testado é um número - 1 ou 2  Se o número for diferente de 1, dever-se-á considerar que este é igual a 2  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  Um para o número de aprovados, outro para o número de reprovados  Cada resultado testado é um número - 1 ou 2  Se o número for diferente de 1, dever-se-á considerar que este é igual a 2 3.10 Estruturas de Controle Aninhadas

43 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 43  Delineamento do nível de topo Analise os resultados da prova e decida se a mensalidade deve ser aumentada em 10%  1 º Refinamento do pseudocódigo Inicialize variáveis Receba os 30 valores e conte as aprovações e reprovações Imprima um sumário dos resultados da prova e decida se a mensalidade deve ser aumentada em 10%  Refinamento da 1 ª linha Inicialize aprovados com zero Inicialize reprovados com zero Inicialize contalunos com um  Delineamento do nível de topo Analise os resultados da prova e decida se a mensalidade deve ser aumentada em 10%  1 º Refinamento do pseudocódigo Inicialize variáveis Receba os 30 valores e conte as aprovações e reprovações Imprima um sumário dos resultados da prova e decida se a mensalidade deve ser aumentada em 10%  Refinamento da 1 ª linha Inicialize aprovados com zero Inicialize reprovados com zero Inicialize contalunos com um 3.10 Estruturas de Controle Aninhadas

44 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 44  Refinamento da 2 ª linha Enquanto contalunos for menor ou igual a 30 Receba o próximo resultado da prova Se o aluno foi aprovado Adicione um a aprovados Caso contrário Adicione um a reprovados Adicione um a contalunos  Refinamento da 2 ª linha Enquanto contalunos for menor ou igual a 30 Receba o próximo resultado da prova Se o aluno foi aprovado Adicione um a aprovados Caso contrário Adicione um a reprovados Adicione um a contalunos 3.10 Estruturas de Controle Aninhadas

45 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 45  Refinamento da 3 ª linha Imprima o número de aprovados Imprima o número de reprovados Se mais de 25 alunos tiverem sido aprovados Imprima “A mensalidade será aumentada em 10%”  Refinamento da 3 ª linha Imprima o número de aprovados Imprima o número de reprovados Se mais de 25 alunos tiverem sido aprovados Imprima “A mensalidade será aumentada em 10%” 3.10 Estruturas de Controle Aninhadas

46 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 46  Estruturas de Controle Aninhadas 3.10 Estruturas de Controle Aninhadas 1 /* Programa 03 - Análise dos resultados 2 results */ 3 #include 4 4 5 int main() 6{6{ 6{6{ 7 /*initialização */ 8 int aprovados = 0, reprovados = 0, contalunos = 1, resultado; 9 9 10 /*Execução */ 11 while (contalunos <= 30) { 12 printf(“Digite resultado ( 1 = aprovado, 2 = reprovado ): "); 13 scanf("%d", &resultado); 14 15 if ( resultado == 1 ) /*if/else aninhado no while*/ 16 aprovados = aprovados + 1; 17 else 18 reprovados = reprovados + 1; 19 20 contalunos = contalunos + 1; 21 } 22 /* Finalização */ 23 printf( “Aprovados %d\n", aprovados ); 24 printf( “Reprovados %d\n", reprovados ); 25 26 if ( aprovados > 25 ) 27 printf( “A mensalidade será aumentada em 10%\n" ); 28 29 return 0; /* finalização satisfatória */ 30 }

47 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 47  Estruturas de Controle Aninhadas 3.10 Estruturas de Controle Aninhadas Exemplo de Saída Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 2 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 2 Digite resultado: 2 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Aprovados: 23 Aprovados: 23 Reprovados: 7 Reprovados: 7 Exemplo de Saída Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 2 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 2 Digite resultado: 2 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Aprovados: 23 Aprovados: 23 Reprovados: 7 Reprovados: 7

48 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 48  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  Um para o número de aprovados, outro para o número de reprovados  Cada resultado testado é um número - 1 ou 2  Se o número for diferente de 1, dever-se-á considerar que este é igual a 2  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  Um para o número de aprovados, outro para o número de reprovados  Cada resultado testado é um número - 1 ou 2  Se o número for diferente de 1, dever-se-á considerar que este é igual a 2 3.10 Estruturas de Controle Aninhadas

49 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 49  Operadores de Atribuição  Abreviação de expressões de atribuição  Exemplo em C c = c + 3;  Abreviação a partir do operador de atribuição de adição c += 3;  Forma de atribuição variável = expressão do operador de variável;  Re-escrita operador de variável = expressão;  Operadores de Atribuição  Abreviação de expressões de atribuição  Exemplo em C c = c + 3;  Abreviação a partir do operador de atribuição de adição c += 3;  Forma de atribuição variável = expressão do operador de variável;  Re-escrita operador de variável = expressão; 3.11 Operadores de Atribuição

50 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 50  Exemplos de outros operadores de atribuição d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9)  Exemplos de outros operadores de atribuição d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9) 3.11 Operadores de Atribuição

51 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 51  Operador de Incremento ( ++ )  Uso em substituição de +=1  Operador de Decremento ( -- )  Uso em substituição de -=1  Pré-incremento/ Pré-decremento  Operador usado antes da variável ( ++c ou --c )  Variável alterada (incrementada/decrementada) antes da avaliação da expressão  Operador de Incremento ( ++ )  Uso em substituição de +=1  Operador de Decremento ( -- )  Uso em substituição de -=1  Pré-incremento/ Pré-decremento  Operador usado antes da variável ( ++c ou --c )  Variável alterada (incrementada/decrementada) antes da avaliação da expressão 3.12Operadores de Incremento/Decremento

52 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 52  Pós-incremento/Pós-decremento  Operador usado após da variável ( c++ ou c-- )  Expressão executada antes da alteração (incremento/decremento) da variável  Se c igual a 5 printf( "%d", ++c );  Imprimirá 6 printf( "%d", c++ );  Imprimirá 5  Em todo caso, c assume agora o valor 6  Pós-incremento/Pós-decremento  Operador usado após da variável ( c++ ou c-- )  Expressão executada antes da alteração (incremento/decremento) da variável  Se c igual a 5 printf( "%d", ++c );  Imprimirá 6 printf( "%d", c++ );  Imprimirá 5  Em todo caso, c assume agora o valor 6 3.12Operadores de Incremento/Decremento

53 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 53  Quando a variável não está numa expressão  Pré-incremento e pós-incremento apresentam mesmo efeito ++c; printf( “%d”, c );  Apresenta o mesmo efeito de c++; printf( “%d”, c );  Quando a variável não está numa expressão  Pré-incremento e pós-incremento apresentam mesmo efeito ++c; printf( “%d”, c );  Apresenta o mesmo efeito de c++; printf( “%d”, c ); 3.12Operadores de Incremento/Decremento

54 rangel@dsc.ufpb.br rangel@lmrs-semarh.ufpb.br DSC/CCT/UFCG 54  Faça um programa que calcula a média de um número indefinido de estudantes e determina a sua situação. Ao final, determine a média de todos alunos e o melhor aluno  Para cada aluno:  Obter o nome do aluno  Obter duas notas de provas e uma de exercícios  Calcule a média considerando que as provas têm peso 0.4 e a nota dos exercícios tem peso 0.2  Após o nome e as três notas coloque a média e um comentário:  Se a média for igual ou maior que 7 acrescente “você passou por média”  Se a média for entre 4 e 7 acrescente “você ficou para a final”  Se a média for menor que 4 qcrescente “você está reprovado”  Ao final, mostre a média de todos alunos e o nome e média do melhor aluno.  Faça um programa que calcula a média de um número indefinido de estudantes e determina a sua situação. Ao final, determine a média de todos alunos e o melhor aluno  Para cada aluno:  Obter o nome do aluno  Obter duas notas de provas e uma de exercícios  Calcule a média considerando que as provas têm peso 0.4 e a nota dos exercícios tem peso 0.2  Após o nome e as três notas coloque a média e um comentário:  Se a média for igual ou maior que 7 acrescente “você passou por média”  Se a média for entre 4 e 7 acrescente “você ficou para a final”  Se a média for menor que 4 qcrescente “você está reprovado”  Ao final, mostre a média de todos alunos e o nome e média do melhor aluno. Exercício

55 rangel@dsc.ufpb.br DSC/CCT/UFCG José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA


Carregar ppt "DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de."

Apresentações semelhantes


Anúncios Google