Está en la página 1de 221
José Augusto N. G. Manzano Jayr Figueiredo de Oliveira Algoritmos Logica para Desenvolvimento de Programacao de Computadores Editora Erica Ltda. 2005 - 17° Edigdo Conselho Editorial: Diretor Editorial: Diretor Comercial: Diretor de Publicidade: Finalizagao de Capa: Editoragao: Desenhos: Revisao Interna: Revisdéo Gramatical: Coordenacao: Antonio Marco Vicari Cipelli Paulo Roberto Alves Waldir Jodo Sandrini Edson Antonio dos Santos Rosana Ap. A. dos Santos Flavio Eugénio de Lima Graziela M, L. Gongalves Marlene Teresa Santin Alves Rosana Arruda da Silva Agradecimentos Agradeco ao amigo e editor Antonio Marco, que desde o nosso primeiro contato confiou no meu trabalho, principalmente neste que ora se concretiza. Agradeco também aos amigos professores Nélio e Wilson, pela constante troca de idéias. Augusto Manzano Agradeco aos meus alunos que, por meio das exigéncias e anseios, cobra- ram um aprofundamento maior do meu universo de conhecimentos. Obrigado também aos colegas professores Fernando Almeida, Marcos Masetto, Onésimo de Oliveira, Newton Mattei, principalmente & Maria Cristina Sanches Amorim e Sérgio Sonnino pelas orientagdes e conselhos profissionais. Jayr Figueiredo Sobre os Autores José Augusto N. G. Manzano Brasileiro, nascido no Estado de Sao Paulo, Capital, em 26/04/1965, é professor € mestre. Atua na area de Tecnologia da Informagao (Desenvolvimento e Treina- mento) desde 1986, Atualmente exerce a atividade profissional de consultor e pro- fessor universitario, ministrando as disciplinas de Estrutura de Dados, Técnicas de Programagao, Légica de Programacao, Introducdo a Microinformatica, Linguagens de Programacao, Engenharia de Software, Topicos Avancados em Processamento de Dados, Sistemas de Informacao, Engenharia da Informagao, Arquitetura de Com- putadores e Tecnologia WEB. Tem mais de quarenta obras publicadas na 4rea em que atua. Jayr Figueiredo de Oliveira Bacharel em Administragéo de Empresas, com especializagées em Administra- cao, Didatica em Ensino Superior, Analise de Sistemas, Ciéncia da Computagao, MBA em Tecnologia, Conhecimento e Inovagao. Mestre em Administragao e Planejamento, Doutor em Educagao-curriculo, Pés-doutorando em Ciéncias So- ciais. Vem atuando em empresas nacionais e multinacionais como profissional de Admi- nistragao em Sistemas Informatizados desde 1977, tendo ocupado inGmeros car- gos de alta geréncia. E professor de cursos de graduagao e pés-graduacao desde 1982. Tem mais de dez obras publicadas na area em que atua. indice Analitico Parte | - IMtrOUUCAO .......::.cscccsssssssssssscessssssesceccnssrssesscssnsessssesseseeaesesensesaenenaes Capitulo 1 - Abordagem Contextual ...............cccsescseesesecceeseeesseeesseensseeneeees 1.1 -DefinigGes BAsicas .cusccscsceseesseesseseesssescssescescessssepesseeeeseeceeseeseeas 1,2 -Necessidades do Uso da Légica ......... 1.3 -Aplicabilidade da L6égica no Auxilio do Desenvolvimento de Programas 1.4 -Diferenciagdo de Nomenclaturas ...c.scecce cee sesetsesscenseeseereeseene 05 1.5 -Formas de RepresentaGao Gratica ........csesssssessesessssescceneseresetenenes 07 IPGIES MOOG LAaSm bas | CaS peers rennet centsenes nent tnettmentanenrsteeretenat 1.7 -Simbologias Especiais Capitulo 2 - Introducdo & LOgica .......sececscecsceseseesessseeceseesseeeeseceseensnteceeessaees 11 2.1 -Principios de Resolucdo de Problems .......cssescscsesesseessestessseeesseees 11 2.2 -Particularidades entre Légicas 14 ped Eig |B cl |e nee neste ee omen nee ener Prermenesaenenssenenaean 2 MES UCIT 1a Cl cl eneeneenen eeheeeeteneenenenenreceeeet neem meee eet 2.2.3 = MOdUI al ee eect cree cece eseeetesereeseseteeenecnesseneeseeneenseeeetenesenesiens 2.2.4 - Diagrama de Chapin.. PeOA SEA Ont OUeSBES TUT [aC O paeemesanstentnesmstiemsetesnnsestraesenneteenrnene Parte Il - Técnicas Basicas de Programacao ............. Capitulo 3 - Tipos de Dados e Instrucdes Primitivas 3.1 -Tipos de Informacao ......0..eceseteeeeseeeenceseeenscnenssensenetansenansetessaneseees SPF Mipos de) MD adosy ee ee ceccr secre cece cree cece ene reee ee carencmerererrermeresreseetses 3.2.1 - Tipos Inteiros Spee all POSRIRe al Sfeeeeemeesettsnen nen eerste ere ee ce ee See R I OSE Gala Cle cS Nemenntactetasee ieateearsetree essen aes 24 Boe > Tips (LEGGE ccoscowssosocc.asaconconaeccaccacaascan.cconseaon6nsea9000900200000000 24 3.3 -O Uso de Variaveis ........cccececeesecseessescssccsesssessseeneenserersrersesenseeseaes 24 3,4 -O Uso de Constante .........eeceeecceesceeeeceeereeerneernereeseeseeeseseesseeesaeesnes 25 3.5 -Os Operadores Aritm@ticos ......1..:ceeceseseeseeetenseeeeneeneeerereeaneereeeeonesaas 26 3.6 -As ExpressGes Aritméticas ou Férmulas Matematicas ...........0000. 26 3.7 -InstrugGes Basicas occ. cceeseeesesseeseseeeees sUbpels desachunkvesaveaietinessseonsonsreerenes 27 3.7.1 - Algumas Regras antes de Comegal.....s.scsscsccssceterereeeneeseees 27 3.7.2 - Entrada, Processamento © Safa .cscepcecccessesceeseeessserssesesererseeees 28 3.8 -Exercicio de Aprendizagem .......:cc00 ss eeeecliceseccseseetecessenseeeseseees 32 BAO EX ec GIGlORC CEI Também podera ser representado assim Algoritmo para Calculo do Resultado Final << — Algoritmo para Calculo da Média > Aprovado + 2 Duas formas de representar a mesma ldgica nos diagramas de blocos Nota exame Resultado final Média= Nota1+Nota2 Figura 1,3 - Exemplo de um algoritmo. 1.5 - Formas de Representacao Grafica As formas de representacao grafica (segundo norma ISO 5807:1985) sao nada mais do que uma maneira mais simples e concisa de representar os dados sobre uma superficie plana, por meio de diferentes formas geométricas preestabelecidas, de modo a facilitar a visualizagao completa e imediata da linha de raciocinio légico de um programador, quando da representacdo dos dados e do fluxo de acao de um programa de computador. 7 Abordagem Contextual 6. +. ee eae a ce ao eae a Sabe-se que existe uma grande variedade de simbolos usados nas mais diversas areas administrativas, bem como dentro das areasstécnicas da Tecnologia da Informacao, tais como: programagao, teleprocessamento, analise de sistemas, etc. A seguir, sao mostraclos os mais diversos simbolos, porém com o numero excessivo de simbolos existentes e, quando combinados entre si, criam-se novos tipos de representacdes, aumentando consideravelmente esses simbolos. Entretanto, os profissionais, bem como as organizacées, acabam criando suas prdprias nomen- claturas. No decorrer dos exercicios apresentadas nesta obra, serao utilizados os mais simples e convencionais, adotando dessa forma um padrao a ser seguido para facilitar sua compreensao e aprendizado. 1.6 - Simbologias Basicas Estes sao alguns dos simbolos mais conhecidos e utilizades-ao longo do anos pelos profissionais de desenvolvimento de software da rea de Tecnologia da Informagao (TI). —— Terminal - simbolo utilizado como ponto para indicar o inicio e/ou fim do fluxo de um programa Seta de fluxo de dados - permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os simbolos ou blocos existentes. Processamento - simbolo ou bloco que se utiliza para indicar calculos (algoritmos) a efetuar, atribuigdes de valores ou qualquer manipulacdo de dados que tenha um bloco especifico para sua descri¢ao. Entrada de dados ou operagao manual - utilizado para ler os dados necessdrios ao programa fora de linha sem intervenc¢ao de dispositivos mecanicos. Entrada e saida de dados - simbolo em fungado de um dispositivo qualquer de entrada ou safda de dados, como fornecedor de informacées para processamento, gravacdao e outros. Saida de dados em video - utiliza-se este simbolo quando se quer mostrar dados na tela do video. Saida de dados em impressora - é utilizado quando se deseja que os dados sejam impressos. Decisdo - indica a deciséo que deve ser tomada, indicando a possibilidade de desvios para diversos outros pontos do fluxo, dependendo do resultado de comparagao e de acordo com situagGes variaveis. Conector - utilizado quando é preciso particionar o dia- grama. Quando ocorrer mais de uma particéa,’é colo- cada uma letra ou niimero dentro do simbolo de cone- xdo para identificar os pares de ligagao. Conector - especifico para indicar conexdo do fluxo em outra pagina. 1.7- Simbologias Especiais Estes so os demais simbolos normalmente usados em outras areas, bem comc também pela area de desenvolvimento de software. Operacao manual - fora de linha sem intervencdo de dispositivos eletromecdnicos. Modificagao de programas - indica a existéncia de uma instrucdo ou de um grupo de instrugdes que iro modifi- car O programa, o qual podera estar descrito ou em analise. Cartao perfurado - todas as variedades apresentadas. Essa massa de cartées podera ser usada como documen- tos escritos anteriormente. Preparagao — refere-se a um determinado grupo de operagées nao incluidas na diagramacdo, bem como, na elaboragao de uma chave que modificara a execucio de um determinado programa. Teclado - serao as informacdes recebidas ou fornecidas de ou por um computador. Display - para informagGes exibidas por dispositivos visuais, video ou monitor. Checagem de operagao auxiliar - 6 uma operacao de ma- quina suplementar a funcdo principal de processamento. Disco magnético - meméria de massa para armazena- mento de dados (winchester). \bordagem Contextual + + + ee et te ee ee ee Po en Tambor magnético - memoria de massa para armazena- mento de dados. Fita magnética - meméria.de.massa-para armazenamento de dados (streamer). Disquete - meméria de armazenamento de dados. Linha de comunicacao - permite a transmissdo automati- ca de informagao em_locais diferentes, por meio de linhas de comunicagao. Outros sinais conhecidos pelos profissionais da area. Intercalagao Multiplexador inh de d Tranemissao Termi Teste de Transmissao Telefone erminal AAR Ree —_— <> poe riaaor as ——3 de Linha Disco Controlador Video Le | (_) Fita de Papel Disquete Impressora Espera | |) Madu de Sub-Rotina Figura 1.4 - Outros simbolos especiais. Algoritmos - Légica para Desenvolvimento de Programacao de Computadores introducao a Logica 2.1 - Principios de Resolugao de Problemas Primeiramente, € importante entender e compreender a palavra “problema”. Pode-se dizer que problema é uma proposta duvidosa, que pode ter numerosas solugdes, ou questao nao solvida e que é objeto de discussdo, segundo definicao encontrada no dicionario Aurélio, Do ponto de vista desta obra, problema é uma questao que foge a uma determinada regra, ou melhor, 6 o desvio de um percurso, o qual impede de atingir um determi- nado objetivo com eficiéncia e eficacia. Diferentes das diagramacGes classicas, que nado fornecem grandes subsidios para analise, os diagramas de blocos sao realmente o melhor instrumento para avaliacdo do problema do fluxo de informagées de um dado sistema. Por esse motivo deve- -se resolver um problema de légica (principalmente se for da 4rea de processamento eletrénico de dados) usando um procedimento de desenvolvimento. Para desenvolver um diagrama correto, deve-se considerar como procedimentos prioritarios os itens seguintes: " Os diagramas devem ser feitos e quebrados em varios niveis. Os primeiros devem conter apenas as idéias gerais, deixando para as etapas posteriores os detalhamentos necessarios; : = Para o desenvolvimento correto de um fluxograma, sempre que possivel, deve ser desenvolvido de cima para baixo e da esquerda para direita; ® E incorreto e “proibido” ocorrer cruzamento das linhas de fluxo de dados. Tome como exemplo uma escola qualquer, cujo célculo da média é realizado com as quatro notas bimestrais que determinam a aprovacdo ou reprovacao dos seus alunos. Considere ainda que o valor da média deve ser maior ou igual a 7 para que haja aprovacao. A primeira etapa deste problema via diagrama de blocos esta na figura 2.1. Introdugao aLdgica + + - ee a ee eee a eo nee Calculara média e determinar.a aprovagao Figura 2.1 - Diagrama de bloco para o caélculo da média escolar. A segunda etapa apresenta um detalhamento no que se refere 4 entrada e safda, ou seja, deve-se entrar com as quatro notas bimestrais para se obter, como resultado, a calculo da média e assim definir a aprovacao ou reprovacdo do aluno. A figura 2.2 apresenta o diagrama de blocos com mais detalhes. Entrada com 4 notas Simbolos de entrada de dados Entrada com 4notas Calcular a média e determinar a aprovacdo Calcular a média e determinar a aprovagao Apresentar se houver ou nao aprovagao Apresentar se houver ou nao aprovagao | “—— Simbolos de saida ———» de dados Fim Duas representagdes do mesmo probrema Figura 2.2 - Diagramas apresentando a entrada das notas e a saida se houve aprovacao. A terceira etapa consiste em trabalhar o termo “determinar a aprovagao”. Para ser possivel determinar algo, é necessdrio estabelecer uma condicdo. Assim sendo, uma condicao envolve uma decisdo a ser tomada segundo um determina- do resultado, No caso, a média. Desta forma, a condic&o de aprovacgdo: média maior ou igual a 7 (sete), deve ser considerada no algoritmo. Com isso, inclui-se este bloco de decisao, como mostra a figura 2.3. + + + + + Algoritmos - Logica para Desenvolvimento de Programagao de Computadores processamento Apresentar no video eee ae ow >) Duas representagées do mesmo problema Simbolo de Decisao Figura 2.3 - Uso de uma condi¢géo em um diagrama de blocos. Muitas vezes é preferivel construir o diagrama de blocos trabalhando com variaveis. Este assunto sera estudado no capitulo 3. A figura 2.4 apresenta um exemplo de um algoritmo utilizando variaveis. Ler N1,N2,N3,N4 ‘Calcular M = Ni+N2+NS+N4 4 M =N1+N2+N3+N4 —en Imprimir “Aprovado" Imprimir "reprovado" Duas representagdes do mesmo problema Figura 2.4 - Exemplo da utilizagao de variaveis. Introdugdo aLGgica + + 6 et te ee ee ee os Em algumas figuras anteriores, sao apresentados dois diagramas de bloco de formas diferentes, porém-representando as mesmas acées e tendo os mesmos'significados. 2.2 - Particularidades entre Logicas As representagées graficas de um diagrama.de blocos:podem ser feitas de varias maneiras e possuirem estruturas diferenciadas, porém isto ndo impede que a maneira de solucionaro problema seja eficiente. Segundo Verzello nos diz emuma de suas obras, assim como um arquiteto desenha e escreve.especificacées para descrever como uma tarefa (por exemplo, construcao de um edificio) devera ser efetuada e o engenheiro do projeto desenvolve um _esquema detalhado das atividades de construc&o, um especialista em informa¢ao desenvolve um plano, que sera comunicado a outros, de como o problema de processamento de dacos deve ser resolvido. Para auxiliarmos na sua Compreensdo, mostraremos como estes conceitos de estruturas, bem como as:particularidades de conexées e dos procedimentos entre o método légico, ‘encaixam-se'ou nao para resolug¢do dos problemas de processamento de dados. A seguir,/sao apresentados alguns tipos de procedimentos individualmente. 2.2.1 - Linear _ A técnica légica linear é conhecida como um modelo tradicional de desenvolvi- mento e resolugdo de um problema. Nao esta ligada a regras de hierarquia ou de estruturas de linguagens especificas de programagao de computadores. Devemos entender que este tipo de procedimento esta voltado a técnica matematica, a qual permite ceterminar a atribuicao de recursos limitados, utilizando uma colecao de elementos organizados ou ordenados por uma s6 propriedade, de tal forma que cada um deles seja executado passo a passo de cima para baixo, em que tenha um s6 “predecessor” e um s6 “sucessor”. A figura 2.5 apresenta um exemplo deste tipo de ldgica. ++ + + + + Algoritmos -L6gica para Desenvolvimento de Programacgao de Computadores Figura 2.5 - Exemplo de légica linear. 2.2.2 - Estruturada Atécnica da logica estruturada é.a mais usada pelos profissionais de processamento eletr6nico de dados. Possui caracteristicas e padrées particulares, os quais diferem dos modelos das linguagens elaboradas por seus fabricantes. Tem como pontos fortes para elaboragao futura de um programa, produzi-lo com alta qualidade e baixo custo. Aseqtiéncia, a selecao e a iteracado sao as trés estruturas basicas para a construcao do diagrama de blocos. A figura 2.6 seguinte apresenta um exemplo do tipo de légica estruturada. -L_HL_F Sequence Figura 2.6 - Exemplo de /égica estruturada (continua na préxima pagina). Introdugao a Logica Be See ee tote If.. Then... Else N Do ... While .. Until (Repeat) Case Figura 2.6 - Exemplo de légica estruturada(continuagao da pagina anterior). Algoritmos.- Logica para Desenvolvimento de Programacao de Computadores 2.2.3 - Modular A técnica da légica modular deve ser elaborada como uma estrutura de partes independentes, denominada de médulos, cujo procedimento é controlado porum conjunto de regras. Segundo James Martin, suas metas sao as seguintes: = Decompor um diagrama em partes independentes; ® Dividir um problema complexo em problemas menores e mais simples; = Verificar a correg¢ao de um médulo de blocos, independentemente de sua utilizagaéo como uma unidade em um processo maior. A modularizacao deve ser desenvolvida, se possivel, em diferentes niveis. PoderA ser utilizada para separar um problema em sistemas, um sistema em programas e um programa em médulos. A figura 2.7 apresenta um exemplo do tipo de ldgica modular. Dados de Processo de Dados de entrada transformagao saida O modelo padrao de um médulo consiste em trés partes: Entrada, Processamento e Saida. Médulo Sub-rotina A Figura 2.7 - Exemplo de légica modular. 2.2.4 - Diagrama de Chapin O diagrama foi desenvolvido por Nassi e Shneiderman e ampliado por Ned Chapin, 0s quais resolveram substituir o diagrama de blocos tradicional por um diagrama de quadros que permite apresentar uma visdo hierarquica e estruturada da ldgica do Introdugdo ALGgica 6 6 ee ee ee ee ee programa. A grande vantagem de usar este tipo de diagrama é a representacao das estruturas que tem um ponto de entrada e um ponto de saida e sao compostos pelas estruturas basicas de controle de seqiiéncia, selegao @ reparticao. Enquanto é dificil mostrar o embutimento e a recursividade com o diagrama de blocos tradicional, torna-se mais simples mostra-los com o diagrama'de Chapin, bem como codifica-los futuramente na conversdo de pseudocddigos (portugués estruturado) ou qualquer linguagem de programacao estruturada. A figura 2.8 apresenta um exemplo do tipo de diagrama de Chapin para o algoritmo do calculo da média escolar. Este tipo de diagrama também é denominado diagrama de Shneidermamoudiagrama N-S. Leia N1,N2,N3,N4 Soma¢ N1+N2+N3+N4 Média¢ Soma/4 Resultado - Resultado < "Reprovado” "Aprovado" Escreva N1, N2, N3, N4 Escreva Soma Escreva Média Escreva Resultado Figura 2.8 - Exemplo de diagrama de Chapin. 2.2.5 - Portugués Estruturado Como foi visto até agora, o diagrama de blocos é a primeira forma de notacao grafica, mas existe outra, que é uma técnica narrativa denominada pseudocédigo, também conhecida como portugués estruturado ou chamada por alguns de portugol. Esta técnica de algoritmizagao é baseada em uma PDL - Program Design Language (Linguagem de Projeto de Programagao). Nesta obra, estamos apresentado-a em portugués. A forma original de escrita é conhecida como inglés estruturado, muito parecida com a notacdo da linguagem PASCAL. A PDL (neste caso, 0 portugués estruturado) é usada como referéncia genérica para uma linguagem de projeto de Algoritmos - Légica para Desenvolvimento de Programacao de Computadores | ; | | | | programagao, tendo como finalidade,mostrar uma notagao para elaboragio de algoritmos, os quais serdo utilizados na definicao, criacdo e desenvolvimento de uma linguagem computacional (Clipper, C, Pascal, Delphi, Visual-Objects) e sua documenta¢ao. Abaixo, é apresentado um exemplo deste tipo de algoritmo. programa MEDIA Var RESULTADO : caractere Ni, N2, N3, N4 : real SOMA, MEDIA : real inicio leia WI, N2, N3, N4 SOMA < N1 + N2 + N3 + N4 MEDIA < SOMA / 4 se (MEDIA — 7) ent&o RESULTADO < “Aprovado” sendo RESULTADO < “Reprovado” fim_se escreva “Nota 1: ”, N1 escreva “Nota 2: ”, N2 escreva “Nota 3: ", N3 escreva “Nota 4: ", N4 escreva “Soma: ", SOMA escreva “Média: ", MEDIA escreva “Resultado: ", RESULTADO fim A diferenga entre uma linguagem de programagao de alto nivel utilizada em computa¢ao e uma PDL é que esta (seja escrita em portugués, inglés ou qualquer outro idioma) nao pode ser compilada em um computador (por enquanto). Porém, existem “Processadores de PDL” que possibilitam traduzir essa linguagem numa representagdo grafica de projeto, fornecendo uma variedade de informacées, como: tabelas de referéncia cruzada, mapas de aninhamento, indice operacional do projeto, entre tantas outras. E importante lembrar que o diagrama de bloco e o pseudo- cédigo (portugués estruturado) sao as duas técnicas importantes para a documentacao da solucdo de um problema computacional na forma de um programa de computador. Introdugao a Légica a ee "So 00506

También podría gustarte