Informtica
Algoritmos
Marile Patta Daniel Carli Colares e Silva
Ministrio da Educao
e-Tec Brasil/CEMF/Unimontes
Informtica
Algortimos
Marile Patta Daniel Carli Colares e Silva
Reitor Joo dos Reis Canela Vice-Reitora Maria Ivete Soares de Almeida Pr-Reitora de Ensino Anete Marlia Pereira Diretor de Documentao e Informaes Huagner Cardoso da Silva Coordenador do Ensino Profissionalizante Edson Crisstomo dos Santos Diretor do Centro de Educao Profissonal e Tecnlogica - CEPT Juventino Ruas de Abreu Jnior Diretor do Centro de Educao Distncia - CEAD Jnio Marques Dias Coordenadora do e-Tec Brasil/Unimontes Rita Tavares de Mello Coordenadora Adjunta do e-Tec Brasil/ CEMF/Unimontes Eliana Soares Barbosa Santos
AULA 1
Alfabetizao Digital Apresentao e-Tec Brasil/CEMF/ Unimontes
Prezado estudante, Bem-vindo ao e-Tec Brasil/Unimontes! Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007, com o objetivo de democratizar o acesso ao ensino tcnico pblico, na modalidade a distncia. O programa resultado de uma parceria entre o Ministrio da Educao, por meio das Secretarias de Educao a Distancia (SEED) e de Educao Profissional e Tecnolgica (SETEC), as universidades e escola tcnicas estaduais e federais. A educao a distncia no nosso pas, de dimenses continentais e grande diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao garantir acesso educao de qualidade, e promover o fortalecimento da formao de jovens moradores de regies distantes, geograficamente ou economicamente, dos grandes centros. O e-Tec Brasil/Unimontes leva os cursos tcnicos a locais distantes das instituies de ensino e para a periferia das grandes cidades, incentivando os jovens a concluir o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino e o atendimento ao estudante realizado em escolas-polo integrantes das redes pblicas municipais e estaduais. O Ministrio da Educao, as instituies pblicas de ensino tcnico, seus servidores tcnicos e professores acreditam que uma educao profissional qualificada integradora do ensino mdio e educao tcnica, no s capaz de promover o cidado com capacidades para produzir, mas tambm com autonomia diante das diferentes dimenses da realidade: cultural, social, familiar, esportiva, poltica e tica. Ns acreditamos em voc! Desejamos sucesso na sua formao profissional! Ministrio da Educao Janeiro de 2010
Algoritmos
e-Tec Brasil/CEMF/Unimontes
Os cones so elementos grficos utilizados para ampliar as formas de linguagem e facilitar a organizao e a leitura hipertextual.
Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao tema estudado. Glossrio: indica a definio de um termo, palavra ou expresso utilizada no texto. Mdias integradas: possibilita que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos, filmes, jornais, ambiente AVEA e outras. Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa realiz-las e conferir o seu domnio do tema estudado.
Algoritmos
e-Tec Brasil/CEMF/Unimontes
AULA 1 Sumrio
Alfabetizao Digital
Palavra dos professores conteudistas ....................................... 11 Projeto instrucional ........................................................... 13 Aula 1 - Construo do conceito de lgica e de algoritmos ............ 15 1.1 Conceitos bsicos ................................................... 15 Resumo ................................................................... 23 Atividades de aprendizagem ........................................... 23 Aula 2 - Tipos de dados, variveis, expresses matemticas, sintaxes e semnticas ................................................................... 25 2.1 Tipos de dados ...................................................... 25 2.2 Variveis ............................................................. 27 2.3 Expresses, operadores e funes ............................... 31 2.4 Expresses lgicas .................................................. 36 2.5 Prioridade na execuo das expresses ......................... 37 Resumo ................................................................... 37 Atividades de aprendizagem ........................................... 38 Aula 3 - Pseudolinguagem .................................................... 39 3.1 Pseudocdigo ........................................................ 39 3.2 Endentao .......................................................... 40 3.3 Declarao de variveis em pseudocdigo ...................... 40 3.4 Atribuio de valores s variveis ................................ 41 3.5 Entrada de dados ................................................... 41 3.6 Sada de dados ...................................................... 42 Resumo ................................................................... 43 Atividades de aprendizagem ........................................... 44 Aula 4 - Comandos sequenciais .............................................. 45 4.1 Comando sequenciais ............................................... 45 Resumo ................................................................... 52 Atividades de aprendizagem ........................................... 53 Aula 5 - Comandos condicionais ............................................. 55 5.1 Condio Simples e condio composta.......................... 55 5.2 Condio simples: conectivo condicional se... ento .......... 57 5.3 Condio composta: conectivo condicional se... ento seno 58 5.4 Estrutura condicional - Caso ...................................... 62 Resumo ................................................................... 71 Atividades de aprendizagem ........................................... 71 Aula 6 - Estruturas de repetio ............................................ 73 6.1 Iterao .............................................................. 73 6.2 Estrutura de repetio condicional com teste no incio ......... 74 6.3 Comandos repetitivos condicionais com teste no final ........... 78
Algoritmos
e-Tec Brasil/CEMF/Unimontes
6.4 Comandos repetitivos condicionais com contadores ........... 81 Resumo ................................................................... 86 Atividades de aprendizagem ........................................... 87 Aula 7 - Variveis homogneas Vetores e Matrizes ..................... 89 7.1 Vetores................................................................ 89 7.2 Matrizes .............................................................. 93 Resumo ................................................................... 96 Atividades de aprendizagem ........................................... 96 Aula 8 - Ordenao e pesquisa de dados.................................. 101 8.1 Ordenao de Dados ............................................... 101 8.2 Pesquisa de Dados ................................................. 103 Resumo ..................................................................106 Atividades de aprendizagem ..........................................106 Aula 9 - Variveis heterogneas Registros ..............................109 9.1 Registros .............................................................109 Resumo ................................................................. 112 Atividades de aprendizagem .......................................... 113 Aula 10 - Arquivos ............................................................ 115 10.1 Operaes Bsicas ................................................ 115 10.2 Organizao de arquivos......................................... 115 Resumo ................................................................. 118 Atividades de aprendizagem .......................................... 118 Aula 11 - Modularizao: procedimentos e funes ..................... 119 11.1 Modularizao ..................................................... 119 11.2 Variaveis locais e Globais ........................................ 120 11.3 Parmetros ........................................................ 121 11.4 Procedimentos .................................................... 122 11.5 Funo.............................................................. 124 Resumo .................................................................. 127 Atividades de aprendizagem .......................................... 127 Referncias .................................................................... 131 Currculo do professor conteudista ........................................ 132
e-Tec Brasil/CEMF/Unimontes
10
Informtica
Amigo(a) estudante,
A disciplina Algoritmos do curso Tcnico em Informtica prope ao indivduo, o desenvolvimento de competncias e habilidades para a resoluo de problemas nas diversas atividades da rea de Informtica e, como objetivo principal, auxilia o aluno a aplicar o pensamento lgico-matemtico nas atividades de programao de computadores. Assim, ao desenvolver cada unidade de ensino, podemos perceber a importncia do contedo estudado, no s para a disciplina de Algoritmo, mas para as demais disciplinas do curso. Deem devida ateno teoria aqui estudada e resolvam os exerccios de cada unidade. Caro aluno, Algoritmo uma disciplina desafiadora que instiga e encanta quando se obtm o entendimento dos recursos que podem ser utilizados para a resoluo dos problemas computacionais. Refora-se aqui a ideia de que, s se aprende algoritmos resolvendo muitos exerccios.
Bom trabalho e aproveitem seu tempo! Marile Patta Daniel Carli C e Silva
Algoritmos
11
e-Tec Brasil/CEMF/Unimontes
Disciplina: Algoritmos (carga horria: 120 horas). Ementa: Lgica. Variveis e tipos de dados. Pseudolinguagem. Sequncia simples. Estrutura Condicional (simples e composta). Estrutura de repetio. Variveis homogneas. Variveis heterogneas. Registros. Procedimentos. Funes.
AULA 1. Construo do conceito de lgica e de algoritmo 2. Tipos de Dados, Variveis, Expresses Matemticas, sintaxes e semanticas 3. Pseudolinguagem 4. Comandos Sequenciais 5. Comandos Condicionais 6.Comandos de repeties Iteraes 7. Variveis homogneas: vetores e matrizes 8. Variveis Heterogneas: Registros e arquivos 9. Procedimentos e Funes OBJETIVOS DE APRENDIZAGEM - Entender o pensamento lgico e perceber a sua aplicao nos problemas cotidianos; - Aplicar a lgica para produzir detalhamento de comandos computacionais. - Conhecer o conceito de variveis e quais so os tipos de dados bsicos; - Definir e compreender o uso de variveis; - Aplicar o uso de expresses e operadores; - Compreender, identificar e aplicar a sintaxe e a semntica. Conhecer a pseudolinguagem utilizada na construo de algoritmos para ser aplicada em qualquer linguagem de programao. Entender a estrurao sequencial dos comandos escritos na pseudolinguagem. Compreender e aplicar as possibilidades de testes condicionais simples e compostos. Compreender e aplicar as possibilidades de produzir laos de comandos repetitivos. - Utilizar variveis que podem armazenar vrios contedos ao mesmo tempo na memria; - Utilizar ndices para acesso aos dados das variveis. Utilizar variveis que podem armazenar persistentemente tipos distintos de dados. Dividir o algoritmo em mdulos, funes e procedimentos. MATERIAIS CARGA HORRIA 5h
10 h
5h
5h
5h
20 h
20 h
20 h
20 h
Algoritmos
13
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetizao Digital Aula 1 - Construo do conceito de lgica e de algoritmos
Objetivos
- Entender o pensamento lgico e perceber a aplicao do mesmo nos problemas cotidianos; - Aplicar a lgica para produzir detalhamento de comandos computacionais.
1.1.1 Lgica
Toda vez que voc vai resolver um determinado problema, usa o pensamento lgico de forma intuitiva. Por exemplo, quando vai atravessar a rua, o que voc pensa? Um modelo de pensamento lgico pode ser: se vier carro do lado direito ou do lado esquerdo, ento espero os carros passarem. Ainda assim, volta a conferir se a rua est mesmo liberada em ambos os lados para que ande, de forma segura, at o outro lado da rua e suba no passeio. Se no for assim, continua esperando, at que as condies para atravessar a rua sejam propcias. Talvez voc pense: isso lgico !!! Assim, podemos formular os seguintes passos: Se vem carro do lado direito e do lado esquerdo da rua, ento espero. Seno, atravesso.
Mas o que voc tem que perceber que esse pensamento possui vrias inferncias nas quais voc se informa com as vises possveis para detectar se pode tomar a deciso e, portanto, executar a ao.
Algoritmos
15
e-Tec Brasil/CEMF/Unimontes
Em geral, as pessoas dizem: isso lgico, lgico que tenho conhecimento, ou ainda, lgico que isso no daria certo. Mas o que lgica, afinal? Voc pode responder? Bem, vamos mostrar a origem da palavra lgica. Ela vem do grego clssico - - logos, que significa palavra, pensamento, ideia, argumento, relato, razo lgica ou princpio lgico. A Lgica foi criada pelo filsofo grego Aristteles no sculo IV a.C. para estudar o pensamento humano e distinguir interferncias e argumentos certos e errados. A Lgica uma cincia de ndole matemtica, fortemente ligada Filosofia. tambm a designao para o estudo de sistemas prescritivos de raciocnio, ou seja, sistemas que definem como se deveria realmente pensar para no errar, usando a razo, dedutivamente e indutivamente. Todo homem morre Joo homem Portanto, Joo morre O ferro conduz eletricidade O ferro metal O ouro conduz eletricidade O ouro metal O cobre conduz eletricidade O cobre metal Logo: os metais conduzem eletricidade. Observamos que a induo pode trazer resultados falsos. Veja o exemplo abaixo: O cavalo, o burro e a mula so quadrpedes. O cavalo, o burro e a mula so mamferos. Logo: Todos os mamferos so quadrpedes. Muito bem! Agora que voc j sabe o que lgica e a aplicao da mesma nos problemas cotidianos, vamos refletir: qual a relao entre a lgica e o algoritmo?
Um sistema lgico um conjunto de axiomas e regras de inferncia que visam representar formalmente o raciocnio vlido, dedutivo ou indutivo. O pensamento dedutivo se caracteriza por apresentar concluses que devem, necessariamente, ser verdadeiras caso todas as premissas sejam verdadeiras. J o pensamento indutivo significa partir de premissas particulares na busca de uma lei geral, universal. Vamos mostrar um exemplo de pensamento dedutivo e outro de pensamento indutivo.
Podemos ento concluir que a Lgica a cincia das formas do pensamento. A Lgica estuda a correo do raciocnio, visto que ele a forma mais complexa do pensamento. Podemos dizer que a Lgica visa ordem da razo, isto , a razo pode funcionar desordenadamente e a lgica estuda e ensina a colocar ordem no pensamento.
1.1.2 Algoritmos
Voc j ouviu falar de algoritmos??? No!!! Voc usa algoritmos todos os dias! Pense bem! Como fazer para fritar um ovo? Passo 1) V at a geladeira Passo 2) Se a porta estiver fechada, ento abra Passo 3) Pegue o ovo
e-Tec Brasil/CEMF/Unimontes
16
Informtica
Passo 4) Feche a geladeira Passo 5) Pegue a frigideira Passo 6) Pegue o leo Passo 7) Pegue o sal Passo 8) Coloque a frigideira no fogo e ascenda o fogo Passo 9) Coloque o leo e o sal na frigideira Passo 10) Espere esquentar Passo 11) Quebre o ovo batendo-o na beira da frigideira e coloque dentro da mesma Passo 12) Espere tostar o ovo por baixo Passo 13) Vire o ovo Passo 14) Tire o ovo da frigideira e coloque num prato (prato????) Voc pegou o prato?? Onde estava??? Passo 15) Desligue o fogo ........ Agora com voc!!! Relacione os passos detalhados para se obter um ovo frito. Assim, pode-se entender que algoritmo um conjunto de aes detalhadas, devidamente pensadas de forma lgica, visando obter um resultado final. A prtica do desenvolvimento do algoritmo resulta no aprimoramento do raciocnio lgico, que indica, logicamente, como cada tarefa realmente executada, passo a passo. Mas, qual seria a relao existente entre algoritmos e a lgica de programao? Ns usamos a lgica para a construo dos passos finitos que so designados a resolver um determinado problema. Assim, para construir algoritmos temos que pensar de forma lgica. D exemplos de algoritmos que voc utiliza para resolver seus problemas. E pra que serve a lgica de programao ??? Vamos responder mais adiante a essa questo. Voc j ouviu falar de automao? Voc se lembra o que automao? Vivemos num mundo em que automao se torna presente na nossa vida. Quando necessitamos realizar uma transferncia bancria, da nossa casa, podemos usar um computador com acesso internet, e entrar no site do banco, e realizar a transferncia de valores de uma conta para outra. Assim, podemos perceber que todas as transaes bancrias, como depsitos, verificao de saldos e extratos, aplicao financeira, etc., so frutos do processo de automao bancria.
Farrer et al. (1999) mostram que Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes.
Para SALIBA (1993), Automao um processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, no importando se estas mquinas so mecnicas ou eletrnicas
O objetivo maior da automao que o resultado de uma tarefa possa ser conhecido ou obtido vrias vezes no mesmo intervalo de tempo e com a mesma qualidade.
Algoritmos
17
e-Tec Brasil/CEMF/Unimontes
Voc percebe a automao em outras atividades? Vamos refletir como as reas abaixo relacionadas se inserem na automao: 1) Medicina 2) Educao 3) Governo 4) Comrcio 5) Indstrias 6) Polcia 7) Hospitais 8) etc...
Faa uma pesquisa e descubra em quais cursos a disciplina de algoritmos ministrada. Divulgue no AVEA.
Assim, para que a automao seja possvel, devemos entender o que processamento de dados
Assim, para se obter a sada diferente da entrada, devemos submeter os dados a um processo de transformao. Lembre-se, todo processamento transforma os dados.
Vamos relembrar o exemplo do clculo da mdia descrito anteriormente. Quais seriam os dados de entrada? Quais seriam os dados de sada? Assim, se a turma tem 100 alunos que possuem notas, as notas dos 100 alunos seriam a entrada de dados. Observe o trecho do algoritmo que trata da entrada de dados: ...... Ler nota.aluno1 Ler nota.aluno2 Ler nota.aluno 3 ....., Ler nota. aluno 100 Observe o trecho do algoritmo que trata do processamento: Soma = soma + nota.alunoxx
e-Tec Brasil/CEMF/Unimontes
18
Informtica
Observe o trecho do algoritmo que trata da sada de dados Imprima (A Mdia da turma =, soma/ 100) Assim, a lgica de programao aplicada para submeter os dados a aes que os transformam de dados de entrada, para dados de sada. Nos processos diversos de automao, quando se utiliza computadores e sistemas computacionais para auxiliar ou desenvolver determinadas tarefas, o que se pretende produzir informao suficiente aos usurios para as suas tomadas de deciso. Assim, podemos dizer que o dado a matria-prima da informao, ou seja, a informao composta de um conjunto organizado de dados. O dado puro e simples no carrega obrigatoriamente nenhum carter informativo. Porm, aquele dado com carter informativo pode se confundir com a informao. Com base em suas reflexes, cremos que j possvel voc descrever alguns exemplos de dados e de informao.
Quando os dados de sada trouxeram algum significado ao receptor, mudando seu estado de conhecimento e dando a ele condies de decidir, ento, o que se produziu foi informao.
A palavra informao vem do latim informatio, onis, (delinear, conceber ideia) que deve atribuir dar forma til, significado ao(s) dado(s). Instruo pode ser considerada um conjunto de regras ou normas definidas para a realizao de uma tarefa. Em informtica, instruo a informao que indica a um computador uma ao elementar a executar.
Algoritmos
19
e-Tec Brasil/CEMF/Unimontes
o o o o
3 1 2 1
da da da da
INCIO Ando at a porta; Se a porta est fechada ento abro a porta Seno saio e fecho Fim se; Se alunos fora da sala ento aguardo a entrada dos alunos em sala Incio os trabalhos Fim. Vamos agora analisar um algoritmo genrico escrito em uma pseudolinguagem (a pseudolinguagem ou pseudocdigo ser estudado na unidade 3):
e-Tec Brasil/CEMF/Unimontes
20
Informtica
INCIO LEIA (o problema proposto); ENQUANTO no houver entendimento FAA LEIA (o problema proposto); FIM ENQUANTO; Desenvolver raciocnio; ENQUANTO raciocnio no finalizado FAA Desenvolver raciocnio; FIM ENQUANTO; Testar a soluo implementada; ENQUANTO no fim de teste FAA Teste a soluo proposta; FIM ENQUANTO; SE a soluo estiver correta ENTO mostra a soluo; SENO mostra relatrios de erros; FIM SE; FIM.
Pode-se perceber que um dos maiores desafios enfrentados, para a construo de algoritmos, a interpretao de textos. Geralmente no se conseguem textos objetivos de forma a elucidar o problema em questo. H tambm redundncias, controvrsias, falta de conhecimento sobre o assunto, e demais problemas existentes no processo de comunicao.
Algoritmos
21
e-Tec Brasil/CEMF/Unimontes
Nos casos descritos, a seguir, nos prximos tpicos, por exemplo, voc precisar interpretar o texto para identificar os elementos necessrios sua resoluo. Portanto, exercite a leitura e ver como isso poder ajud-lo no somente em informtica, mas em todas as reas do conhecimento, ok? Na descrio narrativa, podemos observar trs tipos de resolues de problemas: sequencial, condicional e repetitiva. Vamos pensar num exemplo bastante simples. Para ilustrar a resoluo sequencial de problemas, inicialmente vamos pensar numa criana atravessando a rua em companhia de seu pai: 1. pai pega a mo da criana 2. pai caminha com a criana at o outro lado da rua Para ilustrar a resoluo condicional, agora vamos pensar numa criana atravessando uma rua em companhia de seu pai, considerando a possibilidade de estar no colo: 1. Se a criana de colo ento a. pai pega a criana no colo b. pai caminha com a criana no colo at o outro lado da rua 1. seno a. pai pega d a mo para a criana b. pai caminha com a criana at o outro lado da rua Por fim, para ilustrar a resoluo repetitiva de problema, vamos pensar num grupo de crianas atravessando a rua em companhia de um responsvel, considerando a possibilidade de estar no colo: 1. Enquanto ainda existir criana para atravessar a rua 2. Se a criana de colo ento c. pai pega a criana no colo d. pai caminha com a criana no colo at o outro lado da rua 3. seno a. pai pega d a mo para a criana b. pai caminha com a criana at o outro lado da rua 4. pai volta para o outro lado da rua.
e-Tec Brasil/CEMF/Unimontes
22
Informtica
Resumo
Chegamos ao final desta unidade, em que voc teve a oportunidade de identificar o que Lgica e a sua importncia para se aprender algoritmo. Voc estudou o conceito de algoritmo e automao. Pde verificar o que dado e informao, e a relao entre esses dois conceitos, enfatizando os dados de entrada e de sada. Percebeu como importante entender o problema em geral e seus componentes. Assim, pode compreender o que Processamento de Dados e em que a lgica de programao influencia no mesmo. Alm disso, pde entender o que instruo e como as instrues podem ser organizadas: sequencial, condicional e repetitiva. Voc deve ter percebido, pelo estudo desta unidade, que falamos um pouco sobre os conceitos bsicos que envolvem as tcnicas de programao. So noes que precisam ser compreendidas de modo significativo para uma futura compreenso de toda a lgica envolvida nos processos de programao na rea da Informtica. Bem, agora que voc j teve contato com as primeiras conceituaes, podemos dar um passo adiante! Realmente, esperamos que nossa conversa nesta unidade tenha fornecido a voc os subsdios mnimos para continuidade do trabalho! Mas, se ainda restam dvidas, leia esta unidade quantas vezes julgar necessrio. Lembre-se sempre de que voc capaz! Vamos para a unidade II!
Atividades de aprendizagem
1) Como vimos na primeira unidade, a lgica vem da Filosofia e considerada a base para a construo de algoritmos e assim propor solues para problemas computacionais. Mostre como a Filosofia auxilia na aplicao da lgica de programao.
5) Quais as atividades que compem o processamento de dados? Crie um exemplo que retrate tais passos.
Algoritmos
23
e-Tec Brasil/CEMF/Unimontes
e-Tec Brasil/CEMF/Unimontes
24
Informtica
AULA 1
Alfabetizao Digital Aula 2 - Tipos de dados, variveis, expresses matemticas, sintaxes e semnticas
Na unidade anterior, mostramos a voc os conceitos bsicos para o ingresso ao processo de resoluo de problemas enfatizando o raciocnio lgico. Para ingressar nas atividades de desenvolvimento de algoritmos com o uso de pseudocdigo, nesta unidade, voc ter contato com conceitos de tipos de dados, variveis e expresses matemticas.
Assim, por meio do estudo desta unidade, esperamos que voc seja capaz de: Compreender o que so e quais so os tipos de dados bsicos; Definir e compreender o uso de variveis; Conhecer a definio e o correto uso de expresses e operadores; Compreender, identificar e aplicar sintaxe e semntica.
Algoritmos
25
e-Tec Brasil/CEMF/Unimontes
144 um nmero inteiro positivo 0 um nmero inteiro - 4 um nmero inteiro negativo Os dados de tipo Real so aqueles que podem possuir componentes decimais ou fracionrios, podendo tambm ser positivos ou negativos. Vamos pensar.... Bem, agora vejamos... Podemos citar como exemplos de dados de tipo real: 144.01 um nmero real positivo com duas casas decimais 180. um nmero real positivo com zero (nenhuma) casa decimal - 16.9 um nmero real negativo com uma casa decimal 0.0 um nmero real com uma casa decimal 0. um nmero real com zero (nenhuma) casa decimal.
importante observar que h uma diferena entre 0, que um dado do tipo inteiro, e 0. ou 0.0, que so dados do tipo real. Portanto, a simples existncia do ponto decimal serve para diferenciar um dado numrico do tipo inteiro de um tipo real.
Voc sabe dizer alguns exemplos relativos ao tipo de dados numrico? Podemos citar, por exemplo: Matricula do aluno Salrio Quantidade de material em estoque Nmero de filhos Mdia da turma Etc... Agora com voc!!! Em frente de cada exemplo citado, classifique como inteiro ou real.
e-Tec Brasil/CEMF/Unimontes
26
Informtica
plo: M) com o uso de aspas simples e um conjunto de caracteres, chamado de String (por exemplo: Oi, estou no e-tec Brasil) com o uso de aspas duplas. Voc sabia que na Linguagem C e Java h essa diferena? O dado do tipo literal possui um comprimento dado pelo nmero de caracteres nele contido. Veja os exemplos: 1)QUEM ? - Literal de comprimento 6 2)QUEM ? - Literal de comprimento 5 3) - Literal de comprimento 1 4)mp@unimontes.br - - Literal de comprimento 15 5)4+5-1= - Literal de comprimento 6 6) 1 - Literal de comprimento 1 Podemos citar, por exemplo: Nome do aluno Endereo Nome do produto Descrio do produto Etc...
No se confunda ao analisar os exemplos 5 e 6. Se o contedo estiver entre aspas num dado do tipo literal, ento, no importa se composto de nmeros, letras, caracteres especiais. um dado do tipo literal.
bom lembrar que o dado do tipo lgico serve como dado de controle, um sinalizador para que o algoritmo execute ou no um conjunto de instrues. Voc sabe dizer alguns exemplos relativos ao tipo de dados do tipo logico? Impresso s/n Processado s/n Encontrado s/n
Ele chamado por alguns de tipo booleano, devido contribuio do filsofo e matemtico ingls George Boole na rea da lgica matemtica.
2.2 Variveis
Uma varivel um local na memria RAM (Randomic Access Memory) do computador, um endereo que armazena um contedo do tipo numrico, literal ou lgico para o processamento dos dados. Por que se chama varivel?
Faa uma pesquisa e descubra se existe relao matemtica entre os conceitos dos tipos de dados numricos e d a sua opinio. Discuta com seus colegas no AVEA.
Algoritmos
27
e-Tec Brasil/CEMF/Unimontes
A cada novo processamento submetido, os valores de contedos dos espaos de memrias sofrem alteraes. A cada novo processamento, o espao de memria alocado para o armazenamento de variveis, passa a ter um novo contedo. Uma vez definidos o nome e o tipo de uma varivel, no podemos alter-los no decorrer de um algoritmo. Por outro lado, o contedo da varivel um objeto de constante modificao no decorrer do programa, de acordo com o seu fluxo de execuo. Para facilitar a programao, permitido que se atribua nome a esse endereo e esse nome definido como varivel. Assim, podemos criar as variveis com os seus contedos como a seguir: A = 2; B = A; A = A + B; C = D * F; Contador = Contador + 1; Num = 0; Para atribuir valores a uma varivel, usaremos o smbolo de atribuio ou := ou =, como mostram o exemplos a seguir. Nos trs primeiros casos, a varivel A recebe o contedo da varivel B. Nos quarto e quinto exemplos, a varivel B recebe o resultado da expresso matemtica. 1) A B; 2) A = B; 3) A := B; 4) B C * 2 + 1; 5) B = C * 2 + 1; Quando formos dar nome s variveis, faz-se necessrio seguirmos algumas regras: O primeiro caractere uma letra; Se houver mais de um caractere, s poderemos usar: letra ou algarismo; Nomes de variveis escritas com letras maisculas sero diferentes de letras minsculas; Nenhuma palavra reservada ferramenta (linguagem de programao) poder ser usada como nome de uma varivel; Procure dar nomes representativos para a varivel. Lembre-se de que ao ler seu nome, importante saber o que ela contm. bom ressaltar que o algoritmo tem uma estrutura bem definida, como a seguir:
e-Tec Brasil/CEMF/Unimontes
28
Informtica
Incio Declarao de variveis Inicializao de variveis Procedimento lgico Entradas Processamento Exibio dos resultados Fim Voc pode perceber que as variveis so definidas no incio, pois isso permite a alocao (reserva) de uma rea na memria (endereo) para a varivel. Outro objetivo da declarao de variveis que, aps a declarao, o algoritmo sabe os tipos de operao que cada varivel pode realizar. Algumas operaes s podem ser realizadas com variveis do tipo inteiro. Outras s podem ser realizadas com variveis dos tipos inteiro ou real, e outras s com variveis de caractere, entre outras que sero vistas.
Algoritmos
29
e-Tec Brasil/CEMF/Unimontes
Assim, devemos retirar das especificaes, quais dados sero produzidos, quais so as entradas necessrias e quais so as variveis temporrias utilizadas para auxiliar o processamento. Que tal observarmos alguns exemplos para tornar ainda mais clara essa ideia? Vamos l... Problema 1 Faa um algoritmo que escreva o valor total da compra composta de produtos com cdigo, quantidade e preo de oito produtos. Inteiro: cdigo; Real: quantidade, preo, valor total; Caractere: nome.produto; Problema 2 Faa um algoritmo que apure o valor da multa, caso o cliente faa o pagamento em atraso. Real: valor.conta, taxa.multa, valor.multa, valor.total; Problema 3 Um motorista percorre uma rota em km. Ao chegar ao seu destino, a empresa deseja saber a quantidade de metros percorridos na viagem. Real: km, Metros; Voc pode observar que a identificao de variveis e de seus tipos , na maioria das vezes, um trabalho muito fcil, pois basta identific-los no enunciado. O que ocorre tambm com grande frequncia a identificao de algumas variveis necessrias apenas durante a resoluo do algoritmo, mas isso no problema. Ao perceber a necessidade de tais variveis, elas devem ser inseridas lista j existente, relacionando-as ao seu tipo respectivo. Assim, ao utilizarmos a pseudolinguagem Portugol, temos 4 tipos primitivos de variveis. So eles:
Faa uma pesquisa para investigar se h algum software que faa o mapeamento de variveis em tempo de execuo de um processo algortmico. Inseria os resultados no AVEA e discuta com seus colegas.
Inteiro qualquer nmero inteiro negativo, nulo ou positivo. Ex: 2 , 5, -4, 0; Real qualquer nmero real negativo, nulo ou positivo. Ex: -5, 30.5, 0, 40; Caractere qualquer conjunto de caracteres alfanumricos. Ex: Joo, xyz, manga, a122; Lgico conjunto de valores falso ou verdadeiro. Ex: sim ou no, 1 ou 0.
e-Tec Brasil/CEMF/Unimontes
30
Informtica
Algoritmos
31
e-Tec Brasil/CEMF/Unimontes
Mas, preste ateno !!! Todas as operaes internas aos parnteses so primeiramente executadas. Depois obedecida a ordem de prioridade dos operadores aritmticos.
A prioridade entre operadores define a ordem em que eles devem ser avaliados dentro de uma mesma expresso. Quando h dois ou mais operadores de mesma prioridade em uma expresso, a execuo se d da esquerda para a direita. Observe as expresses abaixo: 1) A * B * C / (D*E*F) 2) A*B/C*D/E*F 3) A**B**C 4) A/B/C/D 5) X> Y ou Q 6) A+B < C (A*B*C)/(D*E*F) (((A*B)/(C*D)/E)*F (A**B)**C ((A/B)/C)/D (A>Y) ou Q (A+B) < C
Vamos atribuir valores s variveis: A= 2, B= 4, C= 2, D=8, E = 4, F = 2. Vamos substituir as variveis pelos seus respectivos valores tanto na primeira como na segunda expresso, segundo o exemplo apresentado em 1, como mostra o quadro 2.
QUADRO 2 Exemplo de prioridade de execuo Prioridade de Execuo A * B * C / (D*E*F) (D*E*F) A*B*C 16/64 Prioridade de Execuo (A*B*C)/(D*E*F) (A*B*C) (D*E*F) 16/64
Fonte: Prpria.
Podemos observar que no exemplo estudado anteriormente, no houve alterao nos resultados. Bem, vamos continuar nossa analise. Vamos substituir as variveis pelos seus respectivos valores (A= 2, B= 4, C= 2, D=8, E = 4, F = 2) tanto na primeira como na segunda expresso, segundo o exemplo apresentado em 2, como mostra o quadro 3.
e-Tec Brasil/CEMF/Unimontes
32
Informtica
QUADRO 3 Exemplo de prioridade de execuo Prioridade de Execuo A*B/C*D/E*F A*B 8/C 4*D 32/E 8*F Prioridade de Execuo (((A*B)/(C*D)/E)*F (A*B) (C*D) 8/16 0.5/E 0.125*F
Fonte: Prpria.
Agora com voc !! As expresses acima se diferenciam em funo dos parnteses inseridos em seus termos. Atribua valores diferentes dos anteriormente apresentados s variveis da primeira e da segunda coluna e verifique o que acontece com os resultados.
Veja bem. Em funo dos parnteses inseridos na segunda expresso do exemplo, os resultados foram drasticamente alterados.
Algoritmos
33
e-Tec Brasil/CEMF/Unimontes
Vamos agora passar a voc alguns exemplos de operadores relacionais, como mostra o quadro 6.
QUADRO 6 Exemplos de operadores relacionais Exemplo A<>B A<>B X=1 X=1 7>6 6<8 1<=y 1<=y 1<=y 4 >= w 4 >= w 4 >= w Y=1 Y=2 Y=0 W=4 W=3 W=5 Valor A= 3 e B = 4 A= 3 e B = 3 X=2 X=1 Questionamento A diferente de B? A diferente de B? X = 1? X = 1? 7 > 6? 6 < 9? 1 menor ou igual a y? 1 menor ou igual a y? 1 menor ou igual a y? 4 maior ou igual a W? 4 maior ou igual a W? 4 maior ou igual a W? Resultado verdadeiro Falso falso verdadeiro verdadeiro verdadeiro verdadeiro verdadeiro falso verdadeiro verdadeiro falso
e-Tec Brasil/CEMF/Unimontes
34
Informtica
2.3.4 Funes
Funo nada mais do que um algoritmo j desenvolvido que pode ser utilizado como parte de outro algoritmo. Assim, podemos utilizar as seguintes funes, como mostra o quadro 7.
QUADRO 7 Funes Operador Raiz (x) ou SQRT (x) Sen (x) Cs (x) Tg (x) Arctg(x) Abs(x) ou sinal (x) Int (x) Mod (A,B) Div (A,B) Exp(x) Random(x) Descrio Raiz quadrada de x Seno de x Cosseno de x Tangente de x Arco tangente de x Valor absoluto de x Parte inteira de x Resto da diviso de a por B Quociente da diviso de A por B Expoente de x Calcula valor randmico entre 0 e x
Para um melhor entendimento, vamos utilizar as funes e buscar identificar seus resultados. Vamos supor que temos duas variveis x e y, com valores 5 e 2 respectivamente. Ao aplicar s funes, qual seria o valor de sada?
A = sen (x) B = Cs (y) C = Arctg (y+x) D = Abs (x) E = int(5,34) F = Mod (x,y) G = Div (x,y)
Veja o que aconteceu: A = sen (5) B = Cs (2) C = Arctg (7) D = Abs (5) E = int(5,34) F = Mod (5,2) = 1 G = Div (5,2) = 2
Agora com voc. Pense em outros valores para as variveis e as substitua para obter os resultados das funes, como fizemos juntos na atividade anterior.
Algoritmos
35
e-Tec Brasil/CEMF/Unimontes
As expresses lgicas so aquelas cujo resultado da avaliao um valor do tipo lgico podendo ser Verdadeiro ou Falso. Para descrever as expresses lgicas, devemos usar os operadores lgicos estudados na seo 2.3.2. Para tratar expresses lgicas, vamos recorrer lgica matemtica, na qual a proposio vista como todo o conjunto de palavras ou smbolos que exprimem um pensamento de sentido completo. Podemos citar como exemplo de proposio: a) A Lua um satlite da terra. b) Recife a capital de Pernambuco. c) 2 8.
3
Chama-se proposio composta ou proposio molecular aquela formada pela combinao de duas ou mais proposies
A lgica matemtica (assim como a que veremos para algoritmos) adota como regras fundamentais do pensamento os dois seguintes princpios: a) Princpio da no contradio: uma proposio no pode ser verdadeira e falsa ao mesmo tempo; b) Princpio do terceiro excludo: toda a proposio ou verdadeira ou falsa, isto , verifica-se sempre um destes casos, e nunca um terceiro. Os exemplos a seguir mostram a voc a proposio composta ou molecular: a) Carlos careca e Pedro estudante. b) Carlos careca ou Pedro estudante. c) Se Carlos careca, ento infeliz. Quando pensamos, efetuamos, muitas vezes, certas operaes sobre proposies, chamadas operaes lgicas, quais sejam: a) Negao Chamamos negao de uma proposio p, a proposio representada por no p, cujo valor lgico a verdade quando p falsa, e a falsidade quando p verdadeira. Assim no p tem o valor lgico oposto daquele de p; b) Conjuno Chamamos conjuno de duas proposies p e q a proposio representada por p E q, cujo valor lgico verdade quando as proposies p e q so ambas verdadeiras, e falsa nos demais casos; c) Disjuno Chama-se disjuno de duas proposies p e q a proposio representada por p OU q cujo valor lgico a verdade quando ao menos uma das proposies p e q verdadeira, e a falsidade quando as proposies p e q so ambas falsas. Os operadores lgicos tambm so chamados de operadores booleanos
e-Tec Brasil/CEMF/Unimontes
36
Informtica
Suponha duas perguntas feitas a quatro pessoas que se candidataram a uma entrevista de emprego de programador. As respostas s perguntas sero Sim ou No. Suponha tambm que s ser chamado para a entrevista o candidato que responder Sim s duas perguntas, como mostra a tabela verdade constante no Quadro 8.
QUADRO 8 Tabela verdade caso entrevista Candidato Patrcia Joelmo Valdir Santos Conhece linguagem C? Sim Sim No No Conhece l inguagem Pascal? Sim No Sim no Candidato Aprovado para entrevista Sim No No No
SINTAXE: So regras gramaticais de formao de sentenas/ asseres vlidas ou gramaticalmente corretas; SEMNTICA: a associao das asseres ao significado, permitindo sua interpretao.
Sintaxe e Semntica
Para finalizar o estudo desta unidade, vamos estudar os aspectos da sintaxe e da semntica. Portanto, a linguagem utilizada para a lgica de programao possui sintaxe e semntica, ou seja, regras para formao dos comandos e o significado delas quando no momento de execuo dos mesmos.
Resumo
Para o embasamento do aprendizado de algoritmos, o contedo estudado de grande relevncia. Foram aqui apresentados conceitos e exemplos de tipos de dados possveis de uso em nossos pseudocdigos, conceitos
A sintaxe de uma linguagem expressa regras que devem ser obedecidas para atingir determinado resultado, fazendo uso dela. E a semntica representa o contedo das palavras da linguagem, permitindo assim uma interpretao correta do texto escrito com determinada linguagem.
Algoritmos
37
e-Tec Brasil/CEMF/Unimontes
e regras para uso de variveis, alm de uma introduo sobre expresses e operaes. Na parte de expresses lgicas, voc pode verificar uma pequena demonstrao sobre suas operaes. Todos esses conceitos sero utilizados nas prximas unidades. Da a relevncia de uma releitura, caso ainda restem dvidas. Encerramos esta unidade por aqui, esperando, claro, que esses conceitos e exemplos tenham ajudado a voc a compreender ainda mais as etapas da programao. Mas ainda temos um longo caminho. Vamos em frente!
Atividades de aprendizagem
1) Qual o conceito de domnio de dado? 2) Liste e explique os tipos de dados que podem ser usados na pseudolinguagem. 3) Um supermercado trabalha com o controle de vendas de seus produtos. Para tal, necessrio armazenar dados como o cdigo do produto, descrio, unidade, preo unitrio de venda. Relacione os dados aos seus tipos. 4) Os dados do tipo lgico podem conter apenas dois valores: verdadeiro ou falso. Pense numa aplicao que deve conter um dado do tipo lgico. 5) Qual o conceito de varivel? 6) O tipo e o nome da varivel no podem ser alterados quando o algoritmo entrar em execuo. Justifique. 7) Relacione as regras de composio de nome de variveis. 8) Faa uma distino entre operadores aritmticos, lgicos e relacionais. 9) Quais os recursos podem ser utilizados para se criar uma expresso lgica? 10) Qual a ordem de prioridade de execuo de comandos em uma expresso computacional?
e-Tec Brasil/CEMF/Unimontes
38
Informtica
Para facilitar o desenvolvimento do raciocnio lgico e a aplicao da lgica de programao em qualquer linguagem de programao, vai ser introduzida, na pseudolinguagem, uma linguagem de programao hipottica, muito usada em todo o mundo. Para voc, importante, pois utiliza o idioma nativo, no nosso caso a Lngua Portuguesa, e algumas regras sintticas. Por meio de exemplos, voc ter contato com a representao de algoritmos recorrendo a pseudocdigos. Abordaremos tambm os pseudocdigos com estruturas condicionais e faremos breve comentrio sobre funes.
possa: Assim, esperamos que, ao final da leitura desta unidade, voc Conhecer e entender pseudocdigos; Compreender a importncia da endentao; Saber atribuir valores iniciais as variveis; Saber utilizar as instrues Leia e Escreva.
3.1 Pseudocdigo
Voc sabe o que pseudocdigo? O pseudocdigo a escrita, por meio de regra predefinida, dos passos a serem seguidos para a resoluo de um problema. o resultado da anlise e resoluo de um problema exposto em um enunciado. Para transformar o algoritmo em uma linguagem de programao, basta ter o conhecimento do vocabulrio e regras sintticas da linguagem/idioma desejado.
Para Saliba (1993), pseudocdigo uma forma para representao de algoritmos rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que programas so escritos, encontra muita aceitao.
Algoritmos
39
e-Tec Brasil/CEMF/Unimontes
Estrutura bsica para um pseudocdigo Algoritmo <nome> Variveis <lista> incio <bloco de instrues> fim. Algoritmo o incio de um novo programa. Seu nome fornecido pelo programador e deve representar o seu objetivo. Variveis Todas as variveis utilizadas no programa devem ser definidas de acordo com o seu respectivo tipo. Incio - O processamento do programa iniciado. O bloco de instrues se refere aos comandos que daro resoluo ao problema. Fim O fim do programa deve ser informado, assim como foi informado o incio.
Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.45).
A seguir, voc observar um algoritmo, retratando as estruturas bsicas do pseudocdigo: Algoritmo E-tecBrasil Variveis Incio Escreva Hei, voc participa do E-tec Brasil Fim
3.2 Endentao
Para formatar o programa e dar uma viso de quais comandos esto sob coordenao de quais outros, usa-se a endentao, tendo como finalidades principais: - melhorar a legibilidade; - facilitar a manuteno; - facilitar a identificao do erro lgico durante a execuo. Observe que no pseudocdigo anterior, a instruo Escreva est endentada e, visivelmente, nota-se que ela est sob o controle de Incio e Fim.
A endentao um recuo que se atribui aos comandos subordinados. Com o seu uso, fica fcil detectar quais instrues so internas a outras.
A declarao das variveis a serem manipuladas no algoritmo deve estar entre as palavras reservadas Variveis e Incio. Toda varivel utilizada deve ter um nome e um tipo.
e-Tec Brasil/CEMF/Unimontes
40
Informtica
O exemplo, a seguir, mostra a declarao de variveis utilizando-se pseudocdigo. Algoritmo <nome> Variveis A: inteiro; B: Real; C: caractere; D: lgico; incio <bloco de instrues> fim.
Com base na inicializao das variveis do exemplo anterior e considerando os tipos utilizados no exemplo, defina outros valores para tais variveis.
Algoritmos
41
e-Tec Brasil/CEMF/Unimontes
Quando for possvel, voc pode usar somente uma instruo Leia para receber o valor de vrias variveis.
Para introduzir cada valor s variveis definidas no algoritmo, voc pode usar uma instruo Leia para cada uma. Veja o exemplo de um algoritmo que possui a entrada de dados de vrias variveis com vrias instrues Leia. Algoritmo entrada Variveis Nome: Caractere; Salario: Real; idade: inteiro; Incio Escreva Digite seu nome; Leia nome; Escreva Digite seu Salrio; Leia Salrio; Escreva Digite sua idade; Leia idade; Escreva Ol ,nome, voc ganha , salrio, por ms e tem , idade, anos Fim. Veja agora o exemplo de um algoritmo que tem instrues de entrada de dados, uma instruo LEIA recebendo vrias variveis: Algoritmo exemploleia Variveis Nome: Caractere; Salario: Real; idade: inteiro; Incio Escreva Digite seu nome, seu salrio e sua idade; Leia nome, salrio, idade; Escreva Ol,nome, voc ganha , salrio, por ms e tem , idade, anos Fim.
e-Tec Brasil/CEMF/Unimontes
42
Informtica
Quando representamos um algoritmo por meio de pseudocdigos, vrias palavras de nosso idioma podem ser utilizadas, tais como Escreva, Imprima, Informe, Mostre ou Exiba. Aqui voc vai usar a palavra Escreva. Veja o exemplo de um algoritmo que tem vrias instrues de sada de dados: Algoritmo sada Variveis idade: inteiro; Incio Idade 25; Escreva Sou aluno do E-tec Brasil; Escreva Eu tenho , idade, anos Fim. Veja o exemplo de um algoritmo que tem a mesma sada em uma s instruo: Algoritmo sada Variveis idade: inteiro; Incio Idade 25; Escreva Sou aluno do E-tec Brasil e tenho , idade, de idade);
Fim.
interessante saber que, quando desejarmos exibir ao usurio uma frase, esta deve estar entre aspas (estas aspas podem ser a simples ou as duplas, mas usaremos as duplas). Se quisermos exibir um valor numrico constante, basta inform-lo aps a instruo. Se o que desejarmos exibir ao usurio for o contedo de uma varivel, basta informarmos tal varivel aps a instruo Escreva.
Resumo
A unidade estudada apresenta a estrutura bsica para se desenvolver algoritmos. Apresentamos a voc a estrutura bsica do pseudocdigo identificando a forma de declarar variveis e tambm de inicializar as mesmas. Alm disso, as instrues de entrada e de sada de dados foram tambm ilustradas. Devemos informar a voc que tratamos aqui somente da estrutura bsica da construo de pseudocdigo. Vamos estudar, nas unidades seguintes, os comandos sequenciais, os comandos condicionais, os comandos repetitivos, alm de apresentarmos, mais adiante, as estruturas homogneas e heterogneas de dados, com suas respectivas formas de manipulao.
Algoritmos
43
e-Tec Brasil/CEMF/Unimontes
Atividades de aprendizagem
1) O que voc entende como pseudocdigo?
3) Explique cada componente da estrutura bsica de um pseudocdigo, Algoritmo <nome> Variveis <lista> incio <bloco de instrues> fim. 4) Qual a importncia da endentao no processo de criao de algoritmos?
6) Para que serve a Instruo Leia? Existe algum sinnimo para tal instruo?
7) Para que serve a instruo Escreva? Existe algum sinnimo para tal instruo?
8) Com quais valores devem ser inicializadas duas variveis: a primeira que receber uma soma e a segunda que receber o resultado de multiplicao?
e-Tec Brasil/CEMF/Unimontes
44
Informtica
Para o aprendizado de desenvolvimento de algoritmos, faz-se necessrio o estudo dos conceitos e das instrues primitivas estudados nas unidades anteriores. Alm disso, a unidade que trata dos comandos sequenciais vem agregar conhecimento para a resoluo e representao de algoritmos em sua forma de pseudocdigos. Assim, por meio do estudo desta unidade, esperamos que voc seja capaz de: Compreender a estrutura dos comando sequencias; Identificar o uso dos comandos seqenciais em outras estruturas de comandos.
Algoritmos
45
e-Tec Brasil/CEMF/Unimontes
INSS SalarioBruto*0.08; IR SalarioBruto * 0.10; FS (SalarioBruto (INSS+IR)) * 0.005; TotalDeDescontos INSS + IR + FS; TotalDeAcrescimos (Dependentes * 50); SalarioLiquido SalarioBruto TotalDeDescontos + TotalDeAcrescimos; Escreva O Total de Descontos : , TotalDeDescontos; Escreva O Total de Acrscimos : , TotalDeAcrescimos; Escreva O Salrio Lquido : , SalarioLiquido; Fim. Bem, vamos analisar como proceder para desenvolver o algoritmo. Devemos analisar detalhadamente o problema em questo. Bem, como fazer isso? Devemos ler e reler o enunciado para identificar quais so as variveis de sada, quais so as de entrada e quais so as variveis auxiliares ao processamento. Em seguida, voc deve pensar nas instrues ou comandos que so necessrios para transformar os dados de entrada nas sadas desejadas. Observe, a seguir, o que ser fornecido ao algoritmo para que realize o processamento desejado. Sobre o salrio bruto de um funcionrio, so descontados 8% de INSS, 10% de IR (imposto de renda) e sobre o restante 0,5% referente filiao sindical. Para cada dependente (filhos), o funcionrio ganha R$ 50,00. Ao ser fornecido o valor do salrio bruto do funcionrio e a quantidade de dependentes, calcule: Observe o seguinte trecho do algoritmo, a seguir: Algoritmo CalculoDeFolha Variveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real; Dependentes : Inteiro; Incio Escreva Informe o Salrio Bruto; Leia SalarioBruto; Escreva Informe a Quantidade de Dependentes; Leia Dependentes; ... Fim Veja voc!! As declaraes das variveis so relativas s variveis de entrada de dados.
Vamos refletir!!! Ser que voc consegue identificar todas as variveis necessrias ao processamento durante a extrao de requisitos do texto? Durante a resoluo podem surgir alguns problemas. Quando isso ocorrer, emerge a necessidade de criar e inicializar outras variveis
e-Tec Brasil/CEMF/Unimontes
46
Informtica
Observe que vamos identificar a declarao do que informado ao usurio, ou seja, aquilo que deve ser resolvido pelo algoritmo, o problema: ..., calcule: a) O Total dos Descontos b) Total de Acrscimo c) Salrio Lquido Assim, observe o algoritmo: Algoritmo CalculoDeFolha Variveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real; Dependentes : Inteiro; Incio ... Escreva O Total de Descontos : , TotalDeDescontos; Escreva O Total de Acrscimos : , TotalDeAcrescimos; Escreva O Salrio Lquido : , SalarioLiquido; Fim. Note agora a existncia de variveis que no so nem de entrada nem de sada. Podemos caracteriz-las como variveis auxiliares, pois elas realmente auxiliam a resoluo do problema. Vejamos o seguinte exemplo: Algoritmo CalculoDeFolha Variveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real; Dependentes : Inteiro; Incio ... INSS SalarioBruto*0.08; IR SalarioBruto * 0.10; FS (SalarioBruto (INSS+IR)) * 0.005; TotalDeDescontos INSS + IR + FS; TotalDeAcrescimos (Dependentes * 50); SalarioLiquido SalarioBruto TotalDeDescontos + TotalDeAcrescimos; ... Fim No caso especfico desse problema, estas variveis so desnecessrias, pois o resultado pode ser obtido diretamente, mediante operaes matemticas. Vejamos como poderia ficar esta resoluo.
As variveis auxiliares, como o prprio nome prope, devem ser criadas para auxiliar o armazenamento de dados. Elas podem variveis contadoras, para troca de dados, para copia, etc.
Algoritmos
47
e-Tec Brasil/CEMF/Unimontes
Agora, vamos analisar o prximo exemplo: Algoritmo CalculoDeFolha Variveis SalarioBruto, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real; Dependentes : Inteiro; Incio ... TotalDeDescontos (SalarioBruto * 0.08) + (SalarioBruto * 0.10); TotalDeDescontos (SalarioBruto TotalDeDescontos) * 0.005; ... Fim. ... Observe! Para a implementao, optou-se por duas linhas para o clculo do desconto, pois a Filiao Sindical sobre o Salrio Bruto j descontado o INSS e IR. bom deixar claro que, matematicamente, daria para incluir tudo isso em uma nica linha, porm poderia ficar poluda, dificultando a compreenso da referida linha de operao. Alm disso, importante documentar as funcionalidades do algoritmo, para facilitar o entendimento e, principalmente, a manuteno. Podemos pensar em outra resoluo para o mesmo problema?? Sim! Outra forma de resoluo sem o uso das variveis de sada.
O uso excessivo de variveis benfico auxiliando na manuteno das funcionalidades especficas. Porm, com o decorrer do aprendizado, podemos otimizar o desempenho e os recursos utilizados.
Reflita! Assim, veja o algoritmo: Algoritmo CalculoDeFolha Variveis SalarioBruto : Real; Dependentes : Inteiro; Incio ... Escreva O Total de Descontos : , (SalarioBruto * 0.08) + (SalarioBruto * 0.10) + ((SalarioBruto ((SalarioBruto * 0.08) + (SalarioBruto * 0.10))) * 0.05; Escreva O Total de Acrscimos : , (Dependentes * 50); Escreva O Salrio Lquido : , SalarioBruto ((SalarioBruto * 0.08) +(SalarioBruto * 0.10) + ((SalarioBruto ((SalarioBruto * 0.08) + (SalarioBruto * 0.10))) * 0.05) + (Dependentes * 50); Fim ...
e-Tec Brasil/CEMF/Unimontes
48
Informtica
Note a expresso acima. H casos em que isso no recomendado, tampouco dever ser feito, pois, em uma necessidade de alterao, dificultar a compreenso. Agora com voc!! Desenvolva um programa que receba o salrio-base de um funcionrio, calcule e mostre o salrio a receber, sabendo-se que esse funcionrio tem gratificao de 5% sobre o salriobase e paga imposto de 7% sobre o salrio-base. Algoritmo CalculoDeFolha Variveis SalarioBase, SalarioLiquido : Real; Incio Escreva Informe o Salrio Base; Leia SalarioBase; SalarioLiquido SalarioBase + (SalarioBase * 0.05) (SalarioBase * 0.07); Escreva O Salrio Lquido : ,SalarioLiquido; Fim O problema a ser solucionado nesse enunciado relativamente simples. Ser informado pelo usurio um valor qualquer (SalarioBase) e sobre esse valor devero ser aplicados dois percentuais: um como crdito (gratificao) ao valor informado, e outro como dbito (imposto). Ou seja, o primeiro valor aumentar o valor inicial, e o segundo diminuir. Os valores a serem aplicados esto explcitos no enunciado, devendo apenas ser aplicados em uma frmula/expresso. Perceba que, nesse pseudocdigo, foram utilizadas apenas as variveis necessrias: a de entrada (SalarioBase) e a de sada (SalarioLiquido). Poderia optar-se por um desenvolvimento mais detalhado e fazer uso de variveis auxiliares, mas no seria nada otimizado e muito menos til nesse caso. Caso se opte por esse uso, a resoluo seria semelhana do mostrado a seguir. Algoritmo CalculoDeFolha Variveis SalarioBase, SalarioLiquido, Credito, Debito : Real; Incio ... Credito (SalarioBase * 0.05); Debito (SalarioBase * 0.07); SalarioLiquido SalarioBase + Credito Debito; ... Fim.
Algoritmos
49
e-Tec Brasil/CEMF/Unimontes
Observe que, como foram informados os valores em percentual a serem descontados, esses puderam ser aplicados diretamente na frmula, sem necessidade de aplicar a regra de trs. Podemos observar, no exemplo trabalhado anteriormente, que todos os blocos de comandos usados foram sequenciais. Isso aconteceu por se tratar da resoluo dos clculos somente de um empregado. Alm disso, a empresa no optou por nenhuma regra diferente para calcular os valores em funo dos dados dos empregados. Para melhor compreenso dos comandos sequenciais, mostraremos alguns exemplos, a seguir. Exemplos 1) Faa um algoritmo para imprimir Ol todos Algoritmo mensagem { OBJETIVO: IMPRIMIR MENSAGEM DE SAUDACAO DATA CRIACAO: 18/10/2010 } Incio Escreva(Ol a todos!); Fim. 2) Faa um algoritmo para mostrar a adio de dois nmeros Algoritmo soma {OBJETIVO: IMPRIMIR A ADICAO DE DOIS NUMEROS Autor: nome DATA CRIACAO: 18/10/2010} inteiro: num1, num2; incio Escreva(Digite o primeiro nmero.); leia(num1); Escreva(Digite o segundo nmero.); leia(num2); Escreva(A adio dos nmeros : , num1 + num2); fim. 3) Faa um algoritmo para mostrar saudao Algoritmo saudao {OBJETIVO: IMPRIMIR MENSAGEM DE SAUDACAO A ALGUM NOME AUTOR: nome DATA CRIACAO: 18/10/2010} caractere: nome; Incio imprima(Digite um nome.); leia(nome); imprima(Ol , nome, !); Fim.
e-Tec Brasil/CEMF/Unimontes
50
Informtica
4) Faa um algoritmo para converter horas em minutos Algoritmo minutos {OBJETIVO: CONVERTER QTDE DE HORAS EM MINUTOS AUTOR: nome DATA CRIACAO: 18/10/2010 } inteiro: horas, minutos, total; Incio Escreva (Digite uma quantidade de horas.); Leia(horas); Escreva(Digite uma quantidade de minutos.); Leia(minutos); total = horas * 60; total = total + minutos; Escreva(A quantidade de minutos : , total); Fim. 5) Faa um algoritmo para converter radianos em graus Algoritmo radianos {OBJETIVO: CONVERTER RADIANOS EM GRAUS, MINUTOS E SEGUNDOS AUTOR:nome DATA CRIACAO: 18/10/2010 } real: radianos; inteiro: graus, minutos, segundos; Incio Escreva (Digite uma quantidade de radianos.); Leia (radianos); graus = int(radianos * 180); minutos = int((radianos * 180 - graus) * 60); segundos = int((((radianos * 180 - graus) * 60) - minutos) * 60); Escreva (A quantidade de radianos : , graus, graus, , minutos, minutos e , segundos, segundos.); Fim. 6) Faa um algoritmo para converter temperatura Algoritmo temperatura {OBJETIVO: CONVERTER TEMPERATURA EM GRAUS CELSIUS PARA FAHRENHEIT AUTOR: nome DATA CRIACAO: 18/10/2010 } real: cel; Incio Escreva(Digite a temperatura em graus Celsius.); Leia(cel); Escreva(A temperatura em Farenheit : , 32 + 1.8 * cel);
Fim.
Algoritmos
51
e-Tec Brasil/CEMF/Unimontes
7) Faa um algoritmo para calcular a hipotenusa de um triangulo Algoritmo hpotenusa {OBJETIVO: CALCULAR A HIPOTENUSA DE UM TRIANGULO AUTOR: nome DATA CRIACAO: 18/10/2010 } real: lado1, lado2; incio Escreva(Digite o valor do primeiro lado do tringulo.); Leia(lado1); Escreva(Digite o valor do segundo lado do tringulo.); Leia(lado2); Escreva(O valor da hipotenusa : , sqrt(lado1 ^ 2 + lado2 ^ 2)) Fim. 8) Faa um algoritmo para calcular gasto de combustvel Algoritmo gasto {OBJETIVO: CALCULAR OS GASTOS DE COMBUSTIVEL DE UM AUTOMOVEL AUTOR: nome DATA CRIACAO: 18/10/2010 } real: preco, litros, distancia; Incio Escreva(Digite o preo do litro combustvel.); Leia(preco); Escreva(Digite a quantidade de litro(s) gasto(s).); Leia(litros); Escreva(Digite a distncia percorrida em Km.); Leia(distancia); Escreva(O valor gasto em $/Km : , preco * litros / distancia); Escreva(O valor gasto em lt/100Km : , litros * 100 / distancia)
Crie um exemplo de algoritmo que utiliza comandos seqenciais e utilize o AVEA para compartilhar a idia com seus colegas.
Fim.
Resumo
Na unidade estudada, voc pde perceber as sequncias simples de comandos. Voc deve compreender que tal disposio de comandos de simples elaborao, uma vez que segue uma sequncia de operaes. As sequncias simples, em geral, so mescladas com as sequncias condicionais e com os comandos de repetio para solucionar problemas mais complexos.
e-Tec Brasil/CEMF/Unimontes
52
Informtica
Atividades de aprendizagem
1) Qual a estrutura dos blocos de comandos voc pode usar na sequncia simples?
6) Faa um algoritmo para calcular a mdia aritmtica de 2 nmeros informados pelo usurio. 7) Faa um algoritmo para calcular a multiplicao de 3 nmeros informados pelo usurio.
8) Faa um algoritmo para extrair e exibir a parte inteira e a parte decimal de um nmero.
10) Faa um algoritmo para mostrar 3 nmeros informados pelo usurio na ordem invertida da entrada. Por exemplo, se o usurio informou 1, 2 e 3, mostre 3,2,1.
Algoritmos
53
e-Tec Brasil/CEMF/Unimontes
Condies so comparaes realizadas entre componentes de comparao, sendo esses, variveis, expresses matemticas, campos de uma determinada estrutura de dados. Tais comparaes possuem respostas verdadeiras ou falsas. As condies podem ser simples ou compostas.
Assim, por meio do estudo desta unidade, esperamos que voc seja capaz de: - Compreender a estrutura dos comandos condicionais; - Aplicar o uso do comando se simples e composto; - Aplicar o uso o comando caso.
Algoritmos
55
e-Tec Brasil/CEMF/Unimontes
Se no condio (falsa) ento Grupo de comandos Fim se. Vejamos o trecho do algoritmo: ... Se no a = 1 ento B = 0; C = A; Fim se; Quando o valor de a for diferente de 1, B recebe zeros e C recebe 1. Quando o valor de a for igual a 1, o controle de execuo sai para a prxima instruo aps o Fim se, Se condio (verdadeira) ento Grupo de comandos Seno (falsa) Grupo de comandos Fim se Vejamos o trecho do algoritmo: ... Se a = 1 ento B = 0; C = A; Seno B = 2; C = B; Fim se Quando o valor de a for igual a 1, B recebe zeros e C recebe 1 e o controle de execuo sai para a prxima instruo aps o Fim se, Quando o valor de a for diferente de 1, B = 2 e C = B e o controle de execuo sai para a prxima instruo aps o Fim se, O exemplo, a seguir, mostra mais essa possibilidade: Se condio (verdadeira) ento Grupo de comandos Se condio (verdadeira) ento Grupo de comandos Seno Grupo de comandos Fim se Seno (falsa) Grupo de comandos Fim se
Devemos observar que pode haver aninhamentos condicionais. Quando se tem vrias condies que dependem da resposta anterior, devemos estruturar uma instruo SE interna a outra. No h numero mximo de aninhamentos de instruo SE.
Com o uso de aninhamentos, devemos tomar cuidado para no perdermos o controle da lgica do processo.
e-Tec Brasil/CEMF/Unimontes
56
Informtica
Algoritmos
57
e-Tec Brasil/CEMF/Unimontes
Quando A for maior que B, o algoritmo executa a instruo que se encontra aps o fim se, e caso contrrio, quando A no for maior que B, ou seja, A igual ou menor que B, o algoritmo executa a instruo que se encontra dentro do bloco associado ao seno, estruturado no comando condicional.
e-Tec Brasil/CEMF/Unimontes
58
Informtica
Algoritmo Soma Variveis A, B, Soma : Inteiro; Incio Escreva Informe o primeiro valor; Leia A; Escreva Informe o segundo valor; Leia B; Soma (A + B); Se (Soma >= 10) ento Soma = Soma + 5; Seno Soma = Soma 5; Fim Se Escreva O resultado de toda a operao , Soma; Fim Para voc treinar mais um pouco, vamos desenvolver outra atividade. Dados trs nmeros inteiros distintos (assume-se que o sero), faa um algoritmo que escreva o maior nmero digitado. Algoritmo MaiorNumero Variveis A, B, C : Inteiro; Incio Escreva Informe o primeiro nmero; Leia A; Escreva Informe o segundo nmero; Leia B; Escreva Informe o terceiro nmero; Leia C; Se (A > B) ento Se (A > C) ento Escreva O maior nmero , A; Seno Escreva O maior nmero , C; Fim Se Seno Se (B > C) ento Escreva O maior nmero , B; Seno Escreva O maior nmero , C; Fim Se; Fim Se; Fim.
Algoritmos
59
e-Tec Brasil/CEMF/Unimontes
Vamos supor alguns valores para as variveis A, B e C para realizarmos testes no algoritmo anterior. A=3B=2eC=4 O quadro 10 mostra as instrues executadas com os dados atribudos.
QUADRO 10 Execuo do algoritmo maior instruo A maior que B? A maior que C? FIm
Fonte: Prpria.
Resultado usurio
Maior numero C
Resultado usurio
Maior mero B
Resultado usurio
Maior mero A
Sempre que temos um problema em que a soluo depende de comparao ou avaliao, quer sejam fornecidas diretamente pelo usurio, quer seja ela o resultado de uma operao, devemos aplicar instruo condicional para a sua soluo.
e-Tec Brasil/CEMF/Unimontes
60
Informtica
Como pode ser constatado no enunciado acima, sero fornecidos trs nmeros, que no se sabe quais so. A cada vez, podem ser nmeros diferentes e talvez, em uma destas execues, o primeiro nmero fornecido possa ser o maior, mas em outra no. Em outra situao, o terceiro nmero poder ser o maior. A soluo deve trabalhar todas as hipteses. Temos ento as situaes seguintes que devem ser avaliadas a cada execuo. 1. Quando o valor em A for maior que B, garante que tambm maior que C? Lgico que no, pois ainda no nos cabe uma deduo. Porm, se C for maior que A, est claro que C maior que B tambm. Ento A o maior nmero. 2. Caso ocorra de A ser menor que B, existe garantia de que B maior que C? Tambm no. Porm, se C for maior que B, seguramente C o maior nmero, seno B o ser. Veja este trecho do algoritmo, a seguir: ... Se (A > B) ento Se (A > C) ento Escreva O maior nmero , A; Seno Escreva O maior nmero , C; Fim Se Seno Se (B > C) ento Escreva O maior nmero , B; Seno Escreva O maior nmero , C; Fim Se; Fim Se; Fim. Outra situao que h casos em que vrias contradies podem ocorrer e, alm disso, mais de uma condio pode ser avaliada ao mesmo tempo. Veja o trecho do algoritmo. ... Se (A > B) E (A > C) ento Escreva O maior nmero , A; Seno Se (A < B) E (B > C) ento Escreva O maior nmero , B; Seno Escreva O maior nmero , C; Fim Se; Fim se; Fim ... ...
Algoritmos
61
e-Tec Brasil/CEMF/Unimontes
Observe agora que a expresso que operada por E, s ser verdadeira se todas retornarem verdadeiro.
Importante! Esta estrutura no foi tratada ainda. Muita ateno s explicaes que seguem sobre sua estrutura bsica, assim como sobre o detalhamento de suas especificidades.
e-Tec Brasil/CEMF/Unimontes
62
Informtica
Para calcular o peso no planeta utilize a frmula: PesoNoPlaneta = pesonaterra/100*Gravidade Veja o algoritmo Algoritmo PesoPlaneta Variveis
Opcao : Inteiro; Peso : Real; Incio Escreva Planetas que podem ser analisados; Escreva 1-Mercrio; Escreva 2-Vnus; Escreva 3-Marte; Escreva 4-Jpiter; Escreva 5-Saturno; Escreva 6-Urano; Leia Opcao; Escreva Informe seu peso atual; Leia Peso; Escolha (Opcao); Caso 1 : Escreva Seu peso no planeta Mercrio : , (Peso/10)*0.37; Caso 2 : Escreva Seu peso no planeta Vnus : , (Peso/10)*0.88; Caso 3 : Escreva Seu peso no planeta Marte : , (Peso/10)*0.38; Caso 4 : Escreva Seu peso no planeta Jpiter : , (Peso/10)*2.64; Caso 5 : Escreva Seu peso no planeta Saturno : , (Peso/10)*1.15; Caso 6 : Escreva Seu peso no planeta Urano : , (Peso/10)*1.17; Seno Escreva A opo , Opcao, no pode ser avaliada; Fim Escolha Fim.
Ser exibido ao usurio um menu com as opes que ele pode escolher e que sero processadas pelo pseudocdigo. Nesse caso, as opes se referem a nomes de planetas associados a um nmero, como se fosse um cardpio de um restaurante, pois, na realidade, a ideia de um menu realmente essa. Veja no quadro, a seguir, essa situao.
Algoritmos
63
e-Tec Brasil/CEMF/Unimontes
... Escreva Planetas que podem ser analisados; Escreva 1-Mercrio; Escreva 2-Vnus; Escreva 3-Marte; Escreva 4-Jpiter; Escreva 5-Saturno; Escreva 6-Urano; Leia Opcao; preciso, aps a escolha do usurio, verificar qual foi esta escolha. Poderamos, sem problema algum, fazer uso da estrutura Se, mas para esse tipo de situao a estrutura Escolha a mais indicada. Quando fazemos uso dessa estrutura, temos que informar a qual varivel sero feitos os testes e, a cada caso, informarmos o valor que est sendo comparado (que deve existir na varivel da Escolha). Veja o trecho do algoritmo, a seguir: Escolha (Opcao); Caso 1 : Escreva Seu peso no planeta Mercrio : , (Peso/10)*0.37; Caso 2 : Escreva Seu peso no planeta Vnus : , (Peso/10)*0.88; Caso 3 : Escreva Seu peso no planeta Marte : , (Peso/10)*0.38; Caso 4 : Escreva Seu peso no planeta Jpiter : , (Peso/10)*2.64; Caso 5 : Escreva Seu peso no planeta Saturno : , (Peso/10)*1.15; Caso 6 : Escreva Seu peso no planeta Urano : , (Peso/10)*1.17; Seno Escreva A opo , opcao, no pode ser avaliada; Fim Escolha ... ... Agora com voc! Estude alguns exemplos 1) Faa um algoritmo para converter minutos em dias, horas e minutos
Algoritmo munitosemdia {OBJETIVO: CONVERTER QTDE DE MINUTOS EM DIAS, HORAS E MINUTOS AUTOR: nome
e-Tec Brasil/CEMF/Unimontes
64
Informtica
DATA CRIACAO: 18/10/2010 } variaveis inteiro: dias, horas, minutos; Incio dias = 0; horas = 0; Escreva(Digite uma quantidade de minutos.); leia(minutos); se minutos >= 1440 entao dias = div(minutos, 1440); minutos = mod(minutos, 1440); Fim se; se minutos >= 60 entao horas = div(minutos, 60); minutos = mod(minutos, 60); Fim se; Escreva(A quantidade de minutos : , dias, dias, , horas, horas e , minutos, minutos.); Fim. 2) Faa um algoritmo para simular o lanamento de uma moeda Algoritmo moeda {OBJETIVO: SIMULAR O LANCAMENTO DE UMA MOEDA AUTOR: nome DATA CRIACAO: 18/10/2010} Variveis real: num; Incio num = random(2); Se (num) = 0 entao Escreva(O lanamento resultou em CARA.) senao Escreva(O lanamento resultou em COROA.); Fim se; Fim. A funo Random(2) retorna um numero randmico entre zero e dois 3) Faa um algoritmo para simular o lanamento de um dado Algoritmo {OBJETIVO: SIMILAR O LANCAMENTO DE UM DADO AUTOR: nome DATA CRIACAO: 18/10/2010}
Algoritmos
65
e-Tec Brasil/CEMF/Unimontes
Variveis real: num; Incio num = random(6); se int(num) + 1 = 1 entao Escreva(O lanamento resultou no nmero 1.) senao se int(num) + 1 = 2 entao Escreva(O lanamento resultou no nmero 2.) senao se int(num) + 1 = 3 entao Escreva (O lanamento resultou no nmero 3.) senao se int(num) + 1 = 4 entao Escreva(O lanamento resultou no nmero 4.) senao se int(num) + 1 = 5 entao Escreva(O lanamento resultou no nmero 5.) senao Escreva (O lanamento resultou no nmero 6.); Fim se; Fim se; Fim se; Fim se; Fim se; Fim. 4) Faa um algoritmo que mostre o maior nmero entre dois. Algoritmo maior {OBJETIVO: INDICAR O MAIOR NUMERO ENTRE DOIS AUTOR: nome DATA CRIACAO: 18/10/2010 } Variaveis inteiro: num1, num2; Incio Escreva (Digite o primeiro nmero.); L= Leia(num1); Escreva (Digite o segundo nmero.); Leia (num2); se num1 > num2 entao Escreva (O maior nmero : , num1)
e-Tec Brasil/CEMF/Unimontes
66
Informtica
5) Faa um algoritmo que mostre o maior nmero entre trs. Algoritmo maior3 {OBJETIVO: INDICAR O MAIOR NUMERO ENTRE TRES AUTOR: nome DATA CRIACAO: 18/10/2010} Variaveis inteiro: num1, num2, num3; Incio Escreva(Digite o primeiro nmero.); leia(num1); Escreva(Digite o segundo nmero.); leia(num2); Escreva(Digite o terceiro nmero.); leia(num3); se (num1 > num2) e (num1 > num3) entao Escreva(O maior nmero : , num1) senao se num2 > num3 entao Escreva(O maior nmero : , num2) senao Escreva(O maior nmero : , num3); Fim se; Fim se; Fim. 6) Faa um algoritmo para mostrar 3 nmeros em ordem decrescente Algoritmo decresce {OBJETIVO: APRESENTAR TRES NUMEROS EM ORDEM CRESCENTE AUTOR: nome DATA CRIACAO: 18/10/2010} Variveis inteiro: num1, num2, num3; Incio Escreva(Digite o primeiro nmero.); Leia(num1); Escreva (Digite o segundo nmero.);
Algoritmos
67
e-Tec Brasil/CEMF/Unimontes
Leia(num2); Escreva (Digite o terceiro nmero.); Leia(num3); Se (num1 < num2) e (num1 < num3) entao se num2 < num3 entao Escreva (A ordem crescente : , num1, , , num2, e , num3) senao Escreva (A ordem crescente : , num1, , , num3, e , num2); fim se; senao se num2 < num3 entao se num1 < num3 entao Escreva (A ordem crescente : , num2, , , num1, e , num3) senao Escreva (A ordem crescente : , num2, , , num3, e , num1); fim se; senao se num1 < num2 entao Escreva (A ordem crescente : , num3, , , num1, e , num2) senao Escreva (A ordem crescente : , num3, , , num2, e , num1); Fim se; Fim se; Fim se; Fim. 7) Faa um algoritmo que calcule a diviso de dois nmeros. Algoritmo diviso {OBJETIVO: CALCULAR A DIVISAO DE DOIS NUMEROS AUTOR: nome DATA CRIACAO: 01/09/2005} Variaveis real: num1, num2; incio Escreva(Digite o numerador.); leia(num1); Escreva (Digite o denominador.); leia(num2);
e-Tec Brasil/CEMF/Unimontes
68
Informtica
se num2 <> 0 ento Escreva (O resultado da diviso : , num1 / num2) seno Escreva (No foi possvel calcular porque o denominador informado foi zero.); Fim se;
Fim.
8) Faa um algoritmo para calcular o valor da potencia de um nmero. Algoritmo potencia {OBJETIVO: CALCULAR O VALOR DE UMA POTENCIA AUTOR: nome DATA CRIACAO: 18/10/2010} Variveis real: base, expoente; Incio Escreva(Digite o valor da base.); leia(base); Escreva (Digite o valor do expoente.); leia(expoente); se base <> 0 entao Escreva (O resultado da potncia : , exp(expoente * ln(base))) senao Escreva (No foi possvel calcular porque a base informada foi zero.); Fim se; Fim. 9) Faa um algoritmo para classificar a nota de um aluno. Algoritmo classifica {OBJETIVO: CLASSIFICAR A NOTA DE UM ALUNO AUTOR: nome DATA CRIACAO: 18/10/2010} Variaveis real: nota; Incio Escreva(Digite a nota do aluno entre 0 e 20.); leia(nota); se (nota >= 0) e (nota <= 5) entao Escreva(O aluno foi classificado como MAU.) senao se (nota > 5) e (nota <= 10) entao
Algoritmos
69
e-Tec Brasil/CEMF/Unimontes
Escreva(O aluno foi classificado como MEDOCRE.) senao se (nota > 10) e (nota <= 14) entao Escreva (O aluno foi classificado como SUFICIENTE.) senao se (nota > 14) e (nota <= 18) entao Escreva(O aluno foi classificado como BOM.) senao se (nota > 18) e (nota <= 20) entao Escreva(O aluno foi classificado como MUITO BOM.) senao Escreva (A nota est fora dos padres estabelecidos.); Fim se; Fim se; Fim se; Fim se; Fim se; Fim. 10) Faa um algoritmo para efetuar operaes matemticas. Algoritmo operaes {OBJETIVO: EFETUAR AS OPERACOES MATEMATICAS AUTOR: nome DATA CRIACAO: 18/10/2010} Variveis real: num1, num2; caracter: operacao; Incio Escreva(Digite o primeiro nmero.); leia(num1); Escreva(Digite o segundo nmero.); leia(num2); Escreva(Digite a operao (+)adicao ou (-)subtrao ou (*) multiplicao ou (/)diviso que deseja realizar.); leia(operacao); se operacao = + entao Escreva(O resultado da adio : , num1 + num2) senao
e-Tec Brasil/CEMF/Unimontes
70
Informtica
se operacao = - entao Escreva(O resultado da subtrao : , num1 - num2) senao se operacao = * entao Escreva(O resultado da multiplicao ` : , num1 * num2) senao se operacao = / entao se num2 <> 0 entao Escreva(O resultado da diviso : , num1 / num2) senao Escreva(No foi possvel calcular porque o denominador informado foi zero.); Fim se; Fim se; Fim se; Fim se; Fim se; Fim.
Crie um exemplo de algoritmo que utiliza comandos condicionais simples e compostos pensando nas suas atividades do seu dia-adia. Alm disso, tente elaborar um problema que utiliza o recurso condicional Caso. Utilize o AVEA para compartilhar a idia com seus colegas.
Resumo
Na unidade estudada, voc verificou a aplicao das sequncias condicionais simples e compostas, alm do aninhamento de condies. Voc pode perceber, internos aos comandos condicionais, blocos de comandos sequenciais para formar o procedimento lgico de soluo do problema. Alm disso, foi apresentada a estrutura condicional do tipo Caso, que mostra outra forma de lidar com condies no pseudocdigo.
Atividades de aprendizagem
1)Elabore um Algoritmo que, dadas trs temperaturas obtidas de uma cidade ao longo do dia, indique qual a mxima e qual a mnima.
2)Numa empresa, os funcionrios so pagos a R$25,00/hora. Pretende-se um algoritmo que, a partir da leitura do nmero de horas de trabalho de um empregado em cada um dos 5 dias da semana, e tendo em conta os descontos de 11% INSS e 10% de IRPF, calcule os vencimentos bruto e lquido do funcionrio, bem como os respectivos descontos.
Algoritmos
71
e-Tec Brasil/CEMF/Unimontes
3)Dada uma sequncia de 4 nmeros, elabore um Algoritmo que calcule a mdia dos valores positivos (ou nulos), ou seja, ignorando os valores negativos. 4) Elabore um Algoritmo que, dado um nmero, indique se ele divisvel por 3 ou no. 5)Elabore um Algoritmo que dados dois nmeros, indique se algum deles mltiplo do outro. 6)Elabore um Algoritmo que calcule o vencimento de um funcionrio, sabendo que este calculado, adicionando-se ao vencimento base informado, as seguintes parcelas: 1% por cada ano de idade superior a 25 anos. 3% por cada ano de casa. 5% por cada filho ou outro dependente.
7)Elabore um algoritmo que, dado um valor em real, indique quantas moedas de 100, 50, 10, 5 e 1, sero necessrias para perfazer essa quantia (com o mnimo de moedas possvel). 8)Elabore um Algoritmo que dada a nota de um aluno, entre 0.0 e 20.0, indique se est Aprovado (nota 9.5), Reprovado (nota < 7.5), ou Exame (7.5 nota > 9.5); valide os casos fora de limites. 9)Elabore um Algoritmo que receba quatro nmeros e que os apresente por ordem decrescente. 10) Faa um algoritmo que leia 3 notas de um aluno e calcule a sua mdia final. Considerar que a mdia ponderada e que o peso das notas : 2,3 e 5, respectivamente.
e-Tec Brasil/CEMF/Unimontes
72
Informtica
Nesta unidade, vamos passar com maior intensidade s especificidades dos pseudocdigos com estruturas de repetio. A estrutura de repetio caracterizada pela necessidade de executar um conjunto de instrues mais de uma vez. Quando se necessita de vrias entradas de dados, pode-se inserir uma instruo Leia interna estrutura de repetio.
Esperamos, assim, que ao final desta unidade voc seja capaz de: - Conhecer as estruturas de repetio existentes; - Identificar a correta estrutura de repetio para ser usada em um problema.
6.1 Iterao
Para voc entender a estrutura de repetio, vamos agora introduzir o conceito de iterao. cone glossrio A iterao a execuo repetida de um bloco de comandos ou instrues, possuindo esse bloco de comandos, uma condio para o seu abandono. So tambm conhecidas por Repeties, Laos de comandos, Loops ou Ciclos. Vamos pensar no caso de descascas batatas. Se tivssemos 13 batatas para descascar: Traz cestas com batatas Traz panela do armrio Descasca uma batata ... 13 vezes descasca uma batata devolve cesta dispensa Se tivssemos 24 batatas: Traz cestas com batatas Traz panela do armrio Descasca uma batata ... 24 vezes descasca uma batata devolve cesta dispensa
Voc sabe o que Flag? Flag, sinal, bandeira um sinal que o programador define quando o comando de repetio for interrompido. No caso do algoritmo acima, o flag quando n for igual a zero. Assim, se o primeiro nmero lido for igual a zero, nenhum nmero ser elevado ao quadrado.
Algoritmos
73
e-Tec Brasil/CEMF/Unimontes
A estrutura de repetio tambm garante que um processo repetitivo ser feito sempre da mesma forma, no importando se ele ocorrer uma, dez, cem ou mil vezes.
A construo de algoritmos para atender as duas necessidades tem que ter um mesmo padro de comportamento. Pode-se, aqui, usar mecanismos para gerar iteraes no algoritmo. Assim, uma estrutura de repetio permite ao programador especificar que uma ao ser repetida enquanto alguma condio permanecer verdadeira. Existe uma subdiviso para a estrutura de repetio: - Condicional, com teste no incio; - Condicional, com teste no final; - Contada. Vejamos cada uma dessas estruturas.
e-Tec Brasil/CEMF/Unimontes
74
Informtica
Vamos analisar outro exemplo que trata da estrutura de repetio condicional com teste no incio. O procedimento eleva um conjunto de nmeros ao quadrado. Tal conjunto pode ser vazio, unitrio, ou com muitos elementos. Algoritmo elevaquadrado Variveis Inteiro: N,A; Incio Leia(N); ENQUANTO N <> 0 FAA A = N ** 2; Escreva(A); Leia(N); Fim enquanto; FIM. Agora com voc! Analise o exemplo a seguir descrito. Calcule o imposto de renda de um grupo de contribuintes, considerando que os dados de cada contribuinte so: nmero de CPF, nmero de dependentes e renda mensal. Para cada contribuinte, ser feito um desconto de 5% de salrio mnimo por dependente. Os valores da alquota para clculo do imposto so: - At 2 salrios Mnimos : Isento; - 2,1 at 3 salrios Mnimos : 10%; - 3,1 at 5 salrios Mnimos : 15%; - 5,1 at 7 salrios Mnimos : 20%; - Acima de 7,1 salrios Mnimos: 25%. O ltimo valor que no ser considerado ter o CPF igual a zero. Deve ser fornecido o valor atual do salrio mnimo. Algoritmo DescontoIR Variveis CPF, QtdeDependentes, Aliquota : Inteiro; Salario, SalarioMinimo, SalarioBase, ValorIR, QtdeSalarioMinimo : Real; Incio Escreva Informe o Salrio Mnimo; Leia SalarioMinimo; Escreva Informe o CPF; Leia CPF; Enquanto (CPF <> 0) Faa Escreva Informe o salrio do funcionrio; Leia Salario;
O algoritmo receber novos valores de n enquanto n for diferente de zero. Quando n for igual a zero, as iteraes so encerradas e finaliza o algoritmo.
Voc sabe o que Flag? Flag, sinal, bandeira um sinal que o programador define para que o comando de repetio seja interrompido. No caso do algoritmo acima, o flag n igual a zero.
Quando o primeiro nmero lido for igual a zero, nenhum nmero ser elevado ao quadrado.
Algoritmos
75
e-Tec Brasil/CEMF/Unimontes
Escreva Informe a quantidade de; dependentes Leia QtdeDependentes; SalarioBase = (Salrio (QtdeDependentes * (Salario Minimo*0.05)); QtdeSalarioMinimo = (SalarioBase / SalarioMinimo); Se (QtdeSalarioMinimo <= 2) Ento Aliquota = 0 Seno Se (QtdeSalarioMinimo <= 3) Ento Aliquota = 10 Seno Se (QtdeSalarioMinimo <= 5) Ento Aliquota = 15 Seno Se (QtdeSalarioMinimo <= 7) Ento Aliquota = 20 Seno Aliquota = 25; Fim Se; ValorIR = (SalarioBase * Aliquota) / 100; Fim se; Fim se; Fim se; Escreva O desconto do IR para o CPF , CPF de , ValorIR; , Escreva Informe o CPF; Leia CPF; Fim Enquanto; Fim Este exerccio traz uma situao em que no sabemos quantas vezes, as instrues de um conjunto devem ser executadas. Porm sabemos quando elas deixam de se repetir. O primeiro passo descobrir qual conjunto de instrues deve ser repetido no algoritmo. Identificamos a solicitao do CPF (inclusive devido ao fato de ele ser nosso flag). Para cada CPF, deve ser solicitada tambm a quantidade de dependentes que o contribuinte tem e seu salrio-base. importante lembrar, tambm, a necessidade do salrio mnimo, porm este no se repete, pois tem o mesmo valor para todo o algoritmo. Outro ponto a ser destacado que, a cada grupo de informaes recebidas, a identificao da alquota de imposto em que se enquadra cada contribuinte deve ser feita. Algoritmo DescontoIR ... Incio Escreva Informe o Salrio Mnimo; Leia SalarioMinimo; Escreva Informe o CPF; Leia CPF; Enquanto (CPF <> 0) Faa
e-Tec Brasil/CEMF/Unimontes
76
Informtica
... FimEnquanto Fim ... Vamos Observar! Note, no trecho de algoritmo anterior, que o Salrio Mnimo est sendo informado antes da estrutura de repetio (Enquanto). Isso garante que o valor informado pode ser vlido para toda a estrutura, mas no quer dizer que no possa ser solicitado dentro dela, como o caso do CPF, que solicitado tambm antes de a estrutura comear, porm solicitado novamente dentro da estrutura, pois ele nosso flag. Ainda analisando o algoritmo anterior, voc deve pensar! Se o usurio digitar o CPF 0 (zero) antes mesmo de a estrutura de repetio comear. O que acontece? Isso faria com que a estrutura de repetio no ocorresse nenhuma vez. Ser que voc desenvolveria o pseudocdigo abaixo? Algoritmo Estoque Variveis Nome : Caractere ValorUnitario, Quantidade, SubTotal, TotalGeral, Estoque : Real; QtdeTipos : Inteiro; Incio Estoque = 0; QtdeTipos = 0; TotalGeral = 0; Escreva Informe o nome do produto; Leia Nome; Enquanto (Nome <> FIM) Faa QtdeTipos = QtdeTipos + 1; Escreva Informe o valor Unitrio; Leia ValorUnitario; Escreva Informe a quantidade em estoque; Leia Quantidade; SubTotal = (Quantidade * ValorUnitario) Estoque = Estoque + Quantidade TotalGeral = TotalGeral + SubTotal; Escreva O valor total do produto , Nome, , SubTotal; Escreva Informe o nome do produto; Leia Nome; FimEnquanto Escreva Existem , QtdeTipos, tipos de produtos; Escreva O estoque em volumes , Estoque; Escreva O valor comercial do estoque , TotalGeral; Fim
Algoritmos
Vamos reforar aqui o conceito de Flag. FLAG uma condio predefinida que determina o fim de uma estrutura de repetio, seja ela contada ou no contada. Na contada, o FLAG implcito na quantidade de vezes que a estrutura se repete. Na no contada, ela depende de uma interao do usurio ou um comportamento especfico do algoritmo.
Agora com voc !!! Uma empresa deseja fazer um levantamento de seu estoque. Para isso, possui, para cada tipo de produto, seu nome, valor unitrio e sua quantidade em estoque. A empresa deseja saber o Valor Contbil em estoque de cada produto, quantos tipos de produtos existem em estoque, o saldo de todos os produtos e Total Contbil Geral. A digitao terminar quando o nome do produto for igual a FIM.
77
e-Tec Brasil/CEMF/Unimontes
De modo idntico ao exerccio anterior, percebe-se que no se sabe quantas vezes ocorrer a repetio, ou seja, quantos itens existem na suposta empresa. Assim, utilizase o flag nome <> fim. Igualmente ao exerccio anterior, temos aqui o flag, que solicitado antes da estrutura comear. Novamente, solicitado dentro da estrutura, antes que termine. Caso o primeiro nome informado seja igual a fim, no haver nenhuma iterao.
Algoritmo Estoque Variveis ... Incio Estoque = 0; QtdeTipos = 0; TotalGeral = 0; ... Enquanto (Nome <> FIM) Faa ... FimEnquanto ... Fim Observe a inicializao das variveis. So elas que exibiro ao usurio aquilo que ele pede, sendo todas acumuladoras. Dessa forma, precisam inicializar com zero. A varivel Estoque ter a quantidade de volumes, QtdeTipos se refere a quantidade itens, e a TotalGeral trar o Estoque Contbil, ou seja, o valor financeiro do estoque da empresa. Essas trs varaveis sofrero alteraes a cada produto informado pelo usurio. Algoritmo Estoque Variveis ... Incio ... Escreva Informe o nome do produto; Leia Nome; Enquanto (Nome <> FIM) Faa ... ... FimEnquanto ... Fim
Crie um exemplo de algoritmo que utiliza comandos repetitivos com teste no incio mostrando uma massa de testes para o mesmo. Utilize o AVEA para compartilhar a idia com seus colegas.
A diferena entre o teste de incio e o de fim nos comandos repetitivos que, nos comandos com testes no incio, os comandos internos podem no ser executados nem uma vez em funo do valor do flag. No caso dos comandos com teste no final, pelo menor uma vez o grupo de comandos internos ser executado.
e-Tec Brasil/CEMF/Unimontes
78
Informtica
Repita ... ... Bloco de Comandos .. At <condio> Veja o seguinte trecho do algoritmo. Execute seus passos para obter o resultado. ... cont :=0; repita cont := cont + 1; at cont > 20 Vamos pensar no seguinte problema: Um comerciante deseja pagar todas as suas contas do dia. Faa um algoritmo que solicite o valor a ser pago e a Taxa de Juros, caso a conta esteja em atraso. Calcule o Total dos valores de multa e o valor total a ser pago. O algoritmo dever tambm solicitar quantas contas sero pagas no dia. Informe tambm o total de contas em atraso e o total de contas pagas em dia. Ateno que no h possibilidade de no haver contas a pagar, ou seja, haver no mnimo uma conta a ser paga no dia.
Veja o algoritmo abaixo: Algoritmo Contas Variveis QtdeContasAPagar, QtdeContasPagas, tdeContasEmAtraso : Inteiro; ValorConta, TaxaDeJuros, TotalVlrJuros, TotalAPagar : Real; PagoEmAtraso : String; Incio QtdeContasPagas = 0; QtdeContasEmAtraso = 0; TotalVlrJuros = 0; TotalAPagar = 0; Escreva Informe quantas contas sero pagas; Leia QtdeContasAPagar; Repita Escreva Informe o valor da conta; Leia ValorConta; Escreva Esta conta est sendo paga em atraso (S/N) ?; Leia PagoEmAtraso;
Algoritmos
79
e-Tec Brasil/CEMF/Unimontes
Se (PagoEmAtraso = S) Ento Escreva Informe o ndice da taxa de juros (0-100); Leia TaxaDeJuros; QtdeContasEmAtraso = QtdeContasEmAtraso + 1 Seno TaxaDeJuros = 0; FimSe TotalVlrJuros = TotalVlrJuros + (ValorConta * TaxaDeJuros / 100); TotalAPagar = TotalAPagar + ValorConta QtdeContasPagas = QtdeContasPagas + 1; At (QtdeContasPagas = QtdeContasAPagar); Escreva O Valor total pago por multa , TotalVlrJuros; Escreva O Valor total pago , (TotalAPagar + TotalVlrJuros); Escreva Contas em atraso : , QtdeContasEmAtraso; Escreva Contas em dia : , (QtdeContasAPagarQtdeContasEmAtraso); Fim Essa situao traz um levantamento financeiro para previso de pagamento. No sabemos quantas contas sero pagas, mas o usurio as informar. O enunciado ainda diz que haver sempre o mnimo de uma conta. Isso caracteriza que a repetio ocorrer no mnimo uma vez. Releia o pargrafo anterior! Est na ltima frase a dica para fazer o teste no fim. Vamos a outro exemplo. Faa um algoritmo que solicite nmeros inteiros at que um nmero mpar seja digitado. O algoritmo dever informar, ao final, quantos nmeros pares foram informados. Algoritmo NumeroPares Variveis Numero, QtdeNumerosPares : Inteiro; Incio QtdeNumerosPares = 0; Repita Escreva Informe um nmero; Leia Numero; QtdeNumerosPares = QtdeNumerosPares + 1; At (Mod(Numero, 2) <> 0) QtdeNumerosPares = QtdeNumerosPares 1; Escreva Nmeros pares informados , QtdeNumerosPares; Fim
A diferena entre o teste de incio e o de fim nos comandos repetitivos que, nos comandos com testes no incio, os comandos internos podem no ser executados nem uma vez em funo do valor do flag. No caso dos comandos com teste no final, pelo menor uma vez o grupo de comandos internos ser executado.
Esse exerccio simples, talvez sinta uma dificuldade apenas em saber como identificar quando um nmero mpar ou par, mas para resolver isso podemos abstrair a existncia de uma funo chamada Mod () ou Resto( ).
Vamos relembrar!
e-Tec Brasil/CEMF/Unimontes
80
Informtica
O procedimento anterior trabalha com dois argumentos: o nmero a ser dividido e o nmero pelo qual este nmero ser dividido (numerador e denominador).
Agora com voc!! Criando-se uma lista de 3 nmeros (10, 20, 45, por exemplo) faa os testes no algoritmo para obter o resultado do mesmo.
Crie um exemplo de algoritmo que utiliza comandos repetitivos com teste no fim mostrando uma massa de testes para o mesmo. Utilize o AVEA para compartilhar a idia com seus colegas.
O comando Para prov iteraes do bloco de comandos, controladas pelo valor da varivel do tipo inteiro (qualquer), nesse caso, I que recebe um valor inicial e incrementada (ou decrementada) pelo passo, at atingir o valor final. Ao executar o fim para, o valor de I sofre o incremento definido no passo, que pode ser positivo ou negativo.
Algoritmos
81
e-Tec Brasil/CEMF/Unimontes
condio I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0? I > 0?
Vamos analisar o seguinte problema: Dado um nmero, faa um algoritmo que escreva todos os nmeros mpares menores que esse nmero. Dica: Comece pelo um. Algoritmo NumerosImpares
e-Tec Brasil/CEMF/Unimontes
82
Informtica
Variveis Numero, I : Inteiro; Incio Escreva Informe um nmero; Leia Numero; Para I = 1 At Numero Faa Se (Resto(I, 2) <> 0) Ento; Escreva I, mpar; Fim Se; Fim Para; Fim O problema proposto nesse enunciado que dever ser solicitado ao usurio um nmero, o algoritmo dever fazer uma contagem de 1 at o valor informado, e, a cada nmero contado, identificar se o mesmo mpar. Se for, deve ser mostrado seu valor ao usurio. Bem, vamos l!! Agora com voc! Faa um algoritmo que leia 10 nmeros e obtenha: a) A soma dos nmeros; b) A mdia dos nmeros; c) O maior nmero da lista; d) O menos numero da lista. Algoritmo MenuNumeros Variveis Numero, Soma, Maior, Menor, I : Inteiro; Media : Real; Incio Soma = 0; Maior = 0; Menor = 0; Para I = 1 At 10 Faa Escreva Informe um nmero , I, de 10.; Leia Numero; Se i = 1 ento Maior = numero; Menor = numero; Fim se; Soma = Soma + Numero; Se Numero > Maior Ento Maior = Numero Fim Se Se Numero < Menor Ento
Reflita !!! Tudo o que estiver entre o faa e o fimpara ser caracterizado como o que deve ser feito para cada ocorrncia, nesse caso verificar se a varivel I mpar e, em caso positivo, informla ao usurio. Mas o que e o que faz essa varivel I ?
Algoritmos
83
e-Tec Brasil/CEMF/Unimontes
Menor = Numero
Agora com voc!!! Crie uma lista de nmeros (1, 100, 2 , 300, 20, 4, 5, 2, 8 , 90), teste o algoritmo e produza a sada conforme solicitado no enunciado.
Fim Se Fim Para Media = (Soma / 10); Escreva A soma dos 10 nmeros digitados : , Soma; Escreva A mdia aritmtica entre os 10 nmeros; digitados : , Media; Escreva O maior nmero dentre os 10 digitados , Maior; Escreva O menor nmero dentre os 10 digitados : , Menor; Fim Para melhorar o entendimento das estruturas, voc agora vai analisar alguns exemplos de algoritmos que tratam de repeties. 1) Algoritmo para calcular os mltiplos de 3 de 6 at n Algoritmo calculamultiplos { OBJETIVO: CALCULAR OS MULTIPLOS 3 NO INTERVALOR DE 6 ATE N AUTOR: nome DATA CRIACAO: 18/10/2010 } Variaveis inteiro: num, cont; Incio Escreva (Digite o nmero limite.); leia(num); para cont de 6 ate num faca se mod (cont, 3) = 0 entao Escreva(O nmero , cont, multiplo de 3.); Fim se; Fim para; Fim. 2) Algoritmo para imprimir a srie de Fibonacci (0,1,1,2,3,5,8, 13,21....) Algoritmo { OBJETIVO: IMPRIMIR UMA DETERMINADA QTDE DE NUMEROS DE FIBONACCI AUTOR: nome DATA CRIACAO: 19/10/2010 } Variaveis inteiro: num, cont, ant1, ant2, fib; Incio fib = 0; ant2 = 0; ant1 = 1;
e-Tec Brasil/CEMF/Unimontes
84
Informtica
Escreva(Digite a quantidade de nmeros que deseja imprimir.); leia(num); Escreva(fib); fib = 1; para cont de 2 ate num faca Escreva(fib); fib = ant1 + ant2; ant2 = ant1; ant1 = fib; Fim para; Fim. 3) Algoritmo para calcular o valor da expresso E = 1 + 1/1! + ! + .... + 1/n! Algoritmo { OBJETIVO: CALCULAR O VALOR DA EXPRESSAO E = 1 + 1/1! + 1/2!...1/N! AUTOR: nome DATA CRIACAO: 19/10/2010 Variaveis inteiro: num, cont1, cont2, fat; real: exp; Incio exp = 1; imprima(Digite o nmero limite da sequncia.); leia(num); para cont1 de 1 ate num faca fat = 1; para cont2 de 2 ate cont1 faca fat = fat * cont2; fim para; exp = exp + 1 / fat; fim para; Escreva (O valor da expresso : , exp);
fim.
4) Algoritmo para calcular salrio e qtde de filhos de uma cidade Algoritmo { OBJETIVO: CALCULAR SALARIO E QTDE DE FILHOS DE UMA CIDADE AUTOR: ANDRE nome DATA CRIACAO: 19/10/2010 } variaveis
Algoritmos
85
e-Tec Brasil/CEMF/Unimontes
inteiro: numfilhos, cont, salarios100, somafilhos; real: salario, somasalarios, maiorsalario; Incio cont = 0; somasalarios = 0; maiorsalario = 0; cont = 0; salarios100 = 0; somafilhos = 0; Escreva(Entre com o salrio.); leia(salario); Escreva(Entre com o nmero de filhos.); leia(numfilhos); enquanto salario >= 0 faca cont = cont + 1; somasalarios = somasalarios + salario; somafilhos = somafilhos + numfilhos; se salario <= 100 entao salarios100 = salarios100 + 1; Fim se; se salario > maiorsalario entao maiorsalario = salario; Fim se; Escreva(Entre com o salrio.); leia(salario); Escreva (Entre com o nmero de filhos.); leia(numfilhos); Fim enquanto; Escreva(A mdia dos salrios : , somasalarios / cont); Escreva (A mdia do nmero de filhos : , somafilhos / cont); Escreva (O percentual de pessoas com salrio at 100 : , salarios100 * 100 / cont);
Fim.
Resumo
Voc estudou nesta unidade as estruturas de repetio que tratam de processar quantidades de dados que, em muitos casos, o programador e em outros, o programador no tem ideia. Assim, a informao do usurio papel fundamental para o sucesso dos resultados. Assim, voc pode conhecer os recursos da repetio com teste no
e-Tec Brasil/CEMF/Unimontes
86
Informtica
incio, repetio com teste no fim, alm da repetio contada. Esperamos que os exemplos tenham auxiliado na compreenso de mais esses conceitos! Vamos em frente! Chegamos ao final da leitura desta unidade e no poderamos deixar de parabeniz-lo por estar conosco at aqui e cheio de vontade para continuar o estudo da prxima unidade.
Atividades de aprendizagem
1) Elabore um Algoritmo que depois de ler uma sequncia de N nmeros (N informado pelo usurio), apresente os seguintes resultados: mximo, mnimo, somatrio, a quantidade de nmeros superiores a 10, a percentagem de valores superiores a 10, a mdia, a mdia dos valores superiores a 10.
2) Construir um algoritmo que calcule a mdia aritmtica de vrios valores inteiros positivos. O final da leitura acontecer quando for lido um valor negativo.
3) Em uma eleio presidencial existem quatro candidatos. Os votos so informados atravs de cdigos. Os dados utilizados para a contagem dos votos obedecem seguinte codificao: - 1,2,3,4 = voto para os respectivos candidatos; - 5 = voto nulo; - 6 = voto em branco;
Elabore um algoritmo que leia o cdigo do candidato em um voto. Calcule e escreva: - total de votos para cada candidato; - total de votos nulos; - total de votos em branco. Como finalizador do conjunto de votos, tem-se o valor 0.
4) Escreva um algoritmo que calcule a mdia dos nmeros digitados pelo usurio, se eles forem pares. Termine a leitura se o usurio digitar zero (0).
Algoritmos
87
e-Tec Brasil/CEMF/Unimontes
Calcule a mdia ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas restantes, 3. Mostre o cdigo do aluno, suas trs notas, a mdia calculada e uma mensagem APROVADO se a mdia for maior ou igual a 5 e REPROVADO se a mdia for menor que 5. Repita a operao at que o cdigo lido seja negativo.
6)Escrever um algoritmo receba um numero x. Aps, calcule a sua tabuada de 1 at n, de um. Mostre a tabuada na forma: 1xn=n 2 x n = 2n 3 x n = 3n ....... n x n = n2
7) Escrever um algoritmo que leia um nmero n que indica quantos valores devem ser lidos a seguir. Para cada nmero lido, mostre uma tabela contendo o valor lido e o fatorial desse valor.
8)Escrever um algoritmo que leia um nmero no determinado de valores e calcule a mdia aritmtica dos valores lidos, a quantidade de valores positivos, a quantidade de valores negativos e o percentual de valores negativos e positivos. Mostre os resultados.
9)Escrever um algoritmo que leia uma quantidade desconhecida de nmeros e conte quantos deles esto nos seguintes intervalos: [0,25], [26,50], [51,75] e [76,100]. A entrada de dados deve terminar quando for lido um nmero negativo.
10) Faa um algoritmo que leia vrios nmeros inteiros e calcule o somatrio dos nmeros negativos. O fim da leitura ser indicado pelo nmero 0.
Para Todos os algoritmos que voc criou nessa unidade, elabore uma massa de testes. Ao terminar,utilize o AVEA para compartilhar a idia com seus colegas.
e-Tec Brasil/CEMF/Unimontes
88
Informtica
AULA 1
Alfabetizao Digital Aula 7 - Variveis homogneas Vetores e Matrizes
Voc deve lembrar que definimos varivel como uma entidade criada para permitir o acesso a uma posio de memria, onde se armazena uma informao de um determinado tipo de dado pela simples referncia a um nome simblico. Nem sempre os tipos bsicos inteiro, real, caractere e lgico so suficientes para exprimir estruturas de dados em algoritmos. Dessa forma, surge a necessidade da criao da definio de novos tipos. Aparecem ento as variveis indexadas.
Ao final desta unidade, esperamos que voc seja capaz de: - Conhecer e aplicar o uso de ndices; - Definir variveis homogneas do tipo vetores e matrizes; - Aplicar o uso de vetores e matrizes para as mais distintas aplicaes.
7.1 Vetores
Vetor uma varivel dividida em n partes, sendo esse nmero n, a sua dimenso. Por exemplo, se um professor quiser armazenar notas de 80 alunos, ele pode definir uma varivel nota e dividi-la em 80 partes e, cada parte recebe o valor da nota de cada aluno. Essa nota referenciada por um ndice delimitado de 1 at 80, usado para o manuseio s partes da varivel nota, como a seguir.
Nota
5.0 1 30. 2 80. 3 ............... 9.5 80
Variveis indexadas um conjunto de variveis do mesmo tipo, referenciveis pelo mesmo nome e individualizadas entre si, em funo de sua posio, referenciada pelo ndice. Quando a varivel indexada por um ndice, trata-se de um vetor. Por sua vez, quando a mesma referenciada por, no mnimo dois ndices, trata-se de matriz.
Para acessar cada parte do vetor, faz-se necessria a presena de uma varivel que armazena o nmero de cada parte do vetor, de 1 at n, sendo essa varivel denominada de ndice.
A criao do tipo vetor pode ser feita segundo a seguinte especificao: Tipo v = vetor [li :ls] <tipo bsico>; Onde li = limite inferior Ls = limite superior Tipo bsico = um dos quatro tipos primitivos
A utilizao do vetor viabiliza a implementao de procedimentos mais elaborados como, por exemplo, mtodos de ordenao de dados, procedimentos de pesquisa aos dados, como veremos mais adiante.
Algoritmos
89
e-Tec Brasil/CEMF/Unimontes
Para representar a varivel nota, faz-se a definio: Tipo v = vetor [1:80] real; v: nota; O nmero de elementos do vetor dado por (ls - li +1). Ento, se substituirmos os dados do vetor acima defina, temos: 80 -1 + 1= 80 Agora com voc!! Seja a varivel vetor definida abaixo. Qual o nmero de elementos do vetor?
Tipo v = vetor [5:9] caracter; V:nome Soluo: O vetor tem 9-5+1= 5 elementos e pode ser visto como:
5 6 7 8 9
Os ndices do vetor so os nmeros de 5 a 9. Assim, podemos indexar o vetor com intervalos de valores, os mais distintos, no tendo que ser, necessariamente, os ndices somente do tipo inteiro. Eles podem ser tambm do tipo caractere, lgico, dependendo da forma de elaborao do procedimento lgico. A situao mais comum quando se define um vetor com ndices inteiros. Cada elemento do vetor tratado como se fosse uma varivel simples. Para a referncia a um elemento, usa-se o nome do vetor e a identificao do elemento (ndice) entre colchetes ou parnteses. Por exemplo, se necessitarmos definir o valor Joo ao elemento identificado pelo ndice 6 do vetor anterior teramos: Nome[6]:=joo
joo 5 6 7 8 9
Agora com voc!!! Faa um algoritmo que leia no mximo 10 nmeros e, aps a sua leitura, mostre ao usurio em ordem inversa digitada por ele. Algoritmo OrdemInversa
e-Tec Brasil/CEMF/Unimontes
90
Informtica
Variveis I, N : Inteiro Tipo v = Vetor [1:10]:inteiro; V: entrada; Incio Repita Escreva Informe a quantidade de nmeros que digitar; Leia N; At ((N > 0) E (N <= 10)) Para I = 1 At N Faa Escreva Informe o nmero , I, de , N; Leia Entrada[I]; FimPara I = N; Enquanto ( I > 0) Faa Escreva Nmero , I, de , N, , Entrada[I] I = I 1; FimEnquanto; Fim No desenvolvimento desse pseudocdigo, so trabalhados alguns novos conceitos. Quando definimos uma varivel de conjunto (vetor ou matriz), devemos definir tambm a capacidade mxima de armazenamento que ela aceita, ou seja, a quantidade de elementos (valores) que ela suportar. A esse tamanho mximo, damos o nome de Tamanho Fsico. Ao que realmente foi utilizado do conjunto, ou seja, a essa quantidade de elementos utilizados dado o nome de Tamanho Lgico. Para que isso acontea, devemos ter um controle para saber o tamanho fsico e, de tal espao, quantas posies sero utilizadas. Esse controle deve ser feito em variveis distintas. Vamos a mais um exemplo! Faa um algoritmo capaz de verificar se um dado caractere existe ou no na cadeia lida, como a seguir:
A K J L P H B I R E T X Z Q N B N M O P
Observe com ateno que a reserva do tamanho do vetor no implica sua real utilizao: podemos optar (necessitar) usar menos (nunca mais).
Algoritmo pesquisacaractere Variaveis Tipo v = vetor [1:20]:caractere; V : letra; Info : caractere; I : inteiro;
Algoritmos
91
e-Tec Brasil/CEMF/Unimontes
Incio Para I de 1 at 20 faa Leia Letra[i]; Fim para Leia info; Para I de 1 at 20 faa Se Letra[i] = info ento Escreva Info, est na posio , i, do vetor; Abandone; Fim se; Fim Para Fim Vamos falar agora do comando abandone... Como o vetor tem 20 posies, o pior caso que vai acontecer percorrer as 20 posies e no encontrar o contedo procurado. Pode tambm haver o caso de se percorrer o vetor e somente na posio 20m encontrar o contedo. Tanto no melhor caso, que encontrar o contedo na primeira posio do vetor e no caso mdio, encontrar nas demais posies com exceo da ltima, o processamento abandona a iterao, pois j cumpriu seu objetivo. Esse recurso diminui o tempo de processamento do algoritmo, fazendo-o um pouco mais otimizado. Vamos refletir: Se a informao introduzida pelo usurio na varivel info estiver em alguma posio do vetor, ento o algoritmo ir emitir a seguinte mensagem: O contedo de info est na posio I do vetor. Caso no seja encontrado o contedo, o algoritmo finaliza sem mostrar nada. Mas como fazer para que o algoritmo mostre quando encontrou e quando no encontrou o contedo procurado? Dessa forma, vamos usar uma varivel do tipo lgico para auxiliar na resoluo do problema. Algoritmo pesquisacaractere Variaveis Tipo v = vetor [1:20]:caractere; V : letra; Info : caractere; Achou: lgico; I : inteiro;
O comando Abandone executa a ao de abandonar o loop ou iterao no momento em que o contedo procurado for encontrado em alguma posio do vetor.
e-Tec Brasil/CEMF/Unimontes
92
Informtica
incio Para I de 1 at 20 faa Leia Letra[i]; Fim para; Leia info; Achou = falso; Para I de 1 at 20 faa Se Letra[i] = info ento Achou = verdadeiro; Abandone; Fim se; Fim Para; Se achou ento Escreva Info est na posio , i, do vetor; Seno Escreva (A informao procurada no se encontra no vetor); Fim SE; Fim Para inserir a varivel do tipo lgico em comandos condicionais, basta descrever a sintaxe: Se achou ento A semntica : Se achou verdadeiro..... Para prover ainda mais recursos de desenvolver o seu algoritmo, vamos agora mostrar as variveis indexadas, composta de dois ndices: as matrizes.
A varivel achou, como do tipo lgico, pode receber os valores falso ou verdadeiro.
7.2 Matrizes
Uma vez que as variveis tm o mesmo nome, o que as distingue so ndices que referenciam sua localizao dentro da estrutura. Uma varivel do tipo matriz composta por linhas e colunas. A matriz uma varivel indexada, com, no mnimo, duas dimenses. Cada dimenso da matriz deve receber um ndice distinto. A criao do tipo matriz pode ser feita segundo a seguinte especificao: Tipo v = matriz [li :ls, li1:ls1] <tipo bsico>;
Onde li = limite inferior da linha Ls = limite superior da linha
Uma matriz uma varivel composta, homognea, no mnimo bidimensional, formada por uma sequncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome) e alocadas sequencialmente na memria.
Li1 = limite inferior da coluna Ls1 = limite superior da coluna Tipo bsico = um dos quatro tipos primitivos
Algoritmos
93
e-Tec Brasil/CEMF/Unimontes
Para representar a varivel nota, faz-se a definio: Tipo v = vetor [1:10, 1:10] real; v: nota; Assim, cria-se uma varivel de 10 x 10, do tipo real, como se mostra, a seguir:
1 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10
Para preencher as posies da matriz, podemos usar o seguinte procedimento: Algoritmo Boletim Variveis Tipo m = matriz [1:10, 1:10] inteiro; M = aluno I , J: Inteiro Incio Para I = 1 At 10 Faa Para J = 1 at 10 faa Escreva Informe o contedo da posio; Leia Aluno[I, J]; Fim Para Fim Para Fim Quando voc necessitar mostrar o contedo da matriz, proceda da mesma forma, inserindo a instruo escreva: Escreva aluno [I, J] Voc pode observar que no exemplo anterior usamos dois ndices (I e J), alm de comandos de repetio aninhados. Agora com voc!!!
e-Tec Brasil/CEMF/Unimontes
94
Informtica
Execute passo a passo e mostre os resultados obtidos. Vamos analisar o seguinte problema: Faa um algoritmo que solicite quatro notas e seus respectivos pesos. Esses valores devero estar armazenados em uma nica matriz. Ao final, exiba mdia ponderada dessas notas. Assuma que as notas so de zero a cem (0 a 100). Algoritmo Boletim Variveis Tipo m = matriz [1:4, 1:2] inteiro; M = Numerador, Denominador, aluno I : Inteiro; Media : Real; Incio Numerador = 0; Denominador = 0; Para I = 1 At 4 Faa Escreva Informe a nota , I, do aluno; Leia Aluno[I, 1]; Escreva Informe o peso da nota , I; Leia Aluno [I, 2]; Numerador = Numerador + (Aluno[I, 1] * Aluno[I, 2]); Denominador = Denominador + Aluno[I, 2]; FimPara; Media = (Numerador / Denominador); Escreva A mdia do aluno , Media; Fim Vamos supor que so 4 notas, uma por bimestre. A prpria estrutura criada para a matriz, atravs do ndice de linha, pode controlar a nota de cada bimestre. Vamos analisar mais um exemplo de uso de matrizes. Um comerciante deseja pagar todas as suas contas do dia. Faa um algoritmo que solicite o valor a ser pago e a taxa de juros para a conta. Lembre-se de que, caso a conta seja paga em dia, a taxa de juros zero. Calcule o total dos valores de multa e o valor total a ser pago. O algoritmo dever tambm solicitar quantas contas sero pagas no dia. Algoritmo Pagamento Variveis I, QtdeContas : Inteiro; Tipo m = matriz[1:2, 1:5] Real; M = Contas; TotalMultas, TotalContas: Real;
Outro ponto para reflexo!!! No algoritmo anterior, trabalhamos com uma matriz e usamos somente uma estrutura de repetio. Nesse problema foi possvel trabalhar com o ndice I e manter constante o contedo do segundo ndice da matriz.
Algoritmos
95
e-Tec Brasil/CEMF/Unimontes
Incio Repita Escreva Informe quantas contas sero pagas; Leia QtdeContas; At (QtdeContas > 0 E QtdeContas <= 5) TotalMultas = 0; TotalContas = 0; Para I = 1 At QtdeContas Faa Escreva Informe o valor da conta , I, de , QtdeContas; Leia Contas[1, I]; Escreva Informe a taxa de juros da conta , I, de , QtdeContas; Leia Contas[2, I]; TotalMultas = TotalMultas + (Contas[1, I] * Contas[2, I] / 100); TotalContas = TotalContas + Contas[1, I]; FimPara; Escreva O total a ser pago em multa , TotalMultas; Escreva O valor total a ser pago , TotalContas + TotalMultas;
Fim
Proponha uma discusso no AVEA que trata da utilizao dos vetores e matrizes. Insira seus algoritmos e compareos com os aqueles criados pelos colegas.
Resumo
Chegamos ao final de mais uma unidade. Tenho certeza de que voc est observando que, quanto mais avanamos no contedo, mais conhecemos recursos interessantes para aplicar na lgica de programao. Esperamos que agora seu entendimento torne-se cada vez mais claro sobre o armazenamento de dado em variveis indexadas, assim como o manuseio com as mesmas. Esta unidade tratou de temas importantes, um pouco mais complexos que os abordados nas unidades anteriores, exigindo leitura mais aprofundada e uma anlise mais detalhada dos exemplos mostrados. Por isso, voltamos a convid-lo a expandir seus conhecimentos a respeito desses assuntos por meio da pesquisa. Relembramos que a inquietao e a busca por novas informaes um grande passo para o sucesso em qualquer rea da vida. Mos obra!
Atividades de aprendizagem
1)Elabore um Algoritmo que leia uma sequncia de n nmeros, e os mostre por ordem inversa.
e-Tec Brasil/CEMF/Unimontes
96
Informtica
2) Elabore um Algoritmo que dada uma sequncia de nmeros, indique qual a percentagem que cada um representa em relao ao total.
3) Elabore um Algoritmo que, dado um conjunto de temperaturas de cidades portuguesas, identificadas por um n. de ordem, indique quais as que tm temperatura superior mdia do pas. Mostre uma lista de temperaturas ordenadas por ordem decrescente.
4) Elabore um Algoritmo que, dadas as notas de um conjunto de alunos, apresente o n. de ocorrncias de cada uma das notas que se situem entre a nota mnima e a nota mxima. No fim, apresente os seguintes valores estatsticos: nota mxima; nota mnima; n. de zeros; mdia das notas; n. de notas superiores mdia.
5).Elabore um algoritmo que dada uma sequncia de nomes, os apresente por ordem alfabtica.
6) Dada uma sequncia de nmeros, determine a percentagem daqueles que so: superiores mdia dos elementos que a constituem; inferiores ao antepenltimo elemento da sequncia.
7)Elabore um algoritmo que, baseando-se nos valores de produo mensal de uma fbrica de automveis num dado ano, calcule e apresente: os valores mensais acumulados de produo ao longo do ano; o ms em que foi atingida metade da produo anual.
Algoritmos
97
e-Tec Brasil/CEMF/Unimontes
8) Elabore um algoritmo que permita registrar as notas dos alunos de Sistemas de Informao disciplina de Algoritmos e Programao I. O programa deve ter informao sobre o nmero, nome e notas dos 3 exames. Deve permitir ao usurio introduzir, consultar e alterar as notas de um aluno, ter uma opo para alterar as notas de todos os alunos existentes, e ainda tirar listagens por ordem de nmero de aluno e por ordem alfabtica, conforme pedido do usurio; para cada aluno, as listagens devero indicar se est aprovado ou no, sabendo-se que para isso dever ter uma das trs notas > 10.
9) Elaborar um algoritmo que leia um conjunto de 30 valores e os coloque em 2 vetores conforme forem pares ou mpares. O tamanho do vetor de 5 posies. Se algum vetor estiver cheio, escrev-lo. Terminada a leitura escrever o contedo dos dois vetores. Cada vetor pode ser preenchido tantas vezes quantas forem necessrias.
10) Escreva um algoritmo que leia dois vetores de 10 posies e faa a multiplicao dos elementos de mesmo ndice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante.
11) Escreva um algoritmo que leia um vetor de 100 posies e mostre-o ordenado em ordem decrescente.
12) Escreva um algoritmo que leia um vetor de 13 elementos inteiros, que o Gabarito de um teste da loteria esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o nmero do seu carto e um vetor de Respostas de 13 posies. Verifique para cada apostador o nmero de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o nmero do apostador e o nmero de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem Ganhador.
e-Tec Brasil/CEMF/Unimontes
98
Informtica
13) Escreva um algoritmo que leia um vetor de 20 posies e mostre-o. Em seguida, troque o primeiro elemento com o ltimo, o segundo com o penltimo, o terceiro com o antepenltimo, e assim sucessivamente. Mostre o novo vetor depois da troca.
14) Escrever um algoritmo que gera os 10 primeiros nmeros primos acima de 100 e os armazena em um vetor de X(10) escrevendo, no final, o vetor X.
15) Escrever um algoritmo que leia 2 vetores de tamanho 10 e os escreva. Crie, a seguir, um vetor de 20 posies que contenha os elementos dos outros 2 vetores em ordem crescente.
16) Escrever um algoritmo que leia 2 vetores X(10) e Y(10) e os escreve. Crie, a seguir, um vetor Z que seja: a) a unio de X com Y; b) a diferena entre X e Y; c) a soma entre X e Y; d) o produto entre X e Y; e) a interseco entre X e Y. Escreva o vetor Z a cada clculo.
Algoritmos
99
e-Tec Brasil/CEMF/Unimontes
Depois de aprender a utilizar os tipos primitivos de dados (inteiro, real, caractere e lgico) e as variveis indexadas (vetores e matrizes) podemos estudar alguns procedimentos de ordenao e pesquisa de dados. Tais procedimentos so de extrema importncia para o processamento de dados uma vez que so recursos que podem otimizar a recuperao dos dados tanto os da memria quanto os armazenados em disco. Quando se mantm um procedimento adequado de ordenao, fica mais fcil e rpido para que os dados sejam encontrados, na ordem desejada. Tal ordem pode ser ascendente ou descendente. Depende do problema em questo. Dessa forma, a ordenao auxilia no s no armazenamento, mas principalmente na pesquisa dos dados. Para ordenao e pesquisa, em geral utilizam-se as variveis indexadas, como os vetores e as matrizes.
A classificao consiste em ordenar os elementos de um vetor ou matriz em uma determinada classificao, seguindo o critrio necessrio para cada problema.
dente;
Esse critrio pode ser alfabtico, para dados literais; crescente ou decrescente para dados numricos.
Algoritmos
101
e-Tec Brasil/CEMF/Unimontes
No o mais eficiente dos mtodos existentes, entretanto considerado o mais popular, devido sua simplicidade.
Agora com voc! Desenhe um vetor vazio, faa os procedimentos de entrada de dados e de classificao. Veja o resultado final.
Vamos analisar uma ordenao de 5 elementos pelo mtodo da bolha. Algoritmo Bubble_Sort Variveis Tipo v = vetor [1:5]: real; V = Numeros; I, J : Inteiro; Aux : Real; Incio Para I = 1 At 5 Faa Escreva Informe o nmero , I, de 5; Leia Numeros[I]; Fimpara Aux = Numeros[I]; Numeros[I] = Numeros[I+1]; Numeros[I+1] = Aux; J = 5; Enquanto (J > 1) Faa Para I = 1 at (J-1) Faa Se (Numeros[I] > Numeros[I+1]) ento Aux = Numeros[I]; Numeros[I] = Numeros[I+1]; Numeros[I+1] = Aux; Fim Se Fim para J = J 1 Fim Enquanto Escreva Vetor Ordenado; Para I = 1 At 5 Faa Escreva Numeros[I]; Fim para; Fim Podemos pensar numa outra forma de trabalhar o mesmo processo de ordenao. Vejamos o algoritmo, a seguir: Algoritmo Bubble_Sort Variveis Tipo v = vetor [1:5]: real; V = Numeros ; I, J : Inteiro; Aux : Real; Incio Para I = 1 At 10 Faa Escreva Informe o nmero , I, de 10; Leia Numeros[I]; Fimpara;
e-Tec Brasil/CEMF/Unimontes
102
Informtica
Para I = 1 at 9 Faa Para J = I at (10-I) Faa Se (Numeros[J] > Numeros[J+1]) ento Aux = Numeros[J]; Numeros[J] = Numeros[J+1]; Numeros[J+1] = Aux; Fim Se; Fim para Fim Para Escreva Vetor Ordenado; Para I = 1 At 10 Faa Escreva Numeros[I]; Fim para Fim Faa o mesmo procedimento de teste do pseudocdigo anterior. Desenhe um vetor vazio, faa os procedimentos de entrada de dados e de classificao. Veja o resultado final.
Algoritmos
103
e-Tec Brasil/CEMF/Unimontes
Incio Para I = 1 At 10 Faa Escreva Informe o nome , I, de 10; Leia Nomes[I]; Fim para Escreva Informe o nome que deseja procurar; Leia Valor; I=1 Achou = .Falso. Enquanto (I <= 10) E (NO Achou) Faa Se (Nomes[I] = Valor) ento Achou = .Verdadeiro Seno I = I + 1; Fim Se Fim Enquanto Se (Achou) ento Escreva Valor, foi encontrado. Seno Escreva Valor, no foi encontrado. Fim se Fim
Insira sua analogia no AVEA e compare com a dos seus colegas.
Agora com voc!!! Faa uma analogia entre o algoritmo de busca apresentado no estudo de vetores e o algoritmo visto na pesquisa sequencial:
e-Tec Brasil/CEMF/Unimontes
104
Informtica
Algoritmo PesquisaBinaria Variveis I, Valor, Meio, Alto, Baixo, : Inteiro; Tipo v ; vetor [1:15] inteiro; V = Numeros; Achou : Lgico; Incio Para I = 1 At 15 Faa Escreva Informe o nmero , I, de 15; Leia Numeros[I]; Fim para; Escreva Informe o nmero que deseja procurar; Leia Valor; Baixo = 1; Alto = 15; Achou = .Falso; Enquanto (Baixo <= Alto) E (NO Achou) Faa Mdio = (Baixo + Alto) / 2; Se (Valor < Numeros[Mdio]) ento Alto = Mdio - 1 Seno se (Valor > Numeros[Mdio]) ento Baixo = Mdio + 1 Seno Se (Valor = Nmeros[Mdio]) ento Achou = .Verdadeiro. Fim Se Fim Enquanto Se (Achou) ento Escreva Valor, foi encontrado.; Seno Escreva Valor, no foi encontrado.; Fim se Fim Para elucidar tal processo, vamos mostrar as seguintes figuras que mostram um exemplo com uma matriz de quinze (15) elementos e a pesquisa de alguns valores. O elemento sombreado mostra que o elemento do meio, e cada linha representa a poro da matriz que ser utilizada para a pesquisa. Valor a pesquisar : 25
1 0 2 2 3 4 4 6 5 8 6 10 7 12 8 14 9 16 16 10 18 18 11 20 20 12 22 22 13 24 24 24 24 14 26 26 26 15 28 28 28
Algoritmos
105
e-Tec Brasil/CEMF/Unimontes
Ou seja, o valor pesquisado no foi encontrado nos valores iniciais do vetor cujo resultado necessitou apenas de 4 iteraes em um conjunto de 15 valores. Valor a pesquisar : 8
1 0 0 2 2 2 3 4 4 4 6 6 5 8 8 8 8 6 10 10 10 7 12 12 12 8 14 9 16 10 18 11 20 12 22 13 24 14 26 15 28
Este exemplo j traz uma situao de xito na pesquisa: o valor foi encontrado.
Resumo
Na unidade estudada voc pode ver a aplicabilidade dos vetores e matrizes em processos to relevantes para a organizao e recuperao da informao. Faz-se importante observar que, quanto mais voc conhece os recursos oferecidos pela computao para o desenvolvimento dos algoritmos, percebe-se que os mesmos se Acumulam e podem ser utilizados de forma conjunta. O uso de vetores e matrizes para armazenamento de valores homogneos teve, dentro dos textos vistos, mais um benefcio identificado: a possibilidade de classificao e de pesquisa de valores. Dessa forma, a classificao pode ser feita em forma crescente ou decrescente para nmeros, e alfabtica para literais (o que no deixa de ser uma ordenao crescente).
Atividades de aprendizagem
1) Elabore um Algoritmo que leia uma sequncia de n nmeros, e os ordene de forma descendente.
2) Elabore um Algoritmo que leia uma sequncia de n nmeros, e os ordene de forma ascendente.
e-Tec Brasil/CEMF/Unimontes
106
Informtica
3) Elabore um Algoritmo que leia uma sequncia de n nomes e os coloque em ordem alfabtica.
4) Elabore um Algoritmo para descobrir se existe um nome informado pelo usuri0 em uma lista de nomes ordenados.
9) Faa um algoritmo que verifica se existe a letra P em qualquer parte do nome informado.
10) Faa um algoritmo que faz uma pesquisa binria em um conjunto de 100 nomes.
Algoritmos
107
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetizao Digital Aula 9 - Variveis heterogneas Registros
O estudo de registros vem propiciar mais recursos para que voc desenvolva seus algoritmos cada vez mais elaborados. Com os registros podemos trabalhar os dados de forma persistente. Assim, quando necessrio, buscam-se os dados e se processam funcionalidades especficas.
9.1 Registros
So estruturas que podem agregar diferentes informaes. Dessa maneira, podem ser feitas diferentes combinaes, gerando outros tipos de dados. Um registro consiste em um certo nmero de itens de dados, chamados membros da estrutura, que no necessitam ser do mesmo tipo, agrupados juntos, como mostra a figura a seguir.
Dados de Funcionrio Cdigo: 4401 Nome: Orozimbo da Silva Sexo: M
Importante! Um registro uma coleo de campos, em que cada campo pode ser de um tipo de dado diferente. Por isso, os registros so conhecidos como variveis compostas heterogneas.
Endereo: Rua das pazes 565 Bairro: Tranquilidade Cidade: Lu Cargo: chefe de diviso de tecnologia de informao Salrio: R$ 7.879,90
Para definir um registro no pseudocdigo, proceda da seguinte forma: Tipo r = registro Campo1: tipo Campo1: tipo Campo n: tipo Fim registro R = nome varivel Veja o seguinte exemplo: Tipo r = registro Nome, endereo, cidade, estado: caractere; Salrio: real; Cdigo: inteiro; Fim registro; R = func;
Algoritmos
109
e-Tec Brasil/CEMF/Unimontes
Para fazer leitura aos campos do registro, voc pode usar a instruo: Leia registro.campo Para melhor compreender a sintaxe, veja o exemplo: Leia func.nome; Leia func.codigo; Leia func.salario; Para escrever os dados constantes nos campos dos registros, voc pode usar a instruo: Escreva func.nome; Escreva func.codigo; Escreva func.salrio; Para realizar qualquer processamento nos campos dos registros, pode-se utilizar o nome das variveis do registro. Veja o exemplo: Func.salrio = func.salrio * 1,15; Essa instruo faz com que o salrio do funcionrio sofra um reajuste de 15 por cento. Segue agora apresentao de algoritmos que trabalharo estrutura heterognea de dados em suas resolues e, seguindo a estrutura j trabalhada nas unidades anteriores, os conceitos de cdigo e regras de implementao sero explicados. Faa um algoritmo que solicite ao usurio o preo de compra e o preo de venda de um nico produto e informe ao usurio: O valor do lucro obtido, caso exista; Caso o lucro seja negativo, dever ser informado ao usurio que ele obteve prejuzo na venda. Algoritmo VerLucro Variveis Tipo r = registro Custo, venda, lucro: real; Fim registro; r = produto; Incio Escreva Informe o preo de compra do produto; Leia Produto.Custo; Escreva Informe o preo de venda do produto; Leia Produto.Venda; Produto.Lucro = (Produto.Venda Produto.Custo); Se (Produto.Lucro > 0) ento
e-Tec Brasil/CEMF/Unimontes
110
Informtica
Escreva A venda obteve um lucro de , Produto.Lucro; Seno Se (Produto.Lucro < 0) ento Escreva A venda obteve um prejuzo de , Produto.Lucro; Seno Escreva No houve lucro nem prejuzo na venda; Fim Se Fim se Fim Vamos verificar outro exemplo de utilizao de registros. Para cada aluno de uma turma de N alunos se tm dados como o seu nmero de registro, seu nome e sua mdia final, faa um algoritmo que: Imprima a mdia da turma; Calcule a percentagem de alunos, cujos nomes comecem pela letra A; Determine quantos alunos tm a mdia superior a 7,0. Algoritmo Boletim Variveis Tipo r = registro Numero: inteiro; Nome: string; Media: real; Fim registro Tipo v = vetor [1:100] r; V = Alunos, nomeaux; QtdeAlunos, QtdeNomesA, QtdeAlunos7 : Inteiro; MediaTurma, PercentualNomesA : Real; Incio Repita Escreva Informe a quantidade de alunos; Leia QtdeAlunos; At (QtdeAlunos > 0 E QtdeAlunos <= 100); MediaTurma = 0; QtdeNomesA = 0; QtdeAlunos7 = 0; Para I = 1 At QtdeAlunos Faa Escreva Informe os dados do aluno , I, de , Qt deAlunos; Escreva Nmero : ; Leia Alunos[I].Numero; Escreva Nome : ; Leia Alunos[I].Nome; Nomeaux = Alunos[i].nome; Escreva Mdia Final : ;
Algoritmos
111
e-Tec Brasil/CEMF/Unimontes
Leia Alunos[I].Media; MediaTurma = (MediaTurma + Alunos[I].Media); Se (Alunos[I].Nome[1] = A) ento QtdeNomesA = (QtdeNomesA + 1); Fim Se Se (Alunos[I].Media > 7.0) ento QtdeAlunos7 = (QtdeAlunos7 + 1); Fim Se Fim Para MediaTurma = (MediaTurma / QtdeAlunos); MediaNomesA = (QtdeNomesA * 100) / QtdeAlunos; Escreva A mdia da turma : , MediaTurma; Escreva O percentual de alunos com nomes; comeando por A , PercentualNomesA; Escreva Existem , QtdeAlunos, com mdia acima de 7.0; Fim O enunciado desse problema contempla uma situao um pouco mais complexa, pois envolve, alm de registros, estruturas de repetio, estrutura de condio, bem como de um pequeno processamento sobre os dados de entrada. Foi utilizado um vetor do tipo registro para receber os dados. Alm disso, para verificar quais nomes comeam com a letra A, cada nome foi armazenado no vetor nomeaux, pois cada letra do nome fica armazenada em uma posio do vetor, comeando do seu incio.
Crie um algoritmo que trabalhe com registro de dados e compartilhe com seus colegas no AVEA.
Resumo
Como pde ser visto, o uso de registros permite que dados comuns a um objeto, pessoa ou acontecimento, podem ser agrupados em uma nica varivel, sendo de tipos diferentes. O uso dos registros viabilizam o trabalho com dados de diferentes tipos, mas que tem interrelao entre si. As instrues de leitura e escrita tem uma nova forma de redao: elas devem identificar o nome das variveis e muitas vezes o nome do registro que est sendo lido. Porm, o conceito e o manuseio de variveis so aplicados como j visto ateriormente. Tambm nos registros se aplica a mcima de que os dados so organizados para viabilizar um eficiente processo de busca e recuperao.
e-Tec Brasil/CEMF/Unimontes
112
Informtica
Atividades de aprendizagem
1) Defina campo, registros.
6) Crie um registro que contm os seguintes dados: Cdigo, nome, endereo, sexo, telefone, data nascimento, nome do pai, nome da me, identidade, CPF
Algoritmos
113
e-Tec Brasil/CEMF/Unimontes
9) Crie um procedimento que faa a leitura de n registros cuja estrutura foi apresentada na questo 6, mostrando se o nome informado pelo usurio existe ou nos dados.
10) Crie um procedimento que faa a leitura de n registros cuja estrutura foi apresentada na questo 6, mostrando se o CPF informado pelo usurio existe ou nos dados
e-Tec Brasil/CEMF/Unimontes
114
Informtica
Os arquivos so formados pelo conjunto de registros armazenados em um dispositivo de memria secundria. Para relembrar!!
Ao final desta unidade, voc ser capaz de: - entender a forma de organizao e acesso dos arquivos; - mesclar o uso de registros juntamente com arquivos.
Um arquivo s pode ser utilizado desde que se defina um registro para o armazenamento e processamento dos seus dados
Algoritmos
115
e-Tec Brasil/CEMF/Unimontes
Para manipular qualquer arquivo, ele precisa de uma operao de abertura. A notao abaixo mostra a abertura de arquivos: Abra lista de identificadores de arquivo tipo utilizao Veja os exemplos: Abra AGENDA leitura; Abra AGENDA escrita; Abra AGENDA; Para encerrar o trabalho com os arquivos, os mesmos devem ser fechados. A notao a seguir mostra o fechamento de arquivo. Feche lista de arquivos Veja o exemplo, a seguir: incio tipo NOTAS arquivo sequencial de DADOS; tipo DADOS REGISTRO (MATRICULA numerico, NOME ALUNO literal, NOTA TOTAL NUMERICO); fim registro; Abra NOTAS; -------Feche NOTAS; Fim. Voc vai verificar no prximo exemplo um algoritmo que trata de leitura e escrita em um arquivo com organizao sequencial. incio Tipo A,B arquivo sequencial de T; Tipo T =registro (nome literal, salario numerico); Fim registro; Abra A leitura; Abra B Escrita; Repita leia (A.T); Se A.FDA ento abandone; Fim se; Escreva (B.T); Fim repita; Feche A, B; Fim.
e-Tec Brasil/CEMF/Unimontes
116
Informtica
Quando h um processo de leitura em arquivo sequencial, necessitamos saber se o arquivo chegou ao fim ou ainda tem registros a serem lidos. Para verificar se o arquivo chegou ao fim, usa-se a expresso FDA que quer dizer Fim de Arquivo, ou EOF, que quer dizer End of File (fim de arquivo em ingls). Para tratar da organizao indexada, vamos passar a voc um algoritmo que mostra a definio do arquivo, os campos e a forma de manuseio, como a seguir. Organizao indexada incio Tipo ALUNOS arquivo indexado de DADOS; Tipo DADOS =registro (matricula numerico, outros dados literal); Fim registro; Abra ALUNOS leitura; leia item [83008] ALUNOS.DADOS; se ALUNOS.INV seno ESCREVA.ITEM [83008] ALUNOS.DADOS; Fim se; Feche ALUNOS; Fim. Observe que, para que haja a leitura de registros no arquivo com organizao indexada, necessitamos de um campo chave, chamado de ndice. O fato que, conhecendo o valor do ndice, o acesso se torna direto quele registro, no realizando verificao em nenhum outro. Se no conhecemos o contedo do ndice, no h como fazer a leitura do registro que corresponde ao ndice. Alm disso, aparece uma instruo se alunos.inv seno. Essa instruo quando verdadeira quer dizer que no foi feita a leitura do registro procurado com o uso do ndice.
Assim, as solues se tornam bem mais interessantes quando usamos estruturas que melhor se ajustem s solues dos problemas computacionais.
bom lembrar que, quando se estuda todos esses recursos, voc pode usar: - Tipos primitivos de dados, Vetores, Matrizes, Registros, Arquivos, Vetores com matrizes em cada posio, Matrizes com vetores em cada posio Vetores ou matrizes com registros em cada posio. Registro com campos distintos, um do tipo primitivo, um do tipo vetor, outro do tipo matriz, outro do tipo registro.... Etc..
Crie um algoritmo que trabalhe com arquivos nas formas seqencial e indexada e compartilhe com seus colegas no AVEA.
Algoritmos
117
e-Tec Brasil/CEMF/Unimontes
Resumo
Como pde ser visto, o uso de registros permite que dados comuns a um objeto, pessoa ou acontecimento, podem ser agrupados em uma nica varivel, sendo de tipos diferentes. Mas, para que haja o armazenamento persistente de dados, o arquivo deve ser utilizado. Grandes massas de dados so armazenadas nos arquivos. Por isso, eles devem ter uma adequada organizao. A organizao dos arquivos facilita o processo de busca dos dados armazenados. Assim, para se definir a forma de organizao, voc deve pensar qual a necessidade de busca de dados, qual o tempo adequado. Assim, a organizao indexada vem resolver, de certa forma essas demandas.
Atividades de aprendizagem
1) Defina e arquivos. 2) Com a utilizao de arquivos, os dados se encontram persistente ou temporariamente armazenados? 3) Qual o conceito de arquivos? Mostre a necessidade de sua utilizao. 4) Diferencie organizao sequencial de indexada 5) O que indica o sinal FDA? 6) O que indica o sinal INV? 7) Crie um problema em que os dados sejam armazenados em registros de um arquivo sequencial. 8) Crie um problema em que os dados sejam armazenados em registros de um arquivo indexado. 9) Crie um problema para que possa mesclar as formas de trabalho com arquivos: sequencial e indexado. 10) Crie um arquivo para o armazenamento indexado de dados dos alunos da turma de Algoritmos do programa E-tec Brasil.
e-Tec Brasil/CEMF/Unimontes
118
Informtica
AULA 1
Alfabetizao Digital Aula 11 - Modularizao: procedimentos e funes
Na ltima unidade do nosso estudo, abordaremos o processo de modularizao, enfatizando os procedimentos e funes. Tais recursos resultam na construo de subalgoritmos que so noes importantes para o particionamento de um problema complexo em pequenos problemas simples.
Portanto, no trmino desta etapa de estudo fundamental que voc seja capaz de: - Dividir um algoritmo resolvido em pequenos subalgoritmos; - Diferenciar procedimentos de funes.
11.1 Modularizao
A complexidade dos algoritmos est intimamente ligada da aplicao a que se destinam. Em geral, problemas complicados exigem algoritmos extensos para sua soluo. sempre possvel dividir grandes algoritmos que resolvem grandes e complexos problemas em partes menores em que a soluo e os problemas so particionados. Uma vez dividido um grande problema em pequenos problemas, possvel a resoluo de cada um desses problemas individualmente, para que, ao final, o problema, em seu todo, tenha sido resolvido. De um modo geral, as questes levantadas sobre um algoritmo qualquer, so as seguintes: 1. Quanto tempo levar para ser desenvolvido o seu procedimento lgico? 2. Sua elaborao no poderia ter sido mais rpida? Se fosse, quanto tempo poderia ter sido economizado? 3. Qual o grau de dificuldade para implementar uma modificao qualquer no algoritmo? 4. Como se traduz essas dificuldades em relao ao tempo gasto? 5. Qual ser o comportamento do algoritmo em relao ao comportamento do sistema? 6. Se o algoritmo for lento, poder se tornar mais rpido? 7. Se for possvel tornar o algoritmo mais rpido, qual o custo? Vale pena? Com os mdulos definidos, devem ser criados os Subalgoritmos, subrotinas ou subprogramas que so blocos de instrues que realizam tarefas especficas.
A Modularizao a tcnica que faz o particionamento de um algoritmo extenso em algoritmos menores, dentro da premissa Dividir para conquistar.
Uma aplicao qualquer, antes de ser programada, deve ser analisada. A atribuio do programador desenvolver uma soluo vivel para a aplicao. Isso d uma ideia da complexidade da soluo e, consequentemente, um bom meio para avaliar o tempo gasto na elaborao do algoritmo. O programador deve procurar encontrar relaes entre atividades elementares definidas, as quais devem compor um nico mdulo. Os mdulos so tambm combinados para formar novos mdulos. O processo se repete at que a soluo para a aplicao esteja completa. A essa tcnica, d-se o nome de Algoritmos Modulares que se inserem no processo de Modularizao.
Algoritmos
119
e-Tec Brasil/CEMF/Unimontes
Um subalgoritmo um nome dado a um trecho de um algoritmo mais complexo e que, em geral, encerra em si prprio um pedao da soluo de um problema maior o algoritmo a que ele est subordinado.
O cdigo de um subalgoritmo digitado uma vez e pode ser executado quantas vezes forem necessrias. Dessa maneira, os programas tendem a ficar menores e mais organizados, dado que o problema pode ser dividido em pequenas tarefas. Os programas (em programao estruturada), em geral, so executados linearmente, uma linha aps a outra, at o fim. Entretanto, quando so utilizados subalgoritmos, possvel a realizao de desvios na execuo natural dos programas. Esses desvios so realizados quando uma funo chamada pelo programa principal. Os subalgoritmos so importantes na: Subdiviso de algoritmos complexos, facilitando seu entendimento; Estruturao de algoritmos, facilitando principalmente a deteco de erros e a documentao de sistemas; Modularizao de sistemas, que facilita a manuteno de programas e a reutilizao de subalgoritmos j implementados. O algoritmo principal chama a execuo do subalgoritmo que executa a sua funcionalidade e retorna ao algoritmo chamador, o principal. O subalgoritmo deve ser desenvolvido na forma de procedimento ou uma funo. Para que voc possa usar corretamente os procedimentos e funes, devemos entender o conceito de variveis locais e globais.
e-Tec Brasil/CEMF/Unimontes
120
Informtica
VET[I] = I; fim para; imprime VET; fim; fim; Vamos refletir! A varivel n foi definida no bloco externo e foi usada no bloco interno, pois uma varivel global. J, o vetor VET somente declarado no bloco interno e sendo assim, somente reconhecido quando inicia o seu processamento, portanto, uma varivel interna. Ao terminar a execuo do bloco interno, tambm o vetor VET desaparece. Vamos verificar outro exemplo: Algoritmo inteiro: I,J; Incio leia (I); J = I**2; incio Real: x; x = J + 1; imprime (x); fim; leia (j); I=I*J Fim. Agora com voc! Aponte as variveis locais e globais que aparecem no algoritmo anterior. I e J = globais X = local Agora que voc j entendeu como funciona a abrangncia das variveis nos blocos do algoritmo, vamos continuar verificar o que so parmetros e como se pode utilizar nos procedimentos e funes
11.3 Parmetros
Para haver uma comunicao entre o algoritmo chamador e o procedimento ou funo, utilizam-se os parmetros, podendo os dados trefegarem de um algoritmo para outro.
Algoritmos
121
e-Tec Brasil/CEMF/Unimontes
A passagem de parmetros pode ser dada de duas formas: por valor ou por referncia. Observe a definio de cada uma delas. Na passagem de parmetros por valor, ocorre uma cpia do contedo enviado para uma varivel do mesmo tipo daquela que remeteu. Na passagem de parmetros por referncia no existe a cpia do contedo enviado para uma varivel do procedimento/funo. O que ocorre o envio da referncia na qual a varivel do algoritmo chamador se encontra. Dessa forma, qualquer alterao feita na varivel no subalgoritmo refletir diretamente na varivel do algoritmo chamador. Agora que voc sabe o que so parmetros e como acontece a passagem dos valores do algoritmo chamador para o algoritmo chamado, vamos estudar os procedimentos.
11.4 Procedimentos
Procedimento um subalgoritmo que retorna nenhum ou mais valores ao algoritmo chamador. um bloco que consiste em um conjunto de declaraes e comandos delimitados pelas palavras incio e fim. Como voc j assimilou os fundamentos tericos necessrios ao entendimento dos procedimentos, vamos analisar o seguinte algoritmo: Algoritmo Variveis inteiro: A,B; PROCEDIMENTO TROCA INTEIRO :X,Y; incio INTEIRO: AUX; AUX = X; X = Y; Y = AUX; FIM {TROCA}; Incio LEIA (A,B) IMPRIMA (A.B) TROCA (A.B) IMPRIMA (A,B); Fim Vamos destacar alguns pontos: As variveis A e B so globais. Quando o procedimento TROCA acionado, o contedo das variveis A e B so copiados para as variveis X e Y, que so locais ao procedimento.
e-Tec Brasil/CEMF/Unimontes
122
Informtica
Ao finalizar o procedimento, A recebe o contedo de X e B recebe o contedo de Y. Agora com voc!! Insira dados nas variveis e mostre o resultado produzido pelo algoritmo. Vamos analisar outro exemplo. Algoritmo abs REAL: A,B; PROCEDIMENTO ABS(X,Y); REAL :X,Y; incio SE x > 0 ENTO Y =X; SENO Y = -X; FM SE; FIM {ABS} Incio A = 5, B = -3; ABS(A,B); FIM Vamos destacar alguns pontos: As variveis A e B so globais O procedimento ABS recebe parmetros X e Y que so alimentados pelo contedo de A e B. Ao finalizar o procedimento, A recebe o contedo de X e B recebe o contedo de Y. O procedimento trabalha com dados de entrada e de sada Agora com voc!! Insira dados nas variveis e mostre o resultado produzido pelo algoritmo. Dado o algoritmo abaixo, crie uma massa de testes, mostre as sadas produzidas e destaque os pontos em relao elaborao do mesmo.
Algoritmo fatorial INTEIRO: N, FAT; CARACTER: TITULO; PROCEDIMENTO FATORIAL(NF,FATF); INTEIRO : NF,FATF;
Algoritmos
123
e-Tec Brasil/CEMF/Unimontes
incio; I; FATF = 1; PARA I DE 1 ATE NF FAA FATF = FATF * I; FIM PARA; IMPRIMA (TITULO,NF, E, FATF); FIM {FATORIAL}; Incio TITULO = FATORIAL DE; N = 5; FATORIAL (N, FAT); IMPRIMA (FAT, E, TITULO, N); Fim. Bem!! Entendido o funcionamento dos procedimentos, vamos agora estudar as funes.
11.5 Funo
A funo tem seu conceito trazido da ideia de funo matemtica, na qual um valor calculado a partir de outro(s) fornecido(s) funo. Dentro de um algoritmo, a chamada a uma funo sempre ocorre dentro de uma expresso do mesmo tipo que tem o valor retornado por ela. Sua chamada feita pelo seu nome, seguido de seus respectivos parmetros entre parnteses, dentro de uma expresso. A funo executada e, ao seu trmino, o trecho do comando que a invocou substitudo pelo valor retornado por ela dentro da expresso em que se encontra, e a avaliao da expresso prossegue normalmente. Vejamos o seguinte exemplo: Algoritmo REAL: A,B,C,D,E; FUNO ABS(X) REAL; REAL :X; incio SE x > 0 ENTO ABS =X; SENO ABS = -X; FM SE; FIM {ABS}; Incio A = 5, B = -3, C = -10; D = ABS (C); Imprima D; IMPRIMA (ABS(A));
e-Tec Brasil/CEMF/Unimontes
124
Informtica
IMPRIMA ABS(C**3) * A+B IMPRIMA ABS (ABS(A)) * ABS(A); Fim Vamos destacar alguns pontos: A funo deve estar em uma expresso ou retornando em uma varivel. A funo pode receber n valores, porm retorna somente um valor. Agora com voc!! Insira dados nas variveis e mostre o resultado produzido pelo algoritmo.
Uma funo dita recursiva se definida em termos de si mesma. Isto , uma funo recursiva quando dentro dela est presente uma instruo de chamada a ela prpria.
Algoritmos
125
e-Tec Brasil/CEMF/Unimontes
a minha av, j que ela me da minha me. Assim sendo, eu sou o marido da minha esposa e, ao mesmo tempo, o seu enteado-neto. Em outras palavras, eu me tornei meu prprio av. Vamos praticar um pouco mais. Dados o nome e as mdias de uma turma com 47 alunos, faa um algoritmo que escreva o nome dos alunos que tiveram a mdia menor que a mdia da turma. Para desenvolver esse problema voc dever: Criar um procedimento para a leitura dos dados e armazenamento em uma matriz declarada como varivel global. Nesse mesmo procedimento, efetue o clculo da mdia aritmtica da turma, que tambm dever estar armazenada em uma varivel global. Criar um procedimento para identificao e exibio dos alunos que tenham a mdia menor que a mdia da turma. Algoritmo Alunos Variveis Tipo m=matriz [1:47, 1:15] caractere; M = nomes; Tipo v = vetor [1:47] real; V = media; MediaTurma : Real; Procedimento EntradaDeDados Variveis I : Inteiro; Incio Escreva Informe o nome e mdia dos 47 alunos da turma; MediaTurma = 0; Para I = 1 At 47 Faa Escreva Informe o nome do aluno , I, de 47 Leia Nomes[I]; Escreva Informe a mdia do aluno , Nomes[I]; Leia Medias[I]; MediaTurma = MediaTurma + Medias[I]; Fim Para MediaTurma = MediaTurma / 47; Fim Procedimento SaidaDeDados Variveis I : Inteiro; Incio Escreva Alunos com mdia abaixo da mdia da turma; Para I = 1 At 47 Faa Se (Medias[I] < MediaTurma) Ento
e-Tec Brasil/CEMF/Unimontes
126
Informtica
Resumo
Nesta unidade, estudamos um pouco sobre os subalgoritmos, variveis locais e globais, parmetros, procedimentos e funes. Foi bastante destacado que o uso de subalgoritmos, para resoluo de problemas, altamente recomendado, pois, mediante esse recurso, podemos particionar um grande problema em problemas menores e trat-los individualmente, como partes completas. Isso permite, alm da modularizao de cdigo, uma reutilizao deste. O envio e o recebimento de argumentos e retorno de valores processados devem ser sempre utilizados, lembrando que os argumentos de entrada de procedimentos e funes so os dados necessrios para que resolvam o problema que se propem, e o retorno aquele que se espera obter com o processamento dos argumentos de entrada. As linguagens atuais esto voltando seu uso mais para funes (que em linguagens orientadas a objetos so tratadas como mtodos), pois o que diferencia um procedimento de uma funo o retorno de valores. Encerramos por aqui, sempre acreditando que o que foi estudado tenha sido de grande utilidade pra voc nesta jornada de aprendizado, que deve ser constante. Como foi falado no incio deste caderno, estude vrias vezes os exemplos apresentados e faa vrias vezes os exerccios. Se possvel, associe o estudo de algoritmo alguma atividade artstica como cantar, pintar, tocar algum instrumento. Qualquer atividade que desenvolve a abstrao auxilia no processo de refinamento do pensamento lgico que deve ser sempre aplicado na lgica de programao, para o desenvolvimento de resoluo de problemas computacionais. Parabns por chegar at aqui!!! Mas, no se esquea!!! Continue estudando. Ns s comeamos!!!
Atividades de aprendizagem
1. Faa uma funo que receba, por parmetro, o raio de uma esfera e calcule o seu volume (v = 4/3. .R3).
Algoritmos
127
e-Tec Brasil/CEMF/Unimontes
2. Escreva um procedimento que receba as 3 notas de um aluno por parmetro e uma letra. Se a letra for A o procedimento calcula a mdia aritmtica das notas do aluno, se for P, a sua mdia ponderada (pesos: 5, 3 e 2). A mdia calculada tambm deve retornar por parmetro.
3. Faa uma funo que receba por parmetro um valor inteiro e positivo e retorna o valor lgico Verdadeiro quando o valor seja primo e Falso, em caso contrrio.
4. Faa um procedimento que receba por parmetro os valores necessrios para o clculo da frmula de Baskara e retorna, tambm por parmetro, as suas razes, caso seja possvel calcular.
5. Faa uma sub-rotina que receba por parmetro o tempo de durao de uma fbrica expressa em segundos e retorna tambm por parmetro esse tempo em horas, minutos e segundos.
6. Faa uma funo que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias.
7. Faa uma funo que verifique se um valor perfeito ou no. Um valor dito perfeito quando ele igual soma dos seus divisores excetuando ele prprio. (Ex: 6 perfeito, 6 = 1 + 2 + 3, que so seus divisores). A funo deve retornar um valor booleano.
e-Tec Brasil/CEMF/Unimontes
128
Informtica
8. Faa um procedimento que receba a idade de um nadador por parmetro e retorne tambm por parmetro, a categoria desse nadador de acordo com a tabela abaixo:
Idade 5 a 7 anos 8 a 10 anos 11-13 anos 14-17 anos Maiores de 18 anos (inclusive) Categoria Infantil A Infantil B Juvenil A Juvenil B Adulto
9. Faa uma funo que receba um valor inteiro e verifique se o valor positivo ou negativo. A funo deve retornar um valor booleano.
10. Faa uma funo que receba um valor inteiro e verifique se o valor par ou mpar. A funo deve retornar um valor booleano.
11. Faa uma funo que receba a mdia final de um aluno por parmetro e retorna o seu conceito, conforme a tabela abaixo:
Nota de 0,0 a 4,9 de 5,0 a 6,9 de 7,0 a 8,9 de 9,0 a 10,0 Conceito D C B A
Algoritmos
129
e-Tec Brasil/CEMF/Unimontes
12. Faa um procedimento que receba, por parmetro, a hora de incio e a hora de trmino de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. O procedimento deve retornar, tambm por parmetro, a durao do jogo em horas e minutos, considerando que o tempo mximo de durao de um jogo de 24 horas e que o jogo pode comear em um dia e terminar no outro.
13. Escreva um procedimento que receba 3 valores reais X, Y e Z. O procedimento deve verificar se esses valores podem ser os comprimentos dos lados de um tringulo e, neste caso, retornar qual o tipo de tringulo formado. Para que X, Y e Z formem um tringulo necessrio que a seguinte propriedade seja satisfeita: o comprimento de cada lado de um tringulo menor do que a soma do comprimento dos outros dois lados. O procedimento deve identificar o tipo de tringulo formado observando as seguintes definies: Tringulo Equiltero: os comprimentos dos 3 lados so iguais. Tringulo Issceles: os comprimentos de 2 lados so iguais. Tringulo Escaleno: os comprimentos dos 3 lados so diferentes.
e-Tec Brasil/CEMF/Unimontes
130
Informtica
Referncias
ASCENCIO, Ana Fernanda Gomes, CAMPOS, Edilene Aparecida Veneruch de. Fundamentos da Programao de Computadores: Algoritmos, Pascal e C/ C++. So Paulo: Perason. 2006.
CAPRON,H.L, JONSON, J.A. Introduo Informtica. 8 ed. So Paulo: Pearson. 2004. 350 p. COLLINS, Willian J. Programao Estruturada com Estudos de Casos em Pascal. So Paulo: McGraw-Hill. 515 p. DAGHIAN, Jacob. Lgica e lgebra de boole. 4 ed. So Paulo: Atlas. 1995.167 p. FARRER, Harry, ET AL. Pascal Estruturados. 3 ed. Rio de Janeiro: JC. 1999. 279 p. FARRER, Harry, ET AL. Algoritmos Estruturados. 3 ed. Rio de Janeiro: JC. 1999. 284 p. FORBELLONE, Andr Luiz Villar, EBERSPACHER, Henri Frederico. Lgica de programao: a construo de algoritmos e estrutura de dados. 3 ed. So Paulo: Pearson, 2005.218 p.
LAGES, Newton Alberto de Castilho & GUIMARES, ngelo de Moura. Algoritmos e estruturas de dados.1 ed. Rio de Janeiro: LTC. 1985. 216 p. LOPES, Anita & GARCIA, Guto. Introduo programao: 500 algoritmos resolvidos. Rio de Janeiro: Campus, 2002. MEIRELLES, Fernando de Souza. Informtica: novas aplicas com microcomputadores. 2 ed. So Paulo: Pearson. 1994. 615 p. MIZRDHI, Victorine Viviane. Treibamento em Linguaem C++: modulo 2. 2 ed. So Paulo: Makron Books.318 p. SALIBA, Walter Luiz Caram. Tcnicas de programao: uma abordagem estruturada. So Paulo: Makron Books, 1993. 141p. SALVETTI, Dirceu Douglas et al. Algoritmos estruturados. 3 ed. Rio de Janeiro: LTC, 1999. SANTOS, Marcos Augusto dos et al. Programao estruturada de computadores: algoritmos estruturados. 2 ed. Rio de Janeiro: LTC,1989. WIRTH, N. Algoritmo e estrutura de dados. 3 ed. Rio de Janeiro: Campus. 1985. 197 p. ZIVIANE, Nvio. Projeto de algoritmos com implementao em Pascal e C. 3 ed. So Paulo: Pioneira, 1996. 267 p.
Algoritmos
131
e-Tec Brasil/CEMF/Unimontes
e-Tec Brasil/CEMF/Unimontes
132
Informtica
e-Tec Brasil/CEMF/Unimontes
Escola Tcnica Aberta do Brasil