Apostila algoritmo

download Apostila algoritmo

of 58

Transcript of Apostila algoritmo

UNIVERSIDADE TUIUTI DO PARAN

APOSTILA DIDTICA

LGICA DE PROGRAMAO

Profa Jusane Farina Lara

Curitiba / 2010

SUMRIO

CAPTULO 1 NOES BSICAS SOBRE ALGORITMOS (LGICA) ........................... 41.1 INTRODUO ............................................................................................................................4 1.2 LGICA........................................................................................................................................4 1.3 SEQNCIA LGICA...............................................................................................................5 1.4 INSTRUES..............................................................................................................................5 1.5 O ALGORITMO ..........................................................................................................................61.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 ......................................................................................142.1 INTRODUO ..........................................................................................................................14 2.2 TIPOS DE DADOS ....................................................................................................................142.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 ...............................................................................................................................152.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 ..................................... 233.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 ............................................................................................................................................................263.9.3 ESTRUTURA SEQENCIAL............................................................................................................ 26

CAPTULO 4 COMANDOS DE SELEO.......................................................................284.1 INTRODUO ..........................................................................................................................28 4.2 ESTRUTURAS DE SELEO ................................................................................................284.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 ..................................................................375.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......................................................... 516.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

3

CAPTULO 1 NOES BSICAS SOBRE ALGORITMOS (LGICA)

1.1 INTRODUOEste 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 LGICALgica 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 LGICASegundo (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 INSTRUESNuma 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 ALGORITMODe 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 PSEUDOCDIGOOs 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

9

1.7 REGRAS PARA CONSTRUO DE ALGORITMOSPara 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 SADADefinimos 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 ALGORITMOVamos 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 MESAAps 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.DefinioAnlise de Sistema Planejamento Projeto Anlise de Requisitos

DesenvolvimentoProjeto do Software Codificao Teste

Atividades de Apoio

Produto de SoftwareOperao

Revises Documentao Controle de Mudanas

ManutenoEntender 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

DesenvolvimentoProjeto 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

ProgramaRevises Documentao Controle de Mudanas

Operao

ManutenoEntender 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 INTRODUOEste 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 DADOSTodo 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 CONSTANTESTem-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 VARIVEISA 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

InformaoAtributos 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 Gaveta25Figura 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 ARITMTICASO 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.

H

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 = 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 ento Incio { bloco verdade 2 } C1; Cn; Fim; { bloco verdade 2 } seno Se ento Se 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 2V F F F V -

Condio 3V F F

Condio 4V F

Condio 5V -

Ao ExecutadaBloco 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

Seqncia A de comandos

Escolha Caso Seqncia A de comandos

F V

Seqncia A de comandos

Caso Seqncia A de comandos ... Caso Seqncia n de comandos Caso contrrio Seqncia s de comandos Fim_escolha

F V

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 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 INTRODUOExistem 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 for verdadeira.

N

S

Enquanto 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 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 , 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 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 coluna Ento ... Exemplo 4: Diagonal secundria

Se linha = totalcolunas coluna +1 Ento ...

Apostila didtica Lgica de Programao Profa Jusane Farina Lara

57

REFERNCIASGUIMARES, 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