apostila - algoritmos

115
Universidade de Mogi das Cruzes ALGORITMOS Estruturas Simples O professor pode ser excelente, o método de ensino maravilhoso, mas sem a sua participação caro aluno, o aprendizado não acontece. Mogi das Cruzes, SP 2008

Upload: user-tiesco

Post on 29-Sep-2015

209 views

Category:

Documents


8 download

DESCRIPTION

Linguagem C

TRANSCRIPT

  • Universidade de Mogi das Cruzes

    ALGORITMOS Estruturas Simples

    O professor pode ser excelente, o mtodo de ensino

    maravilhoso, mas sem a sua participao caro aluno,

    o aprendizado no acontece.

    Mogi das Cruzes, SP

    2008

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 2/115

    AUTORES

    A presente apostila est sendo elaborada com a colaborao dos professores da UMC,

    que ministram e/ou ministraram as disciplinas Tcnicas de Programao e/ou Algoritmos para

    Estruturas Simples e compostas, a saber:

    Marcia A. S. Bissaco

    Andra Ono Sakai

    Cibele Mattos

    Marco Antnio Porto Alvarenga

    Marco Antnio Sawada (in memorium)

    Roberta Panzera

    Sebastio Varotto

    Viviane Guimares Ribeiro

    Para esclarecimento de dvidas, sugestes ou crticas entre em contato atravs do e-mail

    [email protected] ou do telefone 4798-7112.

    Se tiver interesse de saber um pouquinho sobre mim, veja os anexos.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 3/115

    SUMRIO

    1. CONCEITOS BSICOS............................................................................................... 5

    1.1. LGICA DE PROGRAMAO E ALGORITMOS.............................................. 5

    1.2. FORMAS DE REPRESENTAO DE ALGORITMOS ....................................... 6

    1.2. 1. Descrio Narrativa................................................................................. 6

    1.2. 2. Pseudocdigo.......................................................................................... 7

    1.2. 3. Fluxograma............................................................................................. 8

    1.2. 4. Diagrama de Chaplin............................................................................. 10

    1.2. 5. Transformao do algoritmo em um programa ...................................... 11

    1.3. EXERCCIOS PROPOSTOS ............................................................................... 13

    1.3. 1. Responda as questes abaixo................................................................. 13

    1.3. 2. Elaborao de algoritmos descritivos..................................................... 14

    1.3. 3. Transcrevendo algoritmo em fluxograma para pseudocdigo e vice-versa16

    2. PROGRAMAO ESTRUTURADA ........................................................................ 22

    2.1. INTRODUO ................................................................................................... 22

    2.2. TIPOS DE DADOS, VARIVEIS E OPERADORES.......................................... 22

    2.2.1. Tipos de dados ........................................................................................ 22

    2.2.1.1. Dados numricos inteiros ............................................................ 23

    2.2.1.2. Dados numricos reais................................................................. 23

    2.2.1.3. Dados literais .............................................................................. 23

    2.2.1.4. Dados lgicos.............................................................................. 24

    2.2.2. Variveis................................................................................................. 24

    2.2.3. Variveis versus alocao de memria .................................................... 25

    2.2.4. Operadores.............................................................................................. 28

    2.2.4.1. Operador de atribuio ................................................................ 28

    2.2.4.2. Operadores aritmticos e funes ................................................ 28

    2.2.4.3. Operadores Lgicos..................................................................... 29

    2.2.4.4. Operadores relacionais ................................................................ 30

    2.2.4.5. Prioridade para execuo das operaes no computador .............. 30

    2.2.5. Exerccios propostos ............................................................................... 30

    2.3. TCNICA DE PROGRAMAO ESTRUTURADA.......................................... 35

    2.3. 1. Estrutura Seqencial.............................................................................. 35

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 4/115

    2.3.1.1. Sintaxe ....................................................................................... 35

    2.3.1.2. Exemplos ................................................................................... 35

    2.3.1.3. Exerccios propostos................................................................... 42

    2.3.2. Estrutura Condicional.............................................................................. 50

    2.3.2.1. Sintaxe ....................................................................................... 50

    2.3.2.2. Exemplos ................................................................................... 54

    2.3.2.3. Exerccios propostos................................................................... 63

    2.3.3. Estrutura Repetio................................................................................ 68

    2.3.3.1. Sintaxe ....................................................................................... 68

    2.3.3.2. Exemplos ................................................................................... 70

    2.3.3.3. Exerccios propostos................................................................... 75

    2.4. EXERCCIOS PROPOSTOS COMPLEMENTARES .......................................... 84

    2.5. RESUMO........................................................................................................... 106

    REFERNCIAS BIBLIOGRFICAS........................................................................... 111

    ANEXOS...................................................................................................................... 112

    A.1. Como ser reprovado em Algoritmos e/ou Laboratrio de Programao.............. 112

    A.2. Sobre o autor ..................................................................................................... 114

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 5/115

    1. CONCEITOS BSICOS

    Programar basicamente construir algoritmos.

    1.1. LGICA DE PROGRAMAO E ALGORITMOS

    Qualquer problema solucionado seguindo um ou mais caminhos. Para isto, usa-se a

    lgica, ou seja, raciocnios coerentes que conduzem a solues eficazes para o problema. Por

    exemplo:

    1. A gaveta est fechada.

    2. A caneta est dentro da gaveta.

    3. Portanto, primeiro preciso abrir a gaveta para depois pegar a caneta.

    Quando o problema a ser solucionado de processamento de dados (computador),

    necessrio usar a lgica de maneira formal, ou seja, adequar os raciocnios a simbolizao usada

    na programao, de modo a obter o resultado do que deseja programar com qualidade. Neste

    caso, usamos a expresso lgica de programao, que representada por algoritmos.

    Os algoritmos fazem parte da nossa vida diria, constantemente estamos fazendo uso

    dele. Alguns exemplos so:

    Indicaes dadas para se chegar at uma determinada rua;

    Um receita culinria;

    Uma planta serve ao mesmo propsito num projeto de construo;

    Instrues para o uso de medicamentos, equipamentos;

    Indicaes de como montar um aparelho.

    Algoritmos so, portanto, uma seqncia ordenada e sem ambigidade de passos

    executveis (ou seja, instrues/aes), precisamente definidos, que manipulam um conjunto de

    dados a fim de resolver um dado problema.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 6/115

    1.2. FORMAS DE REPRESENTAO DE ALGORITMOS

    Um algoritmo deve possuir aes bem definidas de modo a no dar margem dupla

    interpretao. Ele parte de um ponto inicial, passando pelas aes at alcanar o resultado final.

    No importando a representao a ser escolhida, para solucionar o problema devem ser

    empregadas corretamente as leis do pensamento para obter o resultado esperado.

    Um algoritmo pode ser representado atravs de descrio narrativa, fluxograma,

    pseudocdigo e diagrama de chaplin, formas de represetao descritas nos itens seguintes.

    1.2. 1. Descrio Narrativa

    Nesta forma de representao, os algoritmos so expressos diretamente em Linguagem

    Natural. Por exemplo, observe a soluo dos problemas apresentados abaixo referente troca de

    uma lmpada velha e ao clculo da mdia aritmtica de duas notas.

    ALG01 Trocar uma lmpada velha

    1. Pegar uma escada; 2. Posicionar a escada embaixo da lmpada; 3. Buscar uma lmpada nova; 4. Subir na escada; 5. Retirar a lmpada velha; 6. Colocar a lmpada nova.

    ALG02 Calcular a mdia aritmtica de um aluno

    1. Pegar as notas N1 e N2; 2. Calcular a mdia aritmtica (M (N1 + N2)/2); 3. Mostrar o resultado;

    A Linguagem Natural muitas vezes PROLIXA (cansativa, longa, irritante) e

    IMPRECISA, podendo ocasionar problemas, tais como:

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 7/115

    M interpretao;

    Perda de informao;

    Dificuldade de se transmitir a informao desejada.

    Por exemplo, descreva um caminho para sair de onde voc est no momento e ir at a

    estao do metr Tiete em So Paulo.

    1.2. 2. Pseudocdigo

    Nesta forma de representao, os algoritmos so expressos numa linguagem simplificada,

    tambm conhecida por portugol ou portugus estruturado.

    No momento do desenvolvimento de um algoritmo, preciso saber quais dados sero

    recebidos do mundo externo e tambm quais informaes exteriorizar. No interessa, portanto,

    saber se os dados entraro via teclado, pela leitura de um arquivo de dados ou por qualquer outro

    meio. Para dar entrada ou sada nesses dados, so utilizados os verbos LER, ESCREVER e

    IMPRIMIR. O comando ler (ou leia) espera receber um determinado dado (sem importar a

    origem). O comando escrever (ou escreva) mostra a informao produzida no vdeo. O comando

    imprimir (ou imprima) faz a impresso em papel da informao produzida. A sintaxe dos

    comandos :

    leia (varivel1, varivel2, ... , varivel n);

    escreva (lista de constantes, variveis e/ou expresses );

    imprima (lista de constantes, variveis e/ou expresses );

    Exemplos:

    Leia (numero1);

    numero2 numero1 * 2;

    escreva (O dobro do nmero , numero2);

    imprima (O triplo do nmero , numero1 * 3);

    A seguir so apresentados os algoritmos ALG01 e ALG02, que ilustram uma soluo

    para a troca de lmpada velha e para o clculo da mdia aritmtica de um aluno,

    respectivamente.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 8/115

    ALG01 Pseudocdigo do algoritmo para trocar uma lmpada velha

    Algoritmo Troca_lmpada; Incio Escreva (Pegar uma escada); Escreva (Posicionar a escada embaixo da lmpada); Escreva (Buscar uma lmpada nova); Escreva (Subir na escada); Escreva (Retirar a lmpada velha); Escreva (Colocar a lmpada nova). Fim

    ALG02 Pseudocdigo do algoritmo que calculaa mdia aritmtica de duas notas

    Algoritmo CalcMedia; Var N1, N2, M : Numrico; Incio Leia (N1, N2); M (N1 + N2)/2); Escreva (M); Fim.

    Note que ambos os algoritmos comeam e terminam com as palavras Algoritmo, incio e

    fim, sendo que a palavra algoritmo seguida de um identificador, que corresponde a um nome

    representativo do problema a ser solucionado. Em ALG02 tem tambm as palavras chaves Var e

    Numrico, que so utilizadas para declarao de variveis e seus tipos de dados que fazerm

    parte da soluo do problema. Estas sero esclarecidas mais a frente. Por enquanto, importante

    saber que estas palavras chaves compem a sintaxe do pseudocdigo.

    1.2. 3. Fluxograma

    Nesta forma de representao, os algoritmos so expressos numa linguagem grfica,

    sendo que algumas das formas geomtricas que simbolizam algumas das aes mais realizadas

    so:

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 9/115

    Descrio Representao grfica Descrio Representao grfica

    Inicio/Fim

    Processamento

    Entrada de dados

    Deciso

    Sada de dados

    Repetio

    Conectores

    Direo do fluxo

    Veja a soluo dos problemas da troca da lmpada velha e do clculo da mdia utilizando

    o fluxograma.

    ALG01 - Trocar uma lmpada velha

    inicio

    fim

    Pegar uma escada; Posicionar a escada embaixo da lmpada;

    Buscar uma lmpada nova; Subir na escada;

    Retirar a lmpada velha; Colocar a lmpada nova;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 10/115

    ALG02 Calcular a mdia aritmtica

    {Incio do algoritmo}

    {Entrada de dados, isto , das notas N1 e N2}

    {Processamento, isto , clculo da mdia}

    {Sada de dados: mostrando resultado}

    {Fim do algoritmo}

    O fluxograma tambm conhecido pelos profissionais da rea de Tecnologia da

    Informao de diagrama de blocos, embora tenham sigificados diferentes.

    1.2. 4. Diagrama de Chaplin

    Nesta forma de representao, os algoritmos so expressos num diagrama de quadros,

    que apresenta uma viso hierrquica e estruturada da lgica do programa. Tem um ponto de

    entrada e um ponto de sada e composto pelas estruturas bsicas: seqncia, seleo e

    repetio. Veja o exemplo a seguir.

    ALG02 Diagrama de chaplin do algoritmo que calcula a mdia aritmtica de duas notas e mostra mensagem Aprovado ou Reprovado

    Incio

    Fim

    N1, N2

    M (N1 + N2)/2

    M

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 11/115

    1.2. 5. Transformao do algoritmo em um programa

    Quando o verbo programar mencionado, imediatamente vem mente a palavra

    programa (ou software), que na realidade consiste num algoritmo traduzido para uma forma

    inteligvel para o computador.

    Quem realiza essa traduo um outro programa denominado Linguagem de

    Programao, tal como Pascal, Delphi, Visual Basic, C, etc. A funo bsica da Linguagem de

    Programao converter um cdigo-fonte, isto , o algoritmo escrito numa sintaxe

    compreensvel pelo programador para a Linguagem de Mquina ou Linguagem Binria.

    Assim sendo, programa uma combinao de algoritmo mais linguagem de

    programao, sendo que para elaborar o algorimto necessrio pensar de forma lgica para

    solucionar o problema real que se apresenta (Figura 1).

    Figura 1 - Esquema algoritmo-programa

    Os programadores devem iniciar o desenvolvimento de um programa elaborando antes o

    fluxograma ou pseudocdigo a fim de demonstrar a linha de raciocnio lgico para resoluo do

    problema, isto , para estabelecer a seqncia de operaes a ser realizada pelo programa

    desejado1.

    A codificao do algoritmo pode ser realizada em qualquer Linguagem de Programao.

    Lembrando que estas apresentam sintaxes diferentes, mas so similares em muitas outras

    particularidades, como por exemplo, o paradigma de programao empregado (programao

    estruturada, orientada a eventos ou orientada a objetos). A seguir so apresentadas as

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 12/115

    implementaes em PASCAL dos algoritmos ALG01 e ALG02, mencionado o que exibido no

    monitor quando cada uma das linhas de cdigo executada pelo computador.

    ALG01 Codificao em PASCAL do problema da troca da lmpada

    Aparece no monitor durante execuo do programa

    Program Troca_lampada; Uses WinCrt; Begin writeln (Pegar uma escada;); writeln (Posicionar a escada embaixo da

    lmpada; ); writeln (Buscar uma lmpada nova; ); writeln (Subir na escada; ); writeln (Retirar a lmpada velha; ); writeln (Colocar a lmpada nova.); End.

    Nada Nada Nada Pegar uma escada; Posicionar a escada embaixo da lmpada; Buscar uma lmpada nova; Subir na escada; Retirar a lmpada velha; Colocar a lmpada nova. Nada

    ALG02 Codificao em PASCAL do clculo da mdia aritmtica de 2 notas

    Aparece no monitor durante execuo do programa

    Program CalcMedia; Uses WinCrt; Var N1, N2, M : real; Begin Writeln (Digite Nota 1:); Readln (N1); Writeln (Digite Nota 2:); Readln (N2); M := (N1 + N2)/2); Writeln (A mdia = , M:5:2); End.

    Nada Nada Nada Nada Nada Digite Nota 1: Digite Nota 2 Nada Nada Nada Nada

    Os programas geralmente tm uma estrutura padro que consiste em: Entrada

    Processamento Sada. Os dados necessrios resoluo do problema so entrados via teclado

    e armazenados na memria do computador em posies denominadas de varivel. O

    processamento realizado pela Unidade Lgica e Aritmtica (ULA) e a sada de dados

    processados (informaes/valores calculados) ocorre atravs do monitor.

    Para desenvolver um programa com entrada, processamento e sada, importante

    responder as seguintes perguntas durante a elaborao do algoritmo: O que tenho? O que quero?

    Como fazer?

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 13/115

    1.3. EXERCCIOS PROPOSTOS

    1.3. 1. Responda as questes abaixo

    a. O que lgica de programao?

    b. O que algoritmo?

    c. Como os algoritmos podem ser representados?

    d. O que descrio narrativa?

    e. D um exemplo de algoritmo representado em descrio narrativa.

    f. Qual a desvantagem de se utilizar a descrio narrativa para representar os algoritmos?

    g. O que pseudocdigo?

    h. D um exemplo de pseudocdigo.

    i. O que fluxograma?

    j. D um exemplo de utilizao do fluxograma.

    k. Fale sobre o diagrama de Chaplin.

    l. D exemplo de um algoritmo representado pelo diagrama de Chaplin.

    m. Como se transforma um algoritmo num programa?

    n. O que linguagem de programao?

    o. O que um programa?

    p. Como os programadores devem proceder para desenvolver um programa?

    q. Como pode ser realizada a codificao de algoritmo para transforma-lo num programa de

    computador?

    r. Exemplifique a codificao do algoritmo da troca de lmpada velha em PASCAL.

    s. Exemplifique a codificao do algoritmo do clculo da mdia em PASCAL.

    t. Qual a estrutura bsica de um programa?

    u. Durante a fase de elaborao do algoritmo, que perguntas devem ser respondidas?

    v. Onde ocorre o processamento dos dados dentro do computador?

    w. Como so entrados no computador os dados necessrios resoluo do problema?

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 14/115

    x. Cite alguns dispositivos utilizados para entrar dados na memria do computador.

    y. Cite alguns dispositivos utilizados para sada das informaes no computador.

    z. O que memria?

    aa. Coloque falso (F) ou verdadeiro (V)

    ( ) Programadores no devem iniciar o desenvolvimento de um programa elaborando antes o fluxograma ou o pseudocdigo

    ( ) Fluxograma ou pseudocdigo so construdos a fim de demonstrar a linha de raciocnio lgico para resoluo do problema

    ( ) Pascal, Java, Delphi, C e Windows so linguagens de programao ( ) O algoritmo pode ser codificado em qualquer Linguagem de Programao ( ) Os dados necessrios resoluo do problema no so entrados via teclado ( ) Os dados so armazenados na memria do computador em posies denominadas de

    varivel.

    1.3. 2. Elaborao de algoritmos descritivos

    Elabore algoritmos descritivos para ensinar uma pessoa totalmente leiga a realizar as

    seguintes tarefas:

    1) Chupar bala;

    2) Estourar pipoca numa panela usando o fogo.

    3) Trocar uma lmpada queimada que est no teto, supondo que temos uma escada com

    altura suficiente e uma caixa com lmpadas de diferentes potncias.

    4) Estourar pipoca numa panela usando o fogo, utilizando somente os verbos acender,

    colocar, desligar e misturar, bem como usar somente os objetos panela, tigela, fogo, sal,

    milho de pipoca, pipoca e manteiga.

    5) Trocar a lmpada queimada empregando somente os verbos colocar, descer, escolher,

    girar e subir. Alm disso, usar tambm apenas os objetos escada, lmpada queimada,

    lmpada nova, soquete.

    6) Colocar exatamente 4 litros de gua num garrafo que tem capacidade para 5 litros. Pode-

    se usar tambm outro garrafo com capacidade de 3 litros e a fonte de gua a vontade.

    7) Atravessar trs jesutas e trs canibais para o outro lado de um rio. Para isso, h um barco

    com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que

    em alguma margem a quantidade de jesutas seja inferior dos canibais. Qual a soluo

    para efetuar a travessia com segurana? Elabore um algoritmo mostrando a resposta,

    indicando as aes que concretizam a soluo deste problema.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 15/115

    8) Solucionar o problema da Torre de Hani, que envolve um ambiente formado por uma

    base com 3 pinos (pA, pB e pC). No pino pA h uma pilha de 3 discos furados com

    dimetros diferentes (dP, dM e dG), ordenados de tal forma que o disco maior (dG) est

    em baixo e o menor (dP) em cima, formando assim uma torre conforme a figura a seguir:

    Figura 2 - Ambiente da Torre de Hani.

    O problema consiste em transferir-se a torre do pino pA para o pino pC

    obedecendo as seguintes restries:

    a) S possvel movimentar um disco por vez para qualquer pino;

    b) Um disco maior nunca poder ser colocado sobre um menor;

    c) A soluo dever ser encontrada com o menor nmero de passos possvel.

    9) Mostrar os passos necessrios para trocar um pneu furado, considerando as seguintes

    situaes:

    a) Trocar o pneu traseiro esquerdo;

    b) Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu reserva est em

    condies de uso;

    c) Verificar se existe algum pneu furado, se houver verificar o pneu reserva e, ento,

    trocar o pneu correto.

    Tome como exemplo os algoritmos desenvolvidos para solucionar o problema da troca de

    lmpadas. Para cada algoritmo faa um refinamento do anterior, introduzindo novas

    aes e alterando o fluxo de execuo de forma compatvel com as situaes

    apresentadas.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 16/115

    1.3. 3. Transcrevendo algoritmo em fluxograma para pseudocdigo e vice-versa

    Fluxograma Pseudocdigo

    Programa ALG03; Inicio Escreva (Meu primeiro programa); Fim.

    Inicio

    Fim

    Estou aprendendo

    a

    desenvolver algoritmos

    Inicio

    10

    Fim

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 17/115

    Fluxograma Pseudocdigo

    Programa ALG06; Var x: Inteiro; Inicio x 10; Fim.

    Programa ALG07; Var y: Inteiro; Inicio y 10; Escreva(y); Fim.

    Inicio

    Fim

    y 10

    y = , y

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 18/115

    Fluxograma Pseudocdigo

    Programa ALG10; Var N1,N2: Inteiro; Inicio N1 2; N2 3; Escreva (N1 = , N1, N2 = ,N2); Fim.

    Inicio

    N1 = , N1

    N2 = , N2

    N1 2

    N2 3

    Fim

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 19/115

    Fluxograma Pseudocdigo

    Programa ALG11; Var a: Inteiro; b: Real; nome:caracter; teste:lgico; Inicio a 1; b 1.25; nome Maria; teste verdadeiro; Escreva (a); Escreva (b); Escreva (nome); Escreva (teste); Fim.

    Programa ALG13; Var a,b,soma: Inteiro; Inicio a 15; b 3; soma a + b; Escreva ( Soma = , soma); Fim.

    Inicio

    Fim

    a 15;

    b 3;

    Soma = , a + b

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 20/115

    Fluxograma Pseudocdigo

    Programa ALG14; Var letra:caracter; Inicio letra A; Escreva(letra); Fim.

    Programa ALG15; Var n:real; Inicio Escreva (Digite um nmero real:); Leia (n); Escreva (n); Fim.

    Programa ALG16; Var num1,num2:real; Inicio Escreva(Digite dois nmeros reais:); Leia(num1,num2); Escreva(Primeiro numero = ,num1); Escreva(Segundo numero = ,num2); Fim.

    Inicio

    Fim

    Digite um nmero real

    n

    Nn

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 21/115

    Fluxograma Pseudocdigo

    Inicio

    Fim

    Digite o primeiro nmero

    Digite o segundo nmero

    num1

    2o = , num2

    1 = , num1

    num2

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 22/115

    2. PROGRAMAO ESTRUTURADA

    Algoritmos s se aprende fazendo.

    2.1. INTRODUO

    Segundo alguns especialistas, qualquer programa de computador pode ser escrito

    utilizando apenas trs estruturas bsicas: Seqncia, Condio e Repetio. Isto significa que, na

    construo de um algoritmo, deve ser criado um fluxo de aes a ser executado seqencialmente,

    ou seja, de cima para baixo e da esquerda para a direita.

    Antes, porm, necessrio fazer as seguintes perguntas: quais dados sero utilizados para

    solucionar o problema? De que tipo eles so (inteiro, real, literal ou lgico)? Qual o tamanho

    desses dados?

    Portanto, nos itens seguintes so abordados descrio e exemplos a respeito de tipos de

    dados e demais assuntos relacionados. So tambm apresentados exemplos de utilizao das

    estruturas bsicas e uma lista de exerccios para fixao dos conceitos.

    2.2. TIPOS DE DADOS, VARIVEIS E OPERADORES

    Uma relao dos tipos de dados, dos operadores de atribuio, aritmticos, lgicos e

    relacionais que podem ser utilizados pelo computador bem como o conceito de varivel so

    mostrados a seguir.

    2.2.1. Tipos de dados

    Uma informao manipulada pelo computador pode ser classificada como instrues ou

    dados. Sendo que, uma instruo comanda o funcionamento da mquina e determina como

    devem ser tratados dos dados. E os dados, correspondem poro das informaes a serem

    processadas pelo computador. Os tipos de dados manipulados pelo computador so trs:

    Dados numricos

    Dados literais

    Dados lgicos

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 23/115

    Recordando:

    Conjunto dos nmeros naturais (N)

    N = { 1, 2, 3, 4, ...}

    Conjunto dos nmeros inteiros (Z)

    Z = {..., -3, -2, -1, 0, 1, 2, 3, ... }

    Conjunto dos nmeros fracionrios (Q)

    Q = { p/q | p, q pertencem a Z}

    Conjunto dos nmeros reais (R) formado pela unio do conjunto Q.

    2.2.1.1. Dados numricos inteiros

    Este tipo de dados so nmeros pertencentes ao conjunto dos nmeros inteiros (Z).

    Podendo assumir valores negativos, nulo e positivos. Exemplos:

    24 nmero inteiro positivo

    0 nmero inteiro

    -12 nmero inteiro negativo

    2.2.1.2. Dados numricos reais

    Este tipo de dados so nmeros pertencentes ao conjunto dos nmeros fracionrios (Q).

    Podendo assumir valores negativos, nulos e positivos. Exemplos:

    24.01 nmero real positivo com duas casas decimais.

    144 nmero real positivo com zero casas decimais.

    -13.3 nmero real negativo com uma casa decimal.

    0 nmero real com zero casas decimais.

    2.2.1.3. Dados literais

    Este tipo de dados so caracteres tais como: letras, dgitos e/ou smbolos especiais.

    Podem ser chamados tambm como: dados alfanumricos, cadeias de caracteres ou

    string. No algoritmo, estes dados so delimitados pelo apostrofo (cadeia de caracteres).

    Exemplos:

    qual ? - literal de comprimento 6.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 24/115

    - literal de comprimento 1.

    1-2+3= - literal de comprimento 6.

    AbCdeF - literal de comprimento 7.

    0 - literal de comprimento 1.

    2.2.1.4. Dados lgicos

    Estes tipos de dados so chamados de booleanos. Eles representam dados lgicos com

    Verdadeiro e falso. Nos algoritmo seus valores so delimitados pelo ponto (.V.). Exemplos:

    .V. valor lgico verdadeiro

    .F. valor lgico falso

    2.2.2. Variveis

    Varivel um nome (rtulo) dado a uma parte da memria, cujo contedo (valor) pode

    ser alterado durante a execuo do programa. Embora seja possvel alterar o valor armazenado

    na memria (na varivel), possvel armazenar s um valor de cada vez. A varivel composta

    de dois elementos bsicos: a) contedo valor atual da varivel e b) identificador nome dado

    varivel.

    O identificador deve obrigatoriamente iniciar com uma letra e os caracteres seguintes

    com letras ou nmeros. Exemplos:

    A 5 (O valor 5 armazenado na varivel A)

    B 6 (O valor 6 armazenado na varivel B)

    C A+B (O valor que est em A somado ao valor em B, e o resultado armazenado

    na varivel C.)

    Vale lembrar que quando um valor armazenado numa varivel, o valor antigo ser

    perdido.

    Identificadores permitidos: A, Nome, N1 e S2N. Identificadores no permitidos: 2N, A

    B, N[1], A*2

    Todas as variveis usadas em um algoritmo (pseudocdigo) devem ser declaradas antes

    de serem usadas. Isto faz necessrio para permitir a reserva de espao na memria.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 25/115

    Sintaxe da declarao:

    Var

    : ;

    Regras:

    A palavra Var deve aparecer uma nica vez;

    Para um mesmo tipo de dado, podem ser listadas vrias variveis (seus nomes devem

    ser separados por vrgula);

    Variveis de tipos diferentes devem ser declaradas em linhas diferentes.

    Exemplos:

    Var

    nome,endereo: caracter;

    idade:inteiro;

    salrio:real;

    tem_filhos:lgico;

    2.2.3. Variveis versus alocao de memria

    O particionamento da memria para armazenamento de dados realizado aps anlise do

    problema a ser resolvido. necessrio responder as seguintes perguntas:

    Qual o problema a resolver?

    Quais os dados devem ser armazenados?

    Que tipo dado a ser utilizado?

    Qual o tamanho dos dados a serem utilizados?

    Como resolver o problema?

    Digamos que o problema a ser resolvido : somar dois nmeros quaiquer, tais como:

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 26/115

    Neste caso, os dados que devem ser armazenados, considerando os valores 2 e 3, so:

    Onde 2 o Primeiro nmero escolhido, 3 o Segundo nmero escolhido e 5 o Resultado, ou

    seja, o total da soma dos dois nmeros. Ento, posso rotular as partes da memria do

    computador, onde os valores 2, 3 e 5 sero armazenados, como sendo Primeiro, Segundo e

    Resultado respectivamente.

    Estas partes de memria podem receber tambm outros valores tais como: 4, 4 e 8; 289,

    97 e 386; 232, 1 e 233; 398, 0 e 398; e etc. Estas partes da memria so, portanto, chamadas de

    variveis e sempre que um novo valor for colocado nelas, o contedo anterior perdido ou

    sobrescrito.

    No exemplo acima, pode-se concluir que os dados so do tipo inteiro.

    Portanto, a poro de memria a ser reservada para as variveis rotuladas (Primeiro,

    Segundo e Resultado) ter um dimensionamento apropriado para o tipo inteiro.

    A memria do computador pode ser particionada para armazenar dados de outros tipos

    tambm, tais como dados do tipo real, literal e lgico. A diferena destes tipos de dados consiste

    apenas no tamanho da poro de memria a ser reservada, como ilustra tabela a seguir.

    TIPO DE DADO TAMANHO Inteiro 2 bytes Literal [1] (1 caracter) 1 byte Real 4 bytes Lgico 1 byte

    Lembrando: 1 byte = 8 bits; 1 bit pode assumir apenas um de dois valores (0 ou 1).

    Cada tipo de dado pode assumir de um valor mnimo a um valor mximo, como mostra a

    tabela abaixo:

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 27/115

    Relembrando o exemplo da soma dos dois nmeros, se os nmeros a serem somados

    esto dentro da seguinte faixa de valores:

    Ento, a poro de memria a ser reservada se enquadra no tipo inteiro.

    importante ressaltar tambm que o processo de rotular as partes da memria com nomes, isenta o programador de conhecer os endereos da memria expressos em hexadecimal.

    A figura a seguir ilustra o particionamento da memria (a numerao hexadecimal foi substituda

    pela decimal apenas para facilitar o entendimento).

    Figura 3 - Esquema de memria

    Voltando ao problema da soma de dois nmeros, pode-se agora responder a ltima pergunta Como resolver o problema?. A resposta : definir variveis e ....

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 28/115

    A figura a seguir ilustra todo o processo.

    Figura 4 - Variveis versus mapeamento de memria

    2.2.4. Operadores

    2.2.4.1. Operador de atribuio

    O operador de atribuio () usado para fornecer um valor a uma dada varivel.

    Exemplificando:

    A 5 (Atribuindo o valor 5 varivel A)

    B A (Atribuindo o valor da varivel A, valor igual a 5, varivel B)

    A B + C (Atribuindo o valor da soma dos valores nas variveis B e C varivel C)

    2.2.4.2. Operadores aritmticos e funes

    Para realizar clculos matemticos necessrio saber qual a representao dos smbolos

    de operaes matemticas, a saber:

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 29/115

    Operador Operao Exemplo + Adio 2 + 5 = 7

    - Subtrao 20 10 = 10

    * Multiplicao 3 * 5 = 15

    / Diviso (onde o resultado ser um nmero real) 5 / 2 = 2,5

    DIV Diviso (onde o resultado ser um nmero inteiro) 10 div 2 = 5 7 div 2 = 3

    MOD Resto de uma diviso 7 mod 2 = 1

    ** ou exp(a, b) Exponenciao 5 ** 2 ou exp(5, 2)

    Sqrt (x) Raiz quadrada Sqrt(5)

    Exp(ln(x)*n) Exponenciao xn Exp(ln(5)*3)

    Exemplificando atravs da elaborao de um algoritmo que resolve:

    a) x = ab b) y = a Algoritmo A; Var x, a, b:real; inicio a 10; b 2; x Exp(ln(a)*b); escreva(x); fim.

    Algoritmo A; var y, a:real; inicio a 16; y Sqrt(a); escreva(y); fim

    2.2.4.3. Operadores Lgicos

    Os operadores usados em expresses lgicas so os Operadores Lgicos apresentados na

    tabela a seguir.

    Operador Relao Descrio Exemplo

    E (And) E lgico Conjuno (as duas ao mesmo tempo )

    (Media > 5) .E. (Freq > 75)

    Ou (Or) Ou lgico Disjuno Inclusiva (Flag = .V.) .Ou. (Cont > 50)

    No (Not) Negao lgica Negao No (Sei_nada)

    Ou-X (Xor) Ou Exclusivo (Sal < 500) Ou-X (N_dep > 2)

    Veja a tabela verdade apresentada a seguir para entender melhor os operadores lgicos,

    onde P e Q so variveis do tipo lgico.

    P Q P.e. Q P .ou. Q P .ou-X. Q No (P .e. Q) No (P .ou. Q) No (P .ou-X. Q) F F F F F V V V

    F V F V V V F F

    V F F V V V F F

    V V V V F F F V

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 30/115

    2.2.4.4. Operadores relacionais

    Alm de operaes matemticas, freqente a comparao de informaes. Por

    exemplo, se a mdia aritmtica do aluno for maior ou igual a 5 ento o professor toma a deciso

    de aprovar o aluno. Para isso, so usados os operadores relacionais listados na tabela a seguir.

    Operador Relao Exemplo

    = Igualdade Nome = Joo da Silva

    ou Diferente Saldo 100,00

    > Maior que Salrio > 3000,00

    Idade > 18

    ou >= Maior ou igual que Mdia 5,0

    < Menor que Renda < 10000

    ou ,

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 31/115

    c) O que voc entende por memria do computador?

    d) Quais as regras para compor o nome (rtulo ou identificador) de uma varivel?

    e) Quais as regras para a declarao de uma varivel?

    2) Relacione as colunas

    Tipo de dado Descrio a) Numrico

    inteiro ( ) So caracteres tais como: letras, dgitos e/ou smbolos especiais. Pode-se tambm

    chamar estes dados de : alfanumricos, cadeia de caracteres ou string. No algoritmo estes dados so delimitados pelo apstrofo.

    b) Numrico real ( ) So chamados de boleanos. Pode assumir dois valores: Falso e Verdadeiro. No algoritmo seus valores so delimitados pelo ponto (.V.).

    c) Literal ( ) So nmeros pertencentes ao conjunto dos nmeros inteiros (Z), podendo assumir valores negativos, nulos e positivos.

    d) Lgico ( ) So nmeros pertencentes ao conjunto dos nmeros fracionrios (Q), podendo assumir valores negativos, nulos e positivos.

    3) Classifique os dados abaixo de acordo com seu tipo (inteiro, real, literal ou lgico).

    Dado Tipo de dado Dado Tipo de dado 0.7845 abc +35987 .F. .V. -0.0 .F. +36 32 -1 32.0 2 -0.0 Teste 24.01 144 1-2+3= AbCdeF qual? -13.3

    4) Na lista seguinte, assinale com V os nomes de variveis vlidos e com I os invlidos.

    ( ) Abc ( ) 3abc ( ) A ( ) 123a ( ) _a ( ) acd1 ( ) _ ( ) Aa ( ) 1 ( ) A123 ( ) _1 ( ) A0123 ( ) A1_v3 ( ) _a123 ( ) B214 ( ) AB CDE ( ) etc... ( ) guarda-chuva

    5) Indique a prioridade na avaliao das expresses

    Soma e subtrao Operador lgico E Operador Lgico No Parnteses e funes (resolvidos da esquerda para a direita) Operadores relacionais: >, =,

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 32/115

    6) Dadas as declaraes de variveis abaixo, monte as tabelas de smbolos correspondentes.

    a) VAR a,b,c : real; delta : real; positivo : lgico; raiz1, raiz2 : real;

    Nome simblico Posio inicial Tipo de dado

    A 1 Real

    b) VAR x,y : inteiro; nome, profissao : literal [20]; rua : literal [30]; numero : inteiro; renda : real;

    Nome simblico Posio inicial Tipo de dado

    7) Elabore um exerccio sobre o contedo apresentado at o presente momento. Pode ser

    criativo.

    8) Dado os enunciados abaixo, identifique as variveis necessrias na elaborao do algoritmo.

    D nome para essas variveis e identifique os tipos de dados possveis:

    8.1) Crie um algoritmo que calcule a soma de dois nmeros inteiros.

    8.2) Crie um algoritmo que calcule a mdia de um aluno composta por duas provas.

    8.3) Crie um algoritmo que calcule o salrio lquido de um funcionrio, considerado:

    a) os dados do funcionrio: nome, RG e telefone.

    b) salrio bruto de R$ 2500,00

    c) descontos de R$ 300,00

    9) Dados os identificadores abaixo, assinale somente os que so aceitos em Algoritmos.

    ( ) Valor ( ) abc ( ) B248 ( ) A/B ( ) X2 ( ) a ( ) salrio ( ) Nome

    ( ) 3 x 4 ( ) MARIA ( ) KM/H ( ) 3E ( ) Valor Pago ( ) NoTa ( ) _a123 ( ) Contador

    ( ) A1B2C3 ( ) 1 ( ) Nota ( ) XYZ ( ) AH! ( ) Nota ( ) _a ( ) acd1

    ( ) Placa-Carro ( ) SALA125 ( ) NOTA ( ) Algoritmo_1 ( ) Nome_da_empresa ( ) SALRIO-LQUIDO ( ) 1 algoritmo ( ) Nota*do*aluno

    ( ) notadoaluno ( ) _1 ( ) _ ( ) algo 1 ( ) 123 ( ) Mdia ( ) inicio ( ) vetor

    ( ) AB CDE ( ) Algoritmo1 ( ) A123 ( ) a123 ( ) 3abc

    10) Ligue os valores aos seus tipos de dados correspondentes

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 33/115

    11) Indique os tipos de dados (inteiro, real, literal, lgico) que podem ser armazenados nas

    variveis abaixo:

    Var Nota: Idade: Cidade: Salario: Sexo:

    12) Na hora de criar o nome da varivel (identificador) necessrio seguir regras. Indique com V

    regra verdadeira e F para regra falsa.

    ( ) No pode usar smbolos especiais (%, &, *, -, / , etc);

    ( ) O nico smbolo permitido o ( _ ) underline.

    ( ) Pode haver espaos; ( ) No pode haver espaos; ( ) No pode iniciar com um nmero; ( ) Pode ter acento agudo ou crase; ( ) Deve iniciar com uma letra; ( ) Pode iniciar com nmero ( ) Pode usar smbolos especiais (%,

    &, *, -, / , etc); ( ) Pode usar nmeros para compor o restante

    do nome aps iniciar com letra;

    13) Sendo P, Q, R e S, variveis numricas, cujo os contedos so iguais a 2, 3, 12 e 4.5,

    respectivamente, quais os valores fornecidos por cada uma das expresses abaixo.

    a) 100 * Q DIV P + R b) P * R MOD 5 Q/2 c) Q*Q R/4 * P 3 d) S MOD (P+1) Q * R e) S+ R * (3 2*P)/5 + 5*Q

    14) Dada as variveis numricas A e B, as variveis literais NOME e PROFISSAO, completar o

    quadro a seguir com os resultados lgicos (falso ou verdadeiro) obtidos como resultado das

    relaes, tendo em vista os valores atribudos a estas variveis.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 34/115

    15) Considerando as variveis do exerccio anterior e mais a varivel lgica TESTE contendo o valor lgico falso, avaliar as expresses a seguir, para cada uma das trs combinaes de valores apresentadas: a) A+1 >= B/4 .ou. NOME ANA

    b) A+5 = B/2

    d) PROFISSO = CONTADOR .ou. TESTE

    e) no TESTE .e. (A+2 >B/6 .ou. no PROFISSO = ENGENHEIRO)

    f) no (A+2 >= B .e. TESTE)

    16) Sejam as variveis lgicas P, Q, R, S contendo, respectivamente, os valores verdadeiro,

    falso, falso, verdadeiro. Indique o resultado das operaes:

    a) P .e. S f) P .ou. R b) P .e. R g) Q .ou. S c) Q .e. S h) Q .ou. R d) Q .e. R i) No P e) P .ou. S j) No R

    17) Dadas as expresses aritmticas abaixo, escreva-as de forma que o compilador de uma

    linguagem de programao como o PASCAL, por exemplo, entenda:

    a) 2 (A + B) 7B

    b)2

    33

    3

    2 BYX

    +

    c)Z

    Y

    CW

    BAY

    X

    4

    )2(53

    1

    2+

    ++

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 35/115

    2.3. TCNICA DE PROGRAMAO ESTRUTURADA

    A seguir so apresentadas as estruturas que compem a tcnica de programao

    estruturada e alguns exemplos.

    2.3. 1. Estrutura Seqencial

    Esta estrutura permite a execuo de um grupo de aes sequencialmente.

    2.3.1.1. Sintaxe

    A seguir apresentada a sintaxe utilizada para elaborar o pseudocdigo e o fluxograma.

    Pseudocdigo Fluxograma Comando_1; Comando_2; . . . Comando_n;

    2.3.1.2. Exemplos

    Os algoritmos ALG01 a ALG17, apresentados acima, so exemplos de algoritmos

    elaborados utilizando a estrutura seqencial. Alm deles, observe tambm os algoritmos

    apresentados a seguir, que realizam: soma de dois valores (ALG18); clculo da hipotenusa

    (ALG19), converso de um valor em horas e em minutos para um valor em minutos (ALG20),

    converso da temperatura em graus Celsius para graus Fahreinheit (ALG21), aumento do salrio

    de um funcionrio de acordo com certo percentual de aumento (ALG22) e clculo da rea do

    crculo (ALG23).

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 36/115

    ALG18 Soma de dois nmeros Anlise do problema Descrio narrativa

    1 O que tenho? Dois valores (A e B) 2 O que quero? Soma dos dois valores (S) 3 Como ? Fornecer valores A e B; S A + B; Mostra o resultado (S).

    1 - Fornecer valores A e B; 2 - S A + B; 3 - Mostra o resultado (S).

    Pseudocdigo Fluxograma Algoritmo SomaAB; Var A, B, S : inteiro; Incio Leia (A, B); S A + B; Escreva (S); Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program SomaAB; Uses WinCrt; Var A, B, S : integer; Begin Writeln (Digite A:); Readln (A); Writeln (Digite B); Readln (B); S := A + B; writeln (Soma = , S); End.

    Nada Nada Nada Nada Nada

    Digite A:

    Digite B:

    Nada Soma =

    Nada

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 37/115

    ALG19 Clculo da hipotenusa Anlise do problema Descrio narrativa

    1 O que tenho? Os catetos Oposto e Adjacente (A e B) 2 O que quero? Hipotenusa (H) 3 Como ? Fornece valores A e B; H raiz (A * A + B * B); Mostra o resultado (H).

    1 - Fornece valores A e B; 2 - H raiz (A * A + B * B); 3 - Mostra o resultado (H).

    Pseudocdigo Fluxograma Algoritmo CalcHip; Var C1, C2, hip : inteiro; Incio Leia (C1, C2); hip raiz (C1 * C1 + C2 * C2); Escreva (hip); Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program CalcHip; Uses WinCrt; Var A, B, H : integer; Begin Writeln (Cateto Oposto); Readln (A); Writeln (Cateto Adjacente); Readln (B); H := sqrt (A * A + B * B); writeln (Hipotenusa = , H:5:2); End.

    Nada Nada Nada Nada Nada

    Cateto Oposto

    Cateto Adjacente

    Nada Hipotenusa =

    Nada

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 38/115

    ALG20 Converso de um valor em Horas e Minutos para apenas minutos Anlise do problema Descrio narrativa

    1 O que tenho? Tempo em horas (H) e minutos (M) 2 O que quero? Tempo apenas em minutos (M) 3 Como ? Fornece os valores H e M; Mt H * 60 + M; Mostra o resultado (Mt).

    1 - Fornece valores de Horas (H) e Minutos (M);

    2 - Mt H * 60 + M; 3 - Mostra o resultado (Mt).

    Pseudocdigo Fluxograma Algoritmo ConvHMin; Var H, M, Mt: inteiro; Incio Leia (H, M); Mt H * 60 + M; Escreva (Mt); Fim

    Codificao em PASCAL Aparece no monitor quando o programa

    executado Program CalcHMin; Uses WinCrt; Var H, M, Mt : integer; Begin Writeln (Horas); Readln (H); Writeln (Minutos); Readln (M); Mt := H * 60 + M; writeln (Minutos = , Mt); End.

    Nada Nada Nada Nada Nada Horas

    Minutos

    Nada

    Minutos = Nada

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 39/115

    ALG21 Converso de uma temperatura em graus Celsius para Fahrenheit Anlise do problema Descrio narrativa

    1 O que tenho? Temperatura em graus Celsius (C) 2 O que quero? Temperatura em graus Fahreinheit (F) 3 Como ? Fornece a temperatura em Celsius; F 32 + 1.8 * C Mostra o resultado (F).

    1 - Fornece valor da temperatura em Celsius (C)

    2 - F 32 + 1.8 * C; 3 - Mostra o resultado (F).

    Pseudocdigo Fluxograma Algoritmo ConvCF; Var C, F: real; Incio Leia (C);

    F 32 + 1.8 * C; Escreva (F); Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program CalcCF; Uses WinCrt; Var C, F : real; Begin Write (Digite Graus Celsius: ); Readln (C); F := 32 + 1.8 * C; writeln (Fahrenheit = , F); End.

    Nada Nada Nada Nada Nada

    Digite graus Celsius:

    Nada Fahrenheit =

    Nada

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 40/115

    ALG22 Clculo do novo salrio de um funcionrio segundo um percentual de aumento Anlise do problema Descrio narrativa

    1 O que tenho? Salrio atual (S) e percentual de aumento (p) 2 O que quero? Novo salrio (NS) 3 Como ? Fornece os valores do salrio atual (s) e do percentual de aumento (p); NS S + S * p/100; Mostra o resultado (NS).

    1 - Fornece valores de salrio atual (S) e o percentual de aumento (p);

    2 - NS S + S* p/100; 3 - Mostra o resultado (NS).

    Pseudocdigo Fluxograma Algoritmo ReajustaSal; Var S, NS, p: real; Incio Leia (S, p); NS S + S * p/100; Escreva (NS); Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program ReajustaSal; Uses WinCrt; Var S, NS, p: real; Begin Writeln (Salrio atual:); Readln (S); Writeln (Reajuste em %); Readln (p); NS := S + S* p/100; writeln (Novo salrio = , NS); End.

    Nada Nada Nada Nada Nada

    Salrio atual:

    Reajuste em %:

    Nada Novo salrio =

    Nada

    ALG23 Clculo da rea do crculo Anlise do problema Descrio narrativa

    1 O que tenho? 1 - Fornecer valor do raio (R);

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 41/115

    Raio do crculo (R) e valor do Pi 2 O que quero? rea do crculo (A) 3 Como ? Fornecer o valor do raio Encontrar o valor do Pi (3,1415); A R * R * 3.1415; Mostra o resultado (A).

    2 - Encontrar o valor do pi (3.1415) 3 - A R * R * 3.1415 4 - Mostrar o resultado (A).

    Pseudocdigo Fluxograma

    Algoritmo CalcAreaC; Var A, R: real; Incio Leia (R); A R * R * 3.1415; Escreva (A); Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program CalcAreaC; Uses WinCrt; Var A, R: real; Begin Writeln (Raio do crculo:); Readln (R); A := R * R * 3.1415; writeln (rea do crculo = , A:5:2); End.

    Nada Nada Nada Nada Nada

    Raio do crculo

    Nada rea do crculo =

    Nada

    Quando fizer o fluxograma coloque alguns comentrios do lado. Isto ajuda a lembrar o

    que cada passo realiza. Veja os exemplos a seguir.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 42/115

    ALG18 Soma de dois nmeros ALG20 Converso de um valor em Horas e Minutos para apenas minutos

    2.3.1.3. Exerccios propostos

    1. Elabore um programa que leia um comprimento em polegadas, calcule e exiba o

    comprimento em milmetros, considerando que 1 polegada equivale a 25,4 milmetros.

    2. Elabore um programa que leia a massa de uma amostra de carbono, calcule e exiba o nmero

    de moles de carbono na amostra. Considere que o mol C igual a 12 e a frmula n de

    moles = massa da amostra / 12

    3. Elabore um programa que leia a fora F aplicada sobre um corpo e a velocidade V do corpo,

    calcule e exiba a potncia P. Considere P = F . V.

    4. Numa loja existe um total mensal de vendas. Fazer a leitura do nome da loja e do total de

    vendas mensal em um ano. Mostre o nome da loja e os totais de vendas por trimestre.

    5. Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir.

    Exiba o nome do cliente e o total da compra.

    ITEM PREO Hot dog R$ 1,20 Hamburguer R$ 1,60 Cheeseburguer R$ 2,00 Refrigerante em lata R$ 1,20 Batatas fritas R$ 2,5

    6. Ler a cotao do dlar no dia e a quantidade de dlares para trocar por real. Exiba a

    quantidade em reais.

    { Incio do algoritmo}

    {L Horas e Minutos}

    {Converte horas em

    minutos e soma os minutos}

    {Mostra minutos}

    {Fim do algoritmo}

    { Incio do algoritmo}

    {L valores A e B}

    {Calcula a soma de A e B}

    {Mostra valor calculado}

    {Fim do algoritmo}

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 43/115

    7. Calcular o lucro obtido de um investimento, aps um perodo de um ano, para uma taxa

    anual. Todos os valores usados para o clculo devero ser escritos pelo programa.

    8. A acelerao de um corpo em movimento a mudana da velocidade do corpo em relao a

    um intervalo de tempo. {a = (v2 v1)/t}. Escrever um algoritmo que calcule a acelerao de

    um corpo em movimento conhecendo-se as velocidades inicial e final, e o intervalo de tempo

    medido.

    9. Fazer o algoritmo que obtenha as duas notas de um aluno, que calcule e apresente a sua

    mdia final (mdia aritmtica).

    10. Calcular e apresentar o valor do volume de uma lata de leo. v = pi*r2*h

    11. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano,

    P(x1,y1) e P(x2,y2), escreva a distncia entre eles. A frmula que efetua tal clculo :

    ( ) ( )( )22 1212 yyxxd += 12. Escreva um algoritmo que leia trs nmeros inteiros e positivos (A, B, C) e calcule a

    seguinte expresso: 2

    SRD

    += onde ( )2BAR += e ( )2CBS += .

    13. Faa um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a

    expressa apenas em dias.

    14. Faa um algoritmo que leia as 3 notas de um aluno e calcule a mdia final deste aluno.

    Considerar que a mdia ponderada e que o peso das notas : 2, 3 e 5, respectivamente.

    15. Faa um algoritmo que leia o tempo de durao de um evento em uma fbrica expressa em

    segundos e mostre-o expresso em horas, minutos e segundos.

    16. Escrever um algoritmo que l: a percentagem do IPI a ser acrescido no valor das peas, o

    cdigo da pea 1, valor unitrio da pea 1, quantidade de peas 1, o cdigo da pea 2, valor

    unitrio da pea 2, quantidade de peas 2. O algoritmo deve calcular o valor total a ser pago

    e apresentar o resultado. Frmula: valor_total = (valor1*quant1 + valor2*quant2)*(IPI/100 +

    1)

    17. Elabore um programa que leia um valor de temperatura em graus celsius, calcule e exiba a

    temperatura equivalente em graus kelvin, sabendo que: K = C + 273.

    18. Elabore um Algoritmo para converter um valor em minutos num formato com dias, horas e

    minutos.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 44/115

    19. Elabore um Algoritmo que dados dois lados de um tringulo rectngulo calcule a respectiva

    hipotenusa

    20. Elabore um Algoritmo que dados os litros gastos e os km percorridos por um automvel,

    calcule os gastos de combustvel em R$/km e em l/100km (1l custa R$ 1.98).

    21. Suponha que um quadrado cujo lado (L) mede 5 cm esteja inscrito em um crculo e um

    crculo menor esteja inscrito no quadrado como ilustra a figura abaixo. Os crculos e o

    quadrado possuem centro comum. Desenvolver um algoritmo para encontrar a rea

    hachurada. AC = raio2 * 3.14, AQ = L2

    22. Escrever um algoritmo que converta segundos em minutos e segundos. Por exemplo, 252

    segundos equivalem a 4 minutos e 12 segundos.

    23. Escrever um algoritmo que calcule a taxa de consumo de um automvel durante um perodo,

    conhecendo-se os valores de quilmetros percorridos e a quantidade de gasolina consumida.

    24. A acelerao de um corpo em movimento a mudana da velocidade do corpo em relao a

    um intervalo de tempo. (a = (v2 v1)/t. Escrever um algoritmo que calcule a acelerao de

    um corpo em movimento conhecendo-se as velocidades inicial e final, e o intervalo de tempo

    medido.

    25. Calcular o lucro obtido de um investimento de R$ 42.5000,00, aps um perodo de um ano,

    para uma taxa anual de remunerao de 17.55%. Todos os valores usados para o clculo

    devero ser escritos pelo programa.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 45/115

    26. O que o algoritmo abaixo faz? Faa o fluxograma correspondente.

    Pseudocdigo Fluxograma Algoritmo areas; Var {declarao dos tipos de identificadores} lr1, lr2, lt1, lt2, lt3, ht, rc: reais; ar, pr, at, pt, ac, pc: reais; nicio {Entrada de dados} escreva (Insira valor do 1 lado do retngulo ); leia (lr1); escreva (Insira valor do 2 lado do retngulo ); leia (lr2); escreva (Insira valor do 1 lado do tringulo ); leia (lt1); escreva (Insira valor do 2 lado do tringulo ); leia (lt2); escreva (Insira valor do 3 lado do tringulo ); leia (lt3); escreva (Insira valor da altura do tringulo ); leia (ht); escreva (Insira valor do raio do crculo ); leia (rc); limpar a tela; {calculo da rea e do permetro do retngulo} ar lr1 * lr2; pr 2 * (lr1 + lr2); {calculo da rea e do permetro do triangulo} at lt2 * ht / 2; pt lt1 + lt2 + lt3; { calculo da area e do permetro do crculo} ac pi * rc * rc; pt 2 * pi * rc; {sada de dados} escreva ( A rea do retngulo , ar:5:2); escreva ( O permetro do retngulo , pr:5:2); escreva ( A rea do tringulo , at:5:2); escreva ( O permetro do tringulo , pt:5:2); escreva ( A rea do crculo , ac:5:2); escreva ( O permetro do crculo , pc:5:2); {encerramento do programa} escreva; escreva (Digite qualquer tecla) leia especial; fechar a tela do windows;

    fim.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 46/115

    27. Analise o algoritmo, responde as questes ao lado.

    Pseudocdigo Anlise do problema Programa lanchonete; Var Iqtd1, qtd2, qtd3, qtd4, qtd5: inteiro; Valortotal: real; Nome : literal [20]; Incio { Entrada de Dados} Escreva ( Digite nome do cliente:); Leia (Nome); Escreva ( Digite quantidade de Hot Dogs: ); Leia (qtd1); Escreva (Digite quantidade de Hamburguers: ); Leia (qtd2); Escreva (Digite quantidade de Cheeseburguer:); Leia (qtd3); Escreva (Digite a quantidade de Refrigerante em Latas: ); Leia (qtd4); Escreva (Digite a quantidade de Batata Fritas: ); Leia (qtd5); {Clculos} valortotal qtd1*1.2+qtd2*1,6+qtd3*2+qtd4*1.2+qtd5*2.5; { sada de dados} Escreva (Nome, gastou ...........R$ ,valortotal); Fim.

    1) o que tenho?

    2) o que quero?

    3) Como obtenho o que quero?

    28. Crie algoritmos para solucionar os problemas abaixo nas trs formas de representao

    conhecidas (Descrio Narrativa, Fluxograma e Pseudocdigo):

    a) Imprimir o seu nome. b) Ler e imprimir o seu nome. c) Ler seu nome e idade e imprimi-los. d) Imprimir o produto de 12 e 43. e) Imprimir a mdia aritmtica entre 8, 9 e 7. f) Ler trs valores numricos do tipo inteiro e imprimir a mdia aritmtica entre eles. g) Ler um nmero inteiro e imprimir seu sucessor e seu antecessor. h) Ler o lado de um quadrado e calcular a rea deste quadrado e mostrar o resultado.

    29. Diga qual o valor armazenado em cada varivel (TESTE DE MESA) aps a execuo de

    cada um dos comandos do algoritmo abaixo.

    Algoritmo ALGXX; Var N, A, R, B, C : Inteiro; V, X : real: Incio

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 47/115

    A 10; R 3; V 14.0; B 150; C V MOD 2; X B * R; X R / A; X X 2 * A; B B + 3; N 30 + X; B B DIV N; V N V + X * R; Fim.

    30. O algoritmo abaixo realiza o clculo do determinante. Identifique Entrada, Sada e

    Processamento.

    Pseudocdigo Anlise do problema Algoritmo CalcDet; Var a, b, c, D: Inteiro; Incio Leia (a, b,c); D b*b 4*a*c; Escreva (D); Fim.

    Entrada (O que tenho?): Sada (O que quero?): Processamento (Como?):

    31) Dado o algoritmo abaixo (em pseudocdigo) que separa dia, ms e ano de uma data digitada

    no formato ddmmaa e mostra estes valores.

    Pseudocdigo Fluxograma Programa A1; Var data, dia, mes, ano: Inteiro; Inicio Escreva(Digite uma data no formato ddmmaa:); Leia (data); dia data div 1000; mes data mod 100000 div 100; ano data mod 100; escreva (dias: , dia, escreva (mes: , mes); escreva (ano: , ano); Fim.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 48/115

    32) Dado o Fluxograma abaixo, indique o pseudocdigo correto Pseudocdigo Fluxograma ( ) Algoritmo A2_v1; Var a, b: Real; Inicio Escreva (Digite um nmero :); Leia (a); a a mod 100 div 10; Escreva (b); Fim. ( ) Algoritmo A2_v2; Var a, b: Inteiro; Inicio Escreva (Digite um nmero :); Leia (a); b a mod 100 div 10; Fim. ( ) Algoritmo A2_v3; Var A, B: Inteiro; Inicio Escreva (Digite um nmero :); Leia (A); B A mod 100 div 10; Escreva (B); Fim.

    33) Dado o fluxograma do exerccio 2, qual seria o valor de sada se fosse digitado o valor 3200?

    a) 2,2 b) 3,2 c) 32 d) 2,0 e) 22 34) Dado o fluxograma abaixo, faa apenas a declarao das variveis em pseudocdigo.

    Pseudocdigo (declarao variveis) Fluxograma

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 49/115

    35) Dado o enunciado abaixo, faa a anlise do problema proposto.

    Problema (enunciado) Anlise do problema Calcular a taxa de consumo de um automvel durante um perodo, conhecendo-se os valores de quilmetros percorridos e a quantidade de gasolina consumida.

    O que tenho (entrada)? O que quero (Sada)? Como (processamento)?

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 50/115

    2.3.2. Estrutura Condicional

    Tambm conhecida como estrutura de tomada de deciso ou seleo, esta estrutura

    permite a escolha do grupo de aes a ser executadas quando determinada condio

    (expressolgica) ou no satisfeita.

    2.3.2.1. Sintaxe

    Como pode ser observado nas sintaxes mostradas a seguir, tem-se a estrutura condicional

    simples, composta e aninhada.

    Estrutura condicional simples Pseudocdigo Fluxograma

    Se (Condio) Ento Comando_1; Comando_2; . . . Comando_n;

    Fim_se;

    Em Pascal

    If (Condio) Then begin Comando_1; Comando_2; . . . Comando_n; end;

    Se fosse um comando s:

    If (Condio) Then begin Comando_1; end;

    ---- Ou ------ If (Condio) Then Comando_1;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 51/115

    Estrutura condicional composta Pseudocdigo Fluxograma

    Se (Condio) Ento Comando_A1; Comando_A2; . . . Comando_An Seno Comando_B1; Comando_B2; . . . Comando_Bn; Fim_se;

    Em Pascal

    If (Condio) Then Begin Comando_A1; Comando_A2; . . . Comando_An; End Else Begin Comando_B1; Comando_B2; . . . Comando_Bn; End;

    Se fosse um comando s:

    If (Condio) Then Begin Comando_A1; End Else Begin Comando_B1; End; ---- Ou ------ If (Condio) Then Comando_A1 Else Comando_B1;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 52/115

    Estrutura condicional aninhada (ou encadeada) Pseudocdigo Fluxograma

    Se (Condio_1) Ento

    Comando_A1; Comando_A2; . . . Comando_An

    Seno Se (Condio_2) Ento Comando_B1; Comando_B2; . . . Comando_Bn; Seno Comando_C1; Comando_C2; . . . Comando_Cn;

    Fim_se; Fim_se;

    Em Pascal

    If (Condio_1) Then Begin

    Comando_A1; Comando_A2; . . . Comando_An;

    End Else If (Condio_2) Then Begin

    Comando_B1; Comando_B2; . . . Comando_Bn;

    End Else Begin

    Comando_C1; Comando_C2; . . . Comando_Cn;

    End;

    Se fosse um nico comando, ficaria:

    If (Condio_1) Then Begin

    Comando_A1; End Else If (Condio_2) Then Begin

    Comando_B1; End Else Begin

    Comando_C1; End;

    ---- Ou ------ If (Condio_1) Then Comando_A1; Else If (Condio_2) Then Comando_B1; Else Comando_C1;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 53/115

    H tambm uma variao do condicional SE, que utilizada quando uma situao de

    igualdade testada para uma mesma varivel.

    Caso/escolha Pseudocdigo Fluxograma

    Escolha (Varivel)

    Caso (valor_1) : Comando_1;

    Caso (valor_2) : Comando_2;

    Caso (valor_3) : Comando_3;

    Fim_escolha;

    Ou desta outra forma:

    Caso

    : ;

    : ;

    : ;

    Fim_caso;

    Em Pascal

    Case of

    : ;

    : ;

    : ;

    End;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 54/115

    Caso/escolha Pseudocdigo Fluxograma

    Escolha (Varivel) Caso (valor_1) : Comando1; Caso (valor_2) : Comando2; Seno Comando3; Fim_escolha; Ou desta outra forma: Caso : ; : ; Seno ; Fim_caso;

    Em Pascal

    Case of

    : ;

    : ;

    Else

    : ;

    End;

    2.3.2.2. Exemplos

    A seguir so apresentados alguns exemplos, onde foram utilizadas as estruturas:

    condicional simples, condicional composto, condicional encadeado e estrutura Escolha. No

    primeiro (ALG24) tem-se o algoritmo do clculo da mdia aritmtica (M), onde so

    consideradas apenas duas notas (P1 e P2) e mostrada a mdia e uma mensagem de aprovao

    caso M >= 5. Neste caso foi utilizada uma estrutura condicional simples.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 55/115

    ALG24 Clculo da mdia aritmtica de duas notas, mostrando mdia e mensagem Aprovado, caso a

    mdia seja >= 5. Anlise do problema Descrio narrativa

    1 O que tenho? Notas (P1 e P2) 2 O que quero? Mdia (M) e situao Aprovado 3 Como ? Fornece o valor das notas (P1 e P2) Calcula a mdia (M (P1 + P2)/2; Mostra resultado (M); Verifica se aluno foi aprovado (M >= 5) Mostra somente mensagem Aprovado.

    1 - Fornece valor das notas (P1 e P2); 2 - Calcula a mdia aritmtica (M) 3 - Verifica se M >= 5 4 - Se sim, mostra mdia (M) e mensagem Aprovado.

    Pseudocdigo Fluxograma Algoritmo CalcMedia1; Var P1, P2, M: real; Incio Leia (P1, P2); M (P1 + P2)/2; Escreva (M); Se M >= 5 Ento Escreva (Aprovado); Fim_se; Fim

    Codificao em PASCAL Aparece no monitor (programa executado)

    Program CalcMedia1; Uses WinCrt; Var P1, P2, M: real; Begin Writeln (Digite P1:); Readln (P1); Writeln (Digite P2:); Readln (P2); M := (P1 + P2)/2; Writeln (M): If M >= 5 then writeln (Aprovado); End.

    Nada Nada Nada Nada Nada

    Digite P1:

    Digite P2:

    Nada

    Nada Aprovado Nada

    No segundo exemplo (ALG25), utilizada uma estrutura condicional composta ao

    realizar um refinamento no algoritmo acima acrescentando tambm a mensagem de reprovado.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 56/115

    ALG25 Clculo da mdia aritmtica de duas notas, mostrando a mdia e mensagem Aprovado ou Reprovado (M >= 5; aprovao) .

    Anlise do problema Descrio narrativa 1 O que tenho? Notas (P1 e P2) 2 O que quero? Mdia (M) e Aprovado ou Reprovado 3 Como ? Fornece o valor das notas (P1 e P2) Calcula a mdia (M (P1 + P2)/2; Mostra o resultado (M); Verifica se aluno foi aprovado (M >= 5); Mostra mensagem Aprovadoou Reprovado

    1 - Fornecer valor das notas (P1 e P2); 2 - Calcular a mdia aritmtica (M) 3 - Mostra o resultado (M) 4 - Verificar se M >= 5 5 - Se sim, mostra mensagem Aprovado. 6 - Seno mostra mensagem Reprovado.

    Algoritmo CalcMedia1; Var P1, P2, M: real; Incio Leia (P1, P2); M (P1 + P2)/2; Escreva (M); Se M >= 5 Ento Escreva (Aprovado) Seno Escreva (Reprovado); Fim_se; Fim

    Codificao em PASCAL Aparece no monitor (programa executado)

    Program CalMedia1; Uses WinCrt; Var P1, P2, M: real; Begin Writeln (Digite P1:); Readln (P1); Writeln (Digite P2:); Readln (P2); M := (P1 + P2)/2; Writeln (M): If M >= 5 then writeln (Aprovado) Else writeln (Reprovado); End.

    Nada Nada Nada Nada Nada

    Digite P1:

    Digite P2:

    Nada

    Nada Aprovado Nada

    Reprovado Nada

    Em seguida, considerado tambm que o aluno pode ter ficado para exame (ALG26).

    Neste ltimo caso foi utilizada a estrutura condicional encadeada.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 57/115

    ALG26 Clculo da mdia aritmtica de duas notas, mostrando a mdia e mensagem Aprovado, Reprovado ou Exame (M >= 5 Aprovao; M >=3 Exame) .

    Pseudocdigo Fluxograma

    Algoritmo CalcMedia3; Var P1, P2, M: real; Incio Leia (P1, P2); M (P1 + P2)/2; Escreva (M); Se M >= 5 Ento Escreva ( Aprovado) Seno Se M >= 3 Ento Escreva (Exame) Seno Escreva (Reprovado); Fim_se; Fim_se; Fim

    Codificao em PASCAL Aparece no monitor quando o programa executado

    Program CalcMedia3; Uses WinCrt; Var P1, P2, M: real; Begin Writeln (Digite P1:); Readln (P1); Writeln (Digite P2:); Readln (P2); M := (P1 + P2)/2; Writeln (M); If M >= 5 then Writeln ( Aprovado) Else If M >= 3 then Writeln (Exame) Else Writeln (Reprovado); End.

    Nada Nada Nada Nada Nada

    Digite P1:

    Digite P2:

    Nada

    Nada Aprovado Nada Nada Exame Nada

    Reprovado Nada

    Dois outros exemplos de utilizao de estrutura condicional simples (ALG27) e

    encadeada (ALG28) podem ser vistos em seguida. Eles apresentam um algoritmo que l um

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 58/115

    nmero inteiro entre 1 e 7 e mostra no monitor do computador o dia da semana correspondente.

    Caso o usurio digite um nmero fora desse intervalo, o algoritmo mostra uma mensagem

    informando Nmero invlido.

    ALG27 Algoritmo elaborado com estrutura condicional simples e composta que l um nmero e imprime o dia da semana correspondente.

    Pseudocdigo Fluxograma

    programa DiaSemana_se; Var mes:inteiro; inicio

    Escreva ('Digite um numero de 1 a 7:'); Leia (Dia); Se Dia = 1 ento escreva ('Domingo'); Fim_se; Se Dia = 2 ento Escreva ('Segunda'); Fim_se; Se Dia = 3 ento Escreva ('Tera'); Fim_Se; Se Dia = 4 ento Escreva ('Quarta'); Fim_se; Se Dia = 5 ento Escreva ('Quinta'); Fim_se; Se Dia = 6 ento Escreva ('Sexta'); Fim_Se; Se Dia = 7 ento Escreva ('Sbado'); Seno Escreva ('Nmero invlido'); Fim_se;

    Fim.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 59/115

    ALG28 Algoritmo elaborado com estrutura condicional encadeada que l um nmero e imprime o dia da semana correspondente.

    Pseudocdigo programa DiaSemana_se; Var mes:inteiro; inicio Escreva ('Digite um numero de 1 a 7:'); Leia (Dia); se Dia = 1 ento escreva ('Domingo') seno se Dia = 2 ento Escreva ('Segunda') seno se Dia = 3 ento Escreva ('Tera') seno se Dia = 4 ento Escreva ('Quarta') seno se Dia = 5 ento Escreva ('Quinta') seno se Dia = 6 ento Escreva ('Sexta') seno se Dia = 7 ento Escreva ('Sbado') seno Escreva ('Numero invlido'); fim_se; fim_se; fim_se; fim_se; fim_se; fim_se; fim_se; fim.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 60/115

    ALG28 Algoritmo elaborado com estrutura condicional encadeada que l um nmero e imprime o dia da semana correspondente.

    Fluxograma

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 61/115

    O exemplo a seguir mostra o algorimo acima elaborado utilizando a estrutura

    Escolha/caso (ALG29) ao invs da estrutura condicional encadeada.

    ALG29 Algoritmo elaborado com estrutura ESCOLHA/CASO que l um nmero e imprime o dia da semana correspondente

    Pseudocdigo Fluxograma

    programa DiaSemana_se; Var Dia : inteiro; inicio Escreva ('Digite um numero de 1 a 7:'); Leia (Dia); Escolha (Dia) Caso (1) : Escreva ('Domingo'); Caso (2) : Escreva ('Segunda') Caso (3) : Escreva ('Tera') Caso (4) : Escreva ('Quarta') Caso (5) : Escreva ('Quinta') Caso (6) : Escreva ('Sexta') Caso (7) : Escreva ('Sbado' Seno Escreva ('Nmero invlido'); Fim_escolha; fim.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 62/115

    O exemplo seguinte apresenta apenas um trecho de algoritmo (elaborado com a estrutura

    ESCOLHA/CASO), que mostra no monitor a mensagem Um, Dois ou Trs caso o valor

    digitado na varivel A seja 1, 2 ou 3 respectivamente (ALG30).

    ALG30 Trecho de algoritmo elaborado com estrutura ESCOLHA/CASO que imprime a mensagem Um, Dois e Trscaso seja digitado 1, 2 ou 3 respectivamente.

    Pseudocdigo Fluxograma

    Escolha (A)

    Caso (1): Escreva (Um);

    Caso (2): Escreva (Dois);

    Caso (3): Escreva (Trs);

    Fim_escolha;

    Escolha (A)

    Caso (1): Escreva (Um);

    Caso (2): Escreva (Dois);

    Seno

    Escreva (Trs);

    Fim_escolha;

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 63/115

    2.3.2.3. Exerccios propostos

    1.Indique a sada dos trechos de algoritmo (fluxograma) a seguir. Considere os seguintes valores:

    A = 2, B = 3, C = 5, D = 9. Preste ateno na prioridade dos operadores.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 64/115

    2. Faa um algoritmo que leia dois nmeros e apresente-os em ordem crescente. Use estrutura

    de desvio condicional simples.

    3. Elabore um algoritmo que leia um nmero e diga se ele divisvel por 2 e por 3. Use

    estrutura de desvio condicional simples.

    4. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero

    par ou mpar e se positivo ou negativo.

    5. Elabore um algoritmo que leia um nmero e diga se ele divisvel por 5 ou por 7.

    6. Elaborar um algoritmo que l 3 valores (A, B e C), encontra o valor maior e o escreve

    juntamente com a mensagem: " o maior ".

    7. Elaborar um algoritmo que l 2 valores A e B, verifica e escreve uma mensagem informando

    se so mltiplos ou no so mltiplos.

    8. Escreva um algoritmo que leia 3 nmeros inteiros e mostre o menor deles.

    9. Calcule a mdia aritmtica das 3 notas de um aluno e mostre, alm do valor da mdia, uma

    mensagem de "Aprovado", caso a mdia seja igual ou superior a 6, ou a mensagem

    "Reprovado", caso contrrio.

    10. Elabore um algoritmo que dada a idade de um nadador, classifica-o em uma das seguintes

    categorias:

    CATEGORIA FAIXA ETRIA infantil A 5 - 7 anos infantil B 8 - 10 anos juvenil A 11-13 anos juvenil B 14-17 anos Adulto maiores de 18 anos

    11. Escreva um algoritmo que leia o cdigo de um aluno e suas trs notas. Calcule a mdia

    ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas

    restantes, 3. Mostre o cdigo do aluno, suas trs notas, a mdia calculada e uma mensagem

    "APROVADO" se a mdia for maior ou igual a 5 e "REPROVADO" se a mdia for menor

    que 5.

    12. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no

    ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 65/115

    crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o

    valor do crdito.

    SALDO MDIO PERCENTUAL de 0 a 200 nenhum crdito de 201 a 400 20% do valor do saldo mdio de 401 a 600 30% do valor do saldo mdio acima de 601 40% do valor do saldo mdio

    13. Escrever um algoritmo para automatizar o caixa da Lanchonete Bom Apetite. Este algoritmo

    deve ler o cdigo do item pedido, a quantidade e calcular o valor a ser pago por aquele

    lanche. O cardpio da lanchonete o seguinte:

    CDIGO ESPECIFICAO PREO UNITRIO

    (R$) 100 Cachorro quente 1,10 101 Bauru simples 1.30 102 Bauru c/ovo 1,50 103 Hamburger 1.10 104 Cheeseburger 1.30 105 Refrigerante 1.00

    14. Escreva um algoritmo que leia o cdigo de um aluno e suas trs notas. Calcule a mdia

    ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas

    restantes, 3. Mostre o cdigo do aluno, suas trs notas, a mdia calculada e uma mensagem

    "APROVADO" se a mdia for maior ou igual a 5 e "REPROVADO" se a mdia for menor

    que 5.

    15. Um usurio deseja um algoritmo onde possa escolher que tipo de mdia deseja calcular a

    partir de 3 notas. Faa um algoritmo que leia as notas, a opo de mdia escolhida pelo

    usurio, calcule e mostre a mdia.

    OPO TIPO DE M DIA 1 aritmtica 2 ponderada (3,3,4 3 harmnica

    16. Joo Papo-de-Pescador, homem de bem, comprou um microcomputador para controlar o

    rendimento dirio de seu trabalho. Toda vez que ele traz um peso de peixes maior que o

    estabelecido pelo regulamento de pesca do estado de So Paulo (50 quilos) deve pagar um

    multa de R$ 4,00 por quilo excedente. Joo precisa que voc faa um diagrama de blocos

    que leia a varivel P (peso de peixes) e verifique se h excesso. Se houver, gravar na varivel

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 66/115

    E (Excesso) e na varivel M o valor da multa que Joo dever pagar. Caso contrrio mostrar

    tais variveis com o contedo ZERO.

    17. Elabore um diagrama de bloco que leia as variveis C e N, respectivamente cdigo e nmero

    de horas trabalhadas de um operrio. E calcule o salrio sabendo-se que ele ganha R$ 10,00

    por hora. Quando o nmero de horas exceder a 50 calcule o excesso de pagamento

    armazenando-o na varivel E, caso contrrio zerar tal varivel. A hora excedente de trabalho

    vale R$ 20,00. No final do processamento imprimir o salrio total e o salrio excedente.

    18. Desenvolva um diagrama que: leia 4 (quatro) nmeros; calcule o quadrado de cada um; se o

    valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize; caso contrrio,

    imprima os valores lidos e seus respectivos quadrados.

    19. A Secretaria de Meio Ambiente que controla o ndice de poluio mantm 3 grupos de

    indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel

    varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1 grupo so intimadas a

    suspenderem suas atividades, se o ndice crescer para 0,4 as industrias do 1 e 2 grupo so

    intimadas a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser

    notificados a paralisarem suas atividades. Faa um diagrama de bloco que leia o ndice de

    poluio medido e emita a notificao adequada aos diferentes grupos de empresas.

    20. Construa um algoritmo que leia 3 valores inteiros e positivos, encontre o maior valor,

    encontre o menor valor, calcule a mdia dos nmeros lidos e mostre os resultados.

    21. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que

    calcule seu peso ideal, utilizando as seguintes frmulas: Para homens: (72.7*h) 58; Para

    mulheres: (62.1*h) - 44.7 (h = altura).

    22. Escreva um algoritmo que determine o grau de obesidade de uma pessoa, sendo fornecido o

    peso e a altura da pessoa. O grau de obesidade determinado pelo ndice da massa corprea

    (Massa = Peso / Altura2 ) atravs da tabela abaixo:

    MASSA CORPREA GRAU DE OBESIDADE < 26 Normal

    26 e < 30 Obeso 30 Obeso Mrbido

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 67/115

    23. Faa um algoritmo que, dado as trs notas de um aluno, determine e exiba a sua mdia final e

    o seu conceito, sabendo-se que: a mdia final calculada pela mdia aritmtica das 3 notas; o

    conceito determinado de com base na tabela abaixo:

    MDIA FINAL

    CONCEITO

    8,0 A 5,0 e < 8,0 B

    < 5,0 C

    24. O Botafogo Futebol Clube deseja aumentar o salrio de seus jogadores. O reajuste deve

    obedecer a seguinte tabela:

    SALRIO ATUAL (R$) AUMENTO 0,00 a 1.000,00 20%

    1.000,01 a 5.000,00 10% acima de 5.000,00 0%

    Escrever um algoritmo que leia o nome e o salrio atual de um jogador, e exiba o

    nome, o salrio atual e o salrio reajustado.

    25. Faa um algoritmo para calcular a conta final de um hspede de um hotel fictcio, contendo:

    o nome do hspede, o tipo do apartamento, o nmero de dirias utilizadas, o valor unitrio da

    diria, o valor total das dirias, o valor do consumo interno, o subtotal, o valor da taxa de

    servio e o total geral. Considere que:

    a) Devem ser lidos o nome do hspede, o tipo do apartamento utilizado (A, B, C ou D), o

    nmero de dirias utilizadas pelo hspede e o valor do consumo interno do hspede;

    b) O valor da diria determinado pela seguinte tabela:

    TIPO DO APTO.

    VALOR DA DIRIA (R$)

    A 150,00

    B 100,00

    C 75,00

    D 50,00

    c) O valor total das dirias calculado pela multiplicao do nmero de dirias utilizadas pelo

    valor da diria;

    d) O subtotal calculado pela soma do valor total das dirias e o valor do consumo interno;

    e) O valor da taxa de servio equivale a 10% do subtotal;

    f) A total geral resulta da soma do subtotal com a taxa de servio.

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 68/115

    2.3.3. Estrutura Repetio

    Tambm conhecida como LOOPING, esta estrutura permite repetir um grupo de aes

    at que uma dada condio seja satisfeita.

    2.3.3.1. Sintaxe

    Como pode ser observado nas sintaxes mostradas a seguir, tem-se a estrutura de repetio

    com teste no incio (ENQUANTO), com teste no final (REPITA) e laos contados (PARA).

    Com teste no incio

    Na estrutura de repetio ENQUANTO uma seqncia de comandos executada quando

    o teste lgico resulta em verdadeiro e quando o teste lgico resulta em falso a seqncia de

    comandos encerrada.

    Essa estrutura usada quando no se sabe o nmero de vezes que deseja repetir um

    determinado trecho de um programa. Embora ela tambm possa ser usada quando este nmero

    conhecido. Veja a sintaxe:

    Pseudocdigo Fluxograma Em Pascal

    Enquanto faa

    Comando_1;

    Comando_2;

    Comando_n;

    Fim_enquanto;

    While do

    Begin

    Comando_1;

    Comando_2;

    Comando_n;

    End;

    Com varivel de controle

    A estrutura de repetio PARA (com varivel de controle) usada quando o nmero de vezes

    que deseja repetir um trecho do programa for conhecido ou quando puder entrar com ele durante sua

    execuo. Veja a sintaxe

    Comando 1

    Comando 2

    Comando n

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 69/115

    Pseudocdigo Fluxograma

    para de at com incremento de faa

    Comando_1;

    Comando_2;

    Comando_n;

    Fim_para;

    Em Pascal

    FOR := TO DO

    Begin

    Comando_1;

    Comando_2;

    Comando_n;

    End;

    Com teste no fim (Repita At que)

    Na estrutura de repetio com teste no Fim a repetio do trecho do programa ser

    executado para a condio falsa, caso a condio passe a ser verdadeira, o repetio finalizada.

    Nesta estrutura, o trecho do programa executado pelo menos uma vez.

    ; ;

    Comando_1

    Comando 2

    Comando n

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 70/115

    Pseudocdigo Fluxograma

    repita

    Comando_1;

    Comando_2;

    Comando_n;

    At que ;

    Em Pascal

    REPEAT

    Comando_1;

    Comando_2;

    Comando_n;

    UNTIL ;

    2.3.3.2. Exemplos

    Veja alguns exemplos de algoritmos elaborados com e sem a estrutura de repetio. O

    primeiro exemplo (ALG31) mostra um algoritmo elaborado para ler nome e telefone.

    O segundo exemplo (ALG32) refere-se a um algoritmo que calcula a mdia global de 10

    alunos de uma determinada sala de aula. Veja como a resoluo com e sem a utilizao da

    estrutura de repetio.

    O terceiro exemplo (ALG33) traz o algoritmo que imprime os nmeros de 1 a 9 com

    incremento de 1. Neste exemplo foram empregadas as trs estruturas de repetio para

    comparao das similaridades e diferenas.

    Os dois primeiros exemplos (ALG31 e ALG32) demonstram a importncia da estrutura

    de repetio e o terceiro (ALG33) mostra as diferenas e semelhanas entre as estruturas de

    Comando_1

    Comando_2

    Comando_n

  • Algoritmos para Estruturas Simples

    ltima atualizao: 22/4/2008; 11:51:05 71/115

    repetio. Preste muita ateno nas diferenas. Por exemplo, na estrutura PARA no necessrio

    inicializar o contador (varivel N) fora do lao de repetio nem incrementar N dentro deste lao

    como ocorre com as estruturas ENQUANTO e REPITA. Na estrutura de repetio REPITA a

    condio o inverso do ENQUANTO. O REPITA s continua se a condio for falsa e o

    ENQUANTO s continua se a condio for verdadeira. Alm disso, no REPITA o bloco de

    comandos dentro do lao de repetio executado pelo menos uma vez antes de testar a

    condio.

    No segundo exemplo utilizada uma varivel para compor uma condio de parada para

    o looping, isto , para as repeties. Ela conhecida por FLAG.

  • Algoritmos para Estruturas Sim

    ples

    ltim

    a atualizao: 22/4/2008; 11:51:05

    72/115

    ALG31 Algoritmo que entra nome e telefone com

    e sem

    a utilizao de estrutura de repetio

    Estrutura Repetio

    Pseudocdigo

    Fluxograma

    PASCAL

    SEM

    Algoritmo endereco;

    Var

    Nom

    e, telefone :