Algoritmos - exercicios resolvidos

  • Published on
    30-Jun-2015

  • View
    199.564

  • Download
    2

Embed Size (px)

Transcript

<p>PROJETO E-JOVEM</p> <p>APOSTILA ALGORITMOS</p> <p>Projeto E-JOVEM</p> <p>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</p> <p>3</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>4</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>5</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>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</p> <p>Procedimentos: procedimentos que podem ser utilizados no programa Funes: Funes que podem ser utilizados no programa</p> <p>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:</p> <p>6</p> <p>Projeto E-JOVEM</p> <p>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</p> <p>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;</p> <p>7</p> <p>Projeto E-JOVEM</p> <p>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</p> <p>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.</p> <p>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</p> <p>Como sabemos a soma de 3+2 = 5, ento o conclumos que o algoritmo est correto.</p> <p>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.</p> <p>8</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>Linguagem de programao estruturada: a forma de programar que defende que todos os programas podem ser escritos reduzidos a trs estruturas.</p> <p>4.2. Estruturas: o Seqncia o Deciso o Iterao Abaixo temos uma lista das linguagens de programao estruturada mais conhecidas no mercado:</p> <p>PASCAL CLIPPER C VISUAL BASIC DELPHI</p> <p>Podemos afirmar que a programao estruturada ainda marcantemente influente, uma vez que grande parte das pessoas ainda aprendem programao atravs dela.</p> <p>9</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>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.</p> <p>No vamos nos prolongar no estudo da Programao Orientada a Objetos nesta apostila, pois esse assunto ser abordado em outro momento.</p> <p>Abaixo temos uma lista das linguagens de programao Orientada a Objetos mais conhecidas no mercado:</p> <p>RUBY PYTHON SMALTALK C++ C# JAVA</p> <p>Por exigir formas de pensar relativamente complexas, a programao orientada a objetos at hoje ainda no bem compreendida ou usada pela maioria.</p> <p>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.</p> <p>10</p> <p>Projeto E-JOVEM</p> <p>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 ).</p> <p>11</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>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.</p> <p>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.</p> <p>Declarao de Variveis: para que os programas manipulem valores, estes devem ser armazenados em variveis e para isso devemos declar-las seguindo um padro:</p> <p>12</p> <p>Projeto E-JOVEM</p> <p>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.</p> <p>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.</p> <p>Para evitar isso, devemos sempre comentar nossos cdigos de forma simples e mais clara possvel. Explicando funcionalidades do cdigo.</p> <p>Para fazer uso dessa tcnica basta colocar // e em seguida a frase desejada. Para fazer comentrios em varias linhas use /* contedo */.</p> <p>Exemplos: o Declare codigo NUMERICO //codigo, armazenar um cdigo do tipo numrico.</p> <p>o /* as variveis codigo e valor_mensalidade armazenaro tipos numrico */ Declare codigo, valor_mensalidade NUMERICO;</p> <p>13</p> <p>Projeto E-JOVEM</p> <p>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</p> <p>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</p> <p>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 po...</p>