Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I Profa. Gisele Busichia Baioco gisele@ft.unicamp.br Algoritmos Estruturados e Linguagem de Programação Estruturada Estrutura Condicional em Algoritmos 1 Estruturas de Controle As estruturas de controle fornecem meios de alterar o fluxo de execução de instruções (comandos) de programas. Sem as estruturas de controle o fluxo é seqüencial. As estruturas de controle podem ser divididas em dois grupos: estrutura condicional (ou de seleção) e estrutura de repetição (ou iterativas). A seguir é abordada a estrutura condicional em algoritmos. 2 Estrutura Condicional (ou de Seleção) em Algoritmos A estrutura condicional oferece meios de escolher entre dois ou mais caminhos de execução de instruções em um programa. Pode ser dividida em três grupos: • Estrutura condicional unidirecional; • Estrutura condicional bidirecional; • Estrutura condicional n-direcional (ou múltipla). As estruturas condicionais utilizam expressões lógicas. 3 Estrutura Condicional Unidirecional em Algoritmos A estrutura condicional unidirecional consiste de um teste de uma condição representada por uma expressão lógica, que determina se um comando ou um conjunto de comandos deve ou não ser executado. Esquematicamente tem-se: condição comando Verdadeira Falsa 2 Sintaxe em algoritmos: se (condição) então comando; onde: se e então: são as palavras reservadas do algoritmo para a estrutura condicional; condição: é uma expressão lógica que, se for verdadeira, fará com que o comando seja executado; comando: qualquer instrução válida. Caso seja necessária a execução de um conjunto de comandos, denominado bloco de comandos, a sintaxe é a seguinte: se (condição) então início comando1; ... comandoN; fim Algoritmo exemplo: Algoritmo início declare N1, N2, M: numérico real; escreva(“Digite as duas notas”); leia(N1); leia(N2); M ← (N1 + N2)/2; se (M ≥ 5) então escreva(“Aprovado”); fim 4 Estrutura Condicional Bidirecional em Algoritmos A estrutura condicional bidirecional consiste de um teste de uma condição representada por uma expressão lógica, se o resultado for verdadeiro, um comando ou um bloco de comandos deve ser executado, caso contrário, outro comando ou bloco de comandos deve ser executado. Em nenhuma circunstância os dois comandos ou blocos de comandos serão executados. Esquematicamente tem-se: condição comando1 Verdadeira Falsa comando2 3 Sintaxe em algoritmos: se (condição) então comando1; senão comando2; onde: se, então e senão: são as palavras reservadas do algoritmo para a estrutura condicional; condição: é uma expressão lógica que, se for verdadeira, fará com que o comando1 seja executado. Se for falsa, fará com que o comando2 seja executado; comando1 e comando2: qualquer instrução válida. Caso seja necessária a execução de um bloco de comandos, a sintaxe é a seguinte: se (condição) então início comando1; comando2; fim senão início comando3; comando4; comando5; fim Algoritmo exemplo: Algoritmo início declare N1, N2, M: numérico real; escreva(“Digite as duas notas”); leia(N1); leia(N2); M ← (N1 + N2)/2; se (M ≥ 5) então escreva(“Aprovado”); senão escreva(“Reprovado”); fim 5 Bloco de Comandos De maneira geral, todo bloco de comandos deve ser delimitado pelas palavras início e fim. Sintaxe em algoritmos: início comando1; comando2; ... comandoN; fim 4 6 Estruturas Condicionais Aninhadas Uma estrutura condicional está aninhada quando é utilizada dentro de outra estrutura condicional, seja no então ou no senão (no caso de estrutura condicional bidirecional). Formato geral: se (condição1) então se (condição2) então ... senão se (condição3) então ... senão ... senão se (condição4) então ... Algoritmo exemplo: Algoritmo início declare A, B, C: numérico real; escreva(“Digite três números”); leia(A); leia(B); leia(C); se (A > B) então se (A > C) então escreva(“O maior número é ”, A); senão escreva(“O maior número é ”, C); senão se (B > C) então escreva(“O maior número é ”, B); senão escreva(“O maior número é ”, C); fim Problema com estruturas condicionais bidirecionais aninhadas: Considere o seguinte trecho de algoritmo: se (soma = 0) então se (cont = 0) então resultado ← 0; senão resultado ← 1; O senão pertence a qual se-então? 5 Deve-se observar que a identação na escrita do algoritmo é irrelevante. Para superar a ambigüidade, a maioria das linguagens de programação (por exemplo, C e Pascal) usa a seguinte regra implícita: o senão fecha sempre o se-então mais próximo. Assim, no exemplo anterior, o senão pertenceria ao segundo se-então. Outra alternativa para solucionar a ambigüidade é o uso de delimitadores de blocos de comandos. Considerando o exemplo anterior: • se o senão deve pertencer ao segundo se-então, faz-se: se (soma = 0) então início se (cont = 0) então resultado ← 0; senão resultado ← 1; fim • se o senão deve pertencer ao primeiro se-então, faz-se: se (soma = 0) então início se (cont = 0) então resultado ← 0; fim senão resultado ← 1; 7 Estrutura Condicional N-Direcional (ou Múltipla) em Algoritmos A estrutura condicional n-direcional permite a escolha de um comando ou bloco de comandos entre qualquer número de comandos ou blocos de comandos. Existem duas formas possíveis de estruturas condicionais n-direcionais: 1) Seqüência de expressões lógicas (booleanas): a primeira condição verdadeira determina o comando ou bloco de comandos a ser executado. Pode ser implementada em algoritmos com o encadeamento de estruturas condicionais bidirecionais, ou seja, com seqüências de comandos se-então-senão-se. Formato geral: se (condição1) então comando1; senão se (condição2) então comando2; senão se ... senão comandoN; 6 Algoritmo exemplo: Algoritmo início declare N1, N2, M: numérico real; escreva(“Digite as duas notas”); leia(N1); leia(N2); M ← (N1 + N2)/2; se (M ≥ 7) então escreva(“Aprovado”); senão se (M ≥ 5) então escreva(“Exame Final”); senão escreva(“Reprovado”); fim 2) Comando CASO: avalia uma condição de igualdade e executa o comando ou bloco de comandos correspondente. Esquematicamente tem-se: comando1 Verdadeiro Falso comando2 variável = valor1 comandoN Verdadeiro Verdadeiro Falso Falso variável = valor2 variável = valorN Sintaxe em algoritmos: escolha (variável) início caso valor1: comando1; caso valor2: comando2; ... caso valorN: comandoN; fim 7 Caso seja necessária a execução de um bloco de comandos, a sintaxe é a seguinte: escolha (variável) início caso valor1: início comando1; comando2; fim caso valor2: início comando3; comando4; comando5; fim ... caso valorN: início comandoN1; comandoN2; fim fim Pode ser necessária a execução de um comando ou bloco de comandos caso nenhuma das outras opções seja satisfeita. Esquematicamente tem-se: comando1 Verdadeiro Falso comando2 variável = valor1 comandoN Verdadeiro Verdadeiro Falso Falso comando variável = valor2 variável = valorN 8 Sintaxe em algoritmos: escolha (variável) início caso valor1: comando1; caso valor2: comando2; ... caso valorN: comandoN; senão: comando; fim No caso da execução de bloco de comandos, basta colocar os delimitadores início-fim nas opções que executam vários comandos, inclusiveno senão. Algoritmo exemplo: Algoritmo início declare op, X, Y: numérico inteiro; escreva(“Entre com a opção: ”); leia(op); escolha (op) início caso 1: início X ← 10; Y ← 20; fim caso 2: início X ← 100; Y ← 0; fim senão: início X ← 0; Y ← 0; fim fim escreva(“O valor de X é: “, X); escreva(“O valor de Y é: “, Y); fim 9 8 Exemplos de Algoritmos 1) Faça um algoritmo que receba um número inteiro e verifique se esse número é par ou ímpar. Solução: Entrada: número inteiro, num Processo: se resto de num/2 for 0, num é par, caso contrário, num é ímpar Saída: num é par ou num é ímpar Algoritmo início /* Declaração de variáveis */ declare num, r: numérico inteiro; /* Entrada de dados */ escreva(“Digite um número inteiro: ”); leia(num); /* Processo – obtém o resto da divisão de num por 2 */ r ← resto(num, 2); /* Saída de dados */ se (r = 0) então escreva(“O número é par”); senão escreva(“O número é ímpar”); fim 10 2) A nota final de um estudante é calculada a partir de três notas: laboratório, avaliação semestral e exame final, com os pesos 2, 3 e 5, respectivamente. Faça um algoritmo que leia três notas de um estudante, calcule e mostre a média ponderada e o conceito correspondente, de acordo com: Média ponderada Conceito ≥ 8.0 A ≥ 7.0 e < 8.0 B ≥ 6.0 e < 7.0 C ≥ 5.0 e < 6.0 D < 5.0 E Solução: Entrada: três notas, laboratorio, semestral, exame Processo: media = (laboratório * 2 + semestral * 3 + exame * 5) / 10 Saída: valor da media e seu conceito. Algoritmo início /* Declaração de variáveis */ declare laboratorio, semestral, exame, media: numérico real; /* Entrada de dados */ escreva(“Digite a nota de laboratório: ”); leia(laboratorio); escreva(“Digite a nota da avaliação semestral: ”); leia(semestral); escreva(“Digite a nota do exame final: ”); leia(exame); /* Processo – cálculo da média ponderada */ media ← (laboratório * 2 + semestral * 3 + exame * 5) / 10; /* Saída de dados */ escreva(“Média ponderada = ”, media); se (media ≥ 8.0) então escreva(“Conceito A”); senão se (media ≥ 7.0) então escreva(“Conceito B”); senão se (media ≥ 6.0) então escreva(“Conceito C”); senão se (media ≥ 5.0) então escreva(“Conceito D”); senão escreva(“Conceito E”); fim 11 3) Faça um algoritmo que mostre o menu de opções a seguir, receba a opção do usuário e os dados necessários para executar cada operação. Menu de opções: 1. Somar dois números 2. Raiz quadrada de um número Solução: Entrada: opção desejada, op; se for a opção 1, deve-se ler dois números, num1 e num2; se a opção for 2, deve-se ler apenas um número, num1 Processo: se op = 1, resultado = num1 + num2; se op = 2, resultado = √num1 Saída: valor do resultado. Algoritmo início /* Declaração de variáveis */ declare op: numérico inteiro; num1, num2, resultado: numérico real; /* Entrada de Dados Geral */ escreva(“Menu”); escreva(“1. Somar dois números”); escreva(“2. Raiz quadrada de um número”); escreva(“Digite sua opção: ”); leia(op); /* Entrada de Dados específicos e processo */ escolha (op) início caso 1: início escreva(“Digite dois números para a soma: ”); leia(num1); leia(num2); resultado ← num1 + num2; fim caso 2: início escreva(“Digite um número para a raiz quadrada: ”); leia(num1); resultado ← √num1 fim senão: início resultado ← 0; escreva(“Opção inválida”); fim fim escreva(“Resultado = “, resultado); fim 12 9 Exercícios de Fixação 1) Faça um algoritmo que leia dois números X e Y, calcule Z = (X + Y)/2 e mostre o resultado de Z somente se Z ≠ 0. 2) Dados dois número inteiros, faça um algoritmo que mostre-os em ordem crescente. 3) Faça um algoritmo para ler os comprimentos dos três lados de um triângulo (S1, S2 e S3) e determinar que tipo de triângulo é formado, com base nos seguintes casos. Seja A o maior dos lados de S1, S2 e S3, e B e C os outros dois, então: Se A ≥ B + C nenhum triângulo é formado; Se A2 = B2 + C2 um triângulo retângulo é formado; Se A2 > B2 + C2 um triângulo obtusângulo é formado; Se A2 < B2 + C2 um triângulo acutângulo é formado. 4) Uma empresa decidiu dar a seus funcionários uma gratificação de Natal. A gratificação é baseada em dois critérios: número de horas extras trabalhadas (horas_extras) e números de horas que o funcionário faltou ao trabalho (horas_faltas). A seguinte fórmula é utilizada para calcular o número de horas do funcionário: horas = horas_extras – 2/3 * horas_faltas A gratificação é distribuída de acordo com a seguinte tabela: horas gratificação > 40 horas R$ 500.00 > 30 mas ≤ 40 horas R$ 400.00 > 20 mas ≤ 30 horas R$ 300.00 > 10 mas ≤ 20 horas R$ 200.00 ≤ 10 horas R$ 100.00 Faça um algoritmo que leia o número de horas extras e número de horas de faltas de um funcionário, calcule e mostre a gratificação correspondente. 5) Faça um algoritmo que apresente o menu de opções a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários para executar a operação e mostre o resultado. Verifique a possibilidade de opção inválida. Menu de opções: 1. Imposto 2. Novo salário 3. Classificação Na opção 1, ler o salário de um funcionário, calcular e mostrar o valor do imposto, usando as regras a seguir: Salário Percentual do imposto menor que R$ 500.00 5% de R$ 500.00 a R$ 850.00 10% acima de R$850.00 15% Na opção 2, ler o salário de um funcionário, calcular e mostrar o salário com aumento, usando as regras a seguir: Salário Aumento maior que R$1500.00 R$ 25.00 de R$ 750.00 (inclusive) a R$ 1500.00 R$ 50.00 de R$ 450.00 (inclusive) a R$ 750.00 R$ 75.00 menor que R$ 450.00 R$ 100.00 13 Na opção 3, ler o salário de um funcionário e mostrar sua classificação, de acordo com a tabela seguinte: Salário Classificação até R$ 700.00 (inclusive) Mal remunerado maior que R$ 700.00 Bem remunerado
Compartilhar