50978145-Algoritmos-exercicios-resolvidos

download 50978145-Algoritmos-exercicios-resolvidos

If you can't read please download the document

Transcript of 50978145-Algoritmos-exercicios-resolvidos

PROJETO E-JOVEM APOSTILA ALGORITMOSProjeto E-JOVEM NDICE 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 2 3. ALGORITMO NO COTIDIANO: ..................................................... ............................................................ 4 MELHORIAS NO ALGO RITMO: ......................................................................... ....................................... 5 ALGORITMO ESTRUTURADO: ............... ................................................................................ .................. 6 LINGUAGEM DE PROGRAMAO: ..................................... .................................................................... 8 ITENS FUN DAMENTAIS: ..................................................................... ...................................................... 10 EXPRESSES ARITMTICAS ... ................................................................................ ............................... 14 EXPRESSES LITERAIS ........................... ................................................................................ ................. 17 ESTRUTURA SEQENCIAL E CONDICIONAL SIMPLES .................. ................................................ 20 ANINHAMENTO DE SE ESTRUTURA CONDICIONAL SIMPLES II ............................................. 21 ESTRUTUR A CONDICIONAL COMPOSTA I ....................................................... ................................. 22 ESTRUTURA CONDICIONAL COMPOSTA II ......... .............................................................................. 2 2 ESTRUTURA DE REPETIO DETERMINADA................................................ ................................... 23 ESTRUTURA DE REPETIO INDETERMINADA ........ ...................................................................... 25 COMBIN ANDO ESTRUTURA DE REPETIO E ESTRUTURA CONDICIONAL ......................... 28 VAR IVEIS COMPOSTAS HOMOGNEAS ........................................................ ................................... 28 VARIVEIS COMPOSTA HETEROGNEAS - REGISTROS . ............................................................ 30 ARQUIVOS ....... ................................................................................ ............................................................. 31 SUBROTINA ..... ................................................................................ ............................................................. 34 FUNO: ........... ................................................................................ ............................................................ 35 EXERCCIOS RESOLVI DOS ............................................................................ ......................................... 37 FIM ALGORITMO ..................... ................................................................................ .................................. 47 RESPOSTA.................................. ................................................................................ ................................... 59 EXERCCIOS PROPOSTOS ...................... ................................................................................ ................. 73 3Projeto E-JOVEM1. Algoritmo no Cotidiano: No nosso dia a dia comum termos que realizar aes para a lcanarmos 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 i mprevisvel de uma ao. Definio: o Ao: um evento que tem um estado inicial, um perodo empo 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 possve l a execuo de uma ao de forma eficiente, os passos devem ser descritos de forma clar a. Um exemplo para um melhor entendimento seria a contagem de de letras de uma p alavra 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 d esses passos necessrios para se realizar uma ao denominado Algoritmo. Algoritmo: um a 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 co nsider-los como algoritmos do nosso cotidiano. 4Projeto E-JOVEM2. Melhorias no Algoritmo: Quando somos encarregados de realizar uma determinada ao sempre tentamos melhorar a forma de execuo dessa ao, buscando talvez a realizao e m tempo menor ou melhorar a qualidade naquilo que se busca. O mesmo se aplica ao s algoritmos, nunca devemos interpret-los como definitivos, sempre podero ser melh orados. Voc deve estar se perguntando por que melhorar um algoritmo? Nem sempre o s algoritmos esto descritos de forma que possam ser compreendidos ou esto gerando resultados no esperados, quando isso acontecer eles devem ser refeitos ou detalha dos 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 Mi sture o Leve ao Forno Voc acha que com essas informaes teramos um bolo ao final? A r esposta no, pois no vou poder fazer um bolo apenas colocando os ingredientes, prec iso definir as medidas dos ingredientes para chegarmos corretamente ao bolo, o n osso algoritmo ficaria melhor da seguinte forma: Adicione os seguintes ingredien tes: o 4- Ovos; o 2 copos e meio de farinha de trigo; o 1 copo de leite; o 2 cop os e meio de acar; o 1 colher de fermento em p; Misture Leve ao Forno por 25 minuto s. Mas ele est perfeito? Provavelmente um cozinheiro profissional poderia melhor-l o. 5Projeto E-JOVEM 2.1 Caractersticas de um algoritmo Definio Exata: Para que um algoritmo seja consid erado exato deve descrever todas as instrues de forma clara e tambm nunca deixar dvi da no que para ser feito. Eficincia: Buscar sempre o menor tempo possvel para a ex ecuo 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. Descrev er todos os mnimos detalhes; 3. Detalhar o problema de forma seqencial. 3. Algorit mo Estruturado: Todo algoritmo deve ser escrito de forma clara e precisa e com i sso muito importante que ele seja escrito seguindo um padro de forma que possa se r 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 p odem 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 PORT UGOL (Pseudo_liguagem criada para tornar o ensino da lgica de programao o mais simp les possvel), segue: 6Projeto E-JOVEM Receita do Bolo: Algoritmo Receita_Bolo Variveis panela,ovos,copo_farinha,copo_ac ucar,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+c opo_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 prim eiro passo no processo de construo de algoritmo; o Anlise: Entender o problema prim ordial para a resoluo do mesmo. o Desenvolvimento da soluo: Desenvolvimento do algor itmo; o Testes: Executar o algoritmo com dados conhecidos para obter um resultad o esperado; o Alteraes: Realizar alteraes buscando sempre a velocidade e qualidade; o Algoritmo Final; 7Projeto E-JOVEM Voc deve estar se perguntando como vou poder testar se meu algoritmo est correto o u no? Existem alguma tcnicas para realizar testes em algoritmo. Abordaremos a tcnic a do Chinesinho Chinesinho: Consiste em executar fielmente o que est escrito no algoritmo, utliza ndo papel e caneta onde anotamos os valores inseridos e modificados pelo program a e ao final da execuo saberemos se o resultado realmente o esperado. Exemplo: Algoritmo Soma Variveis a: inteiro b: inteiro Inicio Escreva Digite o val or de a: Receba a; Escreva Digite o valor de b: Receba b; Fim imprima a+b // ness e momento a = 0 // valor digitado pelo usurio a = 3 // nesse momento b = 0 // val or 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 expre ssar instrues para um computador, atravs da linguagem o programador pode definir pr ecisamente o que o computador ir executar num determinado momento. 8Projeto 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 estru turada; o Linguagem Funcional; o Linguagem de programao lgica; o Linguagem de Progr amao 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. 9Projeto 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 e m 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, p ois esse assunto ser abordado em outro momento. Abaixo temos uma lista das linguagens de programao Orientada a Objetos mais conhec idas no mercado: RUBY PYTHON SMALTALK C++ C# JAVA Por exigir formas de pensar relativamente complexas, a programao orientada a objet os at hoje ainda no bem compreendida ou usada pela maioria. 5. Itens Fundamentais: Para podermos prosseguir com nossos estudos adotaremos al gumas convenes e conjuntos de regras. importante saber que essas regras no so univer sais, mas serviro para facilitar nossos estudos. 10Projeto E-JOVEM5.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 mai s que um valor utilizado pelo algoritmo e que no sofre alteraes no decorrer da exec uo 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 negativa s 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 Fa lso, veremos a melhor utilizao em estrutura condicionais mais adiante. Literal: Po der conter qualquer conjunto de caracteres, letras, nmeros ou smbolos. Como regra u saremos o valor constante entre aspas duplas . Exemplos: a) 20 b) educandus c) e-jovem ) falso (Apesar de Falso ser um valor para constante lgica, um literal por estar en tre aspas ). 11Projeto E-JOVEM 5.2. Variveis: So espaos de memria que so alocados para armazenar informaes, um valor u expresso. 5.3. Por que se precisa de variveis? R: Para armazenar valores que sero utilizados posteriormente. Ex.: em um clculo complexo, resultados intermedirios p odem ser armazenados e posteriormente processados para se obter o resultado fina l. Uma varivel s pode existir quando lhe associada uma nome, chamado de Identificado r. Toda varivel precisa ter um identificador. Os identificadores seguem regras para sua construo, so elas: Pode ser formado por q ualquer caracter; O primeiro caracter dever ser sempre uma letra. No permitido o u so 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 armazen ar 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 lgic as. Declarao de Variveis: para que os programas manipulem valores, estes devem ser arma zenados em variveis e para isso devemos declar-las seguindo um padro: 12Projeto 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 algu mas 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 c lara 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 cod igo, valor_mensalidade NUMERICO; 13Projeto 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 adioObservao: Na operao de multiplicao no se pode omitir o operador * e nem mesmo faze do . XY +B X.Y+B X*Y + B //Errado //Errado // Correto6.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 ap arecerem. 3. Em expresses que contm parnteses, a prioridade resolver as expresses co ntidas 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 exec uo do programa e para evitar a repetio e organizarmos melhor nosso cdigo criamos trec hos de cdigos que podemos chamar de Funo, Subrotina ou Procedimento. Algumas funes: A RREDONDA(arg) TRUNCA(arg) RESTO(arg1,arg2) EXP(arg1,arg2) Obs: Lembre-se que voc poder criar sua prpria funo ou subrotina. 14Projeto E-JOVEMExemplos 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 pro duzem determinado resultado. Na espresso 3 + 2, o 3 e o 2 so operandos e o sinal d e `+' 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 O utra classificao para os operadores quanto ao tipo de dados que manipulam e o valo r resultando de sua avaliao. Operadores Lgicos (booleanos): so operadores para avali ar expresses lgicas e que devolvem como resultado valores lgicos. NO E OU Ex: NO e essao1 Expressao1 E Expressao2 Expressao1 OU Expressao2 //negao // e lgico ou conju no //ou lgico ou disjuno //prioridade 1 //prioridade 2 //prioridade 3 15Projeto 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 par a determinar se uma expresso verdadeira e vlida. Pode mos cheg ar as segui ntes co ncl 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 tenh a resultado verdadeiro necessrio que seus dois operandos tenham valor lgico V. Forma s de representao: 16Projeto E-JOVEM7. Expresses literais Constantes Literais: As constante literais em computao geralm ente so representadas entre aspas duplas ou simples Ex: `Educandus' Variveis Literais: so variveis que assumem valores literais, ou seja, qualquer conjunto de caractere s alfanumricos. EX: A= EDUCANDUS 7.1. Concatenao A concatenao consiste em unir dois va ores, anexando sempre o segundo valor ao final do primeiro Considerao: o Caso um d os valores no seja literal ele ser convertido e o operador para realizar essa oper ao o +. Ex: SOL + DADO = SOLDADO 7.2. Operadores relacionais: so operadores binrios que devolvem valores lgicos, ver dadeiro ou falso. Estes operadores so somente usados quando se deseja realizar co mparaes. Confira abaixo os operadores relacionais. 17Projeto E-JOVEM Exemplos: suponha que X igual a 8: X b) ENTAO ESCREVER (O valor de A:, a); SE (b>c) ENTAO 21Projeto 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 condiciona l: SE () ENTAO SENAO fims e 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 estabele cerem verificaes de condies sucessivas. Quando uma ao executada, ela poder ainda est lecer 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 entendi mento do algoritmo. 22Projeto E-JOVEM Notao estrutura condicional: se () entao senao se () ent ao senao fimse fimse12. Estrutura de repetio determinada: Em vrios momentos, na programao, se torna neces srio repetir um trecho de um programa um determinado nmero de vezes. Nesse caso, p ode ser criado um lao de repetio que efetue o processamento de um determinado trech o, tantas vezes quantas forem necessrias. Os laos de repetio tambm so conhecidos por l oopings. 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 algori s, torna-se necessrio o uso de dois tipos de variveis para a resoluo de diversos tip os de problemas: variveis contadoras e variveis acumuladoras. Variveis contadoras: uma varivel de controle, NUMERICA, que serve para controlar quantas vezes um determ inado 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; ... ... 23Projeto E-JOVEM Variveis contadoras: uma varivel de controle, inteira, que serve para acumular val ores. 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 conh ecemos 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 ESCR EVER (Pas: Brasil); FIM_PARA FIM_ALGORITMO repetio Sintaxe - Forma Geral 2 : para = ate faca fim_para 24Projeto E-JOVEM Exemplo: algoritmo para escrever 10 vezes a frase Pas: Brasil ALGORITMO repetio_2 DEC LARE 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 determ inada os lanos condicionais no sabemos antecipadamente quantas vezes o corpo do lao ser executado. Tipos de Construo: as construes que implementam estruturas de repetio ndeterminadas 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 exec uo 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 25Projeto 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 do for falso os comandos internos do lao condicional no sero executados e o algorit mo ira executar a prxima instruo ao final do lao. Caso o teste apresente resultado erdadeiro o comando interno executado e ao seu trmino retorna-se ao teste da cond io at que a mesma apresente resultado falso os comandos sero executados. Exemplo orma Geral 1: ALGORITMO condicional DECLARE soma, num NUMERICO num = 1; soma = n um; ENQUANTO (soma < 1000 ) faca ESCREVE (num) num = num + 1; soma = soma + num; fim_enquanto FIM_ALGORITMO condicional Exemplo - Forma Geral 2: ALGORITMO condi cional_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 ondicional_2 26o resu v FcProjeto E-JOVEM o Repita - Lao condicional com teste no final; Caracterizado por executar ao meno s uma vez os comandos internos ao lao e no final realizado um teste lgico verifica ndo se permitido ou no executar os comandos internos. Sintaxe: REPITA ATE QUE Nesse tipo de lao a varivel a ser testada pode ser inic ializada 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 inf inito; Semntica: Como j havia falado anteriormente o comando executado uma vez e e m 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 so ma_salario DECLARE soma, salario NUMERICO soma = 0; REPITA LER (salario); Soma = soma + salario; ATE QUE (salario < 0 ) ESCREVER (soma); FIM_ALGORITMO soma_sala rio 27Projeto 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, compo stas, arranjos, tabelas em memria, arrays (do ingls) vetores e matrizes. 15.1. Var iveis compostas homogneas - Unidimensionais: Vetores Os vetores so uma lista de ele mentos do mesmo tipo. Todas as variveis e constantes ocupam um espao em memria. Est e 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 int ervalo de variao dos ndices; // o tipo dos componentes da varivel(numrico, literal, lg co) Obs: O limite superior no deve ser menor que o limite inferior; Exemplo 1: DECLAR E NOTA [1:10] NUMERICO; 28Projeto 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 E SCREVER (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 nec essita de mais de um ndice para ter seus elementos individualizados (ou referenci ados). As variveis compostas multidimensionais mais comuns so as Matrizes e tabela s, onde o primeiro ndice se refere ao numero linha e o segundo ao numero da colun a. Matrizes: A matriz mais comum a de duas dimenses (linha e coluna), por se rela cionar diretamente com a utilizao de tabelas. Trabalharemos somente com matrizes d e 2 dimenses, por serem mais comuns, mas podem ser necessrias, em algum momento, m atrizes de 3 ou mais dimenses. Declarao: DECLARE matriz [1:4,1:3] NUMERICO Onde: Co m essa declarao passa a existir uma matriz 4 x 3 = 12 elementos endereveis por um pa r de ndices, sendo o primeiro linha e o segundo coluna. 29Projeto E-JOVEM 16. Variveis composta Heterogneas - Registros O conceito de registro visa facilita r o agrupamento de variveis que no so do mesmo tipo, mas que guardam estreita relao lg ica. 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 n ascimento 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: D ECLARE cadastro REGISTRO (nome, Literal Cpf NUMERICO Ht[1:3] NUMERICO nascimento NUMERICO tem_dependente LOGICO) DECLARE endereco REGISTRO (rua Literal numero,c ep NUMERICO) O acesso aos dados se da mesma forma como j foi explicado acima do r egistro mais externo, depois o mais interno e finalmente o identificador do comp onente; 30Projeto E-JOVEMAnalise 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 // t ipo de organizao do arquivo que pode ser direta ou seqencial. DE // uma palavra cha ve; // nome do registro que ser usado para ter acesso aos arq uivos. 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 agen da 32Projeto E-JOVEM 17.2. Fechamento do arquivo A seguinte notao deve ser utilizada para desfazer a associao entre o modelo e o arqu ivo 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 D E 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 Fech ar a; Fechar b; Fim algoritmo exemplo_arq Observao sobre o exemplo: 33Projeto E-JOVEM o No h necessidade de se declarar a varivel FDA, j que ela um atributo que est associ ado ao arquivo. O sistema operacional que fica encarregado de atualiz-lo a cada a cesso do arquivo. 18. SubRotina Definio: Consiste numa poro de cdigo que resolve um problema muito espe cfico, parte de um problema maior (a aplicao final). A utilizao das subrotinas nos al goritmos 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 par te de um programa, mantendo o restante cdigo alheio s questes internas resolvidas d entro 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 opera m sobre um conjunto de objetos, que podem ser globais ou locais. Declarao: SUBROTINA nome (lista_de_parametros_formal) Declarao de objetos locais a s ubrotina Comandos da Sub-rotina Fim subrotina Onde, lista_de_parametros_formal : a lista de objetos que sero substitudos por outros objetos. Os parmetros atuais de vem concordar com os parmetros formais. 34Projeto E-JOVEMParmetros de subrotina Classificao dos parmetros de uma subrotina: o De entrada: So a queles 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 P or valor: uma maneira tpica de passar parmetros em funes, quer dizer que a modificao e um parmetro no actualiza o dado da varivel como parmetro, apesar de mudarmos o val or do parmetro dentro da funo, a varivel original no se v afetada pela mudana. o Por r sultado: 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 co 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 id 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: 35Projeto E-JOVEM Exemplo: nome(lista_de_parametros_formais). Ao terminar a execuo dos comandos da f uno, o fluxo de controle retorna ao comando seguinte quele que provocou a chamada. Importante: Subrotinas e Funes so mdulos hierarquicamente subordinados a um algoritm o, comumente chamado de mdulo principal, da mesma forma subrotinas e funes pode con ter outras subrotinas e funes aninhadas veja imagem a seguir: Exemplo exerccio resolvido - exerccio proposto 36Projeto E-JOVEM EXERCCIOS RESOLVIDOS Antes de tudo queremos deixar bem claro para voc aluno que as respostas aqui colo cadas 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. E screver um Algoritmo que receba as 4 primeiras notas e ao final escrever se o al uno passou ou foi reprovado. Para o aluno passar ser necessrio ele atingir uma not a igual ou maior que 6. Resposta: ALGORITMO (Declarao das variveis que armazenaram os valores das notas) DECLARE NOTA 1, NOTA2, NOTA3, NOTA4, MEDIA NUMERICO; LEIA NOTA1, NOTA2, NOTA3, NOTA4; (ler as 4 notas ) MEDIA = ( NOTA1 +, NOTA2, NOTA3, NOTA4) / 4 ; ( Soma as notas e divid e 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 m aior. 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 37Projeto E-JOVEM 3. Escreva um Algoritmo que receba os valores de A e B, se a soma de A+B for mai or 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 d o 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 LEI A C; SOMA = A +B +C; ESCREVA O total de A+ B +C :, SOMA; FIM SE FIM SE FIM ALGORITI MO 4. Escreva um Algoritmo para o problema abaixo: Em uma escola um aluno precisa o bter a media 6 nas 2 primeiras notas para passar de ano.Caso a media das notas s eja inferior a 6 ele ter que fazer a recuperao e obter os pontos restantes para pas sar. 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 RE CUPERACAO; MEDIA = (NOTA1 + NOTA2 + RECUPERACAO) / 3; FIM SE SE ( MEDIA >= 6 ) E NTAO ESCREVA "APROVADO"; 38Projeto E-JOVEM FIM SE SE ( MEDIA < 6 ) ENTAO ESCREVA "REPROVADO"; FIM SE FIM ALGORITMO5. Qual destes no um exemplo de concatenao vlido? A 1 + CLIENTE = UM_CLIENTE b WEB = EducandusWEB c Rua + 14 = Rua 14 d 30 + Km = 30Km e - DES+CONTO = Resposta: 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 qua ntidade 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 to em todos os armazns; 39Projeto E-JOVEM ALGORITMO EXEMPLO1 DECLARE a[1:3], p[1:3], i, j, maior, anterior, custo[1:3], es toque[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 unidimen sional custo do Produto 2 custo[3] = 330.00 // varivel unidimensional custo do Pr oduto 3 estoque[1,1] = 1200 // varivel multidimensional estoque do Produto 1 no A rmazm 1 estoque[1,2] = 3700 // varivel multidimensional estoque do Produto 2 no Ar mazm 1 estoque[1,3] = 3737 // varivel multidimensional estoque do Produto 3 no Arm azm 1 estoque[2,1] = 1400 // varivel multidimensional estoque do Produto 1 no Arma zm 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 E NQUANTO i