Você está na página 1de 24

Introduo

A maioria das pessoas que querem aprender a programar comeam de maneira errada. Arrumam um compilador ou ambiente de programao e j vo metendo a mo na massa. Esta a maneira mais frustrante de aprender a programar. Logo, logo estas pessoas vo esbarrar em obstculos que s sero transpostos com a anlise cuidadosa do problema e com a construo de um algoritmo. A lgica de programao e a construo de algoritmos so conhecimentos fundamentais para programar. Construdo o algoritmo, voc pode, ento, codificar seu programa em qualquer linguagem.

"Conte-me e eu esqueo Mostre-me e eu lembro Deixe-me fazer e eu aprendo" Confcio

Isto verdade. E baseado nisto que voc deve assimilar as regras bsicas da construo de algoritmos e cair em campo para fazer os exerccios. No olhe as respostas antes. Queime os neurnios e tente at a cabea doer. No final confira com as respostas. Porm, lembro que muitas vezes um problema pode ser resolvido de vrias maneiras. A soluo mostrada aqui apenas uma delas. Caso voc j conhea alguma linguagem de programao, interessante codificar suas solues.

O que um algoritmo
Basicamente, um algoritmo um conjunto de passos a serem seguidos para a resoluo de um problema. Digamos que voc quer que o seu programa calcule a mdia aritmtica entre quatro notas. Para resolver este problema voc poderia dar as seguintes ordens ao computador: 1. 2. 3. Receba as quatro notas do usurio; Calcule a soma destas quatro notas; Divida o resultado desta soma por quatro.

Simples no ??? Porm existem algumas regras e convenes que facilitam a nossa vida e nos ajudam a resolver problemas mais complexos. Sentimos dificuldade em organizar nossos pensamentos e fazer o algoritmo. Para melhorar isso devemos treinar, fazer muitos algoritmos e com o passar do tempo ficaremos com o raciocnio bem flexvel. Aps feito o algoritmo voc pode codificar seu programa em qualquer linguagem, observando, lgico, as possibilidades e limitaes da linguagem. Existem vrias formas de representar um algoritmo. Aqui utilizarei uma representao em forma de texto. Creio que esta representao facilita na hora da codificao devido a semelhana entre ela e a sintaxe das diversas linguagens.

Tipos de dados
Basicamente existem quatro de tipos de dados. So eles: inteiro, real, caracter e lgico.

Inteiro representa todo e qualquer nmero que pertena ao conjunto dos nmeros inteiros. Na prtica
so os nmeros positivos e negativos sem partes decimais. Exemplos: 2; -4; 145; -354.

Real representa todo e qualquer nmero que pertena ao conjunto dos nmeros reais. Na prtica so os
nmeros positivos e negativos que tem parte decimal. Exemplos: 3,545; -2,6; 0,157.

Caracter qualquer dado composto por um conjunto de caracteres alfanumricos. Os caracteres


alfanumricos so os nmeros, as letras e os caracteres especiais (!,@,#,$,%, etc...). Exemplos: 3d; valor1; nome.

Lgico um tipo de dado que s pode assumir dois valores.

Constantes e variveis
Constante, como o nome indica, um dado que no sofre nenhuma variao durante todo o algoritmo.
As constantes do tipo caracter sempre devem ser colocadas entre aspas ( " ). Exemplo: "Isto uma constante caracter".

Convencionaremos que constantes do tipo lgico podero assumir um dos seguintes valores: verdadeiro (V), ou falso(F).

Varivel, como o nome indica, um dado que tem a possibilidade de variar, ou seja, ter seu valor
alterado durante a execuo do algoritmo. As variveis do tipo caracter sempre devem ser colocadas entre aspas ( " ). Exemplo: "Isto uma varivel caracter". Convencionaremos que variveis do tipo lgico podero assumir um dos seguintes valores: verdadeiro (V), ou falso(F).

Nomeando constantes e variveis


Para nomear constantes e variveis devemos obedecer as seguintes regras: 1. 2. 3. 4. Os nomes devem comear por um caractere alfabtico; Podem ser constitudos de caracteres alfabticos ou numricos; No devem conter caracteres especiais; No devem ser utilizados nomes reservados da linguagem de programao que se vai usar.

Exemplos: 1. Nomes vlidos: delta, X, BC4R, K7, notas, media, ABC, PI, ICMS. 2. Nomes invlidos: 5X, E(13), A:B, X-Y, Nota/2, AWq*, P&AA Como regra de estilo eu costumo no utilizar acentuao, usar apenas letras maisculas para nomear as constantes e apenas letras minsculas para nomear as variveis. Mas, como gosto no se discute, fique livre para adotar estas regras ou no.

Declarao de variveis
As variveis devem ser declaradas antes do seu uso no algoritmo. Declarar uma varivel definir seu tipo e seu nome. Para a declarao de variveis usaremos a seguinte sintaxe:

TIPO DE DADO: VARIVEL1, VARIVEL2, ....., VARIVELn;


Exemplos: inteiro: x; caracter: nome, endereco, data;

real: PI, preco; lgico: resposta, opcao; A declarao das variveis deve estar no incio do algoritmo. Duas variveis no devem ter o mesmo nome.

Operadores aritmticos
Operadores aritmticos so os sinais que representam as operaes bsicas da matemtica.

OPERADOR + * / % pot (x,y) raiz(x)

FUNO Adio Subtrao Multiplicao Diviso Resto da diviso Potenciao. Significa x elevado a y Raiz quadrada de x

EXEMPLO 2 + 3, nr1 + nr1 5 - 3, b - c 12 * 4, x * y 10 / 2, x / y3 9 % 4 resulta em 1 27 % 5 resulta em 2 pot(3,2) raiz(25)

Prioridade das operaes: 1. Parnteses mais internos 2. pot, raiz 3. *, /, % 4. +, Dentro da mesma prioridade as operaes so executadas da esquerda para a direita. Para alterar a prioridade utilize parnteses.

Operadores relacionais
Operadores relacionais so sinais utilizados para realizar comparaes entre dois valores de mesmo tipo.

Os valores comparados podem ser constantes, variveis ou expresses aritmticas.

OPERADOR = > < >= <= !=

FUNO igual a maior que menor que maior ou igual a menor ou igual a diferente de

EXEMPLO 5 = 5, x = y 8 > 4, x > y 1 < 5, x < y 11 >= 5, x >= y 2 <= 5, x <= y 34 != 5, a != b

O resultado obtido sempre ser um valor lgico. Por exemplo, analisando a operao a + b = c, o resultado ser verdadeiro se o valor da expresso aritmtica a + b for igual ao contedo da varivel c. Caso o resultado da expresso a + b seja diferente de c o resultado ser falso. Exemplos:

a) 2 * 4 = 24 /3 resultado V, pois 2 * 4 = 8 e 24 / 3 = 8;

b) (14 resto 4) < 1 resutaldo F, pois 14 resto 4 = 2 e 2 no menor que 1;

c) (2 +(8 resto 7)) >= 3 resultado V, pois 2 + (8 resto 7) = 2 + 1 = 3 e 3 maior ou igual a 3.

Operadores lgicos
Os operadores lgicos so sinais usados para montar operaes relacionais compostas. So eles: no, e e ou Exemplo: (notafinal >= 7,0) e (prestacao = V)

O resultado da operao acima ser V se a varivel "notafinal" for maior ou igual a 7,0 e a varivel lgica "prestacao" for igual a V. Prioridade de execuo entre os operadores lgicos

1. no 2. e, ou

Prioridade de execuo entre todos os operadores


1 parnteses mais internos 2operadores aritmticos 3 operadores relacionais 4 operadores lgicos

Comando de atribuio
Este comando atribui um valor a uma constante ou varivel. O valor deve ser compatvel com o tipo de dado da constante ou varivel, ou seja, para uma constante ou varivel inteira deve ser atribudo um valor inteiro; para uma constante ou varivel real deve ser atribudo um valor real; o mesmo ocorrendo com o tipo caracter e o lgico. Sintaxe: VARIVEL <== VALOR;

VALOR pode ser um valor propriamente dito ou uma expresso.


Exemplos: x <== 34; notafinal <== ((nota1+nota2+nota3)/3); LIGADO <== V; preco <== 25,15;

Comandos para entrada e sada de dados


Para a entrada de dados adotaremos o comando ler, cuja finalidade receber os dados que sero processados. Sua sintaxe :

ler (VARIVEL1, VARIVEL2, ..., VARIVELn);


Para a sada de dados utilizaremos o comando imprimir, cuja finalidade exibir os dados processados. Sua sintaxe :

imprimir (VARIVEL1, VARIVEL2, ..., VARIVELn);


Voc pode exibir texto juntamente com as variveis. Para isso coloque o texto entre aspas ( " ). Exemplo:

imprimir ("Seu nome :", nome);

Inserindo comentrios
A fim de dar ao seu algoritmo um entendimento melhor por parte de outros leitores, ou at para voc mesmo, voc deve sempre coment-lo. Para inserir um comentrio utilizaremos os comando /* (barra e asterisco) e */(asterisco e barra). O que vier escrito entre estes dois comandos deve ser interpretado como comentrio e no haver ao alguma por parte do programa. Exemplo: preco precobruto + IMPOSTO;

/* o IMPOSTO acima deve seguir a alquota do ICMS. */


imprimir ("O preo do produto ", preco); A linha do meio do trecho de algoritmo acima no d nenhuma ordem pois apenas um comentrio.

Blocos de instrues
Um bloco de instrues um conjunto de comandos com uma funo definida. O algoritmo formado de um ou mais blocos de instrues. O bloco de instrues tambm define os limites para o conhecimento de constantes e variveis. Uma constante ou varivel definida em um bloco s ser conhecida dentro deste. Para delimitar um bloco utilizamos os comandos incio e fim. Exemplo:

incio
inteiro: nota1, nota2; /* declarao das variveis * / imprimir ("Entre com a primeira nota :"); ler (nota1); imprimir ("Entre com a segunda nota :"); ler (nota2); imprimir ("A soma das duas notas ", (nota1+nota2));

fim

Estrutura bsica de um algoritmo


O algoritmo como um todo um bloco de instrues, ento deve ser delimitado pelos comandos incio e fim. As constantes e variveis devem ser declaradas no incio. Os comandos so executados sequencialmente de cima para baixo e da esquerda para a direita, assim, devem ser escritos nesta sequncia. Cada comando deve terminar com ; (ponto-e-vrgula). Abaixo segue um modelo da estrutura bsica de um algoritmo:

incio
/* declarao das constantes e variveis*/ inteiro: var1, var2; real: var3; caracter: nome; /* comandos */ comando 1; comando 2; comando 3; .......... .......... .......... comando n;

fim
Observe que os comandos delimitados por incio e fim esto avanados de dois espaos. Isto ser muito utilizado pois facilita o entendimento do algoritmo.

Primeiros algoritmos
Abaixo seguem trs algoritmos. Como voc est iniciando ( o que suponho) analise-os com cuidado para entender a coisa. Mdia aritmtica entre quatro notas

incio /* Declarao das variveis */ real: nota1, nota2, nota3, nota4, soma, media;

/* Comandos * / /* Entrada de dados */ imprimir ("Entre com a primeira nota :"); ler (nota1); imprimir ("Entre com a segunda nota :"); ler (nota2); imprimir ("Entre com a terceira nota :"); ler (nota3); imprimir ("Entre com a quarta nota :"); ler (nota4); /* Processamento */ soma <== (nota1 + nota2 + nota3 + nota4 ); media <== soma / 4 ; /* Sada de dados */ imprimir ("A mdia aritmtica ", media); fim Observe o uso dos comentrios para tornar o algoritmo mais legvel. Clculo da rea de um quadrado incio real: lado, area; imprimir ("Entre com a medida do lado do quadrado :"); ler (lado); area <== lado * lado; imprimir ("A rea do quadrado ", area); fim Clculo de juros incio real: preco, taxa, juros, total; imprimir ("Entre com o preo :"); ler (preco);

imprimir ("Qual a taxa de juros (%)?"); ler (taxa); juros <== preco * (taxa / 100); total <== preco + juros; imprimir ("O total a pagar ", total); fim

Desvio condicional
A estrutura de desvio condicional deve ser utilizada quando nos deparamos com a seguinte situao: 1. 2. 3. Sua sintaxe : Queremos que uma condio seja analisada; Caso esta condio seja verdadeira, um comando ser executado; Caso esta condio seja falsa, outro comando ser executado.

se CONDIO
COMANDO1;

seno
COMANDO2;

fimse;
Se CONDIO for verdadeira, COMANDO1 ser executado. Se CONDIO for falsa, COMANDO2 ser executado. Tanto COMANDO1 como COMANDO2 podem constituir um bloco de instrues. Quando isso acontecer voc deve delimitar o bloco com os comandos "incio" e "fim".

Voc pode aninhar mais de uma estrutura "se" e analisar mais de uma condio:

se CONDIO1
COMANDO1;

seno se CONDIO2
COMANDO2;

seno
COMANDO3;

fimse;

Cuidado quando usar isto para no deixar o algoritmo ruim de compreender. s vezes, escolhendo outro tipo de estrutura conseguimos o mesmo efeito com um algoritmo mais legvel.

Exemplo demonstrativo: algoritmo que recebe a idade do usurio e verifica se o mesmo tem mais de 21 anos: incio inteiro: idade;

imprimir ("Entre com sua idade :"); ler (idade);

se (idade >=21) imprimir ("Voc de maior !!!"); seno imprimir ("Voc de menor !!!"); fimse; fim

Mltipla escolha
Esta estrutura analisa o valor de uma varivel e, de acordo com este valor, executa determinado comando. Sua sintaxe :

escolha VARIVEL caso VALOR1: COMANDO1; caso VALOR2: COMANDO2; caso VALOR3: COMANDO3; .............................................. caso contrrio: COMANDO4; fimescolha;
Na sintaxe acima, caso o valor de VARIVEL seja igual a VALOR1, COMANDO1 ser executado. Caso seja igual a VALOR2, COMANDO2 ser executado, e assim por diante. Se VARIVEL no coincidir com nenhum valor, o COMANDO4 ser executado.

Como na estrutura de desvio condicional, os COMANDOS podem constituir blocos com mais de um comando. Quando isso acontecer, no esquea de delimitar o bloco. Exemplo demonstrativo: Este algoritmo exibe um menu de formas de pagamento, analisa qual foi a forma escolhida e exibe uma mensagem relativa ao desconto. incio inteiro: opcao; imprimir ("Forma de pagamento"); imprimir ("-------------------------------------"); imprimir ("1. A vista em dinheiro."); imprimir ("2. Cheque para trinta dias."); imprimir ("3. Em duas vezes."); imprimir ("4. Em trs vezes."); imprimir ("5. Em quatro vezes."); imprimir ("6. A partir de cinco vezes."); imprimir ("--------------------------------------"); imprimir ("Entre com sua opo :"); ler (opcao); escolha opcao: caso 1: imprimir ("Desconto de 20%."); caso 2: imprimir ("Preo de a vista."); caso 3: imprimir ("Preo de a vista."); caso 4: imprimir ("Preo de a vista."); caso 5: imprimir ("Juros de 5%."); caso 6: incio imprimir ("Juros de 3% ao ms"); imprimir ("Sujeito a mudana de acordo a financeira."; fim; caso contrrio: imprimir ("Opo invlida !!!"); fimescolha; fim

Repetio com teste inicial

Esta estrutura permite repetir um trecho de algoritmo diversas vezes. O fluxo de execuo controlado por um teste feito antes da execuo:

enquanto CONDIO faa


COMANDO1; COMANDO2; ........................... ........................... ........................... COMANDOn;

fimenquanto;
Quando CONDIO for falso os COMANDOS sero abandonados e o algoritmo passar para o prximo comando aps o "fimenquanto". Se j da primeira vez o resultado falso, os COMANDOS no so executados nenhuma vez, o que representa a caracterstica principal desse modelo de repetio. Exemplo demonstrativo: algoritmo que calcula a mdia aritmtica de uma quantidade indeterminada de nmeros. incio inteiro: contador; /*contar quantos nmeros so passados para o programa*/ real: acumulador; /*acumular a soma dos nmeros passados*/ real: media; /*armazenar o resultado da mdia aritmtica*/ real: numero;/*armazenar os nmeros e controlar o encerramento do programa*/ /*Inicializao das variveis. uma boa regra de estilo sempre inicializar (atribuir algum valor) as variveis antes de us-las. Algumas linguagens exigem isso.*/ contador <== 1; acumulador <== 0; media <== 0; numero <== 0; enquanto (numero >= 0) faa imprimir ("Entre com um nmero (-1 para encerrar) :"); ler (numero); se (numero >=0) /*s computa o nmero se este for maior ou igual a zero*/ acumulador <== acumulador + numero; contador <== contador + 1; fimse; fimenquanto;

media <== acumulador / contador; imprimir ("A mdia aritmtica ", media); fim

Repetio com teste final


Esta estrutura tambm permite repetir um trecho de algoritmo diversas vezes, porm o fluxo controlado por um teste feito no final da execuo.

faa
COMANDO1; COMANDO2; ........................... ........................... ........................... COMANDOn;

enquanto CONDIO;
Observe que os COMANDOS so executados pelo menos uma vez, independente da CONDIO. Isto acontece porque a condio avaliada aps a execuo dos comandos, o que representa a caracterstica principal desta estrutura. Exemplo demonstrativo: algoritmo que calcula a mdia aritmtica de uma quantidade indeterminada de nmeros. incio inteiro: contador; /*contar quantos nmeros so passados para o programa*/ real: acumulador; /*acumular a soma dos nmeros passados*/ real: media; /*armazenar o resultado da mdia aritmtica*/ real: numero;/*armazenar os nmeros e controlar o encerramento do programa*/ /*Inicializao das variveis. uma boa regra de estilo sempre inicializar (atribuir algum valor) as variveis antes de us-las. Algumas linguagens exigem isso.*/ contador <== 1; acumulador <== 0; media <== 0; numero <== 0;

faa imprimir ("Entre com um nmero (-1 para encerrar) :"); ler (numero); se (numero >=0) /*s computa o nmero se este for maior ou igual a zero*/ acumulador <== acumulador + numero; contador <== contador + 1; fimse; enquanto (numero >= 0); media <== acumulador / contador; imprimir ("A mdia aritmtica ", media); fim

Repetio controlada
Esta estrutura permite repetir um trecho de algoritmo um nmero especfico de vezes. Sua sintaxe :

para contador de inicio at fim incremento nr faa


COMANDO1; COMANDO2; ........................... ........................... ........................... COMANDOn;

fimpara;
onde:

"contador" a varivel de controle; "inicio" o valor inicial de "contador"; "fim" o valor final de "contador"; "nr" o valor segundo o qual "contador" ser incrementado a cada execuo.

Exemplo demonstrativo: algoritmo que imprime os nmeros at 500 incio inteiro: contador para contador de 1 at 500 incremento 1 faa

imprimir (contador, " - "); fimpara; fim

Exerccios
1. 2. 3. Construa um algoritmo que receba a idade do usurio e verifique se ele tem mais de 21 anos. Construa um algoritmo que receba trs nmeros inteiros e verifique qual o maior. Construa um algoritmo que calcule o peso ideal de uma pessoa. Dados de entrada: altura e sexo. Frmulas para clculo do peso: peso ideal de homem = (72,7 x altura) - 58 peso ideal da mulher = (62,1 x altura) - 44,7 4. Construa um algoritmo que receba o cdigo de um produto e o classifique de acordo com a tabela abaixo: CDIGO CLASSIFICAO 1 2a4 5e6 7 8 a 15 Alimento no-perecvel Alimento perecvel Vesturio Higiene pessoal Limpeza e utenslios domsticos

Qualquer outro cdigo Invlido 5. Construa um algoritmo que leia uma quantidade indeterminada de nmeros inteiros positivos e identifique qual foi o maior nmero digitado. O final da srie de nmeros digitada deve ser indicada pela entrada de -1. 6. 7. 8. Construa um algoritmo que leia trs valores inteiros e os imprima em ordem cresecente. Construa um algoritmo que receba um nmero inteiro e verifique se o mesmo primo. Dada a frmula: H = 1 + !/2 + 1/3 + 1/4 + ..... + 1/N . Construa um algoritmo que calcule o nmero H, dado o nmero inteiro N. 9. Construa um algoritmo que calcule o fatorial de um nmero N inteiro e positivo (N!). Saiba que: N! = 1 x 2 x 3 .... x (N -1) x N 0! = 1

10. A srie de Fibonacci formada pela seguinte sequncia: 1,1,2,3,5,8,13,21,34,55.... Construa um algoritmo que gere a srie de Fibonacci at o vigsimo termo. 11. Construa um algoritmo que leia cinco nmeros inteiros e identifique o maior e o menor. 12. Construa um algoritmo que imprima a tabela de equivalncia de graus Fahrenheit para centgrados. Os limites so de 50 a 70 graus Fahrenheit com intervalo de 1 grau. Frmula: C = 5/9 (F -32) 13. Uma rainha requisitou os servios de um monge, o qual exigiu o pagamento em gros de trigo da seguinte maneira: os gros de trigo seriam dispostos em um tabuleiro de xadrez, de tal forma que a primeira casa do tabuleiro tivesse um gro, e as casas seguintes o dobro da anterior. Construa um algoritmo que calcule quantos gros de trigo a Rainha dever pagar ao monge. 14. Construa um algoritmo que apure uma eleio com trs candidatos. O algoritmo deve realizar as seguintes tarefas: - Calcular o total de votos para cada candidato; - Calcular a quantidade de votos nulos; - Calcular a quantidade de votos em branco; - Calcular o percentual de votos em branco e nulos em relao ao total. - A votao deve obedecer as seguintes convenes: 1,2,3 => votos dos candidatos 4 => votos em branco 5 => votos nulos 0 => encerramento da apurao 15. Jos tem 1,50 m e cresce 2 centmetros por ano. Pedro tem 1,10 m e cresce 3 centmetros por ano. Construa um algoritmo que calcule em quantos anos Pedro ser maior que Jos.

Soluo aos exerccios


1. incio inteiro: idade; imprimir("Qual a sua idade ?"); ler(idade); se(idade>=21) imprimir("Voc de maior !!!."); seno imprimir("Voc de menor !!!."); fimse;

fim

2.

incio inteiro nr1, nr2, n3; imprimir("Entre com o primeiro nmero :"); ler(nr1); imprimir("Entre com o segundo nmero :"); ler(nr2); imprimir("Entre com o terceiro nmero :"); ler(nr3); se(nr1 > nr2) se(nr2 > nr3) imprimir("O ", nr1, " o maior."); seno se(nr1 > nr3) imprimir("O", nr1, " o maior."); seno imprimir("O", nr3, " o maior."); fimse; seno se(nr2 > nr3) imprimir("O", nr2, " o maior."); seno imprimir("O", nr3, " o maior."); fimse; fim

3.

incio inteiro: sexo; real: peso, altura; imprimir("Sexo (1. Homem 2. Mulher) :"); ler(sexo); se((sexo<1) ou (sexo>2)) /* analisa se escolha de sexo vlida */ imprimir("Opo de sexo invlida !!!"); seno incio imprimir("Qual sua altura ?"); ler(altura); se (sexo = 1) /* usurio homem */

peso <== (72,7 * altura) -58; seno /* usurio mulher */ peso <== (62,1 * altura) - 44,7; fimse; imprimir("Seu peso ideal ", peso); fim; fimse; fim

4.

incio inteiro: cod; imprimir("Cdigo do Produto :"); ler(cod); escolha cod caso 1: escreva ("Alimento no perecvel."); caso 2,3,4: escreva ("Alimento perecvel."); caso 5,6: escreva ("Vesturio"); caso 7: escreva ("Higiene pessoal"); caso 8,9,10,11,12,13,14,15; escreva ("Limpeza e utenslios domsticos."); caso contrrio: escreva ("Opo invlida."); fimescolha; fim

5.

incio inteiro: nr, maior; maior <== 0; faa imprimir("Entre com um nmero inteiro positivo (-1 para terminar) :"); ler(nr); se(nr > maior ) maior <== nr; fimse; enquanto(nr >= 0); imprimir("O maior ", maior); fim

6.

incio

int nr1,nr2,nr3; imprimir("Entre com o primeiro nmero :"); ler(nr1); imprimir("Entre com o segundo nmero :"); ler(nr2); imprimir("Entre com o terceiro nmero :"); ler(nr3); se(nr1 > n2) se(nr1 > nr3) se(nr2 > nr3) imprimir("Nmeros em ordem crescente :",nr3,nr2,nr1); seno imprimir("Nmeros em ordem crescente :",nr2,nr3,n1); fimse; seno imprimir("Nmeros em ordem crescente :",nr2,nr1,nr3; fimse; seno se(nr1 > nr3) imprimir("Nmeros em ordem crescente :",nr3,nr1,n2); seno se(nr2 > nr3) imprimir("Nmeros em ordem crescente :",nr1,nr3,n2); seno imprimir("Nmeros em ordem crescente :",nr1,nr2,n3); fimse; fim

7.

incio int numero,contador,resto,indicador; indicador <== 0; /* varivel que indicar se o nmero primo ou no */ /* caso ela seja igual a 0 (zero) o nmero ser primo */ imprimir("Entre com o nmero :"); ler(numero); para contador de 2 at (numero-1) incremento 1 faa incio resto = numero % contador; se(resto == 0) indicador <== 1; fimse; fimpara;

se(numero == 2) imprimir("O nmero 2 no primo."); /* Analisa se "numero" 2 pois, caso isto acontea, o lao "para" */ /* no executado e "indicador" ter valor 0(zero), indicando, */ / * assim, que 2 primo. O que no verdade. */ seno se(indicador == 0) /* Analise da varivel "indicador" */ imprimir("O nmero ", numero, " primo."); seno imprimir("O nmero ", numero, " no primo."); fimse; fim

8.

incio real: h,n,contador; h <== 0; imprimir("H = 1 + + 1/3 + + ... + 1/N"); imprimir("Entre com o valor de N :"); ler(n); para contador de 1 at n incremento 1 faa h = h + 1/contador; fimpara; imprimir("H = ", h); fim

9.

incio inteiro: nr,contador,fatorial; fatorial <== 1; imprimir("Entre com o nmero :"); ler(nr); para contador de 1 at nr incremento 1 faa fatorial <== fatorial * contador; fimpara; se (nr == 0) imprimir("Fatorial de ", nr, " = ", 1); seno imprimir("Fatorial de ", nr, " = ", fatorial); fimse; fim

10. incio inteiro: termo, termo_anterior1,termo_anterior2, contador; imprimir("1, "); termo_anterior1 <== 1; termo_anterior2 <== 0; para contador de 2 at 20 incremento 1 faa termo <== termo_anterior1 + termo_anterior2; imprimir("termo, "); termo_anterior2 <== termo_anterior1; termo_anterior1 <== termo; fimpara; fim

11

inicio inteiro: nr, maior,menor,contador; imprimir("Entre com o 1o nmero :"); ler(nr); maior <== nr; menor <== nr; para contador de 2 at 5 incremento 1 faa imprimir("Entre com o ", contador, "o nmero :"); ler(nr); se(nr > maior) maior <== nr; fimse; se(nr < menor) menor <== nr; fimse; fimpara; imprimir("O maior ", maior."); imprimir("O menor ", menor."); fim

12

incio real: cent, far; para far de 50 at 70 incremento 1 faa

cent = 5/9(far - 32); imprimir(far, " - ", cent); fimpara; fim

13

A sequncia dos gro no tabuleiro ser: 1, 2, 4, 8, 16, 32, ......

incio int casa,casa_ant,contador,total; casa <== 1; casa_ant <== 1; total <== 1; para contador de 2 at 64 incremento 1 faa casa <== casa_ant * 2; total <== total + casa; casa_ant <== casa; casa <== total; fimpara; printf("A rainha pagar ", total, " gros de trigo ao monge."); fim

14. incio inteiro: a,b,c,branco,nulo,total,voto; real: percent_branco,percent_nulo; a <== 0; /* votos do candidato 1 */ b <== 0; /* votos do candidato 2 */ c <== 0; /* votos do candidato 3 */ branco <== 0; nulo <== 0; total <== 0; imprimir("Entre com seu voto :"); ler(voto): enquanto (voto <> 0) faa total <== total + 1; escolha voto caso 1: a <== a + 1; caso 2: b <== b + 1; caso 3: c <== c + 1;

caso 4: branco <== branco + 1; caso 5: nulo <== nulo + 1; fimescolha; imprimir("Entre com seu voto :"); ler(voto); fimenquanto; percent_branco <== (branco * 100)/total; percent_nulo <== (nulo * 100)/total; imprimir("Total de votos => ",total); imprimir("Candidato 1 => ",a, " votos."); imprimir("Candidato 2 => ",b, " votos."); imprimir("Candidato 3 => ",c, " votos."); imprimir("Votos em branco => ", branco, " votos ( ", percent_branco, " % )."); imprimir("Votos nulos => ", nulo, " votos ( ", percent_nulo, " % )."); fim

15. incio inteiro: jose,pedro,anos; jose <== 150; pedro <== 110; para anos de 1 at (pedro > jose) incremento 1 faa jose <== jose + 2; pedro <== pedro + 3; fimpara; imprimir("Levaro ", anos, "anos para Pedro ser maior que Jos."); fim