Apoio966 Apostila Algoritmos Educandus Final

download Apoio966 Apostila Algoritmos Educandus Final

of 77

Transcript of Apoio966 Apostila Algoritmos Educandus Final

PROJETO E-JOVEM

APOSTILA ALGORITMOS

Projeto E-JOVEM

NDICE1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ALGORITMO NO COTIDIANO: ................................................................................................................. 4 MELHORIAS NO ALGORITMO: ................................................................................................................ 5 ALGORITMO ESTRUTURADO: ................................................................................................................. 6 LINGUAGEM DE PROGRAMAO: ......................................................................................................... 8 ITENS FUNDAMENTAIS: ........................................................................................................................... 10 EXPRESSES ARITMTICAS .................................................................................................................. 14 EXPRESSES LITERAIS ............................................................................................................................ 17 ESTRUTURA SEQENCIAL E CONDICIONAL SIMPLES .................................................................. 20 ANINHAMENTO DE SE ESTRUTURA CONDICIONAL SIMPLES II ............................................. 21 ESTRUTURA CONDICIONAL COMPOSTA I ........................................................................................ 22 ESTRUTURA CONDICIONAL COMPOSTA II ....................................................................................... 22 ESTRUTURA DE REPETIO DETERMINADA................................................................................... 23 ESTRUTURA DE REPETIO INDETERMINADA .............................................................................. 25 COMBINANDO ESTRUTURA DE REPETIO E ESTRUTURA CONDICIONAL ......................... 28 VARIVEIS COMPOSTAS HOMOGNEAS ........................................................................................... 28 VARIVEIS COMPOSTA HETEROGNEAS - REGISTROS ............................................................. 30 ARQUIVOS .................................................................................................................................................... 31 SUBROTINA .................................................................................................................................................. 34 FUNO: ....................................................................................................................................................... 35 EXERCCIOS RESOLVIDOS ..................................................................................................................... 37 FIM ALGORITMO ....................................................................................................................................... 47 RESPOSTA..................................................................................................................................................... 59 EXERCCIOS PROPOSTOS ....................................................................................................................... 73

3

Projeto E-JOVEM

1. Algoritmo no Cotidiano: No nosso dia a dia comum termos que realizar aes para alcanarmos determinados resultados, s vezes realizamos essas aes de forma coordenada ou de forma no ordenada, com isso surge a questo se sabermos diferenciar um fato imprevisvel de uma ao. Definio: o Ao: um evento que tem um estado inicial, um perodo de tempo finito e que produz um resultado esperado. o Fato imprevisvel: uma situao que acontece sem que haja um tempo e tambm um resultado definido. Para que seja possvel a execuo de uma ao de forma eficiente, os passos devem ser descritos de forma clara. Um exemplo para um melhor entendimento seria a contagem de de letras de uma palavra qualquer, vamos aos passos: o Escolher a palavra; o Contar quantas letras ela possui o Escrever o resultado. Sendo assim por definio temos que o conjunto desses passos necessrios para se realizar uma ao denominado Algoritmo. Algoritmo: uma seqncia de instrues ordenadas e que, se corretamente seguida, produz um resultado previsvel. Algumas aes do nosso dia a dia como: fazer um bolo, tomar banho, trocar uma lmpada seguem procedimentos padres para chegar a um objetivo. Podemos assim consider-los como algoritmos do nosso cotidiano.

4

Projeto E-JOVEM

2. Melhorias no Algoritmo: Quando somos encarregados de realizar uma determinada ao sempre tentamos melhorar a forma de execuo dessa ao, buscando talvez a realizao em um tempo menor ou melhorar a qualidade naquilo que se busca. O mesmo se aplica aos algoritmos, nunca devemos interpret-los como definitivos, sempre podero ser melhorados. Voc deve estar se perguntando por que melhorar um algoritmo? Nem sempre os algoritmos esto descritos de forma que possam ser compreendidos ou esto gerando resultados no esperados, quando isso acontecer eles devem ser refeitos ou detalhados em mais instrues. Analise o seguinte algoritmo de receita de bolo: o Adicione os seguintes ingredientes: Ovos; Farinha de Trigo; Leite; Acar; Fermento em p; o Misture o Leve ao Forno Voc acha que com essas informaes teramos um bolo ao final? A resposta no, pois no vou poder fazer um bolo apenas colocando os ingredientes, preciso definir as medidas dos ingredientes para chegarmos corretamente ao bolo, o nosso algoritmo ficaria melhor da seguinte forma: Adicione os seguintes ingredientes: o 4- Ovos; o 2 copos e meio de farinha de trigo; o 1 copo de leite; o 2 copos e meio de acar; o 1 colher de fermento em p; Misture Leve ao Forno por 25 minutos. Mas ele est perfeito? Provavelmente um cozinheiro profissional poderia melhor-lo.

5

Projeto E-JOVEM

2.1 Caractersticas de um algoritmo Definio Exata: Para que um algoritmo seja considerado exato deve descrever todas as instrues de forma clara e tambm nunca deixar dvida no que para ser feito. Eficincia: Buscar sempre o menor tempo possvel para a execuo das atividades e tambm utilizar de forma inteligente os recursos disponveis.

Um algoritmo de qualidade deve reunir essas duas caractersticas. Uma boa estratgia para desenvolver um algoritmo : 1. Entender o problema completamente; 2. Descrever todos os mnimos detalhes; 3. Detalhar o problema de forma seqencial. 3. Algoritmo Estruturado: Todo algoritmo deve ser escrito de forma clara e precisa e com isso muito importante que ele seja escrito seguindo um padro de forma que possa ser interpretado por todos. Abaixo mostramos informaes bsicas de um algoritmo: Nome: Variveis: Identificador do programa Variveis que so utilizadas no programa

Procedimentos: procedimentos que podem ser utilizados no programa Funes: Funes que podem ser utilizados no programa

Bloco de Aes: As aes que o programa vai executar. Mostramos abaixo um exemplo de um algoritmo padro estruturado, a linguagem que vamos utilizar a partir daqui o PORTUGOL (Pseudo_liguagem criada para tornar o ensino da lgica de programao o mais simples possvel), segue:

6

Projeto E-JOVEM

Receita do Bolo: Algoritmo Receita_Bolo Variveis panela,ovos,copo_farinha,copo_acucar,copo_leite,colher_fermento Procedimentos misture, leve_ao_forno Funes espere Inicio ovos:= 4; copo_farinha:=2; copo_acucar:=1; copo_leite:=1; panela:= ovos+copo_farinha+copo_acucar+copo_leite; misture leve_ao_forno espere 25 fim

3.1. Etapas para a construo de algoritmo o Problema: Identificar o problema o primeiro passo no processo de construo de algoritmo; o Anlise: Entender o problema primordial para a resoluo do mesmo. o Desenvolvimento da soluo: Desenvolvimento do algoritmo; o Testes: Executar o algoritmo com dados conhecidos para obter um resultado esperado; o Alteraes: Realizar alteraes buscando sempre a velocidade e qualidade; o Algoritmo Final;

7

Projeto E-JOVEM

Voc deve estar se perguntando como vou poder testar se meu algoritmo est correto ou no? Existem alguma tcnicas para realizar testes em algoritmo. Abordaremos a tcnica do Chinesinho

Chinesinho: Consiste em executar fielmente o que est escrito no algoritmo, utlizando papel e caneta onde anotamos os valores inseridos e modificados pelo programa e ao final da execuo saberemos se o resultado realmente o esperado.

Exemplo: Algoritmo Soma Variveis a: inteiro b: inteiro Inicio Escreva Digite o valor de a: Receba a; Escreva Digite o valor de b: Receba b; Fim imprima a+b // nesse momento a = 0 // valor digitado pelo usurio a = 3 // nesse momento b = 0 // valor digitado pelo usurio b = 2 // Resultado do algoritmo = 5

Como sabemos a soma de 3+2 = 5, ento o conclumos que o algoritmo est correto.

4. Linguagem de Programao: Uma linguagem de programao um mtodo padronizado para expressar instrues para um computador, atravs da linguagem o programador pode definir precisamente o que o computador ir executar num determinado momento.

8

Projeto E-JOVEM

4.1. Tipos de Linguagem Abaixo listamos os tipos de linguagens separados por seu tipo de paradigma de programao. o Linguagem Natural; o Linguagem de programao estruturada; o Linguagem Funcional; o Linguagem de programao lgica; o Linguagem de Programao Orientada a Objetos (o.o); Vamos explicar apenas os tipos de linguagens mais importantes e mais utilizados na prtica.

Linguagem de programao estruturada: a forma de programar que defende que todos os programas podem ser escritos reduzidos a trs estruturas.

4.2. Estruturas: o Seqncia o Deciso o Iterao Abaixo temos uma lista das linguagens de programao estruturada mais conhecidas no mercado:

PASCAL CLIPPER C VISUAL BASIC DELPHI

Podemos afirmar que a programao estruturada ainda marcantemente influente, uma vez que grande parte das pessoas ainda aprendem programao atravs dela.

9

Projeto E-JOVEM

4.3. Linguagem de Programao Orientada a Objetos (P.o.o) Para muitos uma linguagem complicada de se entender, para outros a melhor forma de expressar a vida real em um programa de computador.

Definio: um paradigma de anlise, projeto e programao de sistemas de software baseado na composio e interao entre diversas unidades de software chamadas de objetos.

No vamos nos prolongar no estudo da Programao Orientada a Objetos nesta apostila, pois esse assunto ser abordado em outro momento.

Abaixo temos uma lista das linguagens de programao Orientada a Objetos mais conhecidas no mercado:

RUBY PYTHON SMALTALK C++ C# JAVA

Por exigir formas de pensar relativamente complexas, a programao orientada a objetos at hoje ainda no bem compreendida ou usada pela maioria.

5. Itens Fundamentais: Para podermos prosseguir com nossos estudos adotaremos algumas convenes e conjuntos de regras. importante saber que essas regras no so universais, mas serviro para facilitar nossos estudos.

10

Projeto E-JOVEM

5.1. Constantes: Entende-se por uma informao constante, aquela que no sofre nenhuma alterao no decorrer do tempo e em um algoritmo no diferente uma constante nada mais que um valor utilizado pelo algoritmo e que no sofre alteraes no decorrer da execuo do programa. As constantes podem ser: Numrica: 1. O uso de uma constante numrica deve seguir o padro decimal, podendo no existir a parte fracionria. Exemplos: a) 45 b) 13,9 c) 1001,5 2. Em caso de constantes com exponencial, usaremos o smbolo ^ para indicar o valor exponencial. Exemplos: a) 5^3 b) 2^2. 3. Podem ser negativas e positivas de acordo com o sinal informado, quando no houver sinal ser positiva. Exemplos: a) 20 b) -20 c) -32,5 Lgica: S podero ter dois valores Verdadeiro ou Falso, veremos a melhor utilizao em estrutura condicionais mais adiante. Literal: Poder conter qualquer conjunto de caracteres, letras, nmeros ou smbolos. Como regra usaremos o valor constante entre aspas duplas . Exemplos: a) 20 b) educandus c) e-jovem d) falso (Apesar de Falso ser um valor para constante lgica, um literal por estar entre aspas ).

11

Projeto E-JOVEM

5.2. Variveis: So espaos de memria que so alocados para armazenar informaes, um valor ou expresso. 5.3. Por que se precisa de variveis? R: Para armazenar valores que sero utilizados posteriormente. Ex.: em um clculo complexo, resultados intermedirios podem ser armazenados e posteriormente processados para se obter o resultado final. Uma varivel s pode existir quando lhe associada uma nome, chamado de Identificador. Toda varivel precisa ter um identificador.

Os identificadores seguem regras para sua construo, so elas: Pode ser formado por qualquer caracter; O primeiro caracter dever ser sempre uma letra. No permitido o uso de caracteres especiais; Uma boa dica para voc sempre identificar a sua varivel de forma que represente aquilo que vai ser armazenado: ex: CODIGO, para armazenar cdigo do cliente.

Identificadores vlidos: a) AB b) A3b c) Nome Identificadores invlidos: a) 1AB b) A? c) X+5 As variveis assim como as constantes podem ser : numricas, literais e lgicas.

Declarao de Variveis: para que os programas manipulem valores, estes devem ser armazenados em variveis e para isso devemos declar-las seguindo um padro:

12

Projeto E-JOVEM

No instante de declarao devemos identificar o tipo de dado que ir ser armazenado na varivel. Ex: Declare valor_matricula NUMERICO; Neste exemplo foi informado que a varivel valor_matricula s poder receber dados numricos.

5.4. Comentrios: Quando escrevemos algoritmos longos e complexos natural que algumas pessoas e at mesmo voc que desenvolveu o cdigo sinta dificuldade em entend-lo.

Para evitar isso, devemos sempre comentar nossos cdigos de forma simples e mais clara possvel. Explicando funcionalidades do cdigo.

Para fazer uso dessa tcnica basta colocar // e em seguida a frase desejada. Para fazer comentrios em varias linhas use /* contedo */.

Exemplos: o Declare codigo NUMERICO //codigo, armazenar um cdigo do tipo numrico.

o /* as variveis codigo e valor_mensalidade armazenaro tipos numrico */ Declare codigo, valor_mensalidade NUMERICO;

13

Projeto E-JOVEM

6. Expresses Aritmticas A traduo das expresses aritmticas para linguagem de computador, geralmente acontece da mesma forma que a usada na matemtica salvo algumas excees, vamos aos exemplos: A+B Total desconto Mensalidade * 5 X/3 A*B+C // Adio //Subtrao //Multiplicao //Diviso // 1 Multiplicao e 1 adio

Observao: Na operao de multiplicao no se pode omitir o operador * e nem mesmo fazer uso do . XY +B X.Y+B X*Y + B //Errado //Errado // Correto

6.1. Prioridade a ser obedecida entre os operadores: 1. Operando de multiplicao ou diviso na ordem em que aparecerem. 2. Operando de Adio ou Subtrao na ordem em que aparecerem. 3. Em expresses que contm parnteses, a prioridade resolver as expresses contidas neles. 6.2. Funes: Funes descrevem relaes matemticas especiais entre os objetos. s vezes nos deparamos com problemas maiores que precisa ser decomposto em partes menores. Essas partes menores podem ser chamados repetidamente ao longo da execuo do programa e para evitar a repetio e organizarmos melhor nosso cdigo criamos trechos de cdigos que podemos chamar de Funo, Subrotina ou Procedimento. Algumas funes: ARREDONDA(arg) TRUNCA(arg) RESTO(arg1,arg2) EXP(arg1,arg2) Obs: Lembre-se que voc poder criar sua prpria funo ou subrotina.

14

Projeto E-JOVEM

Exemplos do uso de funes no cdigo: A + RESTO(7,2) 5 + EXP(2,8) A + B * ARREDONDA(Y) 6.3. Operadores Definio: so elementos fundamentais que atuam sobre operandos e produzem determinado resultado. Na espresso 3 + 2, o 3 e o 2 so operandos e o sinal de + o operador. Operadores Unrios: operadores que atuam sobre um nico operando. Ex: -3 -1 Operadores Binrios: operadores que atuam sobre 2 operandos. Ex: 3 + 2 5*3 Outra classificao para os operadores quanto ao tipo de dados que manipulam e o valor resultando de sua avaliao. Operadores Lgicos (booleanos): so operadores para avaliar expresses lgicas e que devolvem como resultado valores lgicos. NO E OU Ex: NO expressao1 Expressao1 E Expressao2 Expressao1 OU Expressao2 //negao // e lgico ou conjuno //ou lgico ou disjuno //prioridade 1 //prioridade 2 //prioridade 3

15

Projeto E-JOVEM

Operadores Relacionais: MAIOR QUE MENOR QUE MAIOR OU IGUAL MENOR OU IGUAL IGUAL DIFERENTE Tabela verdade: A Tabela verdade uma tabela matemtica usada em lgica para determinar se uma expresso verdadeira e vlida. Pode mos cheg ar as segui ntes concl uses ao analisar a tabela verdade acima: 1. O operador lgico NO sempre inverte o valor do seu operando 2. para que uma operao lgica OU tenha resultado verdadeiro, basta que um dos seus operandos seja verdadeiro. 3. para que a operao lgica E tenha resultado verdadeiro necessrio que seus dois operandos tenham valor lgico V. Formas de representao:

16

Projeto E-JOVEM

7. Expresses literais Constantes Literais: As constante literais em computao geralmente so representadas entre aspas duplas ou simples Ex: Educandus Variveis Literais: so variveis que assumem valores literais, ou seja, qualquer conjunto de caracteres alfanumricos. EX: A= EDUCANDUS 7.1. Concatenao A concatenao consiste em unir dois valores, anexando sempre o segundo valor ao final do primeiro Considerao: o Caso um dos valores no seja literal ele ser convertido e o operador para realizar essa operao o +. Ex: SOL + DADO = SOLDADO

7.2. Operadores relacionais: so operadores binrios que devolvem valores lgicos, verdadeiro ou falso. Estes operadores so somente usados quando se deseja realizar comparaes. Confira abaixo os operadores relacionais.

17

Projeto E-JOVEM

Exemplos: suponha que X igual a 8: X 6) ENTAO ESCREVER (A nota 2 maior que 6 e o seu valor : , nota2); fimse

FIM ALGORITMO 9. Aninhamento de SE Estrutura Condicional Simples II Notao estrutura condicional aninhada: SE () ENTAO SE () ENTAO fimse fimse

Exemplo: Neste algoritmo vamos receber trs valores a,b,c e escrever o valor de a se for maior que b, e em seguida escreve o valor de b se for menor a e maior que c. ALGORITMO DECLARE a,b,c NUMERICO INICIO LER(a,b,c ); SE (a>b) ENTAO ESCREVER (O valor de A:, a); SE (b>c) ENTAO 21

Projeto E-JOVEM

ESCREVER (O valor de B:, b); fimse fimse FIM ALGORITMO Observao: o segundo SE s testa se b maior que c, pois quando feita a primeira condio (a>b), exclui a necessidade se b menor que a. 10. Estrutura condicional composta I Notao estrutura condicional: SE () ENTAO SENAO fimse Exemplo: SE (x==y) ENTAO ESCREVER (x igual a Y); SENAO ESCREVER (x diferente de y); fimse O algoritmo s ir escrever (x diferente de y), se a expresso lgica for falsa.

11. Estrutura condicional composta II: Existem casos em que necessrio se estabelecerem verificaes de condies sucessivas. Quando uma ao executada, ela poder ainda estabelecer novas condies, isso significa condies dentro de condies. Esse tipo de estrutura poder ter diversos nveis de condio, porm esse tipo de estrutura torna difcil o entendimento do algoritmo.

22

Projeto E-JOVEM

Notao estrutura condicional: se () entao senao se () entao senao fimse fimse

12. Estrutura de repetio determinada: Em vrios momentos, na programao, se torna necessrio repetir um trecho de um programa um determinado nmero de vezes. Nesse caso, pode ser criado um lao de repetio que efetue o processamento de um determinado trecho, tantas vezes quantas forem necessrias. Os laos de repetio tambm so conhecidos por loopings. 12.1. Classificao: Os laos so divididos em laos CONTADOS e laos CONDICIONAIS. o Variveis de Lao: com a utilizao de estruturas de repetio para a elaborao de algoritmos, torna-se necessrio o uso de dois tipos de variveis para a resoluo de diversos tipos de problemas: variveis contadoras e variveis acumuladoras. Variveis contadoras: uma varivel de controle, NUMERICA, que serve para controlar quantas vezes um determinado trecho de programa foi executado. Inicialmente recebe um valor, geralmente 0 (ZERO), antes do inicio de uma estrutura de repetio e incrementada no interior da estrutura de uma valor constante, geralmente 1 Exemplo: ... cont = 0; ... cont = cont +1; ... ...

23

Projeto E-JOVEM

Variveis contadoras: uma varivel de controle, inteira, que serve para acumular valores. Inicialmente recebe um valor, geralmente 0 (ZERO), antes do inicio de uma estrutura de repetio e incrementada no interior da estrutura de uma valor varivel , geralmente a varivel utilizada na estrutura de controle: Exemplo: ... cont = 0; ... cont = cont +x; ... o Laos Contados ou Estrutura de Repetio Determinada: Damos esse nome quando conhecemos a quantidade de vezes que o comando composto no interior do algoritmo ser executado. Sintaxe - Forma Geral 1 : para = ate faca fim_para Exemplo: algoritmo para escrever 10 vezes a frase Pas: Brasil ALGORITMO repetio DECLARE i NUMERICO PARA i = 1 ate 10 FACA ESCREVER (Pas: Brasil); FIM_PARA FIM_ALGORITMO repetio Sintaxe - Forma Geral 2 : para = ate faca fim_para 24

Projeto E-JOVEM

Exemplo: algoritmo para escrever 10 vezes a frase Pas: Brasil ALGORITMO repetio_2 DECLARE i,par NUMERICO par = 0 PARA i = 1 ate 100 FACA ESCREVER (par); Par = par + 2; FIM_PARA FIM_ALGORITMO repetio_2 Exerccios resolvidos e propostos;

13. Estrutura de repetio indeterminada: Ao contrrio das estruturada de repetio determinada os lanos condicionais no sabemos antecipadamente quantas vezes o corpo do lao ser executado. Tipos de Construo: as construes que implementam estruturas de repetio indeterminadas so: o Enquanto Lao condicional com teste no incio; Caracterizado por uma estrutura que logo no inicio do lao efetua um teste lgico, para liberar a execuo ou no dos comandos que se encontram no interior do lao. Sintaxe - Forma Geral 1 : ENQUANTO faca fim_enquanto

Sintaxe - Forma Geral 2 : ENQUANTO faca fim_enquanto

25

Projeto E-JOVEM

Nesse tipo de lao a varivel a ser testada deve possuir um valor associado antes da construo do lao. Semntica: No inicio da construo realizado um teste lgico se o resultado for falso os comandos internos do lao condicional no sero executados e o algoritmo ira executar a prxima instruo ao final do lao. Caso o teste apresente resultado verdadeiro o comando interno executado e ao seu trmino retorna-se ao teste da condio at que a mesma apresente resultado falso os comandos sero executados. Exemplo - Forma Geral 1: ALGORITMO condicional DECLARE soma, num NUMERICO num = 1; soma = num; ENQUANTO (soma < 1000 ) faca ESCREVE (num) num = num + 1; soma = soma + num; fim_enquanto FIM_ALGORITMO condicional Exemplo - Forma Geral 2: ALGORITMO condicional_2 DECLARE media, soma_notas, cont_alunos NUMERICO media = 0; soma_notas = 0; cont_alunos = 0; ENQUANTO (cont_alunos < =3 ) faca LER (7) soma_notas = soma_notas + notas (14+7); cont_alunos = cont_alunos + 1(2+1); fim_enquanto media = soma_notas/cont_alunos (21/3); ESCREVER (A mdia da turma : , media); FIM_ALGORITMO condicional_2

26

Projeto E-JOVEM

o Repita - Lao condicional com teste no final; Caracterizado por executar ao menos uma vez os comandos internos ao lao e no final realizado um teste lgico verificando se permitido ou no executar os comandos internos. Sintaxe: REPITA ATE QUE Nesse tipo de lao a varivel a ser testada pode ser inicializada ou lida dentro do lao. Observao: Nos laos condicionais a varivel que testada tanto no inicio quanto no final do lao, deve sempre estar associada a um comando que a utilize no interior do lao. Caso isso no ocorra o programa ficar em loop infinito; Semntica: Como j havia falado anteriormente o comando executado uma vez e em seguida testado se pode ou no continuar a ser executado.. Se a condio for falsa o comando executado e o processo repetido at que a condio se torne falsa, quando so assim a execuo segue pelo comando imediato ao fim do lao. Exemplo - 1: ALGORITMO soma_salario DECLARE soma, salario NUMERICO soma = 0; REPITA LER (salario); Soma = soma + salario; ATE QUE (salario < 0 ) ESCREVER (soma); FIM_ALGORITMO soma_salario

27

Projeto E-JOVEM

14. Combinando Estrutura de Repetio e Estrutura condicional 15. Variveis compostas homogneas: Os tipos homogneos so conjuntos do mesmo tipo bsico. A utilizao desse tipo de estrutura de dados recebe diversos nomes, tais como: variveis indexadas, compostas, arranjos, tabelas em memria, arrays (do ingls) vetores e matrizes. 15.1. Variveis compostas homogneas - Unidimensionais: Vetores Os vetores so uma lista de elementos do mesmo tipo. Todas as variveis e constantes ocupam um espao em memria. Este espao ocupado um espao linear. Quando possumos uma ordem e um ndice de acesso aos elementos de um conjunto ento temos caracterizado um vetor. Exemplo:

Declarao: DECLARE lista de identificadores [li:ls]t Onde: Lista de identificadores so: Li : Ls: T: // nome da varivel;

// o limite inferior do intervalo de variao dos ndices; // o limite superior do intervalo de variao dos ndices; // o tipo dos componentes da varivel(numrico, literal, lgico)

Obs: O limite superior no deve ser menor que o limite inferior; Exemplo 1: DECLARE NOTA [1:10] NUMERICO;

28

Projeto E-JOVEM

Exemplo 2: ALGORITMO vetor DECLARE moda[] NUMERICO; DECLARO i NUMERICO; INICIO i = 0; REPITA SE(i>7)ENTAO INTERROMPA; FIM SE Moda[i] = 2; i = i +1; FIM_REPITA ESCREVER (moda[1], moda[2], moda[3]); FIM ALGORITMO vetor 15.2. Variveis compostas homogneas - Multidimensionais:

Nada mais so do que um conjunto de dados referenciado por um mesmo nome e que necessita de mais de um ndice para ter seus elementos individualizados (ou referenciados). As variveis compostas multidimensionais mais comuns so as Matrizes e tabelas, onde o primeiro ndice se refere ao numero linha e o segundo ao numero da coluna. Matrizes: A matriz mais comum a de duas dimenses (linha e coluna), por se relacionar diretamente com a utilizao de tabelas. Trabalharemos somente com matrizes de 2 dimenses, por serem mais comuns, mas podem ser necessrias, em algum momento, matrizes de 3 ou mais dimenses. Declarao: DECLARE matriz [1:4,1:3] NUMERICO Onde: Com essa declarao passa a existir uma matriz 4 x 3 = 12 elementos endereveis por um par de ndices, sendo o primeiro linha e o segundo coluna.

29

Projeto E-JOVEM

16. Variveis composta Heterogneas - Registros O conceito de registro visa facilitar o agrupamento de variveis que no so do mesmo tipo, mas que guardam estreita relao lgica. Eles correspondem a conjuntos de posies de memria conhecidos por um mesmo nome e individualizados por identificadores associados a cada conjunto de posies. Cada componente individualizado pela explicitao de seu identificador. Declarao: DECLARE cadastro REGISTRO (nome, rua Literal numero,cep,cpf, NUMERICO Ht[1:3] NUMERICO nascimento NUMERICO tem_dependente LOGICO) A referncia ao contedo do registro deve ser feita da seguinte maneira: . Exemplo: 16.1. cadastro.nome;

Registro de conjuntos

Voc deve estar se perguntando seno seria possvel utilizar vetores e matrizes dentro de um registro? A resposta sim, isso possvel. Veja como fazer abaixo: Exemplo: DECLARE cadastro REGISTRO (nome, Literal Cpf NUMERICO Ht[1:3] NUMERICO nascimento NUMERICO tem_dependente LOGICO) DECLARE endereco REGISTRO (rua Literal numero,cep NUMERICO) O acesso aos dados se da mesma forma como j foi explicado acima do registro mais externo, depois o mais interno e finalmente o identificador do componente;

30

Projeto E-JOVEM

Analise o exemplo abaixo: ALGORITMO exemplo_reg DECLARE tabela[1:100] REGISTRO (nome LITERAL, codigo NUMERO) DECLARE codigoDesejado, i, k NUMERICO LER (tabela[1]...tabela[100]); INICIO k=1; Enquanto (k // tipo de organizao do arquivo que pode ser direta ou seqencial. DE // uma palavra chave; // nome do registro que ser usado para ter acesso aos arquivos. 17.1. Abertura de arquivos

A seguinte notao deve ser utilizada para a abertura dos arquivos: ABRIR Onde, ABRIR: // uma palavra chave; //so os nomes dos arquivos. //especifica se o arquivo deve ser aberto para leitura, escrita ou ambos, simultaneamente Exemplos: ABRIR agenda LEITURA ABRIR agenda ESCRITA ABRIR agenda

32

Projeto E-JOVEM

17.2.

Fechamento do arquivo

A seguinte notao deve ser utilizada para desfazer a associao entre o modelo e o arquivo fsico: FECHAR Onde, FECHAR // uma palavra chave; //so os nomes dos arquivos. Observao: Sempre que precisar alterar o tipo de acesso ao arquivo, antes voc deve fechar o arquivo. Exemplo: FECHAR agenda;

Analise o exemplo abaixo: ALGORITMO exemplo_arq DECLARE a,b ARQUIVO SEQUENCIAL DE t DECLARE t REGISTRO (nome LITERAL, salario NUMERICO) ABRIR a LEITURA ABRIR b ESCRITA INICIO //Leitura do arquivo Repita LER (a.t); //Teste para detectar fim do algoritmo a Se (a.FDA) ento IMTERROMPA; Fim se ESCREVER (b.t); Fim repita Fechar a; Fechar b; Fim algoritmo exemplo_arq Observao sobre o exemplo:

33

Projeto E-JOVEM

o No h necessidade de se declarar a varivel FDA, j que ela um atributo que est associado ao arquivo. O sistema operacional que fica encarregado de atualiz-lo a cada acesso do arquivo.

18. SubRotina Definio: Consiste numa poro de cdigo que resolve um problema muito especfico, parte de um problema maior (a aplicao final). A utilizao das subrotinas nos algoritmos se deu pelas seguintes necessidades:

o o o o o

Reduo de cdigo duplicado num programa; Possibilidade de reutilizar o mesmo cdigo sem grandes alteraes em outros programas; A decomposio de problemas grandes em pequenas partes; Melhorar a interpretao visual de um programa; Esconder ou regular uma parte de um programa, mantendo o restante cdigo alheio s questes internas resolvidas dentro dessa funo;

Dicas:o o

As subrotinas (mdulos) devem ter um tamanho limitado, pois podem se tornar difceis de serem compreendidas. Todo mdulo constitudo por uma seqncia de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais.

Declarao: SUBROTINA nome (lista_de_parametros_formal) Declarao de objetos locais a subrotina Comandos da Sub-rotina Fim subrotina Onde, lista_de_parametros_formal : a lista de objetos que sero substitudos por outros objetos. Os parmetros atuais devem concordar com os parmetros formais.

34

Projeto E-JOVEM

Parmetros de subrotina Classificao dos parmetros de uma subrotina: o De entrada: So aqueles que tm seus valores estabelecidos fora da subrotina e no podem ser alterado dentro da subrotina; o De sada: so aqueles que tm seus valores alterados dentro da subrotina; o De entrada e Sada: so aqueles que tm seus valores estabelecidos fora da subrotina e podem ser alterados dentro da subrotina. Passagem de parmetros o Por valor: uma maneira tpica de passar parmetros em funes, quer dizer que a modificao de um parmetro no actualiza o dado da varivel como parmetro, apesar de mudarmos o valor do parmetro dentro da funo, a varivel original no se v afetada pela mudana. o Por resultado: as alteraes feitas nos parmetros formais dentro de uma subrotina, refletem-se nos parmetro atuais. Quando a passagem por resultado significa que o parmetro de sada. o Por referncia: Neste caso, a mudana do valor de um parmetro dentro de uma funo afeta o valor da varivel original. 19. Funo: As funes embora muito semelhante com as subrotinas apresentam uma caracterstica especial de retornar ao algoritmo que as chamou um valor associado ao nome da funo. Declarao: A declarao de uma funo idntica a de uma subrotina, com exceo de que necessrio o seu tipo, ou seja, o tipo do valor retornado. Alm de numricas as funes podem ser lgicas e literais.

Exemplo: Funcao TIPO nome (lista_de_parmetros_formais) Declarao dos objetos locais funo Comandos da funo Fim funcao Chamadas de funo:

35

Projeto E-JOVEM

Exemplo: nome(lista_de_parametros_formais). Ao terminar a execuo dos comandos da funo, o fluxo de controle retorna ao comando seguinte quele que provocou a chamada.

Importante: Subrotinas e Funes so mdulos hierarquicamente subordinados a um algoritmo, comumente chamado de mdulo principal, da mesma forma subrotinas e funes pode conter outras subrotinas e funes aninhadas veja imagem a seguir:

Exemplo exerccio resolvido - exerccio proposto

36

Projeto E-JOVEM

EXERCCIOS RESOLVIDOS

Antes de tudo queremos deixar bem claro para voc aluno que as respostas aqui colocadas no so as definitivas, lembre-se na eterna busca pela melhoria do cdigo. O que estamos colocando aqui so apenas formas de se resolver o problema em questo. 1. Escrever um Algoritmo que receba as 4 primeiras notas e ao final escrever se o aluno passou ou foi reprovado. Para o aluno passar ser necessrio ele atingir uma nota igual ou maior que 6. Resposta:ALGORITMO (Declarao das variveis que armazenaram os valores das notas) DECLARE NOTA1, NOTA2, NOTA3, NOTA4, MEDIA NUMERICO; LEIA NOTA1, NOTA2, NOTA3, NOTA4; (ler as 4 notas ) MEDIA = ( NOTA1 +, NOTA2, NOTA3, NOTA4) / 4 ; ( Soma as notas e divide por 4 para obter a media) SE (MEDIA >= 6 ) ( se a Media for igual ou maior que 6 excuta o comando dentro da estrutura) ENTAO ESCREVA O ALUNO PASSOU!; FIM SE; SE (MEDIA < 6 ) ( se a Media for menor que 6 excuta o comando dentro da estrutura) ENTAO ESCREVA ALUNO REPROVADO; FIM SE; FIM ALGORITMO

2. Escrever um Algoritmo que receba duas variveis A e B, e em seguida escreva a maior.Resposta: ALGORITMO DECLARE A, B NUMERICO; LEIA A, B; SE (A > B ) ENTAO ESCREVA O Valor de A maior :, A; FIM SE; SE (B > A ) ENTAO ESCREVA O Valor de B maior , B; FIM SE; FIM ALGORITMO

37

Projeto E-JOVEM

3. Escreva um Algoritmo que receba os valores de A e B, se a soma de A+B for maior que 20 ento escreva o total de A+B. Porem, se a soma for menor que 40, leia o valor de C e em seguida escreva a soma de A + B + C.Resposta: ALGORITIMO DECLARE A, B, C, SOMA NUMERICO; LEIA A, B; SOMA = A + B; SE ( SOMA >20 ) Se a soma de A+B for maior que 20 ento executa os comandos dentro do SE ENTAO ESCREVA O total de A + B :, SOMA; escreve a soma de A + B SE ( SOMA < 40 ) Se a soma A + B for menor que 40 executa os comandos dentro do SE ENTAO LEIA C; SOMA = A +B +C; ESCREVA O total de A+ B +C :, SOMA; FIM SE FIM SE FIM ALGORITIMO

4. Escreva um Algoritmo para o problema abaixo: Em uma escola um aluno precisa obter a media 6 nas 2 primeiras notas para passar de ano.Caso a media das notas seja inferior a 6 ele ter que fazer a recuperao e obter os pontos restantes para passar.A Regra a seguinte: MEDIA = ( NOTA1 + NOTA2 ) / 2; MEDIA >= 6 PASSOU MEDIA < 6 = FAZ RECUPERACAO MEDIA = NOTA1 + NOTA2 + RECUPERACAO MEDIA >= 6 PASSOU MEDIA < 6 REPROVADO Resposta: ALGORITMO DECLARE NOTA1, NOTA2, MEDIA, RECUPERACAO NUMERICO; LEIA NOTA1, NOTA2; MEDIA = (NOTA1 + NOTA2) / 2; SE ( MEDIA < 6 ) ENTAO LEIA RECUPERACAO; MEDIA = (NOTA1 + NOTA2 + RECUPERACAO) / 3; FIM SE SE ( MEDIA >= 6 ) ENTAO ESCREVA "APROVADO";

38

Projeto E-JOVEM

FIM SE SE ( MEDIA < 6 ) ENTAO ESCREVA "REPROVADO"; FIM SE FIM ALGORITMO

5. Qual destes no um exemplo de concatenao vlido? A 1 + CLIENTE = UM_CLIENTE b Educandus + WEB = EducandusWEB c Rua + 14 = Rua 14 d 30 + Km = 30Km e - DES+CONTO = DESCONTOResposta: A

6. A tabela dada a seguir contm vrios itens que esto estocados em vrios armazns de um supermercado. fornecido, tambm, o custo de cada um dos produtos armazenados.ESTOQUE PRODUTO1 1200 1400 2000 PRODUTO2 3700 4210 2240 PRODUTO3 3737 4224 2444

ARMAZM1 ARMAZM2 ARMAZM3 CUSTO CUSTO(R$)

260.00

420.00

330.00

Fazer um algoritmo que: a) b) c) d) Leia o estoque inicial; Determine e imprima quantos itens esto armazenados em cada armazm; Qual o armazm que possui a maior quantidade de produto 2 armazenado O custo total de: 1. 2. 3. Resposta: (Algoritmo de Resoluo questes a e b) Cada produto em cada armazm; Estoque em cada armazm; Cada produto em todos os armazns;

39

Projeto E-JOVEM

ALGORITMO EXEMPLO1 DECLARE a[1:3], p[1:3], i, j, maior, anterior, custo[1:3], estoque[1:3,1:3], custoArmazemProduto[1:3,1:3]: NUMERICO LEIA a[1],..., p[1],..., i, j, maior, anterior, custo[1],..., estoque[1,1],..., custoArmazemProduto[1,1],... INICIO maior, anterior = 0 i, j = 1 // variveis contadoras custo[1] = 260.00 // varivel unidimensional custo do Produto 1 custo[2] = 420.00 // varivel unidimensional custo do Produto 2 custo[3] = 330.00 // varivel unidimensional custo do Produto 3 estoque[1,1] = 1200 // varivel multidimensional estoque do Produto 1 no Armazm 1 estoque[1,2] = 3700 // varivel multidimensional estoque do Produto 2 no Armazm 1 estoque[1,3] = 3737 // varivel multidimensional estoque do Produto 3 no Armazm 1 estoque[2,1] = 1400 // varivel multidimensional estoque do Produto 1 no Armazm 2 estoque[2,2] = 4210 // varivel multidimensional estoque do Produto 2 no Armazm 2 estoque[2,3] = 4224 // varivel multidimensional estoque do Produto 3 no Armazm 2 estoque[3,1] = 2000 // varivel multidimensional estoque do Produto 1 no Armazm 3 estoque[3,2] = 2240 // varivel multidimensional estoque do Produto 2 no Armazm 3 estoque[3,3] = 2444 // varivel multidimensional estoque do Produto 3 no Armazm 3 ENQUANTO i