Construção de Algoritmos

download Construção de Algoritmos

of 42

description

Aprenda a construir algoritmos bem estruturados.

Transcript of Construção de Algoritmos

Exerccios que envolvem a lgica

Apostila

de

Construo de Algoritmo

Tutorial de Algoritmo:

Uma ferramenta para o aprendizado de Lgica de Programao 1. Introduo1.1 Noes de Lgica

Lgica a arte de pensar corretamente. A lgica estuda a correo do raciocnio.

Exemplos:

a) So Paulo um estado do Brasil.

Marlia uma cidade do estado de So Paulo.

Portanto, Marlia est localizada no Brasil.

b) A gaveta est fechada.

A caneta est dentro da gaveta.

Precisamos primeiro abrir a gaveta para depois pegar a caneta.

1.1.1 Lgica de Programao

Lgica da Programao significa o uso correto das leis do pensamento, da ordem da razo e de processos de raciocnio e simbolizao formais na programao de computadores, objetivando racionalidade e o desenvolvimento de tcnicas que cooperem para a produo de solues logicamente vlidas e coerentes, que resolvam com qualidade os problemas que se deseja programar. [FOR00]

1.1.2 O que um Algoritmo?

Um algoritmo pode ser definido como uma seqncia de passos que visam atingir um objetivo bem definido.

Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios e uma seqncia de diversos passos (aes) que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se esperava antes do incio das atividades (objetivo bem definido). [FOR00]

1.2 Algoritmizando a Lgica

Um algoritmo tem por objetivo representar mais fielmente o raciocnio envolvido na Lgica de Programao e, dessa forma, permite-nos abstrair de uma srie de detalhes computacionais, que podem ser acrescentados mais tarde.

Outra importncia da construo de algoritmos que, uma vez concebida uma soluo algortmica para um problema, esta pode ser traduzida para qualquer linguagem de programao e ser agregada das funcionalidades disponveis nos diversos ambientes; costumamos denominar esse processo de codificao.

1.2.1 Mtodo para Construo de Algoritmos

a) Ler atentamente o enunciado.

b) Retirar do enunciado a relao das entradas de dados.c) Retirar do enunciado a relao das sadas de dados.d) Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especificadas.

e) Construir o algoritmo.

f) Executar o algoritmo.

1.2.2 ExemplosAlgoritmo 1.1

pegar uma escada;

posicionar a escada embaixo da lmpada;

buscar uma lmpada nova;

subir na escada;

retirar a lmpada velha;

colocar a lmpada nova.

Algoritmo 1.2

pegar uma escada;

posicionar a escada embaixo da lmapda;

buscar uma lmpada nova;

acionar o interruptor;

se a lmpada no acender, ento

subir na escada;

retirar a lmpada queimada;

colocar a lmpada nova.

Algoritmo 1.5

acionar o interruptor;

se a lmpada no acender, ento

pegar uma escada;

posicionar a escada embaixo da lmpada;

buscar uma lmpada nova;

acionar o interruptor;

subir na escada;

retirar a lmpada queimada;

colocar uma lmpada nova;

enquanto a lmpada no acender, faa

retirar a lmpada queimada;

colocar um lmpada nova;

1.3 Exerccios que envolvem a Lgica1.) Os jogadores

Quatro homens se renem diariamente para jogar e conversar. No h dois com cabelos da mesma cor e que tenham preferncia pelo mesmo jogo. Com as seguintes indicaes dadas, voc conseguiria completar o quadro associando cor de cabelo e ao jogo preferido de cada um ?

a) Vicente tem cabelos castanhos.

b) O jogador de pquer louro.

c) Algum gosta de jogar domin, mas no o Roberto, pois ele gosta de jogar pquer.

d) Lucas gosta de jogar damas.

e) O jogador de xadrez tem cabelos brancos.

f) Pedro no tem cabelos ruivos.

VicenteLucasPedroRoberto

Cabelos:

Jogo:

2.) Amigos do Esporte

Quatro atletas tornaram-se amigos durante uma competio internacional. So eles: Paul, George, Lus e um atleta da Rssia. Com base nos dados abaixo, descubra o nome, o esporte e o pas de cada atleta.

a) Dimitri no jogava futebol nem praticava atletismo.

b) O atleta dos EUA praticava basquete.

c) Lus no era dedicado ginstica nem era norte-americano.

d) George no era nem do Brasil nem dos EUA.

e) Paul no jogava futebol nem praticava atletismo.

f) O atleta da Inglaterra no praticava nem ginstica nem futebol.

Atleta:Pas:Esporte:

3.) Os cinco amigos

Um grupo de cinco amigos decidem ir a um Estdio de futebol, mas iro se encontrar l dentro do Estdio. Para ficar mais fcil de se encontrarem, cada um vai com um bon de uma cor, e uma camisa de um time diferente, no h dois amigos com a mesma camisa nem com bon da mesma cor. Baseando nas afirmaes abaixo, descubra quem est com que camisa e qual a cor do bon que cada um estava usando.

a) Marcos usa bon vermelho.

b) Robson est usando a camisa do Brasil.

c) O garoto que est com a camisa do So Paulo no usa bon amarelo.

d) Quem usa bon verde est com a camisa do Guarani.

e) Victor no usa bon amarelo.

f) Andr usa bon azul e no preto.

g) Victor est com a camisa do Santos.

h) O garoto de bon azul est com a camisa do Cruzeiro.

Nome:Camisa:Bon:

Antnio

Robson

Marcos

Victor

Andr

4.) F-1

O diretor da corrida de F-1 esqueceu qual a ordem de largada da corrida, e necessita saber disso para informar os jornalistas. Sabendo que so apenas seis pilotos e que cada um pertence a uma equipe onde as cores dos carros so diferentes, ajude-o a formar a ordem de largada baseando-se nas seguintes afirmaes:

a) O 1 colocado tem um carro amarelo.

b) Eddie, vai largar na frente da equipe Lola e atrs do carro azul.

c) O carro de Rosset preto.

d) O ltimo colocado est atrs da Lola.

e) Senna est atrs de um carro branco.

f) Se invertessem a ordem, a equipe Tasman ficaria em primeiro.

g) O carro da equipe Brabham vermelho.

h) O carro do 5 colocado preto.

i) Richie o piloto da equipe Lotus.

j) O dono do carro verde Luyendyk.

k) A equipe de Minardi est entre as equipes Lotus e March.

l) Patrese, Rosset, Luyendyk e Eddie no conseguiram ficar em 1 lugar.

Ordem:Piloto:Equipe:Cor do carro:

1

2

3

4

5

6

5.) Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas?

6.) A Torre de Hani consiste em trs hastes (a b c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1 2 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste.

2. Tpicos Preliminares2.1 Tipos Primitivos

A informao a matria-prima que faz com que seja necessria a existncia dos computadores, pois eles so capazes de manipular e armazenar grande volume de dados. A cincia que estuda a informao a Informtica. Aproximando-nos da maneira pela qual o computador manipula as informaes, vamos dividi-las em quatro tipos primitivos:

2.1.1 Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros relativos.

Exemplos: Ele tem 18 anos.

A temperatura desta noite foi de -2 graus.

2.1.2 Real: toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais.

Exemplos: Sua nota 6.5.

O preo deste sapato foi R$ 45.99.

2.1.3 Caractere: toda e qualquer informao composta por um conjunto de caracteres alfanumricos (letras e dgitos) e/ou por smbolos especiais.

Exemplos:O cartaz dizia: No Fume.

A placa daquele automvel BHA 3456.

2.1.4 Lgico: toda e qualquer informao que pode apenas assumir duas situaes (falso ou verdadeiro).

Exemplos:A porta pode estar aberta ou fechada.

A lmpada pode estar acesa ou apagada.

2.2 ConstantesUma informao dita constante quando ela no sofre nenhuma variao no decorrer do tempo.

Exemplos: Teste de Impresso...

1234

Falso

2.3 Variveis

Uma informao dita varivel quando tem possibilidade de ser alterada em algum instante no decorrer do tempo.

Exemplos: Cotao do dlar, juros

2.4 Identificadores atravs dos identificadores que referenciamos (nomeamos) uma varivel, constante e outros nomes utilizados no programa. A regra bsica para cri-los :

o primeiro caractere obrigatoriamente deve ser uma letra

os demais podem ser qualquer combinao de letras e dgitos

no podem ser utilizados smbolos especiais ( * - + [ } & $ % @ ....). O nico smbolo permitido o underline ( _ ).

So permitidos 256 caracteres, mas para o compilador apenas 8 so reconhecidos.

EX. X1 , X2, NOME_FUNC, SOMA_1, etc.

2.5 Declarao de VariveisNos computadores as variveis so armazenadas em dispositivos eletrnicos chamados de memria. A diferenciao das vrias variveis so feitas atravs dos identificadores. Portanto, precisamos definir nomes para especificar esses objetos que podem ser manipulados.

Ex.

inteiro: a, b, c;

real: x1, x2;

lgico: flag;

caractere: rua, cep, nome;

Obs. O ponto e vrgula (;) finaliza uma declarao e, em um mesmo tipo, podem ser declaradas quantas variveis forem necessrias, separando-as por vrgulas.

2.6 OperadoresOs operadores podem ser aritmticos, relacionais, lgicos e atribuio.

a) aritmticos: representam as operaes bsicas de matemtica ( + - / * ) e ainda DIV (quociente entre inteiros) e MOD (resto da diviso entre inteiros).

Ex. 45 + 67 * 4 / 2

10 DIV 3 (resulta em 3)

10 MOD 3 (resulta em 1)

A prioridade dos operadores : primeiro * e / e depois + e - , exceto quando do uso de parnteses.

Funes Matemticas

Alm das operaes bsicas citadas, podemos usar algumas expresses aritmticas. Dentre elas:

sen(x) e cos(x)

abs (x) - valor absoluto

int (x) - parte inteira de um nmero real

rnd (x) - sorteia um nmero randmico entre 0 e x

b) relacionais: so utilizados para realizar comparaes entre dois valores.

So eles: = > < = (diferente). Sempre retornam falso ou verdadeiro.

Ex. ( a >= 10)

( c d )

c) lgicos: so utilizados para combinarem relaes. So eles: e ou no . Tambm retornam falso ou verdadeiro.

Ex. ( (a > b) e (c > d) )

( (s = 10) ou (x = -15))

ABA e B

A BA ou B

Ano A

FFF

FFF

FV

FVF

FVV

VF

VFF

VFV

VVV

VVV

Ex. Eu vou almoar se tiver macarronada e frango.

Quando eu vou almoar ?

Eu vou almoar se tiver macarronada ou frango.

Quando eu vou almoar ?

d) atribuio: utilizado para atribuir uma expresso ou valor uma varivel. Ser utilizado o smbolo ( .

Ex. a ( 10;

b ( 2 * a + (a / 4)

a ( a + 1;

2.7 Exerccios1.) Dos identificadores abaixo, assinale aqueles que esto errados.

a) cod

b) s 1

c) prova2

d) X@

e) 2y

f) aux

g) P1-P2h) M&Si) dados

j) Rg

k) nome do cliente

2.) Determine qual o tipo primitivo da informao presente nas sentenas a seguir.

a) A placa "Pare!" tinha 2 furos de bala.

b) Josefina subiu 5 degraus para pegar uma ma boa.

c) Alberta levou 3,5 horas para chegar ao hospital onde concebeu uma garota.

d) Astrogilda pintou em sua camisa: "Preserve o meio ambiente", e ficou devendo R$ 100,59 ao vendedor de tintas.

e) Felisberto recebeu sua 18a medalha por ter alcanado a marca de 57,3 segundos nos 100 metros rasos.

3.) Determine qual o tipo primitivo das informaes:

a) Pare

b) 2

c) 100.59

d) Preserve o meio ambiente

e) S

a) falso

b) -57.3

c) -5000

d) UNIMAR

e) 0.001

4.) Declare variveis capazes de armazenar seus dados pessoais: nome, endereo, cidade, cep, telefone, cdula de identidade, data de nascimento.

5.) Nas declaraes de variveis abaixo existe alguns erros, encontre-os:

INTEIRO: a, b, c, ... z;

REAL: preco1, lucro2, taxa%;

CARACTERE: cliente, nome da cidade, rua;

LGICO: flag, set;

6.) Encontre os erros da seguinte declarao de variveis:

a) inteiro: endereo, nfilhos;

b) caracter: idade, resposta;

c) real: peso, altura, nome;

d) logico: situao;

7.) Supondo que as variveis COD, NOME, SEXO, DEPTO, FUNO, SAL, NDEP, ADIC, VALE, TIPO, sejam utilizadas para armazenar informaes referentes a um funcionrio de uma empresa, a saber: cdigo, nome, sexo, departamento em que trabalha, funo que exerce, salrio mensal, nmero de dependentes, salrio extra, se tem direito a vale transporte e tipo sanguneo, declare-as corretamente.

8.) Escreva a declarao das seguintes variveis: a sua mdia, a sua nota mxima obtida numa disciplina, o saldo de sua conta bancria, o ano em que espera acabar o curso. Escolha nomes e tipos apropriados para as suas variveis.

9.) Supondo A, B e C variveis do tipo inteiro, com valores 5, 10 e -8, e D varivel do tipo real com valor 1.5, quais os resultados das expresses abaixo:

2 + A * ABS(3) + C =

a) b) 3 + RQ (2 * ABS(C)) / 2 =

b) QUAD(B -6 * 2) * D + 2 =

c) B MOD 3 + A MOD 2 =

d) 2 * A MOD 3-C =

e) RQ(2*ABS(C)) / 4 =

Determine os resultados (verdadeiro ou falso) obtidos na avaliao das expresses lgicas seguintes, sabendo que A, B, C, D e E contm respectivamente 2, 7, 3.5, noite e frio e que existe uma varivel lgica L cujo valor falso:

a) (B = A * C) e L ou verdadeiro

10.) b) (no (dia = D)) ou (frio clima)

c) L ou (B DIV A >= C) ou no (A = B DIV A) ou no (A= 7)

ento

escreva ('Aluno aprovado!!');

fimse;

fim.

4.1.2 Seleo Composta

Quando tivermos situaes em que duas alternativas dependem de uma mesma condio, uma da condio ser verdadeira e outra da condio ser falsa, usamos a estrutura seleo composta. A seleo composta de um bloco de comandos realizada atravs do comando Se... ento ... seno. A sintaxe deste comando descrita a seguir:

se

ento

Cv;// comando verdade

seno

Cf;// comando falso

fimse;

Este comando deve ser interpretado da seguinte forma: Se a for verdadeira (comparao entre valores - operao relacional) executa-se o pertencente ao ENTO, caso a seja falsa, executa-se o pertencente ao SENO.

Observamos que tambm deveremos usar um bloco quando precisamos colocar diversas aes tanto para o ento como para o seno, conforme o modelo a seguir:

se

ento

incio

// incio do bloco verdade

C1;

C2; // seqncia de comandos

.

.

Cn;

fim;

// fim do bloco verdade

seno

incio

// incio do bloco falso

C1;

C2; // seqncia de comandos

.

.

Cn;

fim;

// fim do bloco falso

fimse;

Exemplo: Mdia aritmtica com aprovao e reprovao.

incio

// declarao de variveis

real: n1, n2, n3, n4, ma;

escreva ('Fornea as 4 notas bimestrais');

leia (n1, n2, n3, n4);

ma ( (n1 + n2 + n3 + n4) / 4;

escreva ('A mdia ', ma);

se (ma >= 7)

ento

escreva ('Aluno aprovado!!');

seno

escreva ('Aluno reprovado!!');

fimse;

fim.

4.1.2 Seleo Encadeada

Quando, devido necessidade de processamento, agruparmos vrias selees, formaremos uma seleo encadeada. Normalmente, tal formao ocorre quando determinada ao ou bloco deve ser executado se um grande conjunto de possibilidades ou combinaes de situaes for satisfeito [FOR00].

O modelo a seguir expressa um exemplo de seleo encadeada:

se

ento

se

ento

incio

// incio do bloco verdade 1

C1;

C2; // seqncia de comandos

.

.

Cn;

fim;

// fim do bloco verdade 1

fimse;seno

se

ento

incio

// incio do bloco falso 2

C1;

C2; // seqncia de comandos

.

.

Cn;

fim;

// fim do bloco falso 2

seno

se

ento

Cv;

seno

Cf;

fimse;fimse;

fimse;

Exemplo: Algoritmo para determinar o maior dentre 3 valores (a, b, c) lidos pelo teclado.

incio

inteiro: a, b, c, maior;

escreva (digite o valor de a:);

leia(a);

escreva (digite o valor de b:);

leia(b);

escreva (digite o valor de c:);

leia(c);

se ( (a > b) e (a > c) ) ento

maior ( a

seno

se ( b > c) ento

maior ( b

seno

maior ( c;

fimse;

escreva ( o maior valor dentre os lidos =, maior);

fim.

4.2 Estrutura de Seleo (Mltipla Escolha)

Quando um conjunto de valores discretos precisa ser testado e aes diferentes so associadas a esses valores, estamos diante de uma seleo encadeada homognea do tipo se ento se. Como esta situao bastante freqente na construo de algoritmos que dependem de alternativas, utilizaremos uma estrutura especfica para estes caso, a seleo de mltipla escolha [FOR00].

O sintaxe utilizada para esta estrutura a seguinte:

escolha x

caso V1: C1;

caso V2: C2;

caso V3: C3;

caso V4: C4;

caso contrrio: C5;

fimescolha;

Caso o contedo da varivel X seja igual ao valor Vn, ento o comando Cn ser executado; caso contrrio, sero inspecionados os outros casos at ser encontrada uma igualdade ou terminarem os casos, executando assim a clusula caso contrrio. Esta clusula pode ser omitida. O valor atribudo Vn, pode tambm ser um intervalo, como no exemplo:

escolha x

caso V1: C1;

caso V2, V3: C2;

caso V4..V6: C3;

caso V7: C4;

caso contrrio: C5;

fimescolha;

4.3 Exerccios1.) Elabore um algoritmo que leia um nmero inteiro e determine se ele par ou mpar.

2.) Elabore um algoritmo que leia e lados de um tringulo ( a, b, c), verifique se as medidas podem ser tringulo ( a < b + c, b < a + c e c < a + b). Se for tringulo, determinar se equiltero, issceles ou escaleno.

3.) Elabore um algoritmo para resolver uma equao do 2 grau dada por : ax2 + bx + c = 0. Efetuar as entradas (valores de a, b e c). Calcular as razes utilizando a frmula:

X = - b ( b2 - 4.a.c

2.a

4.) Elabore um algoritmo leia a idade de um nadador e imprima a categoria que ele pertence:

idade < 8 anos - infantil A

idade >=8 e < 13 - infantil B

idade >=13 e < 18 - juvenil A

idade >=18 e < 21 - juvenil B

idade >= 21 snior

5.) FAQ tendo como dados de entrada o nome, a altura e o sexo (M ou F) de uma pessoa, calcule e mostre seu peso ideal, utilizando as seguintes frmulas:

para sexo masculino peso ideal = (72.7*altura) - 58

para sexo feminino peso ideal = (62.1*altura) - 44.7

6.) Sejam: nmero da conta do cliente, saldo anterior, dbito e crdito, elabore um algoritmo que calcule e mostre saldo atual = saldo anterior - dbito + crdito. Se saldo atual for maior ou igual a zero mostre a mensagem: Saldo Positivo, seno a mensagem Saldo Negativo.

7.) Sejam trs nmeros inteiros diferentes digitados pelo usurio, coloque-os em ordem crescente.

8.) Dado um caracter qualquer digitado pelo usurio, verificar e escrever se uma vogal (a, e, i, o, u).

Seja o seguinte algoritmo:

incio

inteiro: x,y,z;

caracter: resposta;

escreva ('Fornea dois valores');

leia (x,y);

z x*y - 5;

se z mv ) ento

mv ( a[ i ];

fimse;

fimpara;

escreva ( O maior valor = , mv);

fim.

6.1.2 Multidimensionais - Matrizes

Uma matriz dita multidimensional quando necessrio utilizar dois ou mais ndices para referenciar (acessar) um determinado elemento da estrutura. Veja o esquema:

A 1 2 3 4 5159103212

22313118994

34548217428

46786285566

55294796342

6836633217

No esquema acima, A uma matriz de duas dimenses com 6 linhas e 5 colunas. A referncia a um elemento feita com o auxlio de 2 ndices: um para a linha e o outro para a coluna. Veja:

A [ 3,2 ] = 48

A [ 5,4 ] = 63

Declarao

TIPO IDEN = MATRIZ [ 1..10, 1..10 ] DE REAIS;

IDEN : A, B;

Nesta declarao A e B so matrizes com 10 linhas e 10 colunas.

Exemplos

1.) Elabore um algoritmo que leia uma matriz quadrada 5 x 5 e calcule e imprima os elementos da diagonal principal bem como a soma destes elementos.

inicio

tipo mat = vetor [1..5,1..5] de inteiros;

mat a;

inteiro: i, j, s;

escreva (digite os elementos da matriz :);

para i = 1 ate 5 faa

para j = 1 ate 5 faa

escreva ( linha, i, coluna, j, =);

leia (a [ i, j ];

fimpara;

fimpara;

s ( 0;

para i ( 1 ate 5 faa

s ( s + a [ i, i ];

escreva ( a [ i, i ]);

fimpara;

escreva ( A soma da diagonal =, s);

fim.

2.) Elabore um algoritmo que leia uma matriz 10 x 5 e calcule e imprima a soma de cada linha.

Incio

tipo mat = matriz [1..10, 1..5] de reais;

mat : m;

real: sl;

inteiro: i, j;

escreva (digite os elementos da matriz :);

para i ( 1 ate 10 faa

para j ( 1 ate 5 faa

escreva ( linha, i, coluna, j, =);

leia (m [ i, j ];

fimpara;

fimpara;

para i = 1 ate 10 faa

sl ( 0;

para j = 1 ate 5 faa

sl ( sl + m[ i, j ];

fimpara;

escreva (soma da linha, i , = , sl);

fimpara;

fim.

6.2 Variveis Compostas Heterogneas

Os registros so estruturas de dados capazes de armazenar informaes de tipos de dados diferentes. Assim, possvel combinar em uma nica varivel um conjunto de dados diferentes.

Esquema:

registro

nomeendereocidadecepfoneidade

A estrutura acima, capaz de armazenar 5 informaes diferentes.

Declarao:

Para declarar uma varivel registro usa-se a diretiva REGISTRO e FIM. Veja o exemplo:

TIPO DADOS = REGISTRO

CARACTERES: nome, endereo, cidade;

CARACTERES: cep, fone;

INTEIRO: idade;

FIM;

DADOS: REG;

Na declarao acima, a varivel REG capaz de armazenar a estrutura utilizada como exemplo. O que diferencia os campos ou componentes do registro o acesso que realizado atravs do ponto (.).

Ex.

REG.nome, REG.idade, REG.cep, etc..

Como exemplo, vamos ler 50 registros especificados anteriormente e imprimir todos os que possuem idade > 21 anos.

Incio

tipo dados = registro

caracteres: nome, endereo, cidade;

caracteres: cep, fone;

inteiro: idade;

fim;

dados: reg;

inteiro : i;

para i = 1 ate 50 faa

escreva ( nome :); leia (reg.nome);

escreva ( endereo :); leia (reg.endereo);

escreva ( cidade:);leia (reg.cidade);

escreva ( cep:);

leia (reg.cep);

escreva ( fone:);

leia (reg.fone);

escreva ( idade :);leia (reg.idade);

se (reg.idade > 21) entao

incio

escreva ( nome :, reg.nome);

escreva ( endereo :,reg.endereo);

escreva ( cidade:, reg.cidade);

escreva ( cep:, reg.cep);

escreva ( fone:, reg.fone);

escreva ( idade : , reg.idade);

fim;

senao

escreva ( a pessoa menor de idade !);

fimse;

fimpara;

fim.

Exemplos:

1.) Declare um registro contendo as informaes de alunos: nome, ra, disciplina, n1, n2. Em seguida leia 60 registros e imprima a quantidade de alunos aprovados e a quantidade de alunos reprovados, mostrando o nome e a mdia dos aprovados.

Incio

tipo rec = registro

caracteres: nome, ra, disc;

real: n1, n2;

fim;

rec : a;

inteiro : i qa, qr;

real: med;

qa ( 0;

qr ( 0;

para i = 1 ate 60 faa

escreva ( nome :); leia (a.nome);

escreva ( ra: );

leia (a.ra);

escreva ( disciplina :);leia (a.disc);

escreva ( digite as 2 notas:);

leia (a.n1 , a n2);

med ( (a.n1 , a n2) / 2;

se ( med >= 7) entao

inicio

qa ( qa + 1;

escreva ( nome =, a.nome);

escreva ( mdia =, med);

fim;

senao

qr ( qr + 1;

fimse;

fimpara;

escreva ( Total de aprovados =, qa);

escreva ( Total de reprovados =, qr);

fim.

2.) Declare um registro contendo informaes de um produto: cdigo, descrio, fornecedor, qtd. Estoque, etc. Em seguida declare um vetor capaz de armazenar 500 produtos. Elabore um algoritmo que cadastre os 500 produtos e em seguida efetue baixas no estoque, solicitando a digitao do cdigo de um produto e se ele existir no vetor, entrar com a quantidade a ser retirada do estoque. Se esta quantia for maior que a estocada, zerar o estoque e retirar o que tem, caso contrrio atualize o estoque. Encerrar o programa quando o usurio desejar.

Incio

tipo reg =registro

inteiro: cod;

caracteres: desc, forn;

real: qtd;

fim;

vet =vetor [ 1..500] de reg;

vet: v; { v uma varivel capaz de armazenar 500 registros }

inteiro: i , qt, cd, ac ;

caractere: resp;

escreva ( cadastro dos 500 produtos:);

para i = 1 ate 500 faa

escreva (codigo :);

leia ( v[ i ].cod );

escreva (descrio:);

leia ( v[ i ].desc );

escreva (fornecedor:);

leia ( v[ i ].forn);

escreva ( qtd. em estoque:);leia ( v[ i ].qtd);

fimpara;

repita

escreva ( Digite o cdigo para busca em vetor:);

leia (cd);

ac ( 0;

i ( 1;

enquanto ( ( ac = 0) e (i < 500)) faa

se ( v[ i ].cod = cd) entao

ac ( 1

senao

i ( i + 1;

fimse;

se (ac = 0) ento

escreva ( Produto no cadastrado!)

seno

inicio

escreva (Digite a quantidade a retirar do estoque:);

leia (qt);

se ( v[ i ]. qtd < qt) ento

inicio

v[ i ].qtd : = 0;

escreva (Efetuar pedido a, v [ i ]. forn);

fim

seno

inicio

v [ i ]. qtd ( v [ i ]. qtd - qt;

escreva (Restou:, v[ i ].qtd);

fim;

fimse;

fim;

fimse;

escreva ( Deseja efetuar outra baixa no estoque:);

leia (resp);

at ( (resp = n) ou (resp = n));

fim.

6.3 Exerccios

Digitar exerccios da pgina 91!!!!

7. Modularizao de Algoritmos7.1 Subprogramas (Subrotinas)

A principal razo para se criar subprogramas est relacionada com a otimizao do cdigo do programa ( uando um determinado trecho de programao deve ser repetido por vrias vezes no programa, colocando-o em um subprograma, basta referenci-lo quantas vezes desejar) e tambm por melhor estruturar (organizar) o programa (pode ser implementado um pedao por vez). Assim, so duas as formas bsicas para desenvolvimento de subprogramas:

PROCEDIMENTOS

FUNES

A diferena bsica entre os procedimentos e as funes que, as funes obrigatoriamente retornam valor no trmino de sua execuo e os procedimentos no. A declarao dos procedimentos e funes pertencentes a um determinado programa devem ser feitas aps a declarao das variveis globais e antes do incio do programa principal.

7.1.1 Procedimentos

Um procedimento criado pela declarao : PROCEDIMENTO. Veja a sintaxe:

PROCEDIMENTO < nome do procedimento> ;

declaraes de variveis locais ao procedimento

INCIO

comandos pertencentes ao procedimento

FIM;

EX. Algoritmo para ler um 100 registros de funcionrios ( nome, cargo, salrio) e imprimir os 100 registros com um aumento de 10%.

Incio

tipo reg = registro

caractere: nome, cargo;

real: sal;

end;

tipo vet = vetor [1..100] de reg;

{ variveis globais - todos os procedimentos podem us-las }

vet : a;

inteiro: i;

procedimento ledados;

inicio

para i = 1 ate 100 faa

escreva (nome = ); leia (a [ i ].nome);

escreva ( cargo = ); leia ( a [ i ].cargo);

escreva ( salrio = ); leia ( a [ i ]. sal );

fimpara;

fim;

procedimento aumento;

inicio

para i ( 1 at 100 faa

a [ i ]. sal : = a [ i ]. sal * 1.1;

escreva (nome = , a[ i ] . nome , salrio = , a [ i ]. sal );

fimpara;

fim;

{ programa principal }

escreva ( Entrada dos dados );

ledados;

escreva ( Impresso dos dados com aumento de salrio);

aumento;

fim.

7.1.1 Funes

A caracterstica fundamental de uma funo que ela retorna um valor para o programa que a chamou. Assim, a sua declarao dever conter o tipo de dado que ir retornar. Veja:

FUNO : tipo de dado da funo;

declaraes de variveis locais funo

INCIO

comandos pertencentes funo

< nome da funo > ( recebe valor a ser retornado

FIM;

Ex. Algoritmo para calcular o maior entre 3 valores lidos pelo teclado.

Incio

inteiro: a, b, c , y;

funo max : inteiro;

inteiro: maior;

inicio

se (( a > b ) e ( a > c )) ento

maior ( a

seno

se ( b > c ) ento

maior ( b

seno

maior ( c;

fimse;

fimse;

max ( maior; { o nome da funo recebe o valor a ser retornado }

fim;

{ programa principal }

escreva ( Digite os 3 valores :);

leia (a, b, c);

y ( max ;

escreva ( O maior valor = , y );

fim.

7.2 Exerccios1.) Elabore um algoritmo utilizando procedimentos para ler um vetor de 100 elementos inteiros (idades) e calcule e imprima a mdia das 100 idades.

2.) Elabore um algoritmo utilizando funes que leia 1 valor inteiros e calcule e imprima se ele ou no nmero primo. Lembre-se que para o nmero ser primo ele deve ser divisvel por 1 e por ele mesmo.

PAGE 1 Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

_1014554807.unknown

_1020355669.unknown

_1009363137.doc

_1014554679.unknown

_963421713.doc