Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Algoritmos Estruturas de controle – se...então...senão...fim_se Profª Janne Oeiras Lachi 1 Plano de aula ` O objetivo da aula é estudar a tomada de decisão ` Veremos: ` Desvio condicional simples ` Desvio condicional composto ` Desvio condicional encadeado 2 Desvio condicional ` Usado quando devemos tomar uma decisão ` Exemplo 1: ` Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` Note que SOMENTE mostraremos o resultado SE a soma for maior que 10. Há uma condição para mostrar o resultado. 3 Desvio condicional ` Exemplo 2: ` Leia um número e escreva se ele é igual a 5, a 200, a 400, se ele está no intervalo entre 500 e 1000 (inclusive), ou se ele está fora dos escopos anteriores. ` Aqui devemos testar SE: N=5 N= 200 N=400 500 <= N .e. N <= 1000 N não corresponde às opções anteriores. 4 Desvio condicional ` Nem sempre a condição está explícita no enunciado ` Exemplo 3: ` Leia a idade de uma pessoa e escreva a sua classe eleitoral. • Não eleitor: abaixo de 16 anos • Eleitor Obrigatório: entre 18 e 65 anos • Eleitor Facultativo: entre 16 e 18 anos e maior do que 65 anos ` Aqui vamos usar decisão para definir a classe eleitoral de acordo com a idade fornecida; ` Note que não aparece a palavra SE no enunciado, porém vamos usar esse comando na resolução do problema. 5 Desvio condicional ` Nem sempre a condição está explícita no enunciado ` Exemplo 4: ` Dados 3 números, escreva-os em ordem crescente (suponha números diferentes). ` Aqui vamos usar decisão para ordenar os números dados como entrada ` Note que não aparece a palavra SE no enunciado, porém vamos usar esse comando na resolução do problema 6 Desvio condicional simples ` Português estruturado utiliza a instrução: ` se (<condição>) então...fim-se ` Se a condição estabelecida for verdadeira, serão executadas todas as instruções definidas entre se...então e fim_se ` Depois serão executadas todas as instruções existentes após fim_se ` Se a condição estabelecida for falsa, serão executadas as instruções definidas após a instrução fim_se 7 Desvio condicional simples programa <nome> início se (<condição>) então <comando 1> <comando 2> . <comando n> fim_se . . . fim Comandos dentro do bloco se são executados caso a condição seja VERDADEIRA • Se a condição estabelecida for verdadeira, serão executadas todas as instruções definidas entre se...então e fim_se • Depois serão executadas todas as instruções existentes após fim_se 8 Desvio condicional simples Programa <nome> início se (<condição>) então <comando 1> <comando 2> . <comando n> fim_se . . . fim condição FALSA Comandos NÃO são executados Executa os comandos após o fim_se • Se a condição estabelecida for falsa, serão executadas as instruções definidas após a instrução fim_se 9 Desvio condicional simples: exemplo Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 1º Passo: Criar o corpo mínimo em Português estruturado 10 programa SOMA_MAIOR_10 início fim Note que foi dado um nome para o algoritmo Note que o nome fornecido NÃO está entre < > Desvio condicional simples: exemplo Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 2º Passo: Solicite os dados de entrada programa SOMA_MAIOR_10 início escreva ″Informe dois números reais:″ leia x,y fim Vamos chamar os 2 números de x e de y 11 Desvio condicional simples: exemplo programa SOMA_MAIOR_10 início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y fim Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 2º Passo: Solicite os dados de entrada Poderia ser.... 12 Desvio condicional simples: exemplo programa SOMA_MAIOR_10 início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y fim Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 3º Passo: Definir o processamento 13 Desvio condicional simples: exemplo 14 programa SOMA_MAIOR_10 início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y escreva “O resultado da soma dos dois numeros eh:”, res fim Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 4º Passo: Mostrar a saída do algoritmo Aqui é importante notar que somente devemos mostrar esse resultado SE ele for maior que 10. Precisamos colocar esse comando escreva dentro de uma condição. Desvio condicional simples: exemplo Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 5º Passo: Pensando sobre a condição ` O enunciado diz que o resultado deve ser apresentado somente se for maior que 10. ` Onde está guardado o resultado? ` Pense na elaboração de uma expressão relacional para colocar no comando se programa SOMA_MAIOR_10 início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y escreva “O resultado da soma dos dois numeros eh:”, res fim 15 Desvio condicional simples: exemplo 16 programa SOMA_MAIOR_10 início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y se (res > 10) então escreva “O resultado da soma dos dois numeros eh:”, res fim_se fim Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 6º Passo: Criando uma decisão... Vamos subordinar a saída do algoritmo a uma decisão. Preste atenção na indentação Desvio condicional simples: exemplo programa SOMA_MAIOR_10 var x, y, res: real início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y se (res > 10) então escreva “O resultado da soma dos dois numeros eh:”, res fim_se fim Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10. ` 7º Passo: Declarando as variáveis usadas 17 Desvio condicional simples: exemplo programa SOMA_MAIOR_10 var x, y, res: real início escreva ″Informe um número real:″ leia x escreva ″Informe outro número real:″ leia y res Å x + y se (res > 10) então escreva “O resultado da soma dos dois numeros eh:”, res fim_se fim Se SOMA <=10, o algoritmo não produz nenhuma saída. 18 Desvio condicional composto ` Português estruturado utiliza a instrução: ` se (<condição>) então ... senão ... fim-se ` Se acondição estabelecida for verdadeira, serão executadas todas as instruções definidas entre se...então e senão ` Se a condição estabelecida for falsa, serão executadas as instruções definidas entre senão e fim_se ` Somente após uma das possibilidades anteriores é que o programa executada as instruções existentes após fim_se 19 Desvio condicional composto: sintaxe programa <nome> início se (<condição>) então <comando 1> <comando 2> . <comando n> senão <comando 1> <comando 2> . <comando n> fim_se . . . fim • Caso a condição seja VERDADEIRA, comandos dentro do bloco se são executados. • Depois serão executadas todas as instruções existentes após fim_se. 20 Desvio condicional composto: sintaxe programa <nome> início se (<condição>) então <comando 1> <comando 2> . <comando n> senão <comando 1> <comando 2> . <comando n> fim_se . . . fim • Caso a condição seja FALSA, comandos dentro do bloco senão são executados. • Depois serão executadas todas as instruções existentes após fim_se. 21 Desvio condicional: exemplo ` Elaborar um algoritmo que leia o nome e a altura de duas pessoas. O seu algoritmo deve comparar as duas alturas lidas e apresentar como saída o nome da pessoa mais alta. ` Para isso: ` Devemos receber como entrada os nomes e as alturas das duas pessoas ` Comparar os valores das alturas lidas ` Se a primeira altura lida for maior que a segunda, escreveremos o como saída o nome da primeira pessoa. Senão, escreveremos o nome da segunda pessoa. 22 Desvio condicional composto: exemplo programa COMPARACAO_ALTURA início fim ` 1º Passo: Crie o corpo mínimo 23 Desvio condicional composto: exemplo ` 2º Passo: Solicite os dados de entrada programa COMPARACAO_ALTURA início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 fim 24 Desvio condicional composto: exemplo 25 ` 3º Passo: Efetue o processamento dos dados programa COMPARACAO_ALTURA início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 fim Veja que neste caso, o processamento consiste em fazer uma comparação de alturas. A variável cond será definida como do tipo lógico `Elaborar um algoritmo que leia o nome e a altura de duas pessoas. O seu algoritmo deve comparar as duas alturas lidas e apresentar como saída o nome da pessoa mais alta. Desvio condicional composto: exemplo ` 4º Passo: Mostrar a saída programa COMPARACAO_ALTURA início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 escreva “A pessoa mais alta eh:”, NOME1 escreva “A pessoa mais alta eh:”, NOME2 fim Aqui temos DUAS possibilidades de saída do algoritmo. 26 Desvio condicional composto: exemplo ` 5º Passo: Criando a condição programa COMPARACAO_ALTURA início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 escreva “A pessoa mais alta eh:”, NOME1 escreva “A pessoa mais alta eh:”, NOME2 fim Note que cada possibilidade de saída do algoritmo depende do valor na variável cond. Assim, o NOME1 deve ser apresentado SE a variável cond tiver o valor verdadeiro, senão devemos mostrar o NOME227 Desvio condicional composto: exemplo ` 5º Passo: Criando a condição programa COMPARACAO_ALTURA início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 se (cond = .V.) então escreva “A pessoa mais alta eh:”, NOME1 senão escreva “A pessoa mais alta eh:”, NOME2 fim_se fim Note que cada possibilidade de saída do algoritmo depende da expressão relacional que criamos. Assim, o NOME1 deve ser apresentado SE a condição for verdadeira, senão devemos mostrar o NOME228 Desvio condicional composto: exemplo 29 ` 6º Passo: Declarando variáveis programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real cond: lógico início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 se (cond = .V.) então escreva “A pessoa mais alta eh:”, NOME1 senão escreva “A pessoa mais alta eh:”, NOME2 fim_se fim Desvio condicional composto: exemplo ` A variável res é desnecessária programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real cond: lógico início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 se (cond = .V.) então escreva “A pessoa mais alta eh:”, NOME1 senão escreva “A pessoa mais alta eh:”, NOME2 fim_se fim A variável cond pode ser excluída sem prejuízo ao nosso algoritmo. Note que com ela está consumindo recursos: -memória porque precisamos de espaço para ela; - processamento porque devemos fazer duas comparações relacionais Vamos ajustar o código para minimizar o uso de recursos. 30 Desvio condicional composto: exemplo ` A variável res é desnecessária programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real cond: lógico início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 cond Å ALTURA1 > ALTURA2 se (cond = .V.) então escreva “A pessoa mais alta eh:”, NOME1 senão escreva “A pessoa mais alta eh:”, NOME2 fim_se fim programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 se (ALTURA1 > ALTURA2) então escreva “A pessoa mais alta eh:”, N senão escreva “A pessoa mais alta eh:”, N fim_se fim 1. Coloque a expressão dentro da condição 2. Remova a linha de atribuição da variável cond 3. Remova a declaração da variável31 Desvio condicional composto: exemplo Programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leia NOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 se (ALTURA1 > ALTURA2) então escreva “Pessoa mais alta:”, NOME1 senão escreva “Pessoa mais alta:”, NOME2 fim_se fim Atenção: não esqueça de fazer a indentação corretamente aqui. 32 Erros frequentes (1) Programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real início escreva “Informe o nome da 1a pessoa:” leia NOME1 escreva “Informe altura da 1a pessoa:” leia ALTURA1 escreva “Informe o nome da 2a pessoa:” leiaNOME2 escreva “Informe altura da 2a pessoa:” leia ALTURA2 se (ALTURA1 > ALTURA2) então escreva “Pessoa mais alta:”, NOME1 senão (ALTURA1 < ALTURA2) escreva “Pessoa mais alta:”, NOME2 fim_se fim Errado! O senão não tem condição associada. Preste atenção na sintaxe do comando. 33 Erros frequentes (2) se (ALTURA1 > ALTURA2) então escreva “Pessoa mais alta:”, NOME1 senão se (ALTURA1 < ALTURA2) então escreva “Pessoa mais alta:”, NOME2 fim_se Errado também! Fazendo mais uma comparação desnecessária. Indentação também errada. se (ALTURA1 > ALTURA2) então escreva “Pessoa mais alta:”, NOME1 senão se (ALTURA1 < ALTURA2) então escreva “Pessoa mais alta:”, NOME2 fim_se fim_se Aqui com a indentação correta é possível ver que está faltando o fim_se do se simples 34 Exercícios ` Qual será a saída dos seguintes trechos de algoritmos? Considere os seguintes valores de variáveis: A=2, B=3, C=5, D=9 e E=6. se ((A>2) .e. (B<7)) então X ← (A+2) * (B -2) senão X ← (A+B) / C fim_se escreva X se ((A=2) .ou. (B<7)) então X ← (A+2) * (B -2) senão X ← (D+E) / B fim_se escreva X se ((A>=2) .ou. (C <=1)) então X ← (A+E) / 2 senão X ← D*C fim_se escreva X se ((C>=2) .e. (B <=7)) então X ← (B+D) / E senão X ← A*B fim_se escreva X se ((A>2) .ou. (B<7)) então X ← (A+B*C) senão X ← (A+2) * (B -D) fim_se escreva X35 Exercícios ` Dado o seguinte algoritmo: programa IMPRIME_AB var A, B: inteiro inicio A ← 1 B ← 5 se (A > B) então A ← 5 senão B ← 10 escreva A, B fim_se fim Qual valor de A e B será impresso? 36 Exercícios ` Dado o seguinte algoritmo: programa valor_L var A, B, C, D: logico X, Y: real V, L: inteiro inicio A ← .F. B ← .V. C ← .F. X ← 1.8 Y ← 3.4 X ← X + 1 se (C .ou. (( X + Y > 5) .ou. (A .e. B)) então L ← 0 senão L ← 1 fim_se fim Qual valor FINAL de L? 37 Desvios condicionais encadeados ` São usados quando há necessidade de estabelecer algumas verificações lógicas de condições definidas sucessivamente ` Uma determinada ação de um programa só pode ser executada se um conjunto anterior de condições for verificado ` Pode ser usada uma condição dentro de outra condição 38 Desvio condicional encadeado: sintaxe se (<condição1>) então <instruções para condição1 verdadeira> senão se (<condição2>) então <instruções para condição2 verdadeira, porém condição1 falsa> senão <instruções para condição1 e condição2 falsas> fim_se fim_se 39 Um problema ` Elaborar um algoritmo que efetue o cálculo do reajuste de salário de um funcionário. Considere que o funcionário deve receber um reajuste de 15% caso seu salário seja menor ou igual a R$ 645,00. Se seu salário for maior que R$ 645,00, mas menor ou igual a R$ 1.000,00, seu reajuste deve ser 10%. Caso seja maior que 1.000,00, o reajuste deverá ser de 5%. ` É possível ver 3 condições no problema acima: ` Se salário <= R$ 645,00, reajuste de 15% ` Se R$ 645,00 < salário <= R$ 1.000,00, reajuste de 10% ` Se salário > R$ 1.000,00, reajuste de 5% 40 Desvio condicional encadeado: exemplo programa REAJUSTA_SALARIO inicio fim ` Vamos criar o corpo mínimo do algoritmo e dar um nome 41 Desvio condicional encadeado: exemplo ` Vamos pensar nas entradas e saídas e os tipos de dados que elas representam ` Entrada: salário (real) ` Saída: novo salário (real) programa REAJUSTA_SALARIO var SALARIO,NOVO_SALARIO: real inicio fim 42 Desvio condicional encadeado: exemplo ` Vamos solicitar a entrada programa REAJUSTA_SALARIO var SALARIO,NOVO_SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO fim 43 Desvio condicional encadeado: exemplo ` Vamos estruturar nossas condições. Pensando na 1ª condição: ` Se salário <= R$ 645,00 então reajuste de 15% programa REAJUSTA_SALARIO var SALARIO, NOVO_SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão . . . fim_se fim Vamos preencher aqui na próxima etapa. Cuidado com a indentação 44 Desvio condicional encadeado: exemplo ` Pensando na 2ª condição: ` Se R$ 645,00 < salário <= R$ 1.000,00 então reajuste de 10% 45 programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 senão . . . fim_se fim_se fim Aqui está. Note que estamos dentro do senão. Vamos preencher aqui na próxima etapa. Exemplo: observação ` Atenção para a expressão ` Se R$ 645,00 < salário <= R$ 1.000,00 então reajuste de 10% ` Não podemos incluir a expressão assim: 645 < SALARIO <= 1000 ` Note que a expressão usada na condição tem o operador lógico .e. se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 senão . . . fim_se Exemplo: observação ` Vamos analisar: ` Suponha que a variável SALARIO tem o valor 1200 ` 645 < SALARIO <= 1000 ` 645 < 1200 <= 1000 ` .V. <= 1000 ` Se for em Linguagem C temos: ` 1 <= 1000 ` Ou seja, o funcionário receberia um aumento de 10% e era para receber de 5% se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 senão . . . fim_se Exemplo: observação ` Com o uso do operador lógico .e. não tem erro. Veja: ` Suponha que o SALARIO tem o valor 1200 ` ((645 < SALARIO) .e. (SALARIO<= 1000 )) ` 645 < 1200 .e. 1200<= 1000 ` .V. .e. .F. ` .F. ` Resultado é falso, não recebe aumento de 10% ` Vai tentar a próxima condição Desvio condicional encadeado: exemplo ` Pensando na 3ª condição: ` Se salário > R$ 1.000,00 então reajuste de 5% programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 senão se (SALARIO > 1000) então NOVO_SALARIO Å SALARIO * 1.05 fim_se fim_se fim_se fim49 Desvio condicional encadeado: exemplo ` Mostrando o resultado... programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 senão se (SALARIO > 1000) então NOVO_SALARIO Å SALARIO * 1.05 fim_se fim_se fim_se escreva “O novo salario eh:”, NOVO_SALARIO fim50 Refinando o exemplo... ` Mostrando o resultado... programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão se (SALARIO <=1000) então NOVO_SALARIO Å SALARIO * 1.10 senão se (SALARIO > 1000) então NOVO_SALARIO Å SALARIO * 1.05 fim_se fim_se fim_se escreva “O novo salario eh:”, NOVO_SALARIO fim Podemos suprimir uma das comparações (compare com o slide anterior). Se a primeira condição não for verdadeira é porque o salário é maior que 622 e aqui podemos testar se ele está abaixo de 1000. 51 Refinando o exemplo... ` Mostrando o resultado... programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 senão se (SALARIO <=1000) então NOVO_SALARIO Å SALARIO * 1.10 senão NOVO_SALARIO Å SALARIO * 1.05fim_se fim_se escreva “O novo salario eh:”, NOVO_SALARIO fim Podemos suprimir o teste (se “simples”) aqui (compare com o slide anterior). Se as condições anteriores forem falsas é porque o salário é maior que 1000 e já podemos atribuir o acréscimo de 5%. Como visto no refinamento, nem sempre precisaremos usar todas as expressões definidas inicialmente para solucionar o problema, pois a lógica de programação permite a supressão de parte delas a depender do problema.52 Desvio condicional: exemplo ` Uma solução que funciona, mas que NÃO está adequada programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva “Informe o salario atual:” leia SALARIO se (SALARIO <= 645) então NOVO_SALARIO Å SALARIO * 1.15 fim_se se ((SALARIO > 645) .e. (SALARIO <=1000)) então NOVO_SALARIO Å SALARIO * 1.10 fim_se se (SALARIO > 1000) então NOVO_SALARIO Å SALARIO * 1.05 fim_se escreva “O novo salario eh:”, NOVO_SALARIO fim Qual a diferença desta solução para a anterior?53 Exercícios ` Para cada valor abaixo, o que será impresso depois de executado o algoritmo? ` NUM = 5 ` NUM = 0 ` NUM = 2 programa testa_num var NUM: inteiro QUALE: caractere inicio leia NUM se (NUM > 0) então QUALE Å “Numero positivo” senão se ( NUM < 0) então QUALE Å “Numero negativo” senão QUALE Å “zero” fim_se fim_se escreva QUALE fim54 programa teste_mesa var A, B, C, D: inteiro inicio A ← <ultimo digito do seu RG> B ← 3 C ← 5 D ← B +1 se (A > C) então B ← 7 + D se (D < A) então D ← A+B A ← B + D fim_se se (C < B) então C ← D - A fim_se senão B ← 2 + A C ← B + D se ( C < A) então A ← C + B D ← C - D fim_se fim_se fim Exercícios ` Dado o seguinte algoritmo: Qual valor FINAL de A, B, C e D? 55 Referências ` ALGORITMOS. MANZANO – Lógica para desenvolvimento de programação de computadores. José Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. São Paulo: Érica, 2006. ` ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano Gonçalves Becker, Eduardo Chaves Faria et al. 3ª Edição. Rio de Janeiro: LTC, 2008. 56 Algoritmos Plano de aula Desvio condicional Desvio condicional Desvio condicional Desvio condicional Desvio condicional simples Desvio condicional simples Desvio condicional simples Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional simples: exemplo Desvio condicional composto Desvio condicional composto: sintaxe Desvio condicional composto: sintaxe Desvio condicional: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Desvio condicional composto: exemplo Erros frequentes (1) Erros frequentes (2) Exercícios Exercícios Exercícios Desvios condicionais encadeados Desvio condicional encadeado: sintaxe Um problema Desvio condicional encadeado: exemplo Desvio condicional encadeado: exemplo Desvio condicional encadeado: exemplo Desvio condicional encadeado: exemplo Desvio condicional encadeado: exemplo Exemplo: observação Exemplo: observação Exemplo: observação Desvio condicional encadeado: exemplo Desvio condicional encadeado: exemplo Refinando o exemplo... Refinando o exemplo... Desvio condicional: exemplo Exercícios Exercícios Referências
Compartilhar