Você está na página 1de 134

e-Tec Brasil/CEMF/Unimontes

Escola Tcnica Aberta do Brasil

Informtica

Algoritmos
Marile Patta Daniel Carli Colares e Silva

Ministrio da Educao

e-Tec Brasil/CEMF/Unimontes

Escola Tcnica Aberta do Brasil

Informtica

Algortimos
Marile Patta Daniel Carli Colares e Silva

Montes Claros - MG 2011

Presidncia da Repblica Federativa do Brasil Ministrio da Educao Secretaria de Educao a Distncia


Ministro da Educao Fernando Haddad Secretrio de Educao a Distncia Carlos Eduardo Bielschowsky Coordenadora Geral do e-Tec Brasil Iracy de Almeida Gallo Ritzmann Governador do Estado de Minas Gerais Antnio Augusto Junho Anastasia Secretrio de Estado de Cincia, Tecnologia e Ensino Superior Alberto Duque Portugal Coordenadores de Cursos: Coordenador do Curso Tcnico em Agronegcio Augusto Guilherme Dias Coordenador do Curso Tcnico em Comrcio Carlos Alberto Meira Coordenador do Curso Tcnico em Meio Ambiente Edna Helenice Almeida Coordenador do Curso Tcnico em Informtica Frederico Bida de Oliveira Coordenador do Curso Tcnico em Vigilncia em Sade Simria de Jesus Soares Coordenador do Curso Tcnico em Gesto em Sade Zaida ngela Marinho de Paiva Crispim ALGORITMOS e-Tec Brasil/CEMF/Unimontes Elaborao Marile Patta Daniel Carli Colares e Silva Projeto Grfico e-Tec/MEC Superviso Wendell Brito Mineiro Diagramao Hugo Daniel Duarte Silva Marcos Aurlio de Almeda e Maia Impresso Grfica RB Digital Designer Instrucional Anglica de Souza Coimbra Franco Ktia Vanelli Leonardo Guedes Oliveira Reviso Maria Ieda Almeida Muniz Patrcia Goulart Tondineli Rita de Cssia Silva Dionsio

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

AULA 1 Indicao de cones


Alfabetizao Digital

Os cones so elementos grficos utilizados para ampliar as formas de linguagem e facilitar a organizao e a leitura hipertextual.

Ateno: indica pontos de maior relevncia no texto.

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

AULA 1 Palavra dos professores conteudistas


Alfabetizao Digital

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

AULA 1 Projeto instrucional


Alfabetizao Digital

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 Conceitos bsicos


O estudo se inicia abordando alguns conceitos que so fundamentais para sua formao como Tcnico em Informtica. Vamos apresentar a Lgica, o Algoritmo, os Dados e a Informao, os Dados de Entrada e Sada, para mostrar a voc o princpio do funcionamento do Processamento de Dados que utiliza a Lgica de Programao. Voc vai perceber que os problemas que utilizamos nesta unidade so encontrados em seu cotidiano. Tal fato pode colaborar para iniciarmos um processo de raciocnio. Assim, vamos procurar identificar o problema e os componentes necessrios para sua resoluo.

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

1.1.3 Processamento de dados


Toda vez que nos referimos ao um determinado tipo de processamento de dados, estamos tambm falando de algoritmos e de estruturas de dados. H processamento de dados quando, por exemplo, necessitamos calcular a mdia da turma obtida na disciplina de algoritmos. Mas, pra voc, o que significa processamento de dados? O processamento de dados constitui-se basicamente de trs etapas: entrada de dados, processamento e sada. Entrada processamento Sada

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.

1.1.4 Lgica de programao


A lgica de programao composta de instrues as quais os dados sero submetidos. Mas, o que significa instruo? As atividades pertinentes programao de computadores, quando nos dado um problema, o primeiro passo entender o que se quer produzir, o que se quer obter. Assim, devemos pensar nos dados que necessitamos trabalhar para se definir a sequncia de instrues para transformar os dados de entrada em dados de sada e assim obter a soluo do problema. Agora, para que voc exercite seus conhecimentos sobre lgica de programao, vamos lhe propor um desafio. Voc conhece o Jogo da Torre de Hani? Nesse jogo, teremos trs hastes que chamaremos de haste origem, haste destino e haste temporria e 3 discos de tamanhos diferentes posicionados inicialmente na haste origem. Os discos esto dispostos na ordem de tamanho, de forma que o maior disco fique embaixo, em seguida, o segundo maior, e assim por diante. O objetivo deste jogo movimentar os discos da haste origem para a haste destino, utilizando a haste temporria como auxiliar. Nenhum disco pode ser colocado sobre um disco menor. Bem, uma possvel resposta seria: Mova o disco 1 da haste O para a haste D. Mova o disco 2 da haste O para a haste T. Mova o disco 1 da haste D para a haste T.

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

Mova Mova Mova Mova


Faa uma pesquisa sobre o algoritmo torre de Hani quando o mesmo utiliza 5 hastes para a troca de discos. Troque idias com seus colegas no AVEA.

o o o o

disco disco disco disco

3 1 2 1

da da da da

haste haste haste haste

O para a haste D. T para a haste O. T para a haste D. O para a haste D.

Resolvido o problema da torre de Hani, vamos verificar alguns exemplos de instruo


Faa A = B; Faa B = C; Faa D = 0; Faa F = ((A * B) ** D) / C Imprima (F); A = 1; B = 1: C = 1; D = 0; F = ((1*1)**0)/1 F=1 A = 2; B = 2; C = 2; D = 0; F = ((2*2)**0)/2 F = 1/2 X1 = (-B+( (SQRT(B**2) (4*A*C))/2*A X2 = (-B-( (SQRT(B**2) (4*A*C))/2*A Imprima (X1,X2)

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.

1.1.5 Descrio narrativa


Voc sabe o que descrio narrativa? Quando nos deparamos com a necessidade de automao de qualquer atividade, devemos buscar entender o problema analisando-o detalhadamente. Por meio desta anlise, possvel identificar alguns dos passos que devem ser seguidos e respeitados para que seja possvel a resoluo da situao-problema. Esses passos compem dados de estudo do problema e servir como base para a construo da Descrio Narrativa de como o problema deve ser resolvido. Em geral, os usurios passam, de forma oral ou escrita, s necessidades de suas atividades. No conseguir identificar aquilo que se pede (problema), o que se espera obter (dados de sada), o que ser necessrio para o processamento (dados de entrada) e a maneira de processar esses componentes dificulta muito ou mesmo inviabiliza o processo de resoluo. Portanto, aproveitamos para destacar a importncia do exerccio dirio da leitura, seja no contexto escolar, seja no profissional, seja no lar. Mediante o hbito da leitura, firmamos ainda mais a compreenso ou interpretao do que lemos e essas competncias so fundamentais para todas as reas do conhecimento, no somente quando tratamos da Lngua Portuguesa, como equivocadamente pensam muitos estudantes.

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.

2) O que voc pode construir usando a lgica de programao?

3) Como a lgica influencia na automao de processos?

4) Cite 5 atividades automatizadas que voc tem contato.

5) Quais as atividades que compem o processamento de dados? Crie um exemplo que retrate tais passos.

Algoritmos

23

e-Tec Brasil/CEMF/Unimontes

6) Faa uma distino entre dado e informao.

7) As instrues so componentes da lgica de programao. O que voc entende por instruo?

8) Como a descrio narrativa influencia no processo de construo de algoritmos?

9) Quais problemas podem ser encontrados na descrio narrativa?

10) Faa um resumo dos itens estudados na unidade 1.

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.

2.1 Tipos de dados


Quando falamos em tipos de dados, estamos tambm falando de conceito de domnio. Tal conceito est ligado limitao do conjunto de valores que um determinado dado pode conter. Quando vamos programar em uma linguagem de programao, a mesma j tem seus prprios tipos de dados, ou seja, a delimitao de valores que processa. Devemos observar que o tipo de dado est relacionado ao tipo de informao que nela esto contidos. Lembramos que a classificao aqui estudada no se aplica a nenhuma linguagem de programao especfica, pois a ideia mostrar, de forma sintetizada, os padres utilizados na maioria das linguagens.

2.1.1 Dados numricos


Os dados numricos so divididos, basicamente, em dois grandes conjuntos: inteiros e reais. Nmeros inteiros so aqueles que no possuem componentes decimais ou fracionrios, podendo ser positivos ou negativos. Esse fcil! Quer ver alguns exemplos? Vamos l!

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.

2.1.2 Dados literais


Voc j ouviu falar em dado literal, caractere ou string? O tipo de dados literal constitudo por uma sequncia de caracteres com letras, dgitos e/ou smbolos especiais. Esse tipo de dado tambm muitas vezes chamado de alfanumrico, cadeia de caracteres ou, ainda, String. Usualmente, os dados literais so representados nos algoritmos pela coleo de caracteres, delimitada em seu incio e trmino com o caractere aspas (). comum, em algumas linguagens, a diferenciao entre a representao de um nico dado literal, que chamado de caractere (por exem-

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.

2.1.3 Dados lgicos


Nos dados lgicos, cada dado pode ser representado apenas por dois valores: verdadeiro ou falso.

Voc sabe dizer alguns exemplos relativos ao tipo de dados 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.

2..2.1 Declarao de variveis


As variveis e estruturas de dados a serem utilizadas para o processamento de um determinado problema devem ser definidas no algoritmo. Essa definio implica em alocar um espao de memria especfico para processar o contedo de cada varivel. Uma declarao de uma varivel corresponder a criao de locais na memria rotulada com o nome da varivel, sendo esse o identificador do local criado na memria e marcada com o tipo de valores que pode conter. O levantamento e o estudo do problema fornecem uma viso inicial de quais variveis sero necessrias para o desenvolvimento do algoritmo. Muitas vezes, no decorrer do desenvolvimento do algoritmo, faz-se necessria, a criao e definio de algumas variveis, alm daquelas definidas no seu incio, quando no entendimento do problema. Toda varivel primitiva deve ser definida, conforme sintaxe abaixo: Tipo: V1, V2,...,Vn; Vejamos o exemplo a seguir: Inteiro : x1; (valores inteiros) Real: a,b; (Valores (reais) Caractere: nome; (caracteres ou string) Lgico: verdadeiro (falso ou verdadeiro) Para declarar as variveis que sero utilizadas no processamento, devemos saber claramente, qual o objetivo do algoritmo que estamos construindo, interpretando o problema em questo.

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

2.3 Expresses, operadores e funes


Para que possamos realizar os clculos matemticos, devemos construir as expresses matemticas ou frmulas. Em cada expresso, o conjunto de variveis e constantes numricas se relaciona por meio de operadores, que, ao ser processada, resulta em um valor. Para entendermos como as expresses so montadas e executadas, devemos ter alguns conceitos. Que tal buscarmos o entendimento em relao aos Operadores? Nas expresses, os operadores atuam sobre os operandos para produzir resultado. Veja um exemplo bem simples: 10 2 = 8 10 e 2 so operandos - um operador Veja como os operadores podem ser classificados: 1) binrios: operaes matemticas simples nas quais o operador envolve dois algarismos. Veja o exemplo: 24 - 22 04 + 01 2) unrios: o operador somente se encarrega de informar se o nmero positivo ou negativo. Veja o exemplo: -48 -1,1418

2.3.1 Expresses aritmticas


Somente permitido o uso de operadores aritmticos e de variveis numricas em expresses deste tipo. Alm disso, os operadores tm uma ordem de execuo, como mostra o quadro 1.
QUADRO 1 Operadores aritmticos Operador + ** ou ^ * / + Tipo Unrio Unrio Binrio Binrio Binrio Binrio Binrio Operao Mantm sinal Inverte sinal Exponenciao Multiplicao Diviso Soma Subtrao Prioridade 1 1 2 3 3 4 4 Exemplo -(-2) = 2 +2=2 4**2 = 16 4*2= 8 4/2 = 2 4+4=8 6 - 8 = -2

Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.33)

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.

Resultado 64 16 0.25 Resultado 16 64 2.25

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.

Resultado 8 4 32 8 16 Resultado 8 16 0.5 0.125 0.25

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.

2.3.2 Operadores lgicos


Alm dos operadores aritmticos, tambm dispomos dos operadores lgicos para elaborar as nossas expresses. O quadro 4 mostra os operadores lgicos.
QUADRO 4 Operadores lgicos Operador Ou ou v E ou ^ No ou Descrio Disjuno Conjuno Negao Tipo Binrio Binrio Unrio Prioridade 3 2 1

Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.36).

Algoritmos

33

e-Tec Brasil/CEMF/Unimontes

2.3.3 Operadores relacionais


Veja bem! Para criarmos nossas expresses condicionais, devemos utilizar os operadores relacionais como mostra o quadro 5.
QUADRO 5 Operadores relacionais Operador = # <> > GT < LT >= GE <= LE
Fonte: Forbellone, Andre Luiz Villar (2005, P 21).

Descrio Igual Diferente Maior Menor Maior ou igual Menor ou igual

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

Fonte: Forbellone, Andre Luiz Villar (2005, P 21).

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

Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.33).

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

2.4 Expresses lgicas


As proposies transmitem pensamentos, isto , afirmam fatos ou exprimem juzos que formamos a respeito de determinados entes. As proposies vistas no exemplo anterior so ditas simples ou atmicas, pois no contm nenhuma outra proposio como parte integrante de si mesma. H somente a ocorrncia de uma informao sendo repassada.

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

Fonte: Adaptado de Forbellone, Andre Luiz Villar (2005, P 21) .

Nesse caso, somente a candidata Patrcia ser chamada para a entrevista.

2.5 Prioridade na execuo das expresses


Depois de conhecer os recursos quanto aos operadores aritmticos, lgicos, relacionais e funes, voc deve conhecer a prioridade na execuo das expresses: 1 parnteses e funes 2 expresses aritmticas: +- unrios,**, */, + - (binrios) 3 Comparao: <,<=, =, >, >=, # 4 no 5e 6 ou

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

AULA 1 Aula 3 - Pseudolinguagem


Alfabetizao Digital

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.

3.1.1 Estrutura bsica de um pseudocdigo


Para construo do pseudocdigo, trazemos palavras do nosso idioma que representaro comportamentos e aes que devero ser assumidos pelo algoritmo. A essas palavras, d-se o nome de Palavras Reservadas Linguagem, ou seja, voc NO pode utilizar tais palavras para outros fins seno quele que ela representa. Comearemos agora, pouco a pouco, a conhecer essas palavras. Para isso, veja no quadro 9 a estrutura bsica que um pseudocdigo deve ter.

Algoritmos

39

e-Tec Brasil/CEMF/Unimontes

QUADRO 9 Estrutura bsica do pseudocdigo


As palavras reservadas esto em negrito e o texto em itlico dever ser preenchido pelo programador, desconsiderando os sinais < >. No se assuste, muito simples.

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.

3.3 Declarao de variveis em pseudocdigo


Voc j estudou tipos de variveis e composio de nomes na unidade 2.

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.

3.4 Atribuio de valores s variveis


A atribuio de valores iniciais s variveis se d quando precisamos armazenar algum valor para ser usado inicialmente em nosso algoritmo, seja para efetuar operaes aritmticas ou para compor a informao para o usurio. Alm disso, no corpo do algoritmo as variveis devem receber novos valores para oferecerem o resultado necessrio. O exemplo a seguir mostra a inicializao de variveis utilizando-se pseudocdigo. Algoritmo <nome> Variveis A: inteiro; B: Real; C: caractere; D: lgico; Incio A 1; B 0; C Orozimbo; D falso; <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.

3.5 Entrada de dados


Uma operao de entrada de dados se refere a qualquer valor que seja informado e que seja armazenado na memria com o uso das variveis. Tal valor pode ser digitado pelo usurio ou lido de dispositivos de armazenamento de dados como, por exemplo, um arquivo no disco rgido. No que diz respeito ao comando de Entrada de dados, faz-se necessrio que seja estabelecida uma conveno. Tal comando aqui ser definido como Leia.
Veja bem! Um valor literal no pode ser armazenado em uma varivel numrica, porm um valor numrico pode ser armazenado em uma varivel literal, mas esse ser tratado como literal.

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.

3.6 Sada de dados


Uma operao de sada de dados se refere a qualquer valor exibido ou retornado ao usurio. Esse valor pode ser uma mensagem de orientao, o resultado de uma expresso, um valor constante ou uma varivel existente na varivel.

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?

2) O que se entende por palavras reservadas da linguagem?

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?

5) Por que razo necessrio atribuir valores iniciais s variveis?

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?

9) Qual deve ser o tamanho mximo da lista de variveis e do bloco de comandos?

10) Quais so as regras necessrias para construir um pseudocdigo?

e-Tec Brasil/CEMF/Unimontes

44

Informtica

AULA 1 Aula 4 - Comandos sequenciais


Alfabetizao Digital

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.

4.1 Comando sequenciais


Assim, para elucidar o uso de comandos sequenciais, vamos detalhar a situao de pagamentos de funcionrios de uma empresa. 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: a) O total dos descontos b) Total de acrscimo c) Salrio lquido. Para resolver o problema anteriormente proposto, vamos mostrar a voc o seguinte algoritmo: 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;
So blocos de comandos dispostos um aps o outro, sem nenhum desvio ou repetio

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

Ateno a esta prxima etapa.

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?

2) Faa um algoritmo para calcular a raiz quadrada de um nmero n.

3) Faa um algoritmo para calcular o seno de um nmero n.

4) Faa um algoritmo para calcular o resto da diviso de um nmero n por m.

5) Faa um algoritmo para calcular o quociente da diviso de um nmero n por m.

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.

9) Faa um algoritmo para transformar um numero negativo em positivo.

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

AULA 1 Aula 5 - Comandos condicionais


Alfabetizao Digital

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.

5.1 Condio Simples e condio composta


A condio simples somente trabalha com uma opo de resposta, verdadeira ou falsa, possuindo, dentro da estruturao do comando condicional, somente uma alternativa de processamento. A condio composta trabalha com as duas opes de resposta, verdadeira e falsa, tendo alternativa de processamento tanto para a sada de verdade da condio quanto da sada de falso, na estruturao do comando condicional. Assim, para estruturar as condies, simples e composta, mostram-se as possibilidades: Se condio (verdadeira) ento Grupo de comandos Fim se. Vejamos o trecho do algoritmo: ... Se a = 1 ento B = 0; C = A; Fim se; ... Quando o valor de a for igual a 1, B recebe zeros e C recebe 1. Quando o valor de a for diferente de 1, o controle de execuo sai para a prxima instruo aps o Fim se,

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

5.2 Condio simples: conectivo condicional se... ento


A condio simples trabalha somente com uma sada definida no comando, conforme vimos anteriormente. Por exemplo: Se saia clara ento coloque avental; .... Ento resultado de uma condio verdadeira. No caso do exemplo acima, se a condio for falsa, segue a sequncia do algoritmo. Para elucidar o comando condicional, no exemplo, a seguir, voc vai conhecer um algoritmo que busca o menor valor existente em um conjunto. Algoritmo menorvalor variaveis Inteiro: valor, menor; incio valor = 0; menor = 0; LEIA (valor); menor = valor; ENQUANTO valor <> -1 FAA SE valor < menor ENTO menor = valor LER (VALOR); FIM ENQUANTO; Escreva (MENOR); Fim Voc deve observar que no algoritmo anterior h uma condio com uma s sada: Se Valor < menor ento menor:=valor Assim, a varivel Menor recebe o contedo de valor se a condio valor < menor for verdadeira. Caso esta condio seja falsa, o algoritmo passa para a prxima instruo. Vamos pensar mais um pouco... At agora trabalhamos com a lgica direta. Vamos ver um exemplo de lgica reversa. Seja o trecho do algoritmo:

Algoritmos

57

e-Tec Brasil/CEMF/Unimontes

.... Se A > B seno A:= B; Fim se;


H estudantes e profissionais que se identificam com esse tipo de lgica. Teste a sua habilidade. Se para voc, for mais complicado, ento use a lgica direta.

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.

5.3 Condio composta: conectivo condicional se... ento seno


Como estudado anteriormente, a condio composta apresenta tanto a sada de verdadeiro quanto a de falso. Utilizando-se a condio simples ou a composta, voc pode usar o aninhamento de condies. Veja um algoritmo que trata condio composta e de aninhamento de condies: Algoritmo faixa Variaveis Inteiro: numero; Incio Leia numero; Se numero < =15 e numero > 10 ento Escreva (Nmero entre 11 e 15); Seno Se numero <= 10 e nmero > 5 ento Escreva(Nmero entre 5 e 10); Seno Se numero < = 5 ento Escreva (numero menor ou igual a 5) Fim se Fim se Seno Escreva (Nmero maior que 15) Fim se; Agora com voc! Faa um algoritmo que leia dois valores numricos e inteiros e efetue a soma destes valores. Caso o valor encontrado na soma: - seja maior ou igual a 10, este valor dever ser somado de 5; - no seja maior ou igual a 10, este valor dever ser subtrado de 5. - exiba o valor final.

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 condio verdade Falso

Resultado usurio

Maior numero C

A=1B=3eC=0 O quadro 11 mostra as instrues executadas com os dados atribudos.


QUADRO 11 Execuo do algoritmo maior instruo A maior que B? B maior que C?
Fonte: Prpria.

Resultado condio Falso verdade

Resultado usurio

Maior mero B

A = 10 B = 3 e C = 0 O quadro 12 mostra as instrues executadas com os dados atribudos.


Quadro 12 Execuo do algoritmo maior instruo A maior que B? A maior que C?
Lembre-se de que a sequncia de comandos depende de valores variveis.
Fonte: Prpria.

Resultado condio verdade verdade

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.

5.4 Estrutura condicional - Caso


Nos exemplos anteriores sobre estrutura condicional, tratou-se da estrutura Se... ento ...Seno Se...Fim Se. Porm, esta no a nica. Existe outra estrutura que trabalha com mltiplas escolhas, que veremos a seguir. Veja os componentes da estrutura condicional caso Escolha (expresso) Caso <rtulo 1>: <Bloco de comandos> Caso <rtulo 2>: <Bloco de comandos> Caso <rtulo n>: <Bloco de comandos> Seno <Bloco de comandos> Fim Escolha Algumas consideraes para essa nova estrutura devem ser vistas: A expresso avaliada, e o valor ser comparado com um dos rtulos. A opo seno opcional. O rtulo ser aqui definido como uma constante caractere ou uma constante numrica inteira, embora em algumas linguagens possam ser usadas constantes literais. A estrutura muito usada em algoritmos com menus, tornandoos mais claros do que quando usamos a condio Se aninhada. Vamos fazer a seguinte atividade: Escrever um algoritmo que leia um peso na Terra e o nmero de um planeta, e exiba o valor de seu peso nesse planeta. A relao de planetas dada, conforme o quadro 13, a seguir, juntamente com o valor das gravidades relativas Terra:
QUADRO 13 Gravidade dos planetas Gravidade dos planetas 1 2 3 4 5 6
Fonte: Prpria.

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.

Gravidade relativa 0.37 0.88 0.38 2.64 1.15 1.17

Planeta Mercrio Vnus Marte Jpiter Saturno Urano

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

senao Escreva (O maior nmero : , num2); Fim se; Fim.

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

AULA 1 Aula 6 - Estruturas de repetio


Alfabetizao Digital

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.

6.2 Estrutura de repetio condicional com teste no incio


A repetio condicional em pseudocdigos ocorrer de duas formas: o teste condicional (pergunta) feito antes (incio) de a estrutura de comandos ocorrer ou ao final (aps) da estrutura de comandos. A estrutura de repetio Enquanto testa a condio no incio do bloco de comandos repetitivos. Enquanto <condio> faa ... ... Bloco de Comandos ... Fim Enquanto O bloco de comandos ser executado se a condio definida no incio do Enquanto for verdadeira. O bloco de comandos executado n vezes, enquanto a condio for verdadeira. Cada vez que o bloco de comandos executado, diz-se que houve uma iterao. Quando a condio for falsa, executada a instruo que se encontra posicionada depois do Fim Enquanto, saindo, portanto, da execuo repetida do bloco de comandos, encontrados dentro do Enquanto. Como a condio testada no incio do bloco de comandos, este pode no ser executado nem uma vez. Vejamos novamente o trabalho de descascar batatas. Traga cestas com batatas; Traga panela do armrio; Se saia clara ento coloque avental; Descascar batatas; Enquanto batatas com cascas faa Descascar batatas; Fim enquanto; Devolva a cesta de batatas;

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.

6.3 Comandos repetitivos condicionais com teste no final


Quando um grupo de comandos necessita ser executado ao menos uma vez, e tem a possibilidade de se repetir sua execuo, voc deve usar a estrutura de comandos repetitivos com teste no final do bloco. Veja a estrutura:

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).

6.4 Comandos repetitivos condicionais com contadores


A repetio contada aquela em que o programador sabe, antes de ela ocorrer, quantas vezes dever ser executada. Deve ficar claro, que a quantidade de vezes que o bloco de comandos ser executado pode ser um valor atribudo a uma varivel ou tal valor pode ser informado pelo usurio. Veja a estrutura do comando: Para I:= valor inicial at valor final passo incremento faa ... ... Bloco de Comandos .. Fim Para A condio que avaliada para a execuo do bloco de comandos se I maior ou igual ao valor inicial e se I menor ou igual ao valor final, para incrementos crescentes. Para incrementos decrescentes, a condio avaliada para a execuo do bloco de comandos se I menor ou igual ao valor inicial e se I maior ou igual ao valor final. At significa inclusive. Quando o passo definido para o incremento for igual a 1, este pode no ser explicitado na linha do comando Para. Vejamos os seguintes trechos de algoritmos: Para i := 1 at 5 faa Imprima(i); Fim Para O quadro 13 mostra os passos de execuo do trecho acima.
QUADRO 13 Execuo que conta de 1 a 5. I 1 2 3 4 5 6
Fonte: Prpria.

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.

condio I > 5? I > 5? I > 5? I > 5? I > 5? I > 5?

resultado 1 2 3 4 5 Sai do loop

Para i := 1 at 10 faa Passo 3

Algoritmos

81

e-Tec Brasil/CEMF/Unimontes

Imprima(i); Fim Para O quadro 14 mostra os passos de execuo do trecho acima.


QUADRO 14 Execuo que conta de 1 a 10 I 1 4 10 13
Fonte: Prpria.

condio I > 10? I > 10? I > 10? I > 10?

resultado 1 4 10 Sai do loop

Para i := 100 at 0 faa Passo -10 Imprima(i); Fim Para


O quadro 15 mostra os passos de execuo do trecho acima.
Quadro 15 Execuo que conta de 100 a 0 I 100 90 80 70 60 50 40 30 20 10 0 -10
Fonte: Prpria.

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?

resultado 100 90 80 70 60 50 40 30 20 10 0 Sai do loop

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).

5) Escreva um algoritmo que leia o cdigo de n alunos e suas trs notas.

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

AULA 1 Aula 8 - Ordenao e pesquisa de dados


Alfabetizao Digital

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.

8.1 Ordenao de Dados


Vrios mtodos de classificao so trabalhados para o desenvolvimento desta tarefa, tais como Ordenao por Insero, ShellSort, Bubblesort, QuickSort e Heapsort.

Este texto cuidar apenas do mtodo Bubblesort para ordenao.


Ao final desta unidade, voc ser capaz de: - classificar um conjunto de dados de forma ascendente ou descen- aplicar pesquisa para busca seqencial ou binria.

A classificao consiste em ordenar os elementos de um vetor ou matriz em uma determinada classificao, seguindo o critrio necessrio para cada problema.

dente;

8.1.1 Mtodo da bolha Bubblesort


A filosofia bsica desse mtodo consiste em ler todo o vetor, comparando os elementos vizinhos entre si. Caso estejam fora de ordem, eles trocam de posio entre si. Procede-se assim at o final do vetor. Na primeira leitura, verifica-se que o ltimo elemento do vetor j est em seu devido lugar (no caso de ordenao crescente, ele o maior de todos). A segunda leitura anloga primeira e vai at o penltimo elemento. Esse processo repetido at que seja feito um nmero de leituras igual ao nmero de elementos a serem ordenados, menos um. Ao final desse processo, o vetor estar classificado segundo o critrio escolhido.

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.

8.2 Pesquisa de Dados


Vrios mtodos de pesquisas existem. Alguns bem interessantes e otimizados. Nosso contedo abordar dois mtodos bem difundidos para pesquisa, que so a pesquisa sequencial e a pesquisa binria.
Como vimos no estudo de vetores, a pesquisa consiste na verificao da existncia de um valor dentro de um conjunto de dados.

8.2.1 Mtodo de pesquisa sequencial


Em um dos exemplos do contedo de vetores, foi estudado um algoritmo de pesquisa sequencial ou linear. o mtodo mais objetivo para encontrar um elemento particular num conjunto no classificado, isto , cujos elementos no esto ordenados segundo algum critrio. Envolve a simples verificao de cada componente do conjunto, sequencialmente, at que o elemento desejado seja encontrado (nesse caso, diz-se que a pesquisa foi bem-sucedida) ou que todos os elementos do conjunto tenham sido verificados sem que o elemento procurado tenha sido encontrado (pesquisa mal-sucedida). Para ilustrar o mtodo de pesquisa sequencial, vamos apresentar o seguinte algoritmo: Algoritmo PesquisaSequencial Variveis Tipo m = vetor [1,10] caractere; Valor: caractere; m = nomes; I : Inteiro; Achou : Lgico;

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:

8.2.2 Mtodo de pesquisa binria


Quando os elementos de um vetor esto classificados (ordenados), a pesquisa binria um dos tipos de pesquisa mais eficazes para estes casos. Ela tem a capacidade de eliminar metade dos elementos da matriz que est sendo pesquisada, a cada comparao. O mtodo de pesquisa binria faz uso de trs variveis auxiliares: Uma que aponte para o primeiro elemento da pesquisa; no caso de ser a primeira comparao o primeiro elemento (valor 1); Outra que aponte para o ltimo elemento do vetor de pesquisa, no caso de um vetor de dez elementos, seria o valor 10; A terceira varivel, que aponte para o elemento do meio do vetor. no exemplo de 10 elementos, seria o quinto elemento. O elemento que apontado pela varivel meio localizado e comparado com o valor procurado. Se ele for igual ao valor procurado, a pesquisa dita bem sucedida e interrompida. No caso de ser ele maior que o valor procurado, repetimos o processo na primeira metade do vetor. No caso de o elemento central ser menor que o valor procurado, repetimos o processo na segunda metade da matriz.

A pesquisa binria s pode ser utilizada com um conjunto ordenado de valores.

Vamos analisar a seguinte situao:

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.

5) Elabore um algoritmo para ordenar os valores de uma matriz 10 x 10.

6) Elabora um algoritmo para encontrar valor em uma matriz de 10x10.

7) faa um algoritmo que verifica quantos nomes se iniciam pela letra m.

8) Faa um algoritmo que verifica quantos nomes terminam com a letra a.

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.

2) Com a utilizao de registros, os dados se encontram persistente ou temporariamente armazenados?

3) Como feito o manuseio das variveis dos registros?

4) Mostre a necessidade de sua utilizao dos registros.

5) Como a construo dos registros influenciam na busca de dados

6) Crie um registro que contm os seguintes dados: Cdigo, nome, endereo, sexo, telefone, data nascimento, nome do pai, nome da me, identidade, CPF

7) Crie um exemplo de comando de leitura dos dados do registro da questo 6.

Algoritmos

113

e-Tec Brasil/CEMF/Unimontes

8) Crie um exemplo de comando de escrita dos dados do registro da questo 6.

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

AULA 1 Aula 10 - Arquivos


Alfabetizao Digital

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.

10.1 Operaes Bsicas


As operaes que se podem realizar nos arquivos so Incluso, Excluso, Alterao. Parar realizar a excluso e a alterao, necessariamente deve realizar a Obteno de registro em um processo de busca do mesmo.
Registro um conjunto de informaes logicamente relacionadas, no qual cada unidade de informao constitui um campo de registro

10.2 Organizao de arquivos


Cada arquivo pode ser organizado de forma sequencial ou indexada. No caso da organizao sequencial, um registro gravado aps o outro, em uma sequncia. Para buscar qualquer registro armazenado de forma sequencial, deve-se percorrer o arquivo, registro por registro, at encontrar o contedo procurado ou detectar que o mesmo no existe. No caso da organizao indexada, cada registro necessita de um ndice para facilitar o processo de armazenamento e de busca. Para declarar um registro, usamos a seguinte notao: Tipo lista de identificadores arquivo organizao de nome de registro Vamos verificar o exemplo de declarao de arquivo sequencial: Tipo AGENDA arquivo sequencial de ENDEREO Tipo ENDEREO = REGISTRO (NOME, RUA caracter, NUMERO inteiro, CIDADE literal ou caractere) Tipo COMPRA.PEDIDOS arquivo sequencial de PAPELETA Tipo PAPELETA registro (quantidade inteiro, ESPECIFICAO caracterel)

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.

11.2 Variaveis locais e Globais


As variveis locais ao bloco so declaradas internamente no bloco e ativadas quando inicia o seu processamento. Assim, a varivel local s existe dentro do procedimento ou da funo. A varivel local s passa a ser ativada no escopo do programa quando o procedimento ou funo chamado pelo programa chamador e instalado na memria. Aps o trmino da execuo, o subalgoritmo desalocado da memria e as variveis locais desaparecem. No caso das variveis globais, as variveis dos blocos externos so conhecidas nos blocos internos. Para voc entender o escopo das variveis, mostra-se o exemplo a seguir: Algoritmo entrada inteiro: N,I; incio leia (N); incio tipo v= vetor [1:n] real; V: VET; para I de 1 at N faa

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.

11.5.1 Funo recursiva


O cdigo gerado por uma funo recursiva exige utilizao de mais memria, o que torna a execuo mais lenta. No difcil criar funes recursivas, o difcil reconhecer as situaes nas quais a recurso apropriada. Vamos tecer as seguintes consideraes em relaes s funes recursivas: a. pensar em criar uma funo recursiva escrever o problema em termos de recurso. Por exemplo, o fatorial de um nmero n qualquer pode ser definido por meio da seguinte expresso: n! = n * (n-1)! b. Toda funo recursiva deve ter uma condio de trmino chamada condio bsica. A funo fatorial(), quando chamada, verifica se n zero. Se essa condio for satisfeita, interrompe a execuo. c. Cada vez que a funo chamada recursivamente, deve estar mais prxima de satisfazer a condio bsica. Isso garante que o programa no executar numa sequncia infindvel de chamadas. Em nosso exemplo, a cada chamada da funo, o valor de n estar mais prximo de zero. Vamos mostrar a voc um exemplo interessante de funo recursiva: Eu me casei com uma viva que tinha uma filha crescida. Meu pai, que nos visitava frequentemente, se apaixonou por minha enteada e casou-se com ela. Assim, meu pai se tornou meu genro e minha enteada, minha me. Alguns meses mais tarde, minha esposa deu a luz a um filho, que se tornou cunhado do meu pai e, ao mesmo tempo, meu tio. A esposa do meu pai, que minha enteada, tambm deu a luz a um filho. Dessa maneira, eu ganhei um irmo e, ao mesmo tempo um neto. Minha esposa tornou-se agora

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

Escreva Aluno , Nomes[I], mdia , Notas[I]; FimSe; FimPara; Fim;


Incio EntradaDeDados; SaidaDeDados; Fim

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

Currculo do professor conteudista


Prof Msc Marile Patta
Mestre em Cincia da Informao, especialista em Tecnologias da Computao e especialista em Engenharia de Informao. Graduada em Tecnologia em Processamento de dados. Atua como professora das disciplinas de Sistemas de Informao, Gesto de Informao, Engenharia de Software, Algoritmos e Estruturas de Dados, Monografia, Estgio em Cursos de Graduao de Sistemas de Informao da Unimontes e das Faculdades Santo Agostinho. Atua como professora de ps-graduao lato-sensu na Unimontes nos cursos de Engenharia de Sistemas, na disciplina de algoritmos e estruturas de dados, administrao hospitalar, informtica jurdica, tecnologias da educao. Atua tambm como professora da ps-graduao lato-sensu nas Faculdades Santo Agostinho nos cursos de Tecnologias e Gesto da Informao, Administrao Pblica, Gesto empresarial. Ainda nas Faculdades Santo Agostinho: Coordena o curso de ps-graduao em Tecnologia e Gesto da Informao. Participa do colegiado de curso de sistemas de informao, participa do Ncleo Docente Estruturante do mesmo curso. Atua como analista de sistemas. Na Unimontes: Participa e coordena projetos de pesquisa. Atuou como coordenadora de curso de sistemas de informao, chefe de departamento de cincia da computao, membro de colegiado de curso, conselho departamental. Em outras instituies de ensino: Atuou como docente de disciplinas relacionadas Tecnologia de Informao e Educao.

Daniel Carli Colares e Silva


Mestrando em Engenharia Eltrica e Graduado em Sistemas de Informao. Atua como professor das disciplinas de Redes de Computadores, Algoritmos, Planejamento e Administrao de Redes, Redes de Telecomunicaes e Segurana em Redes de Computadores das Faculdades Santo Agostinho. Atuou como analista de sistemas na rea de desenvolvimento de sistemas e de infraestrutura de redes de computadores nas Faculdades Santo Agostinho Montes Claros MG e atualmente Analista de Sistemas do IFNMG (Instituto Federal do Norte de Minas Gerais Campus Montes Claros)

e-Tec Brasil/CEMF/Unimontes

132

Informtica

e-Tec Brasil/CEMF/Unimontes
Escola Tcnica Aberta do Brasil