Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVictoria Barbosa Minho Alterado mais de 9 anos atrás
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", ¬a); 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", ¬a ); 18 19 while ( nota != -1 ) { 20 total = total + nota; 21 contador = contador + 1; 22 printf( “Digite nota, -1 ao final: " ) 23 scanf( "%f", ¬a ); 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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.