You are on page 1of 58

UNIVERSIDADE TUIUTI DO PARAN

APOSTILA DIDTICA

LGICA DE PROGRAMAO

Profa Jusane Farina Lara

Curitiba / 2010

SUMRIO

CAPTULO 1 NOES BSICAS SOBRE ALGORITMOS (LGICA) ........................... 4


1.1 INTRODUO ............................................................................................................................4 1.2 LGICA........................................................................................................................................4 1.3 SEQNCIA LGICA...............................................................................................................5 1.4 INSTRUES..............................................................................................................................5 1.5 O ALGORITMO ..........................................................................................................................6
1.5.1 Padro e desvio de Comportamento ...................................................................................................... 9

1.6 A LINGUAGEM ALGORTMICA PSEUDOCDIGO.......................................................9 1.7 REGRAS PARA CONSTRUO DE ALGORITMOS ........................................................10 1.8 FASES DOS ALGORITMOS ENTRADA, PROCESSAMENTO E SADA ....................10 1.9 EXEMPLO DE ALGORITMO ................................................................................................10 1.10TESTE DE MESA.....................................................................................................................11 1.11 AS ETAPAS DA ENGENHARIA DE SOFTWARE UMA VISO GENRICA...........11

CAPTULO 2 TIPOS DE DADOS ......................................................................................14


2.1 INTRODUO ..........................................................................................................................14 2.2 TIPOS DE DADOS ....................................................................................................................14
2.2.1 Dados Numricos Inteiros ................................................................................................................... 14 2.2.2 Dados Numricos Reais....................................................................................................................... 14 2.2.3 Dados Literais ou Caractere................................................................................................................. 14 2.3.4 Dados Lgicos ..................................................................................................................................... 15

2.3 CONSTANTES...........................................................................................................................15 2.4 VARIVEIS ...............................................................................................................................15


2.4.1 Declarao De Variveis ..................................................................................................................... 17 2.4.2 Exerccios de Fixao .......................................................................................................................... 18 2.4.3 Notao Hngara ................................................................................................................................. 19

2.5

EXPRESSES ARITMTICAS ........................................................................................19

3.5.1 Operadores Aritmticos ....................................................................................................................... 19 2.5.2 Tipos de Expresses ............................................................................................................................ 20 2.5.2.1 Expresses Aritmticas ................................................................................................................ 20 2.5.2.2 Expresses Lgicas ...................................................................................................................... 21 2.5.2.3 Expresses Vlidas vs. Expresses Invlidas............................................................................... 22 2.5.2.4 Expresses Literais....................................................................................................................... 22

CAPTULO 3 COMANDOS BSICOS SOBRE ALGORITMOS ..................................... 23


3.1 INTRODUO ..........................................................................................................................23 3.2 COMANDO DE ATRIBUIO...............................................................................................23 3.3 COMANDO DE LEITURA ou ENTRADA DE DADOS .......................................................23 3.4 COMANDO DE ESCRITA ou SADA DE DADOS ...............................................................24 3.5 BLOCOS .....................................................................................................................................24 3.6 LINHAS DE COMENTRIOS ................................................................................................24 3.7 EXEMPLO DE ALGORITMO UTILIZANDO OS COMANDOS BSICOS ....................25 3.8 EXERCCIOS DE FIXAO ..................................................................................................25 2

3.9 CONSIDERAES INICIAIS RELACIONADAS S ESTRUTURAS DE CONTROLE ............................................................................................................................................................26


3.9.3 ESTRUTURA SEQENCIAL............................................................................................................ 26

CAPTULO 4 COMANDOS DE SELEO.......................................................................28


4.1 INTRODUO ..........................................................................................................................28 4.2 ESTRUTURAS DE SELEO ................................................................................................28
4.2.1 SELEO SIMPLES.......................................................................................................................... 28 4.2.2 SELEO COMPOSTA..................................................................................................................... 29 4.2.3 SELEO ENCADEADA.................................................................................................................. 31 4.2.3.1 SELEO ENCADEADA HETEROGNEA ............................................................................ 31 4.2.3.2 SELEO ENCADEADA HOMOGNEA................................................................................ 32 4.2.3.3 SELEO DE MLTIPLA ESCOLHA ..................................................................................... 34

CAPTULO 5 COMANDOS DE REPETIO ..................................................................37


5.1 INTRODUO ..........................................................................................................................37 5.2 REPETIO COM TESTE NO INCIO ( Enquanto .. faa )...............................................37 5.3 CONTADORES E ACUMULADORES ............................................................................40 5.4 REPETIO COM TESTE NO FINAL ( Repita .. at) .........................................................43 5.5 Diferenas de ENQUANTO FAA e REPITA AT.......................................................46 5.6 CONCEITO DE FLAG (bandeira sinalizadora).....................................................................46 5.7 REPETIO COM VARIVEL DE CONTROLE ( Para ... faa ) .....................................46 5.8 COMPARAO ENTRE ESTRUTURAS DE REPETIO .............................................48

CAPTULO 6 TIPOS DE DADOS HOMOGNEOS......................................................... 51


6.1 INTRODUO ..........................................................................................................................51 6.2 VETORES...................................................................................................................................51 6.2.1 Leitura de Vetores...................................................................................................................52 6.2.2 Escrita de Vetores....................................................................................................................53 6.2.3 Operaes com Vetores...........................................................................................................53 6.3 MATRIZES ................................................................................................................................54 6.3.1 Leitura e Escrita de Matrizes .................................................................................................55 6.3.2 Operaes com Matrizes.........................................................................................................56 6.3 MATRIZES QUADRADAS ......................................................................................................57

REFERNCIAS ......................................................................................................................58

CAPTULO 1 NOES BSICAS SOBRE ALGORITMOS (LGICA)

1.1 INTRODUO
Este captulo tem por objetivo despertar no aluno a capacidade de reconhecer os requisitos para a construo de um algoritmo. Sero construdos alguns algoritmos que no obedecem a regra de construo exigida na matria, pois somente servem para ilustrar o pensamento correto para construo dos algoritmos.

1.2 LGICA
Lgica a cincia do raciocnio e da demonstrao, ou seja, o conjunto de leis, princpios ou mtodos que determinam um raciocnio coerente, induzindo uma soluo prtica e eficaz do problema (Villano, 2000). Como filosofia, ela procura saber por que pensamos assim e no de outro jeito. Como arte ou tcnica, ela nos ensina a usar corretamente as leis do pensamento. por isso que a lgica estuda ou tem em vista a correo do raciocnio. A lgica tem em vista a ordem da razo. A lgica ensina a colocar ordem no pensamento (Villano, 2000). Por exemplo: - Todo inseto invertebrado; - A barata um inseto; - Logo, a barata um invertebrado. - Os invertebrados no possuem ossos; - A baleia possui ossos; - Logo, a baleia no um invertebrado. Lgica: - Para trocar a lmpada - Para ligar o computador - Para fazer um churrasco A lgica condicional permite avaliar uma determinada condio, permitindo a execuo de duas aes diferentes dependendo do resultado verdadeiro ou falso, da condio. A lgica repetitiva permite a execuo de uma condio enquanto uma condio for verdadeira. Lgica a organizao do pensamento para resolver um determinado problema atravs da programao. De acordo com (Manzano, 1997) para entendermos o que Lgica, precisamos entender o que um problema. Pode-se dizer que problema uma proposta duvidosa que pode ter inmeras solues ou uma questo no resolvida que objeto de discusso, segundo definio do Dicionrio Aurlio. Para ns, problema uma questo que foge a uma determinada regra, a qual nos impede de atingirmos com sucesso determinado objetivo. Por isso, temos que descobrir as regras, a ordem das mesmas e resolver o problema usando um procedimento de desenvolvimento. Existem cinco passos bsicos para solucionarmos um problema. So eles (Villano, 2000): 1.Compreender o problema Qual o problema? Quais so as informaes utilizadas? (dados) Quais as condies exigidas? possvel satisfazer as condies exigidas? As condies entram em contradio com o problema? Apostila didtica Lgica de Programao Profa Jusane Farina Lara 4

2.Adoo do mtodo para a resoluo do problema Este problema j foi visto antes? Sob forma pouco diferente? Achando um problema j resolvido, podemos utiliz-lo? Ser necessrio dividir o problema em mdulos para simplificao? possvel reformular o problema? 3.Esquematizar a resoluo do problema (plano) 4.Testar o plano elaborado (teste de mesa) Verificar cada passo dado Avaliar a exatido de cada passo 5.Retrospectiva do que foi feito Os resultados foram satisfatrios Os objetivos foram plenamente atingidos? possvel chegar ao resultado por outro caminho? A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. Ela nos permite definir a seqncia lgica para o desenvolvimento. Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo.

1.3 SEQNCIA LGICA


Segundo (Moraes, 2000) estes pensamentos podem ser descritos como uma seqncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Seqncia lgica so os passos executados at atingir um objetivo ou soluo de um problema.

1.4 INSTRUES
Numa linguagem comum pode-se dizer que instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Pode-se dizer tambm que so ordens, que quando identificadas, so realizadas. Como exemplo: Feche os olhos uma ordem. O ato de fechar os olhos a execuo desta ordem. Um conjunto de instrues determinado para a execuo de uma tarefa. Somente este conjunto de instrues em uma ordem seqencial lgica capaz de realizar o processo desejado. Por exemplo: se quisermos fazer um churrasco, precisamos colocar em prtica uma srie de instrues em uma determinada ordem e execut-las para alcanar o objetivo. Quais seriam essas instrues? Tente descrev-las abaixo: 1. 2. 3. 4. 5.

Consideraes: Obviamente que voc descreveu as tarefas em uma ordem adequada, ou seja, temperou a carne antes de ass-la. Pode ser que voc tenha descrito 3, ou talvez 4 instrues para realizar o nosso objetivo e algum outro colega seu fez mais ou at menos instrues para tal fim. No se assuste, isso normal. Cada pessoa poder ter uma idia diferente da outra para a Apostila didtica Lgica de Programao Profa Jusane Farina Lara 5

realizao de uma tarefa. O importante alcanar o objetivo. Porm, o tempo para a realizao do processo tambm conta. Se voc resolveu cozinhar as batatas na gua e depois sec-las antes de frit-las, demoraramos mais para com-las, porm elas ficariam mais chocantes, tudo bem se isso for na sua casa, mas se voc pensar em uma lanchonete e voc est na mesa esperando, qual seria a sua reao se demorasse muito para um processo to simples? Voc deve ter em mente que dependendo do processo a primeira tentativa de solucion-lo pode no ser a melhor nem a mais rpida. Para alcanar seu objetivo voc deve tambm procurar uma maneira de otimizar o processo, diminuindo o nmero de instrues, procurar outra forma de resolver o problema, mais eficaz, mais rpida, porm esta mudana jamais poder influenciar no resultado final. Colocar uma instruo fora de uma seqncia lgica ou uma instruo tomada em separado, no tem muito sentido. Para obtermos o resultado, devemos colocar em prtica todo o conjunto de instrues, na ordem correta. Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, o que indica a um computador uma ao elementar a executar.

1.5 O ALGORITMO
De acordo com (Venncio, 1997), Algoritmo um conjunto de regras que permite a resoluo de um problema ou a execuo de um trabalho, atravs de um nmero finito de operaes. Uma outra definio de algoritmos pode ser entendida como uma seqncia de etapas que visam chegar a um objetivo bem definido em um espao de tempo finito, ou seja, uma seqncia de passos finitos com o objetivo de solucionar um problema. Um algoritmo est dividido em duas partes: a da resoluo do problema e a da implementao. A parte de resoluo consiste na elaborao do algoritmo, e somente depois de todos os problemas estarem resolvidos que o algoritmo poder ser implementado, ou seja, transcrito para uma linguagem de programao de alto nvel. Os passos de um algoritmo devem ser simples, sem ambigidades, finitos e devem estar numa ordem bem definida. As regras que definem um algoritmo podem ser entendidas como instrues que executadas produzem um resultado. Vamos agora entender como devemos pensar para comearmos a construo de algoritmos. Como exemplo, descreve-se abaixo algumas frases que podem ser consideradas como instrues: Iniciar a faixa 5 de um compact disc (CD); Escovar os dentes; Chamar por algum atravs de um nome; Informar a sua idade; Atribuir o valor 5,67 a uma varivel. Esse exemplo no demonstra um conjunto de instrues, nem mesmo possui uma seqncia lgica de funcionamento. Para entender uma seqncia de instrues devemos observar os eventos a elas atribudos. At mesmo coisas simples podem ser descritas por seqncias lgicas, por exemplo: Pense no seu objetivo: Chupar uma bala. Como chegar ao objetivo : as instrues: Pegar a bala; Retirar o papel; Chupar a bala; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 6

Jogar papel no lixo; Agora, outro objetivo : Somar dois nmeros: Escreva o primeiro nmero no retngulo A; Escreva o segundo nmero no retngulo B; Some o nmero do retngulo A como o nmero do retngulo B e coloque o resultado no retngulo C; Retngulo A + Retngulo B = Retngulo C

Passos para ler um disquete: - pegar um disquete - colocar o disquete no drive - acessar o disquete Sempre que pensamos em um conjunto de instrues devemos pensar que estas tem um objetivo em comum e seqncia definida para transformar um problema em soluo. A seguir, tem-se alguns exemplos de algoritmos no computacionais. Algoritmo 1: fritar um ovo 1. pegar frigideira, ovo, leo e sal 2. colocar leo na frigideira 3. acender o fogo 4. colocar a frigideira no fogo 5. esperar o leo esquentar 6. colocar o ovo 7. retirar quando pronto Cada linha do algoritmo podemos chamar de uma instruo, logo, podemos dizer que um algoritmo um conjunto de instrues. Instruo indica a um computador uma ao elementar a ser executada. Algoritmo 2: marcar um chiclete 1. pegar o chiclete 2. retirar o papel mastigar 3. jogar o papel no lixo Algoritmo 3: trocar lmpadas 1. se (lmpada estiver fora de alcance) pegar a escada; 2. pegar a lmpada; 3. se (lmpada estiver quente) pegar pano; 4. tirar lmpada queimada; 5. colocar lmpada boa; Algoritmo 4: fim de semana 1. vejo a previso do tempo; 2. se (fizer sol) vou praia; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 7

seno vou estudar; 3. almoar; 4. ver televiso; 5. dormir; Algoritmo 5: fazer um bolo simples 1. pegar os ingredientes; 2. se (roupa branca) colocar avental; 3. se (tiver batedeira) bater os ingredientes na batedeira; seno bater os ingredientes mo; 4. acender o fogo no forno do fogo; 5. colocar a massa na forma; 6. colocar a forma no forno; 7. aguardar o tempo necessrio; 8. desligar o forno; 9. retirar o bolo; Algoritmo 6: descascar batatas 1. pegar faca, bacia e batatas; 2. colocar gua na bacia; 3. enquanto (houver batatas) descascar batatas; Algoritmo 7: fazer uma prova 1. ler a prova; 2. pegar a caneta; 3. enquanto ((houver questo em branco) e (tempo no terminou)) faa se (souber a questo) resolv-la; seno pular para outra; 4. entregar a prova; Algoritmo 8: jogar o jogo da forca 1. escolher a palavra; 2. montar o diagrama do jogo; 3. enquanto ((houver lacunas vazias) e (corpo incompleto)) faa se (acertar uma letra) escrever na lacuna correspondente; seno desenhar uma parte do corpo na forca; Algoritmo 9: jogar o jogo da velha 1. enquanto ((existir um quadrado livre) e (ningum perdeu (ganhou) o jogo)) faa espere a jogada do adversrio, continue depois; se ( existir um quadrado livre) se (centro livre) jogue no centro; seno se (adversrio tem 2 quadrados em linha com o terceiro desocupado) jogue neste quadrado desocupado; seno se (h algum canto livre) jogue neste canto; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 8

1.5.1 Padro e desvio de Comportamento Vamos agora a um exemplo mais significativo. Imagine como o seu despertar. Observe as aes a seguir e tente imaginar a execuo das mesmas seqencialmente: Ao toque do despertador, levantar-se; Tirar o pijama; Vestir-se adequadamente; Tomar caf da manh; Escovar os dentes; Se todos os dias voc executa esta mesma ao pela manh, considerando que possa mudar de roupa a cada dia e possa comer algo diferente no caf ou mesmo trocar de creme dental para escovar os dentes, porm se a seqncia das aes no mudar, temos o que chamamos de padro de comportamento. Um exemplo mais claro de padro de comportamento seria o conjunto dos nmeros pares de 2 a 20, [2,4,6,8,10,12,14,16,18,20], de um nmero a outro a diferena dois. O padro de comportamento o incremento de duas unidades de um nmero para outro. Como observador voc deve descobrir o padro de comportamento para a resoluo de um problema, independente dos fatores externos ou internos que possam existir. Se em um determinado dia voc observar que ao invs de vestir-se antes de tomar o caf da manh, esta ao foi executada depois de escovar os dentes, temos ento um desvio do comportamento. Um desvio de comportamento claramente observado no conjunto dos nmeros primos de 1 a 15: [1, 2, 3, 5, 7, 11, 13], existe um desvio de comportamento toda vez que encontrado um nmero que seja divisvel por mais algum nmero alm do nmero 1 e do prprio nmero (regra dos nmeros primos). Como bom observador voc deve ter a capacidade de prever certas aes que desviam o comportamento normal de um procedimento e implementar estas caractersticas para concluir o objetivo.

1.6 A LINGUAGEM ALGORTMICA PSEUDOCDIGO


Os algoritmos so descritos em uma linguagem chamada pseudocdigo, ou seja falso cdigo. Os algoritmos so independentes de uma linguagem de programao. Ao contrrio de uma Linguagem de Programao, no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de se interpretar e fcil de codificar, ou seja, ele deve ser o intermedirio entre a linguagem falada e a LP. O que vimos at agora o que chamamos de algoritmos no computacionais. O que h de comum entre os algoritmos computacionais e os algoritmos no computacionais so que ambos possuem um conjunto de instrues em uma ordem lgica para a execuo de uma tarefa. Programa de computador nada mais do que um algoritmo escrito numa linguagem de computador (Pascal, C, Cobol, Fortran, Basic, entre outras) e que so executados por uma mquina, no caso um computador. a traduo para o ingls do algoritmo feito em portugus. O mais importante de um programa a sua lgica, o raciocnio lgico utilizado para resolver o problema, que exatamente o algoritmo.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

1.7 REGRAS PARA CONSTRUO DE ALGORITMOS


Para escrevermos um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas: Utilizar apenas uma instruo por linha; Ser Objetivo; Fazer apenas o que o algoritmo pede. Fazer a mais, atrasa o processo e fazer a menos, invalida o processo.

1.8 FASES DOS ALGORITMOS ENTRADA, PROCESSAMENTO E SADA


Definimos que algoritmos possuem uma ordem lgica de instrues para execuo de uma tarefa. Para montar um algoritmo precisamos dividir o problema apresentado em trs fases fundamentais: ENTRADA PROCESSAMENTO SADA

Onde temos: Entrada: So os dados de entrada do algoritmo, os valores iniciais que podem ser descritos ou solicitados; Processamento: So os procedimentos (instrues) utilizados para se alcanar o resultado final (objetivo do algoritmo); Sada: So os dados processados que podem ser exibidos, retornados ou impressos.

1.9 EXEMPLO DE ALGORITMO


Vamos imaginar o seguinte problema: Calcular a mdia final dos alunos da terceira srie. Os alunos realizaro quatro provas: P1, P2, P3 e P4. Onde: Mdia Final (MF) = P1 + P2 + P3 + P4 dividido por 4. Para montarmos o algoritmo proposto, responda as seguintes perguntas: Quais so os dados de entrada?

Voc possui os valores iniciais ou ter que solicit-los?

Qual ser o procedimento a ser executado?

Quais so os dados de sada?

Algoritmo: Receba a nota da Prova 1; Receba a nota da Prova 2; Receba a nota da Prova 3; Receba a nota da Prova 4; Some as notas recebidas e divida por 4; Mostre o resultado da diviso; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 10

1.10 TESTE DE MESA


Aps o desenvolvimento de um Algoritmo ele dever ser sempre testado. Este teste conhecido como Teste de Mesa, que significa, seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado para a resoluo do problema est correto ou no. O teste deve ser realizado com a criao de uma tabela que sugere o mapeamento de uma memria computacional com o espao para todos os dados, tanto de entrada como de sada, que deve ser preenchida conforme a execuo do algoritmo numa forma seqencial. Sugerimos a tabela abaixo para o teste do algoritmo acima, percorra o algoritmo e preencha a tabela abaixo conforme a posio dos dados.
P1 P2 P3 P4 MF

1.11 AS ETAPAS DA ENGENHARIA DE SOFTWARE UMA VISO GENRICA O Processo de Desenvolvimento de Software contm trs (3) fases genricas, independentes do modelo (paradigma) de engenharia de software escolhido, que so: Definio, Desenvolvimento e Manuteno.
Definio
Anlise de Sistema Planejamento Projeto Anlise de Requisitos

Desenvolvimento
Projeto do Software Codificao Teste

Atividades de Apoio

Produto de Software
Operao

Revises Documentao Controle de Mudanas

Manuteno
Entender Modificar Revalidar

A fase de definio tem como objetivo definir o que, ou seja, quais informaes sero processadas, quais funes e desempenho so desejados, quais interfaces devem ser estabelecidas, quais restries do projeto e critrios de validao sero necessrios. Nessa fase, trs etapas especficas so realizadas: a anlise do sistema, o planejamento do projeto e a anlise dos requisitos (Rocha, 2001). Anlise do Sistema: define o papel de cada elemento num sistema baseado em computador, atribuindo em ltima anlise, o papel que o software desempenhar. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 11

Planejamento do Projeto de Software: assim que o escopo do software estabelecido, os riscos so analisados, os recursos so alocados, os custos so estimados e, tarefas e programao de trabalho definidas. Anlise de Requisitos: o escopo definido para o software proporciona uma direo, mas uma definio detalhada do domnio da informao e da funo do software necessria antes que o trabalho inicie.

A fase de desenvolvimento tem como objetivo o como, ou seja, como devem ser projetadas as estruturas de dados e a arquitetura do software, como os procedimentos devem ser implementados, como o projeto deve ser traduzido para uma linguagem de programao, como o teste deve ser executado, etc. Nessa fase tambm so sempre realizadas trs etapas especficas: o projeto, a codificao e o teste do software (Rocha, 2001). Projeto de Software: traduz os requisitos do software num conjunto de representaes (algumas grficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algoritmicos e as caractersticas de interface. Codificao: as representaes do projeto devem ser convertidas numa linguagem artificial (a linguagem pode ser uma linguagem de programao convencional ou uma linguagem no procedimental) que resulte em instrues que possam ser executadas pelo computador. Realizao de Testes do Software: logo que o software implementado numa forma executvel por mquina, ele deve ser testado para que se possa descobrir defeitos de funo, lgica e implementao. A fase de manuteno tem como objetivo as mudanas, sejam elas correes decorrentes de erros (manuteno corretiva), adaptaes necessrias decorrentes de alteraes no meio ambiente (manuteno adaptativa) e melhoramentos relacionados s novas necessidades do usurio (manuteno perfectiva) [Rocha, 2001]. Correo: mesmo com as melhores atividades de garantia de qualidade de software, provvel que o cliente descubra defeitos no software. A manuteno corretiva muda o software para corrigir defeitos. Adaptao: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional e perifricos) para o qual o software foi desenvolvido provavelmente mudar. A manuteno adaptativa muda o software para acomodar mudanas em seu ambiente. Melhoramento Funcional: a medida que o software usado, o cliente/usurio reconhecer funes adicionais que oferecero benefcios. A manuteno perfectiva estende o software para alm de suas exigncias funcionais originais. ATIVIDADES DE APOIO: as fases e etapas correlatas descritas so complementadas por uma srie de atividades de proteo. Revises: efetuadas para garantir que a qualidade seja mantida medida que cada etapa concluda. Documentao: desenvolvida e controlada para garantir que informaes completas sobre o software estejam disponveis para uso posterior. Controle das Mudanas: institudo de forma que as mudanas possam ser aprovadas e acompanhadas. Dentro deste contexto, quando se desenvolve programas de um modo geral, tambm faz-se necessrio ter um entendimento do que deve ser desenvolvido, realizando uma anlise para definio do problema. Posteriormente, elabora-se o projeto do programa, o qual ser implementado numa linguagem de programao. Finalmente, realizam-se testes Apostila didtica Lgica de Programao Profa Jusane Farina Lara 12

nos programas. Para todas estas atividades deve-se fazer documentao. A figura a seguir, representa isso. Etapas da Construo de Programas

Definio

Desenvolvimento
Projeto do Programa
Projeto das telas e relatrios Projeto dos algoritmos Projeto dos dados Projeto modular

Anlise: Definio do Problema

Codificao: Programao Pascal/C Teste

Atividades de Apoio

Programa
Revises Documentao Controle de Mudanas

Operao

Manuteno
Entender Modificar Revalidar

Um algoritmo correto deve possuir 3 qualidades: 1. Cada passo do algoritmo deve ser uma instruo que possa ser realizada 2. A ordem dos passos deve ser precisamente determinada 3. O algoritmo deve ter fim

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

13

CAPTULO 2 TIPOS DE DADOS

2.1 INTRODUO
Este captulo objetiva expor conceitos fundamentais que sero utilizados durante os outros Captulos, tais como tipos de dados, constantes e variveis, operadores e operaes com variveis.

2.2 TIPOS DE DADOS


Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. Grosso modo, estas informaes podem ser classificadas em dois tipos: - As instrues, que comandam o funcionamento da mquina e determinam a maneira como devem ser tratados os dados. As instrues so especficas para cada modelo de computador, pois so funo do tipo particular de processador utilizado em sua implementao. - Os dados propriamente ditos, que correspondem poro das informaes a serem processadas pelo computador. Aproximando-nos da maneira pela qual o computador manipula os dados, vamos dividi-los em quatro tipo primitivos: 2.2.1 Dados Numricos Inteiros Os nmeros inteiros so aqueles que no possuem componentes decimais ou fracionrios, podendo ser positivos, negativos ou nulo. Como exemplo de nmeros inteiros temos: 24 nmero inteiro positivo 0 nmero inteiro -12 nmero inteiro negativo 2.2.2 Dados Numricos Reais Os dados de tipo real so aqueles que podem possuir componentes decimais ou fracionrios, e podem tambm ser positivos, negativos ou nulo. Exemplos de dados do tipo real: 24,01 nmero real positivo com duas casas decimais 144, - nmero real positivo com zero casas decimais -13,3 nmero real negativo com uma casa decimal 0,0 - nmero real com uma casa decimal 0, - nmero real com zero casas decimais Observe que h uma diferena entre 0, que um dado do tipo inteiro, e 0, (ou 0,0) que um dado do tipo real. Portanto, a simples existncia do ponto decimal serve para diferenciar um dado numrico do tipo inteiro de um do tipo real. 2.2.3 Dados Literais ou Caractere O tipo de dados literal constitudo por uma seqncia de caracteres contendo letras, dgitos e/ou smbolos especiais. Este tipo de dados tambm muitas vezes chamado de alfanumrico, cadeia de caracteres, ou ainda, do ingls, STRING. Usualmente, os dados literais so representados nos algoritmos pela coleo de caracteres, delimitada em seu incio e trmino com o caractere aspas (). Diz-se que o dado do tipo literal possui um comprimento dado pelo nmero de caracteres nele contido. Exemplos de dados do tipo literal: Apostila didtica Lgica de Programao Profa Jusane Farina Lara 14

QUAL? qUaL ?!$ AbCdefGHi 1-2+3= 0

Literal de comprimento 6 Literal de comprimento 1 Literal de comprimento 8 Literal de comprimento 9 Literal de comprimento 6 Literal de comprimento 1

2.3.4 Dados Lgicos A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os computadores funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos, devido significativa contribuio de BOOLE rea da lgica matemtica. O tipo de dado lgico usado para representar dois nicos valores lgicos possveis: verdadeiro e falso. comum encontrar-se em outras referncias outros tipos de pares de valores lgicos como sim/no, 1/0, true/false. Exemplos: .V. valor lgico verdadeiro .F. valor lgico falso A porta pode estar aberta ou fechada A lmpada pode estar acesa ou apagada

2.3 CONSTANTES
Tem-se uma definio de constante tudo aquilo que fixo ou estvel. Entende-se que um dado constante quando no sofre nenhuma variao no decorrer do tempo. Por exemplo, o valor 1,23 da frmula a seguir uma constante: RESULTADO = ENTRADA * 1,23.

2.4 VARIVEIS
A todo momento durante a execuo de qualquer tipo de programa os computadores esto manipulando informaes representadas pelos diferentes tipos de dados descritos acima. Para que no se esquea das informaes, o computador precisa guard-las em sua memria. Varivel: uma entidade destinada a guardar uma informao. Uma varivel corresponde a uma posio de memria que contm valores que podem variar durante a execuo de um programa. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante.

O tipo de informao que ser armazenada em uma varivel tem que ser definida previamente pelo programador. Para recuperar uma determinada informao na memria seria necessrio saber o tipo de dado desta informao (ou seja, o nmero de bytes que ela ocupa na memria) e a posio inicial deste conjunto de bytes na memria. Ao criar uma varivel definido um Apostila didtica Lgica de Programao Profa Jusane Farina Lara 15

nome mesma, esse nome faz referncia ao endereo de memria onde essa varivel se encontra, ento para manipular dados em uma varivel basta usar seu nome.

Basicamente, uma varivel possui trs atributos: um nome, um tipo de dado associado mesma e a informao por ela guardada. Nome

Tipo de Dado

Informao
Atributos de uma varivel

Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cada linguagem de programao estabelece suas prprias regras de formao de nomes de variveis. Adotaremos neste contexto as seguintes regras: - um nome de varivel deve necessariamente comear com uma letra; - um nome de varivel no deve conter nenhum smbolo especial, exceto a sublinha (_). Exemplos: SALRIO Correto 1ANO Errado (no comeou com uma letra) ANO1 Correto A CASA Errado (contm o caractere branco) SAL/HORA Errado (contm o caractere /) SAL_HORA Correto _DESCONTO Errado (no comeou com uma letra) Abaixo tem-se exemplos de variveis: Varivel Nome Idade Tipo Caracter Inteiro Contedo da varivel Marcos 20

Quando uma varivel criada qual o seu valor inicial? Apostila didtica Lgica de Programao Profa Jusane Farina Lara 16

No se pode saber o valor inicial de uma varivel, pois na memria existem vrias informaes armazenadas, muitas delas esto sendo utilizadas pelo computador, mas podem existir espaos em que foram armazenadas informaes anteriormente e que no esto mais em uso. Esses espaos, mesmo contendo informaes, esto disponveis para novas variveis. Uma varivel pode ser criada em um desses espaos, e seu valor ser um "lixo" qualquer da memria. Mas uma varivel pode ser criada em um espao vazio da memria, nesse caso seu valor ser nulo. Para resolver esse problema do valor inicial da varivel, algumas linguagens inicializam suas variveis com 0 (zero) ou nulo.

2.4.1 Declarao De Variveis No ambiente computacional, as informaes variveis so guardadas em dispositivos eletrnicos analogamente chamados de memria. Podemos imaginar essa memria como sendo um armrio repleto de gavetas, no qual as gavetas seriam os locais fsicos responsveis por armazenar objetos; os objetos (que podem ser substitudos) seriam as informaes e as gavetas, as variveis (Figura 1). Visto que na memria (armrio) existem inmeras variveis (gavetas), precisamos diferenci-las, o que feito por meio de identificadores (etiquetas). Cada varivel (gaveta), no entanto, pode guardar apenas uma informao (objeto) de cada vez, sendo sempre de mesmo tipo (material). Gaveta1 Gaveta6 Gaveta2 Gaveta7 Gaveta3 Gaveta8 Gaveta4 Gaveta9 Gaveta5 Gaveta10

Gaveta11 Gaveta12 Gaveta13 Gaveta14 Gaveta15 Gaveta16 Gaveta17 Gaveta18 Gaveta19 Gaveta20 Gaveta21 Gaveta22 Gaveta23 Gaveta24 Gaveta25
Figura 1 Representao grfica da memria de um computador em nvel de variveis (Manzano & Olivereira, 2000)

Todas as variveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessrio para permitir que o compilador reserve um espao na memria para as mesmas.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

17

Portanto, precisamos definir nomes para determinadas gavetas especificando qual o material dos objetos que l podem ser armazenados; em outras palavras declarar as variveis conforme as seguintes regras sintticas: Declarao de variveis Tipo Lista de variveis

Tipo

inteiro real caractere lgico

numa mesma linha podero ser definidas uma ou mais variveis do mesmo tipo; Para tal, deve-se separar os nomes das mesmas por vrgulas; variveis de tipos diferentes devem ser declaradas em linhas diferentes.

Exemplos de definio de variveis: inteiro IDADE, X; real SALRIO, PESO, DOLAR; caractere NOME[10], ENDERECO[20]; lgico TEM_FILHOS, RESPOSTA; RESPOSTA o nome de um local de memria que s pode conter valores do tipo lgico, ou seja, por conveno, verdadeiro ou falso. X nome de um local de memria que s pode conter valores do tipo inteiro, qualquer um deles. No devemos permitir que mais de uma varivel (gaveta) possua o mesmo identificador (etiqueta), visto que ficaramos sem saber que varivel utilizar (que gaveta abrir). S podemos guardar informaes (objetos) em variveis (gavetas) do mesmo material (tipo de dado). 2.4.2 Exerccios de Fixao 1. Assinale os identificadores vlidos: a) (X) b) U2 c) AH! e) #55 f) KM/L g) UYT i) AB*C j) O&O l) P{O}

d) ALUNO h) ASDRUBAL m) B52

2. Supondo que as variveis NB, NA, NMAT, SX sejam utilizadas para armazenar a nota do aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente. 3. Encontre os erros da seguinte declarao de variveis: Inteiro ENDERECO, NFILHOS; Caractere IDADE, X; Real CRUZEIROS, XPTO, C, PESO, OUT; Lgico LMPADA, C;

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

18

2.4.3 Notao Hngara No existe uma regra definida que deva ser seguida para a identificao de variveis, o que se pode ter um hbito de criar varivel de acordo com uma notao para fcil identificao em um programa. Segundo (Holzner, 1994) o windows tem uma conveno chamada notao hngara (por causa da nacionalidade de seu inventor Charles Simonyi, programador da Microsoft). Como programas windows podem ser muito longos, fcil esquecer o que todas as variveis significam. Para ajudar, a notao fornece letras que podemos usar como prefixos, como mostra a tabela abaixo. Maiores detalhes da notao hngara podem ser encontrados em (Holzner, 1994).
Prefixo a b c r i v Significado Matriz de dados Booleano ou lgico Caracter Real Inteiro Vetor

A seguir exemplos de identificadores de variveis seguindo a notao hngara: iCodigo, cNome, rTotal, rDesconto, vNotas, bTemSaldo. Nota: Ao declarar uma varivel como o Nome iValor, por exemplo, no significa que esta poder apenas receber valores inteiros, quem define isso o seu tipo e no o nome da varivel, mesmo que esta esteja adequada a uma notao.

2.5 EXPRESSES ARITMTICAS


O conceito de expresso em termos computacionais est intimamente ligado ao conceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes numricas relacionam-se por meio de operadores aritmticos compondo uma frmula que, uma vez avaliada, resulta num valor.

B Por exemplo, a frmula de clculo da rea do tringulo da figura acima dada por: AREA = 0.5 * B * H O conceito de expresso aplicado computao assume uma conotao mais ampla: uma expresso uma combinao de variveis, constantes e operadores, e que, uma vez avaliada, resulta num valor. 3.5.1 Operadores Aritmticos Operadores: so elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Existem dois tipos de operadores: binrios, quando atuam sobre dois operandos. Ex.: os operadores das operaes aritmticas bsicas (soma, subtrao, multiplicao e diviso); unrios, quando atuam sobre um nico operando. Ex.: o sinal de (-) na frente de um nmero, cuja funo inverter seu sinal. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 19

Operador + ** * / + -

Tipo Unrio Unrio Binrio Binrio Binrio Binrio Binrio

Operao Manut. de sinal Inverso de sinal Exponenciao Multiplicao Diviso Adio Subtrao

Prioridade 1 1 2 3 3 4 4

2.5.2 Tipos de Expresses As expresses so classificadas de acordo com o tipo do valor resultante de sua avaliao. 2.5.2.1 Expresses Aritmticas So aquelas cujo resultado da avaliao do tipo numrico, seja ele inteiro ou real. A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados dentro de uma expresso. Observao: a prioridade das operaes pode ser quebrada utilizando-se nveis de parnteses. Parnteses mais internos Funes matemticas ** (exponenciao) // (radiciao) * (multplicao) / (diviso) mod div + (adio) - (subtrao)

Para operaes de mesma prioridade, seguimos a ordem especificada, isto , primeiro resolvemos os operadores mais esquerda e depois os mais direita da tabela e, para alterar a prioridade da tabela, utilizamos parnteses mais internos. Exemplos: a) 5 + 9 + 7 + 8 / 4 5 + 9 + 7 + 2 = 23 b) 1 4 * 3 / 6 2 ** 3 14*3/68 1 12 / 6 8 1 2 8 = -9 c) 3 ** 2 4 / 2 + abs(5 3 * 5) / 2 3 ** 2 4 / 2 + abs(5 15) / 2 3 ** 2 4 / 2 + abs(-10) / 2 3 ** 2 4 / 2 + 10 / 2 9 4 / 2 + 10 / 2 9 2 + 5 = 12 d) media_ponderada = (nota1 * peso1 + nota2 * peso2) / (peso1 + peso2) e) salario_reajustado = salario_atual * 50/100 + salario_atual f) salario_reajustado = salario_atual * 1,50 g) Funo DIV, MOD: 5 DIV 2 guarda o quociente da diviso por 2 5 MOD 2 quarda o resto da diviso por 2 5 / 2 = 2,5 Exerccio de Fixao Apostila didtica Lgica de Programao Profa Jusane Farina Lara 20

Supondo A, B, C e variveis de tipo inteiro, com valores iguais a 5, 10 e 8, e uma varivel real D, com valor de 1,5, quais os resultados das expresses abaixo? a) 2 * A / 3 C; b) 2 // (2 * abs ( C ) / 4; c) (A / B) + C ** 3; d) (A + B) / A * C + D (D * 2); 2.5.2.2 Expresses Lgicas So aquelas cujo resultado da avaliao um valor lgico. (.V. ou .F.). Os operadores lgicos e suas relaes de precedncia so mostrados na tabela abaixo: Operador .NO. .E. .OU. Tipo Unrio Binrio Binrio Operao Negao Conjuno Disjuno Prioridade 1 2 3

Tabela Verdade: o conjunto de todas as possibilidades combinatrias entre os valores de diversas variveis lgicas, as quais se encontram em apenas duas situaes, e um conjunto de operadores lgicos. Para exemplificar o uso de operadores lgicos a tabela abaixo apresenta as variveis A e B: A .F. .F. .V. .V. B .F. .V. .F. .V. .NO. A .V. .V. .F. .F. .NO. B .V. .F. .V. .F. A .OU. B .F. .V. .V. .V. A .E. B .F. .F. .F. .V.

H, ainda, outro tipo de operador que pode aparecer em operaes lgicas: os operadores relacionais, mostrados na tabela abaixo: Operador = <> < <= > >= Comparao Igual a Diferente de Menor que Menor ou igual a Maior que Maior ou igual a

Prioridades entre todos os operadores:

Parnteses mais internos Funes matemticas Operadores aritmticos Operadores relacionais Operadores lgicos

Exemplos: a) 2 * 4 = 24 /3 Apostila didtica Lgica de Programao Profa Jusane Farina Lara 21

8 = 8 verdadeiro b) 2 + 8 mod 7 >= 3 * 6 15 2 + 1 >= 18 15 3 >= 3 verdadeiro c) 3 * 5 div 4 <= 3 ** 2 / 0,5 15 div 4 <= 9 / 0,5 3 <= 18 verdadeiro 2.5.2.3 Expresses Vlidas vs. Expresses Invlidas Expresses vlidas A e B ou C (X < Y) e (Z = 0) A e no B ou no C (K < 0) e (Z > 5) ou (T > 3) (A = E) e no (C < 0) Expresses invlidas A e ou B (X < Y) no (Z=0) A no e B A no ou C (X < Z) ou e L

2.5.2.4 Expresses Literais So aquelas cujo resultado da avaliao um valor literal. Por exemplo: a concatenao das strings REFRIGERA e DOR representado por REFRIGERA + DOR e o resultado de sua avaliao REFRIGERADOR. Exemplo: caracter nome, sobrenome, nomecompleto; nome Paulo Jose; sobrenome Das Coves; nomecompleto nome + sobrenome;

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

22

CAPTULO 3 COMANDOS BSICOS SOBRE ALGORITMOS

3.1 INTRODUO
Neste Captulo so apresentados os comandos de atribuio, de leitura, de escrita e blocos. Tambm so apresentadas as consideraes iniciais relacionadas s estruturas de controle e estrutura seqencial.

3.2 COMANDO DE ATRIBUIO


Um comando de atribuio permite-nos fornecer um valor a uma certa varivel (guardar um objeto numa certa gaveta), onde o tipo dessa informao deve ser compatvel com o tipo da varivel, isto , somente podemos atribuir um valor lgico a uma varivel capaz de comport-lo, ou seja, uma varivel declarada do tipo lgico. A sintaxe do comando : identificador expresso ;

Exemplo: lgico A, B; Inteiro X; A X B verdadeiro; 8 + 13 / 5; 5 = 3;

Esses comandos atribuem s variveis A, X e B os valores fornecidos direita do smbolo de atribuio.

3.3 COMANDO DE LEITURA ou ENTRADA DE DADOS


Imagine que pretendamos construir e vender um rob capaz de pegar um objeto depositado numa determinada gaveta e parti-lo em dois pedaos. J que no utilizaremos esse rob, no temos como imaginar o que o cliente (usurio) ter guardado na gaveta: tanto pode ser um lpis como uma barra de ferro. Portanto, devemos prever o comportamento de nosso rob para qualquer objeto depositado na gaveta. Acontece exatamente o mesmo num algoritmo: devemos saber construir um que permita ao usurio fornecer qualquer tipo de informao a algumas variveis (em vez de um objeto a certa gaveta), mesmo sem saber ao certo que informao ser fornecida; em outras palavras, que utilidade teria uma calculadora capaz de calcular a mdia anual se no a fizesse baseada nas notas que fossem fornecidas, e sim com outros valores quaisquer que nada tm a haver com as suas notas? Ento, assim como havia um comando para atribuir um valor determinada varivel, temos tambm um comando que permite que o usurio fornea este valor, isto , que realize uma entrada de dados. A sintaxe do comando : leia ( varivel ) ;

, Exemplo: leia (X); leia (A, IDADE, NOTA); Apostila didtica Lgica de Programao Profa Jusane Farina Lara 23

3.4 COMANDO DE ESCRITA ou SADA DE DADOS


Seguindo a mesma analogia, supondo que essa calculadora fictcia permitisse que fornecssemos corretamente as notas e calculasse normalmente a mdia, ela ainda no teria utilidade alguma se no mostrasse o resultado! Portanto, um algoritmo deve prever tambm esta situao, o que pode ser feito por meio de um comando de sada de dados. A sintaxe do comando : , escreva ( varivel constante expresso Exemplo: escreva (Y); escreva (B, IDADE, MEDIA); escreva (Bom Dia, NOME); escreva (Voce pesa , X*2, quilos; ) ;

3.5 BLOCOS
Um bloco pode ser definido como um conjunto de aes com uma funo definida; neste caso, um algoritmo pode ser visto como um bloco. Ele serve tambm para definir os limites nos quais as variveis declaradas em seu interior so conhecidas. Para delimitar um bloco, utilizamos os delimitadores: incio e fim. incio ao fim ;

, Exemplo: Incio {incio do bloco (algoritmo) } { declarao de variveis } { seqncia de aes } Fim. { bloco (algoritmo) }

3.6 LINHAS DE COMENTRIOS


Em programas computacionais comum encontrar-se linhas que comentam uma parte do programa. O autor do programa faz isso de modo a quando necessitar alterar o algoritmo possa lembrar de uma particularidade que pode influenciar na estrutura do algoritmo. Como o programador efetua vrios programas, jamais lembrar de todos os detalhes de todos os programas que construiu. Um comentrio por ser adicionado a um algoritmo entre chaves. Todo o contedo do conjunto ignorado e pode fazer ou no referncias a outras partes do algoritmo sem problemas. Exemplo: Apostila didtica Lgica de Programao Profa Jusane Farina Lara 24

{ Este algoritmo calcula a soma de dois valores quaisquer } INICIO INTEIRO Valor1, Valor2, Soma; ESCREVA (Informe 1o. e 2o. Valor: ); LEIA (Valor1, Valor2); Soma Valor1+ Valor2; { efetuando clculo da soma } ESCREVA (Resultado da Soma = , Soma); FIM.

3.7 EXEMPLO DE ALGORITMO UTILIZANDO OS COMANDOS BSICOS


incio { Algoritmo para somar dois nmeros } inteiro a, b, soma; escreva (Informe valor para a:); { comando de sada de dados mensagem na tela} leia (a); { comando de entrada de dados } escreva (Informe valor para b:); leia (b); soma a + b; { resultado } escreva (O resultado da soma :, soma); fim.

3.8 EXERCCIOS DE FIXAO


1. Encontre os erros dos seguintes comandos de atribuio: Lgico A; Real B, C; Inteiro D; A B = C; D B; C+1 B + C; CeB 3,5; 2. Utilizando o seguinte trecho de algoritmo: . . Inteiro X, Y; Real Z; Leia (X); Escreva (X, ao cubo = , X**3); Leia (Y); Escreva (X+Y); Z X/Y; Escreva (Z); Z int(Z); Escreva (Z); Z Z + 1; X (Y+Z) / 2; Escreva (X); . . Explique o que est acontecendo em cada linha e qual o resultado de cada ao executada. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 25

3.9 CONSIDERAES INICIAIS RELACIONADAS S ESTRUTURAS DE CONTROLE


Na criao de algoritmos, utilizamos os conceitos de bloco lgico, entrada e sada de dados, variveis, constantes, atribuies, expresses lgicas, relacionais e aritmticas, bem como comandos que traduzam estes conceitos de forma a representar o conjunto de aes. Para que esse conjunto de aes se torne vivel, deve existir uma perfeita relao lgica intrnseca ao modo pelo qual essas aes so executadas, ao modo pelo qual regido o fluxo de execuo. Atravs das estruturas bsicas de controle do fluxo de execuo seqenciao, seleo, repetio e da combinao delas, poderemos criar um algoritmo para solucionar qualquer problema.

3.9.3 ESTRUTURA SEQENCIAL o conjunto de aes primitivas que sero executadas numa seqncia linear de cima para baixo e da esquerda para a direita, isto , na mesma ordem que foram escritas. Incio { comeo do algoritmo } { declarao de variveis } comando a; comando b; comando c; comando d; comando e; . . comando n; Fim. { algoritmo } Exemplo: a) Construa um algoritmo que calcule a mdia aritmtica entre quatro notas quaisquer fornecidas pelo usurio. Resoluo: 1. Dados de Entrada: quatro notas bimestrais (N1, N2, N3, N4); 2. Dados de Sada: mdia aritmtica anual (MA); 3. O que devemos fazer para transformar quatro notas bimestrais numa mdia anual? Resposta: utilizar mdia aritmtica (soma dos elementos divididos pela quantidade deles). (N1 + N2 + N3 + N4)/4. 4. Construo do algoritmo: Incio { comeo do algoritmo } Real N1, N2, N3, N4, MA; { declarao de variveis } Leia (N1, N2, N3, N4); { entrada de dados } MA (N1 + N2 + N3 + N4) / 4; { processamento } Escreva (MA); { sada de dados } Fim. { trmino do algoritmo } EXERCCIO DE FIXAO b) Construa um algoritmo que calcule a quantidade de latas de tintas necessrias e o custo para pintar tanques cilndricos de combustvel, onde so fornecidos a altura e o raio desse cilindro. Sabendo que: A lata de tinta custa R$ 50,00; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 26

Cada lata contm 5 litros; Cada litro de tinta pinta 3 metros quadrados. Resoluo: 1. Dados de entrada: altura (H) e raio (R); 2. Dados de sada: custo (C) e quantidade (QTDE); 3. Utilizando Planejamento Reverso, sabemos que: Custo dado por quantidade de latas * R$ 50,00; Quantidade de latas dada por quantidade total de litros / 5; Quantidade total de litros dada por rea do cilindro / 3; rea do cilindro dada por rea da base + rea lateral; rea da base (PI * R **2); rea lateral altura * comprimento: (2 * PI * R * H); Sendo que R (raio) e H (altura) so dados de entrada e PI uma constante de valor conhecido: 3,14. 4. Faa a Construo do algoritmo?

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

27

CAPTULO 4 COMANDOS DE SELEO

4.1 INTRODUO
At o momento os algoritmos estudados utilizavam apenas instrues primitivas de atribuio, e de entrada e sada de dados. Qualquer conjunto de dados fornecido a um algoritmo destes ser submetido ao mesmo conjunto de instrues, executadas sempre na mesma seqncia. Dependendo do conjunto de dados de entrada do algoritmo, deve-se executar um conjunto diferente de instrues. Alm disso, pode ser necessrio executar um mesmo conjunto de instrues um nmero repetido de vezes. Em resumo, necessrio controlar o fluxo de execuo das instrues (a seqncia em que as instrues so executadas num algoritmo) em funo dos dados fornecidos como entrada ao mesmo. As estruturas bsicas de controle do fluxo de instrues so classificadas em: - estruturas seqenciais (foi estudado no Captulo 4) - estruturas de seleo - estruturas de repetio (ser estudado no Captulo 6) Neste Captulo so apresentados os comandos de seleo: SE, ENTO e SENO; CASO SELECIONE; Blocos de Instrues e Aninhamentos de Comandos.

4.2 ESTRUTURAS DE SELEO


Uma estrutura de seleo permite a escolha de um grupo de aes e estruturas a ser executado quando determinadas condies, representadas por expresses lgicas, so ou no satisfeitas. 4.2.1 SELEO SIMPLES A ao a ser executada depende da anlise de uma determinada condio. Se a condio for verdadeira, um curso de ao tomado. Se falsa, executado o comando seguinte. Se <condio> ento C; {comando nico (ao primitiva) } Fim_se

<condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se <condio> for verdadeira, a ao primitiva sob a clusula ento ( C ) ser executada; caso contrrio (<condio> for falsa), encerra o comando (fim_se), neste caso, sem executar nenhum comando.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

28

Entrada Se <condio> ento Incio { bloco verdade } C1; C2; { seqncia de comandos } . . Cn; Fim { bloco } Fim_se;

condio

V
Alternativa Verdadeira

Sada para a prxima ao 4.2.2 SELEO COMPOSTA Se a condio verdadeira um curso de ao tomado; se falsa, outro curso de ao tomado. Se <condio> ento Incio { bloco verdade } C1; C2; { seqncia de comandos} . . Cn; Fim; Seno C; { ao primitiva } Fim_se Entrada No caso de existir um conjunto de aes que deveriam ocorrer quando o resultado da condio fosse falso, criaramos um bloco falso.

Condio

Alternativa Verdadeira

Alternativa Falsa

Sada para a prxima ao

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

29

Exemplos: a) Incio Inteiro IDADE; Leia (IDADE); Se IDADE >= 18 Ento Escreva (Maior de idade); Seno Escreva (Menor de idade); Fim_se; Fim. b) Incio { declarao de variveis } real N1, N2, N3, N4; { notas bimestrais } real MA; { mdia anual } Leia (N1, N2, N3, N4); MA (N1 + N2 + N3 + N4) / 4; Escreva (Mdia Anual = , MA); Se MA >= 6 Ento Incio { bloco verdade } Escreva (Aluno Aprovado!); Escreva (Parabns!); Fim; { bloco verdade } Seno Incio { bloco falso } Escreva (Aluno Reprovado!); Escreva (Estude Mais!); Fim; { bloco falso } Fim_Se; Fim. c) Construa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A senha um conjunto de cinco caracteres que so: ASDFG. Incio { declarao de variveis } caractere S; { senha fornecida pelo usurio } Leia (S); Se S = ASDFG Ento Escreva (Acesso Permitido!); Seno Escreva (Acesso Negado!); Fim_se; Fim. As condies

Uma condio deve sempre seguir a regra de um teste, onde o valor retornado deste teste deve ser verdadeiro, para executar o bloco depois do ento, ou falso, para seguir o algoritmo ou executar o bloco seno, caso este exista. Abaixo temos exemplos de condio, vlidos e invlidos:

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

30

Condio SE (A>B>C)... SE (NOME)... SE (NOME[1] = M)... SE (A = 1..10)... SE (CASADO)... SE (CASADO = V)... SE ((A+B)=5)... SE (LEIA(A) = 5...

Vlida No Sim, se nome for uma var lgica Sim, se nome for caracter e possui ao menos um caracter No Sim, sendo casado uma var lgica Sim, mas poderia ser simplesmente: Sim No

Soluo SE (A>B) E (A>C)... SE (NOME = MARCOS) SE (A>=1) E (A<=10)... SE (CASADO)... LEIA (A); SE (A = 5) ...

4.2.3 SELEO ENCADEADA Quando, devido necessidade de processamento, agruparmos vrias selees, formaremos uma seleo encadeada. Normalmente tal formao ocorre quando uma determinada ao ou bloco deve ser executado se um grande conjunto de possibilidades ou combinaes de situaes for satisfeito. 4.2.3.1 SELEO ENCADEADA HETEROGNEA Podemos construir uma estrutura de seleo (se) de diversas formas, sendo que, ao encadearmos vrias selees, as possibilidades de construo diferentes tendem a um nmero elevado. Quando no conseguimos identificar um padro lgico de construo em uma estrutura de seleo encadeada, dizemos que esta uma estrutura de seleo encadeada heterognea. Se <condio 1> ento Se <condio 2> ento Incio { bloco verdade 1} C1; Cn; Fim; { bloco verdade 1 } Fim_se; seno Se < condio 3> ento Incio { bloco verdade 2 } C1; Cn; Fim; { bloco verdade 2 } seno Se <condio 4> ento Se <condio 5> ento CV; { comando verdade } Fim_se; seno CF; { comando falso } Fim_se; Fim_se; Fim_se; Podemos resumir todas as variaes possveis em uma Tabela de Deciso: Apostila didtica Lgica de Programao Profa Jusane Farina Lara 31

Condio 1 Condio 2
V F F F V -

Condio 3
V F F

Condio 4
V F

Condio 5
V -

Ao Executada
Bloco Verdade 1 Bloco Verdade 2 Comando Verdadeiro Comando Falso

Exerccio de Fixao: Dados trs valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se compem um tringulo eqiltero, issceles ou escaleno. Informar se no compuserem nenhum tringulo. Resoluo: Dados de Entrada: A, B, C Dados de sada: mensagens: no compem tringulo, tringulo eqiltero, tringulo issceles, tringulo escaleno. Tringulo eqiltero: possui trs lados iguais. Tringulo issceles: possui dois lados iguais. Tringulo escaleno: todos os lados so diferentes. Montando a Tabela de Deciso, temos: tringulo? eqiltero? issceles? escaleno? V V F F V F V V F F V F Traduzindo as condies para expresses lgicas: Aes Tr. Eqiltero Tr. Issceles Tr. Escaleno No Tr.

tringulo: (A < B + C) e (B < A + C) e ( C < A + B); equiltero: (A = B) e (B = C); issceles: (A = B) ou (A = C) ou (B = C); escaleno: (A <> B) e (B <> C); Construindo o algoritmo: Incio { algoritmo } Inteiro A, B, C; Leia (A, B, C); Se (A < B + C) e (B < A + C) e (C < A + B) Ento Se (A = B) e (B = C) Ento Escreva (Tringulo Equiltero); Seno Se (A = B) ou (B = C) Ento Escreva (Tringulo Issceles); Seno Escreva (Tringulo Escaleno); Fim_se; Fim_se; Seno Escreva (Estes valores no formam um tringulo); Fim_se; Fim. 4.2.3.2 SELEO ENCADEADA HOMOGNEA Chamamos de Seleo Encadeada Homognea quando a construo de diversas estruturas de seleo encadeadas segue um determinado padro lgico. SE ENTO SE Vamos supor que, num dado algoritmo, um comando genrico W deva ser executado apenas quando forem satisfeitas as condies Cond1, Cond2, Cond3 e Cond4. Teramos: Apostila didtica Lgica de Programao Profa Jusane Farina Lara 32

Cond1 Ento Se Cond2 Ento Se Cond3 Ento Se Cond4 Ento Fim_se; Fim_se; Fim_se; Fim_se; Se Seria equivalente a escrever, simplificadamente: Se Cond1 e Cond2 e Cond3 e Cond4 ento W; Fim_se;

W;

SE SENO SE Vamos supor que em determinado algoritmo uma varivel X possa assumir quatro valores, sendo eles V1, V2, V3 V4, e que exista um comando (ou mais) diferente que ser executado para cada valor armazenado em X. Teremos: Se X = V1 Ento C1; Fim_se; Se X = V2 Ento C2; Fim_se; Se X = V3 Ento C3; Fim_se; Se X = V4 Ento C4; Fim_se;

Somente um e apenas um comando pode ser executado, isto , trata-se de uma situao excludente (se X igual a V3, no igual a V1, nem a V2, nem a V4). No se trata de uma estrutura encadeada, pois todos os ses no esto interligados. Por isso todas as condies (X = Vn) sero efetuadas e ocorrero testes desnecessrios. Para melhorar a performance dessa estrutura, podemos transform-la em um conjunto de selees encadeadas: Se X = V1 Ento C1; Seno Se X = V2 Ento C2; Seno Se X = V3 Ento C3; Seno Se X = V4 Ento C4; Fim_se; Fim_se; Fim_se; Fim_se; Por constituir-se um encadeamento homogneo, pode ser simplificado, e para tal utilizaremos uma nova estrutura, a seleo de mltipla escolha.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

33

4.2.3.3 SELEO DE MLTIPLA ESCOLHA Este tipo de estrutura uma generalizao da estrutura Se, onde somente uma condio era avaliada e dois caminhos podiam ser seguidos. Na estrutura de deciso do tipo Escolha pode haver uma ou mais condies a serem testadas e um comando composto diferente associado a cada uma destas. A sintaxe da construo de Escolha mostrada abaixo:

V
<Condio1>

Seqncia A de comandos

Escolha Caso <condio1> Seqncia A de comandos

F V
<Condio2>

Seqncia A de comandos

Caso <condio2> Seqncia A de comandos ... Caso <condion> Seqncia n de comandos Caso contrrio Seqncia s de comandos Fim_escolha

F V
<Condion>

Seqncia n de comandos

Exemplos: a) Um exemplo de aplicao desta construo mostrado abaixo, baseando num algoritmo de reajuste salarial varivel em funo da profisso. Incio Real SALARIO, SAL_REAJ; Caractere PROF; Leia (SALARIO, PROF); Escolha PROF Caso T: SAL_REAJ 1,5 * SALARIO; Caso E: SAL_REAJ 1,3 * SALARIO; Caso contrrio SAL_REAJ 1,1 * SALARIO; Fim_escolha; Escreva (Salario Reajustado = , SAL_REAJ); Fim.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

34

b)

Se X = V1 ento C1; seno Se X = V2 ento C2; seno Se X = V3 ento C2; seno Se X = V4 ento C3; seno Se X = V5 ento C4; seno C5; Fim_se; Fim_se; Fim_se; Fim_se; Fim_se; Leia (X, V1, V2, V3, V4, V5); Escolha X Caso V1: C1; Caso V2, V3: C2; Caso V4: C3; Caso V5: C4; Caso Contrrio: C5; Fim_escolha;

c) Construa um algoritmo que, tendo como dados de entrada o preo de um produto e um cdigo, emita o preo junto de sua procedncia. Caso o cdigo no seja nenhum dos especificados, o produto deve ser encarado como importado. Cdigo de origem: 1 Sul 5 ou 6 Nordeste 2 Norte 7, 8 ou 9 Sudeste 3 Leste 10 at 20 Centro-Oeste 4 Oeste 25 at 50 Nordeste Incio Real PRECO; Inteiro ORIGEM; Leia (PRECO, ORIGEM); Escolha ORIGEM Caso 1: Escreva (PRECO, Produto do Sul); Caso 2: Escreva (PRECO, Produto do Norte); Caso 3: Escreva (PRECO, Produto do Leste); Caso 4: Escreva (PRECO, Produto do Oeste); Caso 7,8,9: Escreva (PRECO, Produto do Sudeste); Caso 10..20: Escreva (PRECO, Produto do Centro-Oeste); Caso 5,6,25..50: Escreva (PRECO, Produto do Nordeste); Caso contrrio: Escreva (PRECO, Produto Importado); Fim_escolha; Fim. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 35

Para instrues CASO, apenas testes de um valor ou faixa de valores admissvel, como exemplo: ESCOLHA varivel Caso Possvel 1 7,8,9 10.. 20 A .. Z , a .. z 0..10 , 20..30 Fim_Escolha;

No possvel =0 = 7 OU = 8 ou = 9 >=10 E <= 20 >10 OU >20 E < 30

vlido o comando escolha apenas para variveis do tipo inteiro ou com um nico caracter.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

36

CAPTULO 5 COMANDOS DE REPETIO

5.1 INTRODUO
Existem ocasies que necessrio efetuar a repetio de um trecho de programa um determinado nmero de vezes. Nesse caso, poder ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes quantas forem necessrias. Os loopings tambm so chamados de: laos de repetio ou malhas de repetio. Neste captulo sero estudados os laos de repetio ou malhas de repetio. Sero abordados os comandos enquanto faa, repita at e para faa. Para demonstrar o uso dos trs comandos de repetio, consideraremos o exemplo a seguir: Exemplo 1: Dado um conjunto de nmeros inteiros positivos, determinar os seus quadrados: Entradas: 3, 8, 4, 10 Sada: 9, 64, 16, 100 - O problema saber quantas vezes executar a repetio. - Desejamos repetir o bloco (leitura, clculo, sada) enquanto existir um nmero na lista de entrada. - A estratgia de verificao de fim de dados utilizar um sinal de fim de dados: denomina-se sentinela. - Neste problema a condio expressa por nmero > 0. - Podemos usar como sentinela qualquer nmero que no seja positivo. Por exemplo, o nmero zero ou 1.

5.2 REPETIO COM TESTE NO INCIO ( Enquanto .. faa )


Consiste numa estrutura de controle do fluxo lgico que permite executar diversas vezes um mesmo trecho do algoritmo, porm, sempre verificando antes de cada execuo se permitido repetir o mesmo trecho. Para realizar a repetio com teste no incio, utilizamos a estrutura enquanto, que permite que um bloco ou uma ao primitiva seja repetida enquanto uma determinada <condio> for verdadeira.

<condio>

S <bloco de instruo>

Enquanto <condio> faa inicio Comando 1; Comando 2; . . Comando n; fim Fim_enquanto;

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

37

Quando o resultado de <condio> for falso, o comando abandonado. Se j da primeira vez o resultado for falso, os comandos no so executados nenhuma vez. Dentro do loop deve existir uma instruo que altera o valor da <condio>, caso contrrio, o loop pode se tornar de execuo infinita (no parar). Resoluo do exemplo1: Inicio Inteiro numero, quadrado; Escreva (Informe numero); Leia (numero); Enquanto (numero > 0) faa inicio Quadrado numero * numero; Escreva (O quadrado do numero , numero, , quadrado); Escreva (Informe prximo numero ); Leia (numero); fim Fimenquanto; Fim.

Para inserir o clculo da mdia dos alunos em um lao de repetio utilizando a estrutura enquanto que <condio> utilizaramos? A condio seria que a quantidade de mdias calculadas fosse menor ou igual a 50; porm, o que indica quantas vezes a mdia foi calculada? A estrutura (enquanto) no oferece este recurso; portanto, devemos estabelecer um modo de contagem, o que pode ser feito atravs de um contador representado por uma varivel com um dado inicial, o qual incrementado a cada repetio. Exemplo 2 (contador): Inteiro CONTADOR; CONTADOR 17; { inicializar o contador } CONTADOR CONTADOR + 1; { incrementar o contador de 1 } Aplicando estes conceitos, temos: Incio { declarao de variveis } real N1, N2, N3, N4; { notas bimestrais } real MA; { mdia anual } inteiro CONTADOR; { CONTADOR } CONTADOR 0; ENQUANTO CONTADOR < 50 FAA { teste da condio } Inicio Leia (N1, N2, N3, N4); MA (N1 + N2 + N3 + N4) / 4; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 38

Escreva (Media Anual = , MA); SE MA >= 6 Ento Incio { bloco verdade } Escreva (Aluno Aprovado!); Escreva (Parabns!); Fim; { bloco verdade } Seno Incio { bloco falso } Escreva (Aluno Reprovado!); Escreva (Estude Mais!); Fim; { bloco falso } Fim_se; CONTADOR CONTADOR + 1; fim FIMENQUANTO; Fim. A seguir tem-se um exemplo que se refere a digitao da idade para 50 pessoas. Ao mesmo tempo acumulada a idade para posterior clculo da mdia geral (aritmtica) da idade. Exemplo 3 (somatrio): Inteiro CONT, { contador } SOMA; { somatrio } ACUM 17; { inicializar o acumulador } Leia (CONT); SOMA SOMA + CONT; { somar na soma o contador } Execute mais algumas vezes estas duas ltimas aes, observando o que acontece com a varivel SOMA. incio { declarao de variveis } real media inteiro contador, soma, idade; contador acum 0; ENQUANTO contador < 50 faa { teste de condio } inicio Leia (idade); soma soma + idade; contador contador + 1; fim FIMENQUANTO; media soma / 50; escreva (media de idade de 50 pessoas = , media); fim. O algoritmo anterior utilizava um pr-conhecimento da quantidade de pessoas da qual se desejava a mdia geral. Se no soubssemos quantas eram as pessoas, o que faramos para controlar o lao de repetio? Teremos de encontrar outro critrio de parada, o que pode ser feito utilizando um valor predefinido como finalizador de uma seqncia de valores. Para aplicar tal conceito ao algoritmo da mdia geral da idade usaremos como finalizador o valor 1, que quando encontrado encerra o lao sem ter seu valor computador ao acumulador. incio real media; inteiro contador, soma, idade; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 39

soma 0; escreva (Para finalizar o algoritmo deve-se informar 1 para a idade); leia (idade); ENQUANTO idade <> -1 faa inicio soma soma + idade; leia (idade); contador contador + 1; fim FIMENQUANTO; media soma / contador; Escreva (media da idade = , media); fim. 5.3 CONTADORES E ACUMULADORES Juntamente com as instrues de repetio aparece o conceito de acumuladores e contadores. Acumuladores e contadores so variveis com um propsito especfico: Acumuladores(somatrios) : acumulam um valor a cada passo de repetio do lao, normalmente utilizado para clculos; Contadores: contam a quantidade de repeties de execuo de um determinado lao. So sempre incrementadas de uma unidade de valor. Um exemplo de contador pode ser descrito no algoritmo abaixo: deseja-se saber ao final do algoritmo quantos nomes foram lidos: { ALGORITMO EXEMPLOENQUANTO } INICIO CARACTER NOME ; INTEIRO CONT:; CONT 0; {INICIALIZA O CONTADOR COM ZERO} LEIA (NOME); CONT CONT + 1; ENQUANTO (NOME <> FIM) FAA inicio ESCREVA (NOME); LEIA (NOME); CONT CONT + 1; fim FIM ENQUANTO; ESCREVA (FORAM LIDOS, CONT, NOMES); FIM. O princpio bsico do contador e do acumulador inicializar o valor dos mesmos e atribuir a varivel, o valor j contido nela somado de um incremento. Todo contador ou acumulador deve receber um valor inicial Exemplo: CONTADOR CONTADOR SOMA SOMA

0; CONTADOR + 1;

0; SOMA + 10;

Um exemplo onde acumuladores e contadores so largamente utilizados juntos o algoritmo para calcular os sucessivos valores de E usando a srie abaixo e considerando N um nmero inteiro e maior que 1. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 40

E=

1+

1+
_________

1+
_________

...

1
________

1!

2!

N!

A lgica iniciar um acumulador chamado E com o valor 1 e ir somando os resultados obtidos de 1 / N! at que o contador N chegue ao nmero limite desejado. Resoluo: { ALGORITMO SERIE_E } INICIO INTEIRO CONT, N, FAT, AUX; REAL E; LEIA (N); { O INICIO DA SRIE } E 1; CONT 1; ENQUANTO (CONT <= N) FAA INICIO {CALCULO DO FATORIAL} FAT <- 1; AUX <- CONT; ENQUANTO (AUX > 1) FACA INICIO FAT FAT * AUX; AUX AUX 1; FIM FIM ENQUANTO; E E + 1/FAT; CONT CONT + 1; FIM FIM ENQUANTO; ESCREVA (E) FIM.
EXERCCIO DE APRENDIZAGEM Considere o seguinte problema: Elaborar o algoritmo atravs da linguagem natural, diagrama de blocos e codificao em pseudocdigo (portugus estruturado) de um programa que efetue o clculo do fatorial do nmero 5, 5!. Dessa forma, temos que 5! = 5 * 4 * 3 * 2 * 1 ou 5! = 1 * 2 * 3 * 4 * 5, equivalente a 120. Fatorial o produto dos nmeros naturais desde 1 at o inteiro n. Sendo assim, o clculo de uma fatorial conseguido pela multiplicao sucessiva do nmero de termos. No caso de uma fatorial de nmero 5, este o nmero de termos a ser utilizado. Desta forma, o programa dever executar as multiplicaes sucessivamente e acumul-las a fim de possuir o valor 120 aps 5 passos. O nmero de passos dever ser controlado por um contador. Veja a seguir: Algoritmo 1. Inicializar as variveis FATORIAL e CONTADOR com 1; 2. Multiplicar sucessivamente a varivel FATORIAL pela varivel CONTADOR; 3. Incrementar 1 varivel CONTADOR efetuando o controle at 5; 4. Apresentar ao final o valor obtido. Pelo fato de se ter que efetuar o clculo de uma fatorial de 5 (5!), isto implica que o contador dever variar de 1 a 5, por este motivo a varivel CONTADOR dever ser inicializada com valor 1. Apostila didtica Lgica de Programao Profa Jusane Farina Lara 41

Pelo fato de a varivel FATORIAL possuir ao final o resultado do clculo do fatorial pretendido, esta dever ser inicializada com valor 1. Se ela for inicializada com zero, no existir resultado final, pois qualquer valor multiplicado por zero resulta zero. Multiplicar sucessivamente implica em se efetuar a multiplicao de varivel CONTADOR com o valor atual da varivel FATORIAL a cada passo controlado pelo looping. No caso por 5 vezes. Abaixo indicado esta ocorrncia na linha 2 do algoritmo. 1. Inicializar as variveis FATORIAL e CONTADOR com 1; 2. Repetir a execuo dos passos 3 e 4 por 5 vezes; 3. FATORIAL FATORIAL * CONTADOR; 4. Incrementar 1 varivel CONTADOR; 5. Apresentar ao final o valor obtido. Diagrama de Blocos Incio

Fatorial Contador

1 1

N Contador <= 5 S
Fatorial Fatorial * Contador

Contador Contador + 1

Fatorial

Fim Observe dentro do looping a indicao de dois contadores, sendo que o primeiro funciona como um acumulador, pois este que ter no final o valor do resultado da fatorial, e o segundo sendo utilizado para controlar a execuo do looping e ser a base para o clculo do acumulador.
CONTADOR 1 2 3 4 5 FATORIAL 1 1 2 6 24 FATORIAL FATORIAL * CONTADOR 1 2 6 24 120 COMENTRIOS Valor inicial das variveis e da fatorial Clculo da fatorial com o contador em 2 Clculo da fatorial com o contador em 3 Clculo da fatorial com o contador em 4 Clculo da fatorial com o contador em 5

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

42

Perceba que quando a varivel CONTADOR est com valor 5, a varivel FATORIAL est com o valor 120. Neste ponto, o looping encerrado e apresentado o valor da varivel FATORIAL. Pseudocdigo (Portugus Estruturado) Incio inteiro CONTADOR, FATORIAL; FATORIAL 1; CONTADOR 1; Enquanto (CONTADOR <= 5) Faa inicio FATORIAL FATORIAL * CONTADOR; CONTADOR CONTADOR + 1; fim Fimenquanto; Escreva (Fatorial de 5 = , FATORIAL); Fim. Vamos reescrever o algoritmo do fatorial, mas agora possibilitando fornecer qualquer nmero, para que o mesmo seja calculado. Incio inteiro CONTADOR, FATORIAL, NUMERO; FATORIAL 1; CONTADOR 1; Leia (NUMERO); Enquanto (CONTADOR <= NUMERO) Faa inicio FATORIAL FATORIAL * CONTADOR; CONTADOR CONTADOR + 1; fim Fimenquanto; Escreva (Fatorial de , NUMERO, = , FATORIAL); Fim. 5.4 REPETIO COM TESTE NO FINAL ( Repita .. at) Para realizar a repetio com teste no final, utilizamos a estrutura repita, que permite que um bloco ou ao primitiva seja repetido at que uma determinada condio seja verdadeira.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

43

Repita <bloco de instruo> Comando 1; Comando 2; . . Comando n; At <condio>

N
<condio>

S Lao com no mnimo um ciclo Pela sintaxe da estrutura, percebemos que o bloco (Comando 1 ... Comando n) executado pelo menos uma vez, independente da validade da condio. Isto ocorre porque a inspeo da condio feita aps a execuo do bloco.

Exemplos: a) Resoluo do exemplo1: Inicio Inteiro numero, quadrado; Escreva (Informe numero); Leia (numero); Repita quadrado numero * numero; Escreva (O quadrado do numero , numero, , quadrado); Escreva (Informe prximo numero ); Leia (numero); At (numero <= 0) Fim. b) Resoluo do exemplo3: incio { declarao de variveis } real media; inteiro contador, soma, idade; contador 0; soma 0; repita leia (idade); soma soma + idade; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 44

contador contador+ 1; contador >= 50; { teste da condio } at media soma / 50; escreva (media da idade = , media); fim. A utilizao de uma estrutura repita no lugar de uma estrutura enquanto corresponde a utilizar como <condio> para o repita a negao da <condio>do enquanto. c) Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma adega, tendo como dados de entrada tipos de vinho (branco, tinto e rose). Especifique a porcentagem de cada tipo sobre o total geral de vinhos; a quantidade de vinhos desconhecida (usar como finalizador a constante fim). Incio caractere tipo_vinho; inteiro cont_vinhos, cont_tinto, cont_branco, cont_rose; real perc_tinto, perc_branco, perc_rose; cont_vinhos cont_tinto cont_branco cont_rose 0; repita leia (tipo_vinho); se tipo_vinho = tinto ento cont_tinto cont_tinto + 1; seno se tipo_vinho = branco ento cont_branco cont_branco + 1; seno se tipo_vinho = rose ento cont_rose cont_rose+ 1; fimse; fimse; fimse; cont_vinhos cont_vinhos + 1; at tipo_vinho = fim; cont_vinhos cont_vinhos 1; se cont_vinhos > 0 ento incio perc_tinto cont_tinto * 100 / cont_vinhos; perc_branco cont_branco * 100 / cont_vinhos; perc_rose cont_rose * 100 / cont_vinhos; escreva (porcentagem de tintos = , perc_tinto); escreva (porcentagem de brancos = , perc_branco); escreva (porcentagem de roses = , perc_rose); fim; seno escreva (nenhum tipo de vinho foi fornecido!); fimse; fim. d) Voltemos ao clculo do fatorial do nmero 5. Incio inteiro CONTADOR, FATORIAL; FATORIAL 1; CONTADOR 1; repita FATORIAL FATORIAL * CONTADOR; CONTADOR CONTADOR + 1; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 45

at CONTADOR > 5; escreva (Fatorial de 5 = , FATORIAL); Fim.

5.5 Diferenas de ENQUANTO FAA e REPITA AT


importante saber diferenciar as instrues para saber quando utiliz-las. No enquanto, a condio verificada antes de qualquer instruo contida no bloco ser executada, isto significa que, se a condio no for satisfeita na primeira execuo, as instrues contidas no bloco no sero executadas nenhuma vez. Para o repita, necessria a execuo, de pelo menos uma vez, do bloco de instrues para poder testar a condio, pois a condio sempre testada no final da instruo, ao contrrio do enquanto que testa a condio no incio. Verifique os algoritmos de exemplo de cada uma das instrues e veja as diferenas do resultado obtido para o mesmo conjunto de valores. 5.6 CONCEITO DE FLAG (bandeira sinalizadora) Um Flag, ou uma bandeira, uma varivel sinalizadora que possibilita criar pontos de controle em um algoritmo de modo a otimizar um processo, marcar um estado, entre outras funes. O flag pode ser uma varivel de qualquer tipo, desde que se estabelea dois estados para a mesma. Uma varivel flag pode ser lgica, uma vez que seus estados sero V ou F. O exemplo abaixo mostra o uso de um flag para controlar se em determinado momento na cadeia de caracteres digitada pelo usurio fora inserido o caracter A. A condio de parada do algoritmo a leitura do caracter F. {ALGORITMO EXEMPLO_FLAG} INICIO LOGICO FLAG; CARACTER LETRA; FLAG .F.; REPITA LEIA (LETRA); ESCREVA (LETRA); SE LETRA = A ENTAO FLAG .V.; ATE (LETRA = F); SE FLAG ENTAO ESCREVA (NAS LETRAS O (A) FOI DIGITADO); FIM. O Flag sempre possui um estado inicial, definido pelo algoritmo, a troca de estado acontece quando uma condio de controle satisfeita. 5.7 REPETIO COM VARIVEL DE CONTROLE ( Para ... faa ) Nas estruturas de repetio vistas at agora, ocorrem casos em que se torna difcil determinar quantas vezes o bloco ser executado. Sabemos que ele ser executado enquanto uma condio for satisfeita enquanto -, ou at que uma condio seja satisfeita repita. A estrutura para repete a execuo do bloco um nmero finito de vezes, pois ela possui limites fixos:

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

46

Para var de vi at vf passo p faa inicio Var Incio, Fim, Incremento S N Comando 1; Comando 2; . . Comando n; Instrues fim Fimpara;

Onde: var a varivel de controle; vi o valor inicial da varivel var; vf o valor final da varivel var, ou seja, o valor at o qual ela pode chegar; p o valor do incremento dado varivel var. Possumos ento um contador de forma compacta, em que sempre temos uma inicializao (vi) da varivel de controle (var), um teste para verificar se a varivel atingiu o limite (vf) e um acrscimo (incremento de p) na varivel de controle aps cada execuo do bloco de repetio.

Exemplos: a) voltemos ao clculo da mdia aritmtica da idade de 50 pessoas. Incio real media; inteiro contador, soma, idade; soma 0; faa para contador de 1 at 50 passo 1 inicio leia (idade); soma soma + idade; fim fimpara; media soma /50; escreva (media da idade = , media); fim. 47

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

b)

Elabore um algoritmo que efetue a soma de todos os nmeros mpares que so mltiplos de trs e que se encontram no conjunto dos nmeros de 1 at 500. Incio Inteiro soma_impares, {soma dos nmeros mpares mltiplos de trs } contador; soma_impares 0; para contador de 1 at 500 passo 1 faa inicio se (contador mod 2) <> 0 {o nmero impar?} ento se (contador mod 3) = 0 {mltiplo de trs?} ento soma_impares soma_impares+ 1; fimse; fimse; fim fimpara; escreva (soma = , soma_impares); fim. Voltemos ao clculo do fatorial do nmero 5. Incio inteiro CONTADOR, FATORIAL; FATORIAL 1; para CONTADOR de 1 at 5 passo 1 faa FATORIAL FATORIAL * CONTADOR; fimpara; Escreva (Fatorial de 5 = , FATORIAL); Fim.

c)

5.8 COMPARAO ENTRE ESTRUTURAS DE REPETIO Podemos estabelecer dois postulados que relacionam as estruturas de repetio: Toda estrutura Enquanto pode ser convertida para Repita e vice_versa; Toda estrutura Para pode ser convertida em Enquanto, mas nem toda estrutura Enquanto pode ser convertida em Para. Temos tambm a seguinte tabela comparativa que relaciona as caractersticas de cada estrutura de repetio: Estrutura Enquanto Repita Para Condio Incio Final No tem Quantidade de Execues ? Mnimo 1 (vf vi + p) div p Condio de Existncia Condio verdadeira Condio falsa var < vf

Exemplos: a) elabore um algoritmo que, utilizando as trs estruturas de repetio, imprima a tabuada do nmero 5. Utilizando Enquanto: Inicio inteiro contador; contador 1; enquanto contador <= 10 faa inicio Apostila didtica Lgica de Programao Profa Jusane Farina Lara 48

escreva (contador, x 5 = , contador * 5); contador contador + 1; fim fimenquanto; fim. Utilizando Repita: Inicio Inteiro contador; contador 1; repita Escreva (contador, x 5 = , contador * 5); contador contador + 1; at contador > 10; Fim. Utilizando Para: Inicio Inteiro contador; para contador de 1 at 10 passo 1 faa Escreva (contador, x 5 = , contador * 5); fimpara; Fim. b) Modifique o algoritmo para que este imprima a tabuada de quaisquer nmeros, sendo que estes nmeros so fornecidos pelo usurio, at encontrar como finalizador 1. Sabendo que primeiro nmero-base fornecido no 1: Utilizando Enquanto: Inicio Inteiro numero, contador; Leia (numero); Enquanto numero <> -1 faa inicio Contador 1; Enquanto contador <= 10 faa Inicio Escreva (contador, x , numero, = , contador * numero); Contador contador + 1; fim Fimenquanto; Leia (numero); fim Fimenquanto; Fim.

Utilizando Repita: Inicio Inteiro numero, contador; Leia (numero); Repita Contador 1; Repita Escreva (contador, x , numero, = , contador * numero); Contador contador + 1; At contador > 10; Leia (numero); Apostila didtica Lgica de Programao Profa Jusane Farina Lara

49

At Fim.

numero = -1;

Utilizando Para: Inicio Inteiro numero, contador, var_controle; Leia (numero); Para var_controle de 1 at ????? passo 1 faa inicio Para contador de 1 at 10 passo 1 faa Escreva (contador, x , numero, = , contador * numero); fimpara; ????? Leia (numero); ????? fim fimpara; Fim. Verificamos neste exemplo o segundo postulado, ou seja, a impossibilidade de construir este algoritmo utilizando a estrutura Para. Do Enquanto ao PARA-FAA Podemos verificar a diferena do enquanto e o para-faa, no somente no sentido de lao infinito e finito. Abaixo temos uma instruo para-faa e logo aps uma instruo enquanto que realizam a mesma funo ler 10 valores e exibir a soma dos mesmos. Com o para-faca, muitas coisas no precisam ser controladas como acontece no enquanto deste exemplo. No enquanto utiliza-se um contador para limitar o lao, todo o controle deste contador deve ser realizado pelo desenvolvedor do algoritmo. No para-faa, o controle de contagem feito pela prpria instruo.
{ ALGORITMO COM_ENQUANTO } INICIO INTEIRO SOMA, CONTADOR, NUMERO; LEIA (NUMERO); CONTADOR 1; SOMA NUMERO; ENQUANTO (CONTADOR < 10) FACA inicio LEIA (NUMERO); SOMA SOMA + NUMERO; CONTADOR CONTADOR + 1; fim FIM ENQUANTO; ESCREVE (SOMA); FIM. { ALGORITMO COM_PARA_FACA } INICIO INTEIRO SOMA, CONTADOR, NUMERO; PARA (CONTADOR de 1 ATE 10 PASSO 1) FACA inicio LEIA (NUMERO); SOMA SOMA + NUMERO; fim FIM PARA; ESCREVE (SOMA); FIM.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

50

CAPTULO 6 TIPOS DE DADOS HOMOGNEOS

6.1 INTRODUO
Como estudado anteriormente, uma varivel simples 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. Porm, so muito comuns as situaes prticas em que se necessita referenciar um grupo de variveis do mesmo tipo pelo mesmo nome simblico. Para satisfazer a esta necessidade foi criado o conceito de variveis indexadas, que um conjunto de variveis do mesmo tipo, referenciveis pelo mesmo nome e individualizadas entre si de sua posio dentro desse conjunto. O termo indexada provm da maneira como esta individualizao feita: por meio de ndices. Uma varivel indexada pode ser definida como tendo ou mais ndices. No caso em que um nico ndice usado a varivel indexada chamada de vetor. Quando uma varivel indexada possui dois ndices, ela chamada de matriz. Estes termos (vetor e matriz) so adotados em analogia aos conceitos usados na Matemtica e na Fsica. Teoricamente no h qualquer restrio quanto existncia de variveis indexadas com trs ou mais ndices, mas na prtica sua ocorrncia muito pouco freqente. Ao nmero de ndices necessrios localizao de um componente (elemento) dentro da varivel indexada d-se o nome de dimenso ou tamanho. 6.2 VETORES Quando possumos uma ordem e um ndice de acesso aos elementos de um conjunto, ento, temos caracterizado um vetor. Para declarar um vetor a sintaxe segue abaixo: Tipo_de_dado Onde: Tipo_de_dado o tipo de dado correspondente aos elementos da varivel indexada. Nome_da_varivel o nome simblico pelo qual o conjunto (varivel indexada) identificado. Tamanho o valor mximo do ndice da varivel para a dimenso. nome_da_varivel[tamanho]; { vetor }

ndice Do Vetor

Nome do Vetor

Valor do ndice Vetor de tamanho definido

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

51

Para utilizar um vetor, colocamos o nome da varivel mais o ndice entre colchetes. Exemplo: { Algoritmo PrimeiroVetor } INICIO Inteiro V[3]; Inteiro I; LEIA (V[1]); LEIA (V[2]); LEIA (V[3]); FIM. O mesmo algoritmo poderia ser incrementado da seguinte maneira: ALGORITMO PRIMEIROVETOR; INICIO Inteiro V[3], I; PARA (I de 1 ATE 10 PASSO 1) FACA LEIA (V[I]); FIM PARA; FIM.

Um vetor deve ser entendido como uma varivel que possui mltiplos valores. Para acessar estes valores necessrio informar a posio desejada. Esta posio varia de 1 at o tamanho mximo definido na declarao de tipo do vetor. A figura abaixo demonstra o vetor. Dado um vetor de n posies, composto de nmeros inteiros, tm-se a seguinte representao: Valor 4 5 7 8 9 0 0 9 9 7 ndice 1 Logo: 2 3 4 5 6 7 8 9 ... n

O valor na posio 1 4; O valor 9 se encontra nas posies: 5, 8 e 9. O maior valor do vetor o 9 e se encontra nas posies 5, 8 e 9. O menor elemento do vetor o 0 e se encontra nas posies 6 e 7.

6.2.1 Leitura de Vetores Para se efetuar a leitura de um vetor necessrio a utilizao de um instruo PARA FACA variando de 0 at o (tamanho mximo - 1) definido na declarao de tipo do vetor. necessria a declarao de uma varivel do tipo inteiro que servir de ndice para termos acesso ao valor de determinada posio. Exemplo: PARA (i de 0 ATE 4 PASSO 1) FACA LEIA (Valor [i]); FIM PARA; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 52

6.2.2 Escrita de Vetores A escrita de vetores segue a regra da leitura de vetores. Para escrever o valor contido na posio desejada basta escrever a seguinte instruo: ESCREVA (Vetor [posio]);

6.2.3 Operaes com Vetores Vetores podem ser manipulados de diversas maneiras. possvel alm da leitura ou escrita em vetores, efetuar atribuio de valores nas posies de um vetor. Como exemplo, vamos gerar um vetor que contem os nmeros pares entre 1 e 10. Para tal, precisaremos de um vetor de 5 posies, pois temos os nmeros 2,4,6,8 e 10 como resultado do mesmo.
{ ALGORTIMO VETORDEPARES: GERA OS NMEROS PARES } INICIO INTEIRO PARES[5]; INTEIRO I, CONT; CONT 2; PARA (I de 0 ATE 4 PASSO 1) FACA PARES[I] CONT; CONT CONT + 2; FIM PARA; FIM.

O mapa de memria do computador, de acordo com o algoritmo acima, poderia ser imaginado conforme a figura a seguir.

I 0 1 Pares cont 2 3 4

A seguir, apresentado um exemplo onde faz-se a leitura de 10 nmeros do tipo inteiro, armazenando-os num vetor X. Para cada valor lido verifica-se se o nmero par, se sim, este armazenado num vetor J. No final mostrado o vetor J com os elementos pares. inicio inteiro X[10], J[10], i, ind=0; escreva (Entrada de dados do vetor X); para (i de 0 at 9 passo 1) faa inicio escreva(digite um numero); leia (X[i]); se (X[i] mod 2 = 0) { testa se o numero par} ento inicio J[ind] = X[i]; { ind controla o ndice do vetor J} ind = ind + 1; fim; fimse; fim; fimpara; Apostila didtica Lgica de Programao Profa Jusane Farina Lara 53

escreva (sada de dados do vetor J nmeros pares) para (i de 0 at ind-1 passo 1) faa { ind : indica a parada do lao } escreva (J[i]); fimpara; fim. Abaixo descrevemos algumas operaes, comparaes e troca de valores entre posio de vetores: Dado o Vetor V de 5 posies, temos: Item Ler valor para o ndice 1 Escrever o valor no ndice 2 Atribuir 9 como valor do ndice 3 Atribuir o valor do ndice 2 no valor do ndice 3 Comparar valores dos ndices dos vetores Exemplo LEIA (V[1]); ESCREVA (V[2]); V[3] 9;

V[3] V[2]; SE (V[1] = 4)... SE (V[1] > V[2]) ... V[2]; Trocar os valores de ndices 2 e 3 do vetor, AUX precisa-se de uma varivel aux do mesmo V[2] V[3]; tipo do contedo do vetor. V[3] AUX;

6.3 MATRIZES
Matrizes so um conjunto de valores que possuem mais de um ndice para serem acessados. Um vetor possui apenas uma dimenso, quando temos mais de uma dimenso ento utilizamos as matrizes.

Para declarar uma matriz a sintaxe segue abaixo: Tipo_de_dado nome_da_variavel[tam1][tam2]; { matriz }

Inteiro matriz[3][3]; { matriz 3 x 3 do tipo inteiro } Real m[4][4]; { matriz 4 x 4 do tipo real }

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

54

1 2 3 4 5 6 7 8

Notas 4,5

Notas 7,3 9,2

Notas 8,9

Notas 8,0

3,6

I = linha

J = coluna

Notas[3] [2] = 9,2

Exemplo da representao da matriz notas[8][4] = notas[i][j]

6.3.1 Leitura e Escrita de Matrizes Para efetuarmos a leitura ou escrita de dados de uma matriz utilizamos um processo semelhante ao da leitura de um vetor. Como uma matriz, ao contrrio do vetor, possui mais de uma dimenso, o nmero de laos necessrio para efetuar-se a leitura da mesma exatamente proporcional a esta dimenso. O exemplo abaixo demonstra como deve ser feito o algoritmo de leitura e de escrita de uma matriz bidimensional. Inteiro m[5][5], i, j; Escreva (Entrada de dados da Matriz); Para (i de 0 at 4 passo 1) faa { i controle das linhas } Para (j de 0 at 4 passo 1) faa { j controle das colunas} leia (m[i][j]); Fimpara; Fimpara; Escreva (Sada de dados da Matriz); Para (i de 0 ATE 4 PASSO 1) FACA { i controle das linhas } Para (j de 0 ATE 4 PASSO 1) FACA { j controle das colunas} escreva (m[i][j]); Fimpara; Fimpara;

A seguir, tem-se o exemplo para encontrar o maior elemento apenas da diagonal principal da matriz. Inteiro maior; maior = m[0][0]; { a varivel maior recebe o 1 elemento da matriz }

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

55

Para (i de 1 at 4 passo 1) faa Se (m[i][i] > maior) { diagonal principal: linha = coluna} maior = m[i][i]; Fimse; Fimpara; Escreva (maior elemento da diagonal principal = , maior);

Note que necessrio o aninhamento de laos para ler as posies de uma matriz. Tanto quanto for 5, 8 e 9 ser tambm o tamanho do aninhamento de laos necessrios para a leitura de uma matriz. O lao mais interno quem realiza a leitura, escrita ou atribuio do valor a posio da matriz. 6.3.2 Operaes com Matrizes As matrizes so definidas por um nmero de colunas e um nmero de linhas (duas dimenses), opcionalmente pode ser adicionado um nmero de folha ou pgina (trs dimenses). As figuras abaixo descrevem uma matriz bi e tridimensional. Colunas

Linhas

4 Pginas 5

Para recuperar um valor na primeira matriz, devemos indicar o valor da coluna, linha onde est o valor. J na segunda matriz, devemos indicar tambm o valor correspondente a pgina onde se encontra o valor.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

56

6.3 MATRIZES QUADRADAS So matrizes que possuem a quantidade de linhas igual a quantidade de colunas, formando um quadrado. Exemplo 1: Diagonal principal

Se linha = coluna Ento ... Exemplo 2: Tringulo superior

Se linha < coluna Ento ... Exemplo 3: Tringulo inferior

Se linha > coluna Ento ... Exemplo 4: Diagonal secundria

Se linha = totalcolunas coluna +1 Ento ...

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

57

REFERNCIAS
GUIMARES, A. M.; LAGES, N. A C. Algoritmos e Estrutura de Dados. Rio de Janeiro, ed. LCT, 18a tiragem, 1994. HOLZNER, ??? MANZANO, J.A.N.G. Lgica Estruturada para Programao de Computadores. So Paulo, ed. rica, 2001. MANZANO & OLIVIERA. Algoritmos Lgica para Desenvolvimento de Programao de Computadores. So Paulo, ed. rica, 2000. MANZANO & OLIVIERA. Estudo Dirigido de Algoritmos. So Paulo, ed. rica, 1997. ROCHA, Ana Regina da; MALDONADO, J.C.; WEBER, K.C. Qualidade de Software: teoria e prtica. So Paulo, Prentice Hall, 2001. VENNCIO, C. F. Desenvolvimento de Algoritmos Uma Nova Abordagem. So Paulo, ed. rica, 1997. VILLANO, I. C. Algoritmos e Pascal Manual de Apoio. Rio de Janeiro: Ed. Cincia Moderna Ltda, 2000.

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

58

You might also like