Prof. Dr. Nilton Cézar de Paulancdepaula@gmail.comDourados, Mar/2009Universidade Estadual de Mato Grosso do Sul-UEMSBachar...
PREFÁCIOO trabalho a que me propus é resultado de minhaexperiência em ministrar Algoritmos, motivado pelafalta de texto re...
SUMÁRIO1. UMA VISÃO GERAL DO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE12. INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ..................
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE D...
Próximos SlideShares
Carregando em…5
×

Apostila

680 visualizações

Publicada em

............

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
680
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apostila

  1. 1. Prof. Dr. Nilton Cézar de Paulancdepaula@gmail.comDourados, Mar/2009Universidade Estadual de Mato Grosso do Sul-UEMSBacharelado em Ciência da ComputaçãoAlgoritmos e Estruturas de Dados I
  2. 2. PREFÁCIOO trabalho a que me propus é resultado de minhaexperiência em ministrar Algoritmos, motivado pelafalta de texto relacionado às condições enecessidades do curso.O objetivo principal da Lógica de Programação édemonstrar técnicas para resolução de problemas econseqüentemente automatização de tarefas.O aprendizado da Lógica é essencial paraformação de um bom profissional de computação,servindo como base para o aprendizado de todas aslinguagens de programação, estruturadas ou não.
  3. 3. SUMÁRIO1. UMA VISÃO GERAL DO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE12. INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO .......................................................23. ALGORITMOS..................................................................................................................43.1 FORMAS DE REPRESENTAÇÃO DE ALGORITMO..............................................74. PROGRAMA ...................................................................................................................125. LINGUAGENS DE PROGRAMAÇÃO..........................................................................126. TÉCNICAS ATUAIS DE PROGRAMAÇÃO ................................................................127. ALGORITMOS EM “PORTUGOL”...............................................................................127.1 OPERADORES ARITMÉTICOS...............................................................................137.2 OPERADORES RELACIONAIS...............................................................................137.3 LINEARIZAÇÃO DE EXPRESSÕES.......................................................................137.4 MODULARIZAÇÃO DE EXPRESSÕES .................................................................147.5 OPERADORES ESPECIAIS (MOD e DIV)..............................................................147.6 FUNÇÕES...................................................................................................................147.6.1 BIBLIOTECAS DE FUNÇÕES ..............................................................................157.6.1.1 FUNÇÕES PRÉ-DEFINIDAS..............................................................................157.7 OPERADORES LÓGICOS ........................................................................................167.8 TABELA VERDADE.................................................................................................167.9 EXPRESSÕES LÓGICAS..........................................................................................167.10 HIERARQUIA NAS EXPRESSÕES .......................................................................177.11 VARIÁVEIS .............................................................................................................187.12 CONSTANTES.........................................................................................................197.13 IDENTIFICADORES ...............................................................................................197.14 TIPOS PRIMITIVOS................................................................................................207.15 ESQUELTO DO ALGORITMO ..............................................................................207.16 DECLARAÇÃO DE VARIÁVEIS...........................................................................217.17 COMANDOS............................................................................................................217.17.1 ATRIBUIÇÃO .......................................................................................................217.17.2 ENTRADA DE DADOS........................................................................................227.17.3 SAÍDA DE DADOS ..............................................................................................237.18.1 ESTRUTURA SEQUENCIAL ..............................................................................237.18.2 ESTRUTURA DE DECISÃO................................................................................247.18.3 ESTRUTURA DE REPETIÇÃO...........................................................................277.18.3.1 REPETIÇÃO COM TESTE NO INÍCIO ...........................................................277.18.3.2 REPETIÇÃO COM TESTE NO FINAL ............................................................287.18.3.3 REPETIÇÃO VARIÁVEL DE CONTROLE.....................................................297.19 CRÍTICA OU CONSISTÊNCIA DE DADOS.........................................................30
  4. 4. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA1. UMA VISÃO GERAL DO PROCESSO DE DESENVOLVIMENTODE SOFTWAREAntes de começarmos a estudar lógica de programação, é importante quetenhamos uma visão geral do processo de desenvolvimento de software, uma vezque estudaremos lógica de programação com o objetivo de conseguir um bomembasamento para a prática da programação de computadores.O processo de desenvolvimento de software consiste basicamente numconjunto de atividades divididas em etapas, onde o objetivo é, ao executar estasetapas, chegar à efetiva construção de um software1.Podemos encontrar na literatura em Informática2várias formas derepresentação das etapas em que consiste o processo de desenvolvimento desoftware. Estas formas de representação podem variar tanto na quantidade deetapas como nas atividades que devem ser realizadas por cada etapa.A seguir apresentaremos uma forma de representação do processo dedesenvolvimento de software que é bastante encontrada na literatura:Fig. 1 - Etapas do processo de desenvolvimento de software.Na figura 1 podemos ver o processo de desenvolvimento de softwaredividido em 6 etapas. A seguir daremos uma rápida explicação das atividadesrealizadas por cada etapa.1Conjunto de instruções (comandos) interpretáveis pelo computador.2Mais especificamente na área de engenharia de software.PlanejamentoAnáliseProjetoImplementaçãoTesteManutenção
  5. 5. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA2• Planejamento: na etapa de planejamento é onde deve ser desenvolvido umplano inicial de desenvolvimento, levando em considerações questões comodefinição da abrangência do sistema, missão e objetivos do sistema,cronogramas de desenvolvimento, análise custo x benefício, levantamentoinicial de informações, etc.• Análise: também chamada de análise de requisitos, é onde deve se obter umclaro entendimento sobre o sistema. A análise proporciona a base para umaboa implementação do software. Nesta etapa são construídos os modelos dosistema.• Projeto: também chamada de especificação do projeto, é onde propomos umaarquitetura de implementação para o software, que atenda aos requisitos dosistema identificados na análise. Aqui passamos a nos preocupar com osdiversos aspectos computacionais necessários para uma boa implementaçãodo software. Os algoritmos dos programas a serem implementados sãoconstruídos nesta fase.• Implementação: a etapa de implementação é onde os programas sãoefetivamente construídos, a partir da arquitetura de implementação feita naetapa anterior. Nesta etapa é onde a atividade de codificação ocorre de formamassiva.• Teste: nesta etapa todos os programas construídos serão testados de formaexaustiva. Existe uma grande variedade de testes que são realizados, indodesde o teste unitário dos módulos de programas até o teste de integração detodo o sistema de software.• Manutenção: é onde ocorrem ajustes do software implementado, que podemser ocasionados por vários motivos: erros de projeto identificados após aimplementação e o teste do software, inovações tecnológicas, evolução dosistema etc.2. INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃOComo esta disciplina envolve Algoritmos estudaremos a lógica, vamosiniciar nossos estudos procurando entender o que é lógica de uma forma geral. Aseguir serão dadas algumas definições que procuram elucidar o termo lógica.
  6. 6. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA3Lógica:• [do grego logiké, que significa "arte de raciocinar"]. Na tradição clássica,aristotélico-tomista, conjunto de estudos que visam a determinar os processosintelectuais que são condição geral do conhecimento verdadeiro. (1a definiçãoencontrada no Dicionário Aurélio da Língua Portuguesa)• Coerência de raciocínio, de idéias. (6a definição encontrada no DicionárioAurélio da Língua Portuguesa)• Maneira de raciocinar particular a um indivíduo ou a um grupo: a lógica dacriança, a lógica primitiva, a lógica do louco. (7a definição encontrada noDicionário Aurélio da Língua Portuguesa)A lógica trata da correção do pensamento. Como filosofia ela procura saberpor que pensamos de uma forma e não de outra. Poderíamos dizer também que alógica é a arte de pensar corretamente e, visto que a forma mais complexa depensamento é o raciocínio, a Lógica estuda ou tem em vista a "correção dopensamento". A Lógica ensina a colocar Ordem no Pensamento.Exemplo:1) Todo vulcano tem orelhas pontudas.Spock é vulcano.Logo, Spock tem orelhas pontudas.2) Todo aluno que se formar em Ciência da Computação pela UNIDOU seráum bom profissional em Informática.Se você se formar em Ciência da Computação pela UNIDOU, então vocêserá um bom profissional em Informática. (mas para isso terá que estudarmuito!!!)Normalmente somos bem sucedidos na execução de uma tarefa quandoempregamos raciocínio lógico (lógica). Se queremos ter bons resultados numaprova escolar, devemos estudar o assunto que será tratado na prova (isto é lógico,pois o objetivo da prova é fazer com que o aluno apreenda o conteúdo em pauta,ao passo que "colar" seria ilógico, pois o aluno está enganando a si mesmo, nãoapreendendo o conteúdo necessário). Se queremos ter sucesso numa modalidadeesportiva, devemos treinar, descansar e nos alimentarmos adequadamente. Sequeremos desenvolver bons programas de computador, devemos programa-lologicamente, para que este possa resolver o problema desejado da forma maisotimizada possível, dado um conjunto de restrições. É neste ponto que entra oconceito de lógica de programação.
  7. 7. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA4Lógica de Programação: raciocínio lógico empregado no desenvolvimento dealgoritmos, fazendo uso ordenado dos elementos básicos suportados por um dadoestilo de programação.3. ALGORITMOSDefinição: uma seqüência de passos (ações) que devem ser executadospara se alcançar um determinado objetivo.Embora a palavra pareça um pouco estranha, executamos algoritmosquotidianamente.Exemplo: Utilizar um telefone públicoInício1. Tirar o fone do gancho;2. Ouvir o sinal de linha;3. Introduzir o cartão;4. Teclar o número desejado;5. Se der o sinal de chamar5.1 Conversar;5.2 Desligar;5.3 Retirar o cartão;6. Senão6.1 Repetir;Fim.No desenvolvimento de programas, estaremos tratando constantementecom a complexidade inerente aos problemas que desejamos que nossoprograma de computador resolva. Para tratarmos da complexidade dos problemasdesenvolvemos algoritmos que devem expressar de forma objetiva e clara(legibilidade) a forma de resolvermos o problema. A partir do algoritmodesenvolvido fica fácil construirmos o programa, basta conhecermos a linguagemde programação que se pretende adotar. Uma vez construído o algoritmo,SEQUÊNCIALDESVIO
  8. 8. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA5podemos transportá-lo para qualquer linguagem de programação, o que nos dáuma flexibilidade para a efetiva implementação do programa.Existem três estruturas básicas para a construção de algoritmos:sequenciação, seleção e repetição. A combinação destas três estruturaspermite-nos a construção de algoritmos para a resolução de problemasextremamente complexos. A programação estruturada se baseia nestas trêsestruturas básicas.Imagine a seguinte situação: precisamos elaborar um algoritmo para trocaruma lâmpada.Algoritmo 1:Início- pegue uma escada;- coloque-a embaixo da lâmpada;- busque uma lâmpada nova;- suba na escada com a lâmpada nova;- retire a lâmpada velha;- coloque a lâmpada nova;- desça da escada.FimObserve que este algoritmo resolve o nosso problema da troca de lâmpada.No entanto, trata-se de um algoritmo bastante simples, que se utiliza apenas daestrutura de sequenciação, ou seja, nenhuma seleção ou repetição deprocedimentos aparece no algoritmo. Uma estrutura de seqüência caracteriza-sepor possuir uma única seqüência de ações, que é executada apenas uma vez.No entanto, antes de trocarmos a lâmpada devemos nos certificar de queela realmente esteja queimada, para então trocá-la. Assim, podemos melhorar onosso algoritmo.Algoritmo 2:Início- ligue o interruptor;- se a lâmpada não acender, então:- pegue uma escada;- coloque-a embaixo da lâmpada;- busque uma lâmpada nova;- suba na escada com a lâmpada nova;- retire a lâmpada velha;- coloque a lâmpada nova;
  9. 9. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA6- desça da escada.FimObserve que agora o nosso algoritmo, além da estrutura de seqüência,passa a utilizar uma estrutura de seleção. Na estrutura de seleção, umacondição deve ser analisada, a partir do resultado da análise, um “caminho” doalgoritmo será executado. Em outras palavras, uma estrutura de seleção selecionaações a serem executadas a partir de uma condição (que pode ser simples oucomposta).Embora nosso algoritmo tenha melhorado, ainda podemos deixá-lo maiscompleto. Quando verificamos que a lâmpada está queimada, subimos para trocá-la, mas não consideramos a hipótese da lâmpada nova também estar queimada, ese isso ocorrer, precisaremos executar algumas ações novamente, até quepossamos efetivamente resolver nosso problema.Algoritmo 3:Início- ligue o interruptor;- se a lâmpada não acender, então:- pegue uma escada;- coloque-a embaixo da lâmpada;- enquanto a lâmpada não acender, faça:- busque uma lâmpada nova;- suba na escada com a lâmpada nova;- retire a lâmpada velha;- coloque a lâmpada nova;- desça da escada.FimNeste algoritmo somente iremos parar de trocar a lâmpada quandocolocarmos uma lâmpada que acenda. Portanto, um conjunto de ações seráexecutado repetidamente enquanto a condição de repetição for verdadeira. Assim,inserimos uma estrutura de repetição no nosso algoritmo, que passa a trabalharcom as três estruturas básicas de construção de algoritmos. É importante salientarque existem várias formas de se construir um algoritmo, pois as pessoas pensamde formas diferentes, no entanto, devemos sempre buscar a forma mais otimizadapossível (dentro dos limites impostos pela situação).Exercícios de RaciocínioElabore um algoritmo em linguagem natural para resolver as situaçõescolocadas a seguir:
  10. 10. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA71) Um homem precisa atravessar um rio com um barco que possui capacidade detransportar apenas ele e mais uma de suas três cargas, que são: um cachorro,uma galinha e um saco de milho. O que o homem deve fazer para conseguiratravessar o rio sem perder suas cargas?2) Uma Torre de Hanói é formada por três (ou mais) discos sobrepostostranspassados por uma haste (observe a figura 2). Tendo mais duas hastes epodendo mover um disco por vez, mas nunca deixando um disco maior sobre umdisco menor, como podemos passar os discos da haste 1 para a haste 3 ?Fig. 2 - Torre de Hanoi com 4 discos3) Três jesuítas e três canibais precisam atravessar um rio. No entanto dispõemapenas de um barco com capacidade para duas pessoas. Por medida desegurança não se permite que em alguma das margens do rio a quantidade dejesuítas seja inferior à quantidade de canibais. Qual a seqüência de viagensnecessárias para a travessia do rio com segurança para os jesuítas?3.1 FORMAS DE REPRESENTAÇÃO DE ALGORITMO.Existem várias ferramentas que podem ser utilizadas para a representaçãode algoritmos, entre elas: linguagem natural, pseudocódigo, diagrama de Nassi-Shneiderman (ou Chapin), fluxograma etc.Estas ferramentas procuram padronizar formas de representação,facilitando a posterior transformação do algoritmo para um conjunto de códigos3.Linguagem NaturalA representação de algoritmos através de linguagem natural é a forma maisespontânea de representação de algoritmos, pois descrevemos os passos doalgoritmo utilizando o nosso linguajar quotidiano, escrevendo o algoritmo como umtexto simples.3Símbolos que fazem sentido dentro do contexto de uma linguagem de programação.
  11. 11. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA8Por exemplo, queremos resolver o seguinte problema: Calcular a média detodos os alunos que cursaram uma disciplina X, a partir da leitura das notas da 1ae 2a prova, passando por um cálculo de média aritmética. Após a médiacalculada, devemos anunciar se aluno foi aprovado ou reprovado por nota.Somente estão aprovados alunos com média maior ou igual a 5,0.Representação do algoritmo em linguagem natural: Para todos osalunos da disciplina X, faça: ler as notas da 1a e 2a prova, somar as notas e dividirpor dois, chegando assim, ao resultado da média do aluno. Se a média do alunofor maior ou igual a 5,0, então o aluno está aprovado, senão o aluno estáreprovado. Fazer para o próximo aluno.O problema da representação de algoritmos com linguagem natural é quequanto maior a complexidade do problema, maior a dificuldade de entendermos otexto que procura descrever os passos do algoritmo, pois não se emprega nenhumrecurso diagramático, e não há uma rigidez na estruturação das ações.PseudocódigoO pseudocódigo vem sendo amplamente utilizado por projetistas desoftware e programadores, pois obriga o uso de estruturas que facilitam oentendimento do algoritmo, e também facilitam a transformação do mesmo emcódigos reais. O pseudocódigo também recebe outros nomes, como: portuguêsestruturado, PDL (Program Design Language), pascalóide etc. Utilizaremos opseudocódigo como a forma de representação padrão para algoritmos. O exemploanterior será representado através de pseudocódigo.Algoritmo Média_Alunos;Variávelnota1, nota2, media:real;InícioEnquanto não for fim da lista de alunos, façaInícioLeia nota1;Leia nota2;média ( nota1 + nota2 ) / 2;Se média >= 5,0 entãoEscreva “Aluno aprovado”;SenãoEscreva “Aluno reprovado”;FimFim
  12. 12. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA9Observe que no pseudocódigo, somos obrigados a utilizar algumasestruturas básicas de controle (seqüência, seleção e repetição), de forma aestruturar e organizar melhor os passos do algoritmo.Diagrama de Nassi-ShneidermanTambém conhecido como diagrama Chapin, esta ferramenta derepresentação oferece grande clareza para a representação de sequenciação,seleção e repetição num algoritmo, utilizando-se de uma simbologia própria. Aidéia básica deste diagrama é representar as ações de um algoritmo dentro de umúnico retângulo, subdividido-o em retângulos menores, que representam osdiferentes blocos de seqüência de ações do algoritmo. Seleção e repetiçãotambém são representadas de forma gráfica, dentro dos retângulos.Seqüênciaação-1ação-2ação-nSeleçãoRepetiçãoAçõesEnquanto condição façaAçõesRepetir até condiçãoV Fações açõescondição
  13. 13. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA10Exemplo:Embora os diagramas N-S ofereçam uma representação muito clara doalgoritmo, à medida que os algoritmos vão se tornando mais complexos, fica difícilrealizar os desenhos necessários numa única página, prejudicando a suavisualização.FluxogramaO fluxograma foi utilizado por muito tempo para a representação dealgoritmos. No entanto, o seu grande problema é permitir o desenvolvimento dealgoritmos não estruturados. Com o advento das linguagens de programaçãoestruturada o fluxograma caiu em desuso.O fluxograma utiliza-se de símbolos específicos para a representação dealgoritmos. Existe uma certa variação na simbologia empregada, apresentamos aseguir uma simbologia tradicionalmente usada:Enquanto não for fim da lista de alunos façaLeia ( nota1 )Leia ( nota2 )média (nota1 + nota2) / 2média >= 5,0V FEscreva(“Aluno aprovado”)Escreva(“Aluno reprovado”)ProcessoDecisãoLeitura
  14. 14. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA11Exemplo de Representação com Fluxograma:EscritaConectorInícioFimFim da lista dealunos?SimNãonota1nota2média = (nota1 + nota2) /2média >= 5,0SimNão“Alunoaprovado”“Alunoreprovado”TerminalSetas de fluxode controle
  15. 15. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA124. PROGRAMAUm programa é um Algoritmo escrito em uma linguagem computacional.5. LINGUAGENS DE PROGRAMAÇÃOSão softwares que permitem o desenvolvimento de programas. Possuemum poder de criação ilimitado, desde jogos, editores de texto, sistemasempresariais até sistemas operacionais.Existem várias linguagens de programação, cada uma com suascaracterísticas próprias.Exemplos:• Pascal• Clipper• C• Visual Basic• Delphi e etc.6. TÉCNICAS ATUAIS DE PROGRAMAÇÃO• Programação Seqüencial• Programação Estruturada• Programação Orientada a Eventos e Objetos7. ALGORITMOS EM “PORTUGOL”Iremos aprender a desenvolver nossos Algoritmos em uma pseudo-linguagem conhecida como “Portugol” ou Português Estruturado.
  16. 16. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA13“Portugol” é derivado da aglutinação de Português + Algol. Algol é o nomede uma linguagem de programação estruturada usada no final da década de 50.7.1 OPERADORES ARITMÉTICOSAdição- Subtração* Multiplicação/ Divisão** Exponenciação7.2 OPERADORES RELACIONAIS> Maior que< Menor que>= Maior ou Igual<= Menor ou Igual= Igual<> Diferente7.3 LINEARIZAÇÃO DE EXPRESSÕESPara a construção de Algoritmos todas as expressões aritméticas devemser linearizadas, ou seja, colocadas em linhas.É importante também ressalvar o uso dos operadores correspondentes daaritmética tradicional para a computacional.Exemplo:( ) =+⎥⎦⎤⎢⎣⎡−+ 13532 (2/3+(5-3))+1=
  17. 17. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA147.4 MODULARIZAÇÃO DE EXPRESSÕESA modularização é a divisão da expressão em partes, proporcionando maiorcompreensão e definindo prioridades para resolução da mesma.Como pode ser observado no exemplo anterior, em expressõescomputacionais usamos somente parênteses “( )” para modularização.Na informática podemos ter parênteses dentro de parênteses.Exemplos de prioridades:(2+2)/2=22+2/2=37.5 OPERADORES ESPECIAIS (MOD e DIV)MOD Retorna o resto da divisão entre 2 números inteiros.DIV Retorna o valor inteiro que resulta da divisão entre 2 númerosinteiros.Exemplo:7.6 FUNÇÕESUma função é um instrumento (Sub–algoritmo) que tem como objetivoretornar um valor ou uma informação.A chamada de uma função é feita através da citação do seu nome seguidoopcionalmente de seu argumento inicial entre parênteses.As funções podem ser predefinidas pela linguagem ou criadas peloprogramador de acordo com o seu interesse.13 261MOD DIV13 DIV 2 = 613 MOD 2 = 1
  18. 18. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA15Exemplo:7.6.1 BIBLIOTECAS DE FUNÇÕESArmazenam um conjunto de funções que podem ser usadas pelosprogramas.7.6.1.1 FUNÇÕES PRÉ-DEFINIDASABS( x ) VALOR ABSOLUTO DE xSQRT( x ) RAIZ QUADRADA DE xINT( x ) PARTE INTEIRA DE xROUND( x ) VALOR ARREDONDADO DE xFRAC( x ) PARTE FRACIONÁRIA DE xSIN( x ) SENO DE xCOS( x ) COSENO DE xTAN( x ) TANGENTE DE xAs funções acima são as mais comuns e importantes para nossodesenvolvimento lógico, entretanto, cada linguagem possui suas funções próprias.Valor Final YValor Inicial XProcessamentoY=3X=9x
  19. 19. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA167.7 OPERADORES LÓGICOSAtuam sobre expressões retornando sempre valores lógicos como Falso ouVerdadeiro.NÃO INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO EVICE-VERSA.E RETORNA VERDADEIRO SE AMBAS AS PARTES FOREMVERDADEIRAS.OU BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNARVERDADEIRO.7.8 TABELA VERDADEA B A E B A OU B NÃO (A)V V V V FV F F V FF V F V VF F F F V7.9 EXPRESSÕES LÓGICASAs expressões compostas de relações sempre retornam um valor lógico.Exemplos:2 + 5 > 4 Verdadeiro 3 <> 3 FalsoDe acordo com a necessidade, as expressões podem ser unidas pelosoperadores lógicos.Exemplos:2+5>4 E 3<>3 FalsoFFEV
  20. 20. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA172+5>4 OU 3<>3 VerdadeiroNÃO(3<>3) Verdadeiro7.10 HIERARQUIA NAS EXPRESSÕESNa resolução das expressões aritméticas, lógicas e relacionais, osoperadores e as funções matemáticas possuem uma hierarquia de prioridade.Exemplo:não 2 ** 3 < 4 ** 2 ou abs( int( 15/-2 ) ) < 10não 8 < 16 ou abs( int( -7,5 ) ) < 10não 8 < 16 ou abs( -7 ) < 10não 8 < 16 ou 7 < 10não V ou VV VVOUFVNÃO1. Parênteses mais internos2. Funções Matemáticas3. Operadores AritméticosUnários: + -Binários:*** /+ -4. Operadores Relacionais5. Operadores Lógicosnãoeou
  21. 21. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA18F ou VResultado: V7.11 VARIÁVEISO computador possui uma área de armazenamento conhecida comomemória. Todas as informações existentes no computador estão ou na memóriaprimária (memória RAM), ou na memória secundária (discos, fitas, CD-ROM etc).A memória do computador pode ser entendida como uma seqüência finitade caixas, que num dado momento, guardam algum tipo de informação, comonúmero, uma letra, uma palavra, uma frase etc, não importa, basta saber que lásempre existe alguma informação.O computador, para poder trabalhar com alguma destas informações,precisa saber onde, na memória, o dado está localizado. Fisicamente, cada caixa,ou cada posição de memória, possui um endereço, ou seja, um número, queindica onde cada informação está localizada. este número é representado atravésda notação hexadecimal, tendo o tamanho de quatro, ou mais bytes. Abaixo seguealguns exemplos:Endereço Físico Informação3000: B712 ‘João’2000: 12EC 123453000: 0004 ‘H’Como pode ser observado, o endereçamento das posições de memóriaatravés de números hexadecimais é perfeitamente compreendido pela máquina,mas para nós humanos torna-se uma tarefa complicada. Pensando nisto, aslinguagens de computador facilitaram o manuseio, por parte dos usuários, dasposições de memória da máquina, permitindo que, ao invés de trabalhardiretamente com os números hexadecimais, fosse possível dar nomes diferentes acada posição de memória. Tais nomes seriam de livre escolha do usuário. Comeste recurso, os usuários ficaram livres dos endereços físicos (númeroshexadecimais) e passaram a trabalhar com endereços lógicos (nomes dados pelospróprios usuários). Desta forma, o Exemplo acima, poderia ser alterado para ter oseguinte aspecto:Endereço Físico InformaçãoNome ‘João’número 12345letra ‘H’
  22. 22. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA19Como tínhamos falado, os endereços lógicos são como caixas, que numdado instante guardam algum tipo de informação. Mas é importante saber que oconteúdo desta caixa não é algo fixo, permanente, na verdade, uma caixa podeconter diversas informações, ou seja, como no Exemplo acima, a caixa ( EndereçoLógico ) rotulada de “Nome” num dado momento contém a informação “João”, masem um outro momento, poderá conter uma outra informação, por Exemplo“Pedro”. Com isto queremos dizer que o conteúdo de uma destas caixas (endereço lógico ) podem variar, isto é podem sofrer alterações em seu conteúdo.Tendo este conceito em mente, a partir de agora iremos chamar de formagenérica, as caixas ou endereços lógicos, de variáveis.Desta forma podemos dizer que uma variável é uma posição de memória,representada por um Nome simbólico (atribuído pelo usuário), a qual contém, numdado instante, uma informação.7.12 CONSTANTESConstantes são endereços de memória destinados a armazenarinformações fixas, inalteráveis durante a execução do programa.Exemplo: PI = 3.14167.13 IDENTIFICADORESSão os nomes dados a variáveis, constantes e programas.Regras Para construção de Identificadores:• Não podem ter nomes de palavras reservadas (comandos dalinguagem);• Devem possuir como 1º caractere uma letra ou Underscore ( _ );• Ter como demais caracteres letras, números ou Underscore;• Ter no máximo 127 caracteres;• Não possuir espaços em branco;• A escolha de letras maiúsculas ou minúsculas é indiferente.Exemplos:
  23. 23. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA20NOME TELEFONE IDADE_FILHONOTA1 SALARIO PIUMNOMEMUITOCOMPRIDOEDIFICILDELERUM_NOME_MUITO_COMPRIDO_E_FACIL_DE_LER7.14 TIPOS PRIMITIVOSToda informação a ser tratada num algoritmo deve pertencer a algum tipo,que irá determinar o domínio de seu conteúdo. Os tipos mais comuns sãoconhecidos como tipos primitivos de dados, são eles: inteiro, real, caracter elógico.Inteiro: todo e qualquer dado numérico que pertença ao conjunto denúmeros inteiros relativos (negativo, nulo ou positivo). Exemplos: 15, -5, 0,234.Real: todo e qualquer dado numérico que pertença ao conjunto de númerosreais (negativo, nulo ou positivo). Exemplos: 15,34 123,08 0,005 -12,0.Caracter: todo e qualquer dado composto por um conjunto de caracteresalfanuméricos (números, letras e caracteres especiais). Exemplos: “AlunoAprovado”, “10% de multa”, “Confirma a exclusão ?”.Lógico: todo e qualquer dado que só pode assumir duas situações (Vverdadeiro ou F falso).7.15 ESQUELTO DO ALGORITMOAlgoritmo nome_algoritmo;<área de declarações de tipos><área de declaração de variáveis><área de blocos de rotinas><área da rotina principal>
  24. 24. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA217.16 DECLARAÇÃO DE VARIÁVEISToda variável possui algum conteúdo, que será armazenado por ela emanipulado pelo algoritmo. As variáveis que serão utilizadas nos algoritmosdevem ser declaradas inicialmente. A declaração de uma variável indica o tipo dedado que ela pode “guardar” no decorrer da execução do algoritmo (ou nodecorrer da execução do programa que futuramente será construído).Para declararmos uma variável, temos que criar um identificador para ela,que será o nome da variável no algoritmo, e também temos que definir o tipo dedado que a variável pode armazenar. Faremos a declaração de variáveisobedecendo ao seguinte padrão:Variávelonde, tipo pode ser inteiro, real, caracter ou lógico, e lista de variáveis serão osnomes dos identificadores.Exemplo:VariávelX, Ra : inteiro;peso, altura : real;nome, end : caracter;resposta, Z : lógico;7.17 COMANDOSUm comando (ou instrução) pode ser definido como sendo uma ação a serexecutada num dado momento pelo algoritmo.7.17.1 ATRIBUIÇÃOO comando de atribuição permite-nos atribuir um valor para uma certavariável, onde o tipo do dado atribuído para a variável deve ser compatível com otipo declarado para a variável. A sintaxe utilizada será:tipo:lista devariáveis;
  25. 25. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA22identificador ← expressão;onde identificador é o nome da variável que receberá o valor da expressão.Exemplo:VariávelX, Y : inteiro;peso, altura : real;nome : caracter;resposta : lógico;...X ← 0;Y ← 10 + 7;peso ← 89.8;altura 1,52;nome ← “exemplo de atribuição”;resposta ← verdadeiro;7.17.2 ENTRADA DE DADOSNa prática de construção de programas, será muito comum o uso decomandos que proporcionam a entrada de dados para o computador. Assim,devemos ter uma representação correspondente em nível de algoritmo para aentrada de dados. Utilizaremos o comando leia para efetuar a entrada de dadospara o algoritmo, conforme sintaxe abaixo.Leia variável;onde variável receberá um valor vindo de “fora” do algoritmo para que algumprocessamento ocorra.Exemplo:VariávelX : inteiro;peso : real;nome : caracter;...Leia X;Leia peso;Leia nome;
  26. 26. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA237.17.3 SAÍDA DE DADOSAssim como para entrada de dados, na prática de construção de programasserá muito comum o uso de comandos que proporcionam a saída de dadosgerados pelo computador. Assim, devemos ter uma representação correspondenteem nível de algoritmo para a saída de dados. Utilizaremos o comando escrevapara efetuar a saída de dados do algoritmo, conforme sintaxe abaixo:Escreva variável, constante, expressão, mensagem;onde o algoritmo mostrará os valores de variáveis, constantes, expressões e/oumensagens.Exemplo:VariávelX, Y : inteiro;A, B : real;nome : caracter;...Escreva “Entre com o valor de X: ” ;Leia X;Escreva “Entre com o valor de A: ”;Leia A;Escreva “Entre com o seu nome: ”;Leia nome;Y ← X * 3;B ← (A * 2,4) / 3;Escreva nome, “, a partir dos valores de X e A, Y e B valem: “,Y, B;7.18 ESTRUTURAS7.18.1 ESTRUTURA SEQUENCIALA estrutura seqüencial é a estrutura mais simples que utilizamos naconstrução de algoritmos estruturados. Ela é formada por um conjunto deinstruções (ou comandos) que serão executadas numa seqüência linear de cimapara baixo e da esquerda para a direita, ou seja, da mesma forma como elasforam escritas. Utilizamos as palavras início e fim para delimitar o bloco deseqüência, conforme sintaxe abaixo:
  27. 27. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA24Exemplo:7.18.2 ESTRUTURA DE DECISÃOUma estrutura de decisão permite a escolha de um conjunto de ações e/ouestruturas que serão executadas a partir do resultado de uma condição (simplesou composta), representada por uma expressão lógica.Para estrutura de seleção do tipo se..então..senão utilizaremos a seguintesintaxe:Inícioinstrução 1;instrução 2;instrução 3;...instrução N;Fim.Algoritmo Comandos_Sequenciais;VariávelX, Y : inteiro;A, B : real;nome : caracter;InícioEscreva “Entre com o valor de X: ” ;Leia X;Escreva “Entre com o valor de A: ”;Leia A;Escreva “Entre com o seu nome: ”;Leia nome;Y ← X * 3;B ← (A * 2,4) / 3;Escreva nome, “, a partir dos valores de X e A, Y e B valem: “,Y, B;Fim.
  28. 28. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA25Na estrutura apresentada acima, o primeiro bloco será executado se oresultado da condição for verdade, o segundo bloco somente será executado se oresultado da condição for falso. É importante observar que se não houveremcomandos a serem executados caso o resultado da condição seja falso, basta nãoutilizarmos a parte senão da estrutura.Tanto para a parte se como para a parte senão da estrutura apresentada,quando houver apenas um comando a ser executado, podemos eliminar osdelimitadores de bloco (início e fim).Exemplo:se < condição >então Início {bloco verdade}comando 1;comando 2;...comando n;Fimsenão Início {bloco falso}comando 1;comando 2;...comando n;FimAlgoritmo Estrutura_decisão;VariávelX, Y : inteiro;InícioEscreva “Entre com o valor de X: ” ;Leia X;Escreva “Entre com o valor de Y: ”;Leia Y;Se X = YEntão Escreva “o valor “,X, “ é igual ao valor ”,Y;Senão Escreva “o valor “,X, “ é diferente do valor ”,Y;Fim.
  29. 29. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA26Uma outra estrutura de seleção que utilizaremos será a estrutura deseleção de múltipla escolha (também chamada de estrutura de caso). Aseguinte sintaxe será adotada:Nesta estrutura X é a variável que será verificada para cada Vn, ou seja, seo conteúdo de X for igual ao valor de algum Vn, então Cn (que representa umcomando primitivo) será executado. Se precisarmos que vários comandos ouestruturas sejam executados após o resultado da comparação de X com Vn, entãodevemos trabalhar com delimitadores de bloco (início e fim).Vn pode assumir um valor único ou vários valores. Para trabalharmos commais de um valor podemos separar os valores por vírgulas (,) ou por dois pontosseguidos (..).Exemplo:No exemplo acima não foi usada a opção senão. Está opção somente deveser empregada se quisermos que algum comando seja executado quandonenhuma das opções acima tenha ocorrido.caso < X > deV1: C1;V2: C2;V3: C3;...Vn: Cn;senão: Cn + 1;fim_caso;caso N de1: escreva “teste 1”;2: escreva “teste 2”;3,4,5: escreva “teste 3”;6..10: escreva “teste 4”;fim_caso;
  30. 30. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA277.18.3 ESTRUTURA DE REPETIÇÃOA estrutura de repetição permite que uma seqüência de comandos sejaexecutada um certo número de vezes até que uma determinada condição sejasatisfeita. Por exemplo, pode-se citar o caso em que se deseja realizar o mesmoprocessamento para um conjunto de dados diferentes, como a folha depagamento de uma empresa de 100 funcionários. Neste caso o mesmo cálculo éefetuado para cada um dos funcionários. Para solucionar este problemaprecisaríamos escrever o algoritmo em questão uma vez para cada funcionário, ouseja, sendo 100 funcionários teríamos que escrevê-lo 100 vezes, o que se tornariainviável. Outro modo de resolver essa questão seria utilizar a mesma seqüênciade comandos, ou seja, fazer a repetição de um conjunto de comandos 100 vezessem ter que rescrevê-lo novamente.As estruturas de repetição são muitas vezes chamadas de Laços ou Loops ese dividem em:• Laços Condicionais: quando não se conhece o número de vezes que umconjunto de comandos no interior do laço será repetido. A repetição ou não doscomandos dependerá do resultado de uma condição. As estruturas derepetição que implementam esse tipo de laço também são conhecidas como:repetição com teste no início e repetição com teste no final do laço.• Laços Contados: quando se conhece previamente quantas vezes o conjuntode comandos será executado. Esse tipo de estrutura também é conhecidacomo repetição com variável de controle.7.18.3.1 REPETIÇÃO COM TESTE NO INÍCIOCaracteríza-se por uma estrutura que efetua um teste lógico no início dolaço. Se o resultado do teste for verdadeiro o laço é executado retornandonovamente ao teste lógico e assim o processo será repetido enquanto a condiçãotestada for verdadeira.Para realizar a repetição com teste no início, utilizamos a estruturaenquanto, conforme sintaxe abaixo:Enquanto < condição > FaçaComando;
  31. 31. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA28Enquanto < condição > Faça InícioComando 1;Comando 2;....Comando n;FimExemplo:- Dada a descrição de um produto e o preço desenvolver um algoritmoque calcule e mostre o novo preço do produto com um aumento de 30%. Repetir oprocesso enquanto o usuário desejar.Algoritmo Repetição_com_teste_no_Início;Variávelresposta, descricao : Caracter;preco, n_preco : Real;Inícioresposta ← ‘S’;Enquanto ( resposta = ‘S’ ) ou ( resposta = ‘s’ ) FaçaInícioLeia descricao, preco;n_preco ← preco * 1.30;Escreva ‘O novo preço de ‘,descricao,’ é = ‘, n_preco;Leia resposta;FimFim.No momento em que o resultado do teste lógico <condição> for falso oprocessamento é desviado para o fim do laço. Se o resultado do teste lógico já forfalso no primeiro teste o laço não é executado nenhuma vez.7.18.3.2 REPETIÇÃO COM TESTE NO FINALCaracteríza-se por uma estrutura que permite que um laço seja executadoaté que o resultado do teste lógico seja verdadeiro. Neste caso o laço é executadopelo menos uma vez e então a condição é testada, se o resultado for falso o laço éexecutado novamente e este processo é repetido até que o resultado da condiçãoseja verdadeiro. A diferença que existe dessa estrutura para a estrutura doenquanto é o fato do laço ser executado pelo menos uma vez antes de passarpela condição de teste.Para realizar a repetição com teste no final, utilizamos a estrutura repita,conforme sintaxe abaixo:
  32. 32. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA29RepitaComando 1;Comando 2;...Comando n;Até < condição >Exemplo:- O mesmo do anterior.Algoritmo Repetição_com_teste_no_Final;Variávelresposta, descricao : Caracter;preco, n_preco : Real;InícioRepitaLeia descricao, preco;n_preco ← preco * 1.30;Escreva ‘O novo preço de ‘,descricao,’ é = ‘, n_preco;Leia resposta;Até (resposta = ‘N’) ou (resposta = ‘n’)Fim.No momento em que o resultado da condição de teste for verdadeiro oprocessamento de repetição é interrompido.7.18.3.3 REPETIÇÃO VARIÁVEL DE CONTROLEÉ utilizada quando se conhece previamente o número de vezes que sedeseja executar um determinado conjunto de comandos. Esse tipo de laço nadamais é que uma estrutura dotada de mecanismos próprios para contar o númerode vezes que o laço vai ser executado obedecendo os limites fixados.Para realizar a repetição com variável de controle utilizados a estruturapara, conforme sintaxe abaixo:Para V de Vi até Vf passo p façaComando;
  33. 33. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA30Para V de Vi até Vf passo p façaInícioComando 1;Comando 2;...Comando n;FimOnde: V é a variável de controleVi : é o valor inicial da variável VVf : é o valor final da variável Vp : é o valor do incremento dado a variável VExemplo:- O mesmo do anterior para 50 produtos.Algoritmo Repetição_com_variável_de_controle;Variávelresposta, descricao : Caracter;preco, n_preco : Real;x : Inteiro;InícioPara x de 1 até 50 passo 1 façaInícioLeia descricao, preco;n_preco ← preco * 1.30;Escreva ‘O novo preço de ‘,descricao,’ é = ‘, n_preco;FimFim.O processo de repetição é executado enquanto a variável V tenha um valormenor ou igual ao valor da variável Vf. O laço é finalizado quando a variável Vultrapassar o valor de Vf.7.19 CRÍTICA OU CONSISTÊNCIA DE DADOSFazer crítica ou consistência de dados em um algoritmo significa verificar sea informação digitada no momento da entrada de dados é válida ou não, isto é, nocaso da crítica para entrada de um valor verificar se o mesmo se encontra dentrodos limites estabelecidos.Exemplos: a nota de uma prova que deve ser entre 0 e 10.0 não devendoser aceito valores fora desta faixa como –1 ou 11; o sexo de uma pessoa que
  34. 34. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULCURSO: CIÊNCIA DA COMPUTAÇÃO - INTEGRALDISCIPLINA: ALGORITMOS E ESTRUTURAS DE DADOS IPROFESSOR: Dr. NILTON CÉZAR DE PAULA31deverá ser ‘F’ ou ‘M’ não devendo ser aceitas outras letras; a idade de umapessoa que só pode ser um número inteiro positivo, etc.A crítica é usada principalmente para checar a validade dos dados deforma a garantir a execução correta do algoritmo. Quando ocorre uma entrada dedados errada o algoritmo deverá permitir uma nova entrada de dados até que osmesmos estejam dentro das especificações. Para isso podemos utilizar umaestrutura de repetição com teste no final.Exemplo: dados RA e as notas de duas provas de um aluno calcular a média final,sabendo-se que média = (1ª nota * 4 + 2ª nota * 6) /10. Repetir o processo até queRA = ’’ (vazio).Algoritmo Crítica_de_Dados;Variávelra: Caracter;n1, n2, med: Real;InícioLeia ra;Enquanto ra <> ‘’ FaçaInícioRepitaLeia n1;Até (n1>=0) e (n1<=10);RepitaLeia n2;Até (n2>=0) e (n2<=10);med ← (n1 * 4 + n2 * 6) / 10;Escreva ‘A média = ‘,med;Leia ra;FimFim.

×