Você está na página 1de 34

Introduao a Algoritmos c `

Prof. Marcos Alves Mariano Curso de Engenharia Civil

Centro de Cincias Exatas e da Terra e Centro Universitrio da Grande Dourados a 2012

Conte do u
Conte do u 1 Introduo ` Computao ca a ca 1.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Algoritmos e Resoluo de Problemas . . . . . . . . . . . . . . ca 1.3 Algoritmos e Computadores . . . . . . . . . . . . . . . . . . . 2 Desenvolvimento de Algoritmos - Parte I 2.1 Componentes de um Algoritmo . . . . . . 2.2 Uma Linguagem para Algoritmos . . . . . 2.3 Tipos de Dados . . . . . . . . . . . . . . . 2.4 Variveis . . . . . . . . . . . . . . . . . . . a 2.5 Constantes . . . . . . . . . . . . . . . . . . 2.6 Operadores . . . . . . . . . . . . . . . . . 2.6.1 Operador de Atribuiao . . . . . . c 2.6.2 Operadores Aritmticos . . . . . . e 2.6.3 Comando de Atribuiao . . . . . . c 2.6.4 Precedncia de Operadores . . . . . e 2.6.5 Entrada e Sa . . . . . . . . . . . da 2.6.6 Estrutura Geral de um Algoritmo . 3 Desenvolvimento de Algoritmos - Parte II 3.1 Expresses Condicionais . . . . . . . . . . o 3.1.1 Relaes . . . . . . . . . . . . . . . co 3.1.2 Operadores Lgicos . . . . . . . . . o 3.2 Estruturas de Controle . . . . . . . . . . . 3.2.1 Estruturas Condicionais . . . . . . 3.2.2 Estruturas de Repetio . . . . . . ca 2 3 3 6 7 10 10 12 13 14 16 16 17 17 18 18 19 20 22 22 22 23 26 26 29

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

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

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

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

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

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

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

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

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

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

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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

Cap tulo 1 Introduo ` Computao ca a ca


Computadores so dispositivos que s sabem fazer um tipo de coisa: exea o cutar algoritmos para processar informaao. Para cientistas da Computao, c ca algoritmo o conceito central da Computaao. e c Neste Tpico, introduziremos a noao de algoritmo, mostraremos alguns o c exemplos, abordaremos a relao algoritmo-computador e discutiremos sobre ca a Computaao e suas reas. c a

1.1

Algoritmo

H tantas denioes diferentes para o termo algoritmo quanto autores a c escrevendo sobre elas. Entretanto, todas estas denioes concordam que um c algoritmo uma sequncia de instruoes para resolver um problema, a qual e e c possui as seguintes propriedades: Garantia de trmino: o problema a ser resolvido possui condioes e c espec cas que, quando satisfeitas, a execuao do algoritmo encerc e rada e o problema ento tido como resolvido. Alm disso, estas e a e condioes devem ser satisfeitas aps uma quantidade nita de tempo, c o a ser contado a partir do in da execuo do algoritmo. cio ca Exatido: a inteno de cada instruao no algoritmo deve ser sucia ca c entemente clara, de forma que no haja ambiguidade na interpretao a ca da intenao. c Efetividade: cada instruao deve ser bsica o suciente para ser exec a cutada, pelo menos em princ pio, por qualquer agente usando apenas lpis e papel. a 3

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

Para exemplicar a noo de algoritmo, considere o problema de encontrar ca o mximo divisor comum (MDC) de dois nmeros naturais quaisquer e a a u seguinte sequncia de instruoes para resolver o problema: e c 1. Chame o maior nmero de a e o menor de b; u 2. Divida a por b e chame o resto de r; 3. Se r igual a zero ento o MDC igual a b e a execuo das instrues e a e ca co encerra aqui. Caso contrrio, siga para a prxima instruo; a o ca 4. Atribua o valor de b a a e o valor de r a b; 5. Volte para a instruao 2. c Esta sequncia de instruoes um algoritmo para o problema e encontrar e c e o MDC de dois nmeros naturais quaisquer. Pois, se seguida, resolve qualquer u ocorrncia do problema. A execuao da sequncia sempre pra aps uma e c e a o quantidade nita de tempo. Isto garantido pela instruao 3, que compara e c o valor de r a zero e termina a execuao se r igual a 0. Cada instruo da c e ca sequncia clara e poss de ser executada por qualquer pessoa que saiba, e e vel pelo menos, dividir dois nmeros. u Como era de se esperar, nem toda sequncia de instruoes para resolver e c um determinado problema pode ser considerada um algoritmo. Por exemplo, se a instruao Divida x por y se todo nmero inteiro par maior que 2 a c u e soma de dois nmeros primos estiver presente na sequncia, ela s poder u e o a ser executada se soubermos se a proposio todo nmero inteiro par maior ca u que 2 a soma de dois nmeros primos verdadeira ou falsa. Entretanto, e u e esta proposiao, conhecida como conjectura de Goldbach, foi proposta c em 1742 e continua sem soluo at hoje. Logo, nossa instruao no pode ca e c a ser executada por qualquer agente hoje em dia e, portanto, no pode fazer a parte de um algoritmo. Um outro exemplo de instruo que no pode fazer parte de um algoritmo ca a Escreva todos os nmeros e u mpares. Neste caso, temos uma instruao c que no pode ser executada porque a execuo nunca terminar, apesar de a ca a sabermos exatamente como determinar os nmeros u mpares. Observe que se modicssemos a instruo para Escreva todos os nmeros a ca u mpares menores do que 100, ela poderia, perfeitamente, fazer parte de um algoritmo. Um problema para o qual existe uma soluo na forma de algoritmo ca e dito um problema algor tmico. O problema de encontrar o MDC de dois nmeros naturais quaisquer , portanto, um problema algor u e tmico. Problemas algor tmicos, em geral, possuem muitas ocorrncias. Por exemplo, para e 4

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

o problema de encontrar o MDC de dois nmeros naturais, cada ocorrncia u e uma dupla distinta de nmeros naturais cujo MDC queremos encontrar. e u Um algoritmo dito correto quando ele sempre termina e produz a resposta e correta para todas as ocorrncias de um dado problema. e Algoritmo, ento, pode ser imaginado como a especicao de um proa ca cesso mecnico que, quando executado, leva-nos a soluao de algum proa ` c blema. Embora o termo algoritmo esteja relacionado intimamente com a Cincia da Computaao, algoritmos tm sido parte de nossas vidas desde a e c e primeira vez que uma pessoa explicou para outra como fazer alguma coisa. As pessoas utilizam algoritmos quando seguem receitas culinrias ou insa truoes para programar algum aparelho eletrnico. Entretanto, nem todo c o algoritmo pode ser executado por um computador. Um computador pode executar apenas aqueles algoritmos cujas instrues envolvam tarefas que ele co possa entender e executar. Este no o caso, por exemplo, de instruoes a e c como bata as gemas e ligue a TV. Computadores executam algoritmos que manipulam apenas dados e no a coisas f sicas, tais como gema de ovo e TV. A execuao de um algoritmo c por um computador denominada processamento de dados e consiste e de trs partes: uma entrada, um processo e uma sada. A entrada um e e conjunto de informaoes que requisitada para que as instrues do algoritmo c e co possam ser executadas. O processo a sequncia de instruoes que compe e e c o o algoritmo. A sa o resultado obtido com a execuao do processo para da e c a entrada fornecida. Por exemplo, a entrada e a sa para uma computaao da c do algoritmo para o problema de encontrar o MDC de dois nmeros naturais u so, respectivamente, dois nmeros naturais e o MDC deles. a u Quando escrevemos algoritmos para serem executados por computador, temos de fazer algumas suposies sobre o modelo de computao entradaco ca processo-sada. A primeira delas que, a m de realizar qualquer com e putaao, o algoritmo deve possuir um meio de obter os dados da entrada. c Esta tarefa conhecida como leitura da entrada. A segunda, que o ale e goritmo deve possuir um meio de revelar o resultado da computaao. Isto c conhecido como escrita dos dados da sa e da. Todo e qualquer computador possui dispositivos atravs dos quais a leitura e a escrita de dados so e a realizadas.

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

1.2

Algoritmos e Resoluo de Problemas ca

Todo algoritmo est relacionado com a soluo de um determinado proa ca blema. Portanto, construir um algoritmo para um dado problema signica, antes de mais nada, encontrar uma soluao para o problema e descrev-la c e como uma sequncia nita de aoes. e c A tarefa de encontrar a soluao de um problema qualquer , em geral, rec e alizada de forma emp rica e um tanto quanto desorganizada; ocorrem vrios a procedimentos mentais, dos quais raramente tomamos conhecimento. A organizaao do procedimento de resoluao de problemas extremamente dec c e sejvel, pois somente assim podemos vericar onde o procedimento no est a a a eciente. Identicadas as decincias, procuramos formas de corrigi-las e, e consequentemente, aumentamos a nossa capacidade de resolver problemas. A capacidade para resolver problemas pode ser vista como uma habilidade a ser adquirida. Esta habilidade, como qualquer outra, pode ser obtida pela combinao de duas partes. ca Conhecimento: adquirido pelo estudo. Em termos de resoluao de c problemas, est relacionado a que tticas, estratgias e planos usar e a a e quanto usar; Destreza: adquirida pela prtica. A experincia no uso do conhecia e mento nos d mais agilidade na resoluao de problemas. a c Independente do problema a ser resolvido, ao desenvolvermos um algoritmo devemos seguir os seguintes passos: Anlise preliminar: entender o problema com a maior preciso a a poss vel, identicando os dados e os resultados desejados; Soluo: desenvolver um algoritmo para o problema; ca Teste de qualidade: executar o algoritmo desenvolvido com uma entrada para o qual o resultado seja conhecido; Alterao: se o resultado do teste de qualidade no for satisfatrio, ca a o altere o algoritmo e submeta-o a um novo teste de qualidade; Produto nal: algoritmo conclu e testado, pronto para ser aplido cado.

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

1.3

Algoritmos e Computadores

Desde que o homem comeou a processar dados, ele tentou construir c mquinas para ajuda-lo em seu trabalho. O computador moderno o rea e sultado dessas tentativas que vm sendo realizadas desde o ano 1.200 a.c. e com a invenao da calculadora, denominada abaco, a qual foi mais tarde c aperfeioada pelos chineses. O computador , sem dvida alguma, um dos c e u principais produtos da cincia sculo XX. e e O que um computador? De acordo com o Websters New World Dictie onary of the American Language (segunda ediao), um computador uma c e mquina eletrnica que, por meio de instruoes e informaes armazenadas, a o c co executa de maneira rpida e frequente, clculos complexos ou compila, correa a laciona e seleciona dados. Basicamente, um computador pode ser imaginado como uma mquina que manipula informaao na forma de nmeros e caractea c u res. Esta informaao referenciada como dado. O que faz dos computadores c e uma mquina notvel a extrema rapidez e preciso com que eles podem a a e a armazenar, recuperar e manipular dados. Quando desejamos utilizar um computador para nos auxiliar na tarefa de processamento de dados, deparamo-nos com alguns problemas inerentes a este processo: Como informaremos ao computador o algoritmo que deve ser executado para obtermos o resultado desejado?, Como forneceremos a entrada do algoritmo? e Como receberemos o resultado do algoritmo? O ato de instruir o computador para que ele resolva um determinado problema conhecido como programao. Esta tarefa nada mais do que e ca e inserir no computador as aes do algoritmo que corresponde a soluao do co ` c problema e os dados referenciados pelas aoes. Entretanto, antes de inserir c as aes e os dados no computador, devemos reescrev-las em uma linguaco e gem apropriada para descrever algoritmos computacionais, ou seja, em uma linguagem de programao. ca O termo programa comumente empregado para designar o algoritmo e em uma linguagem de programao. Entretanto, no distinao conceitual enca a c tre algoritmo e programa no que diz respeito ` linguagem em que eles esto a a escritos. A unica diferena que um programa no necessariamente termina. c e a Um exemplo de programa que nunca termina o sistema operacional de um e computador. Como os programas a serem estudados neste curso sempre terminaro, ns utilizaremos os termos programa e algoritmo como sinnimos. a o o

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

Cada computador possui uma linguagem e programaao prpria, denoc o minada linguagem de mquina, e, em geral, distinta das linguagens de a mquina dos demais modelos de computador. Esta a unica linguagem de a e programaao que o computador realmente entende. No entanto, para evitar c que ns tenhamos de aprender a linguagem de mquina de cada computador o a diferente para o qual queremos programar, muitas linguagens de programao ca independentes de mquina foram criadas. Se voc aprende uma linguagem a e independente de mquina, estar apto, pelo menos em princ a a pio, a programar qualquer computador. As linguagens de programao independentes de mquina no so compreca a a a endidas pelos computadores. Ento, para que elas possam ser uteis para ns, a o um programa denominado compilador deve estar presente no computador. Um compilador para uma determinada linguagem de programao realiza a ca traduao automtica de um programa para a linguagem de mquina. Tudo c a a que ns temos a fazer para executar um programa escrito em uma linguao gem de programaao, que no a linguagem de mquina do computador, c a e a e compilar o nosso programa com o compilador espec co daquela linguagem. Tanto o algoritmo quanto os seus dados de entrada so inseridos nos a computadores por meio de equipamentos eletrnicos conhecidos como peo rifricos de entrada. O teclado e o mouse so exemplos de perifricos e a e de entrada. As instrues e os dados inseridos no computador atravs de co e um perifrico de entrada so armazenados em um dispositivo do computador e a denominado memria. Os dados de sa resultantes da execuo do algoo da ca ritmo pelo computador so apresentados tambm por meio de equipamentos a e eletrnicos denominados perifricos de sa o e da. O v deo e a impressora so a exemplos de perifricos de sa e da. O computador executa um determinado programa atravs de um disposie tivo interno denominado unidade central de processamento, mais conhecido no mundo dos computadores pela sua abreviaao em Ingls: CPU de c e Central Processing Unit. A CPU responsvel por buscar as instrues e os e a co dados do programa que esto armazenados na memria do computador, dea o codicar as instruoes e executar a tarefa descrita por elas com os respectivos c dados. A CPU pode ser imaginada como o crebro do computador. e No mundo dos computadores, voc ouvir as pessoas falarem sobre harde a ware e software. Hardware se refere a mquina propriamente dita e a todos ` a os perifricos conectados a ela. Software se refere aos programas que fae zem a mquina realizar alguma tarefa. Muitos pacotes de software esto a a dispon veis nos dias atuais. Eles incluem processadores de texto, sistemas gerenciadores de banco de dados, jogos, sistemas operacionais e compiladores. 8

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

Voc pode e aprender a criar seus prprios softwares. e a o Para aprender a criar softwares, voc dever adquirir capacidade para: e a Desenvolver algoritmos para solucionar problemas envolvendo transformaao de informao; c ca Usar uma linguagem de programaao. c Inicialmente, voc deve imaginar que aprender uma linguagem de proe gramaao, seja de mquina ou no, a tarefa mais dif porque seus proc a a e cil blemas tero solues relativamente fceis. Nada poderia ser mais enganoso! a co a A coisa mais importante que voc pode fazer como um estudante e de um curso de Computao desenvolver sua habilidade para reca e solver problemas. Uma vez que voc possui esta capacidade, voc pode e e aprender a escrever programas em diversas linguagens de programao. ca

Cap tulo 2 Desenvolvimento de Algoritmos - Parte I


Neste Tpico, voc encontrar uma breve descriao dos componentes de o e a c um algoritmo a aprender a construir algoritmos utilizando ao componentes a mais simples e uma linguagem de programao virtual. ca

2.1

Componentes de um Algoritmo

Quando desenvolvemos algoritmos, trabalhamos, tipicamente, com sete tipo de componentes: estrutura de dados, variveis, constantes, instrues a co de manipulao dados, expresses condicionais, estruturas de controle e ca o mdulos. Cada um destes tipos de componentes esto descritos brevemente o a a seguir: Estrutura de dados, variveis e constantes. Dados so reprea a sentaoes de informaoes usadas por um algoritmo. Isto inclui dados c c de entrada e sa da, bem como dados gerados pelo algoritmo para seu prprio uso. Quando um algoritmo executado por um computador, o e os valores dos dados por ele manipulados devem ser armazenados em algum depsito, de modo que tais valores estejam dispon o veis para serem usados pelo algoritmo a qualquer momento. A deniao da orc ganizaao interna de tais depsitos, bem como da relaao entre suas c o c partes, conhecida como estrutura de dados. e Na maior parte da vezes, desejamos que um depsito de dados o seja varivel, isto , que o seu contedo possa ser alterado durante a e u a execuo do algoritmo. Por exemplo, no algoritmo para calcular o ca MDC de dois nmeros naturais a, b e r so depsitos para valores de u a o 10

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

dados cujos contedos mudam durante a execuo do algoritmo. Ouu ca tras vezes, queremos que o contedo de um depsito de dados seja u o constante, ou seja, que ele no seja alterado durante a execuo do a ca algoritmo. Instrues para Manipulao de Dados. Qualquer algoritmo reco ca quer instruoes que faam o seguinte: obtenham valores de dados fornec c cidos pelo usurio e armazenem-os em uma estrutura de dados; manipua lem aqueles valores de dados, isto , modiquem o valor de uma varivel e a atravs de operaoes aritmticas, copiem o valor de uma varivel para e c e a outra, entre outras; comuniquem os valores de dados resultantes do algoritmo ao usurio. a Expresses Condicionais. Algoritmos tambm apresentam pontos o e de deciso. A capacidade de um algoritmo de tomar decises o que a o e o faz potente. Se um algoritmo no pudesse fazer mais do que seguir a uma unica lista de operaao, ento um computador nada mais seria do c a que uma mquina de calcular. a Tais decises so baseadas em expresses condicionais que, quando avao a o liadas, resultam em apenas um dos seguintes dois valores: verdadeiro ou falso. Por exemplo, no algoritmo para calcular o MDC de dois nmeros u naturais, a comparaao r igual a zero um exemplo de expresso c e e a condicional. O resultado desta comparaao pode ser apenas verdadeiro c ou falso, dependendo se r igual a zero ou no, respectivamente. e a Se uma expresso condicional verdadeira, o algoritmo pode agir de a e diferentes formas, tal como executar certas instruoes ou no executc a a las. Portanto, a partir do resultado de uma expresso condicional , o a algoritmo pode tomar decises diferentes. No algoritmo para calcular o o MDC, se a expresso condicional r igual a zero verdadeira, o a e e algoritmo encerra sua execuo. Do contrrio, ele continua a execuo. ca a ca Estruturas de Controle. Os elementos de um algoritmo que governam o que ocorre depois que um algoritmo toma deciso so denomia a nados estruturas de controle. Sem estruturas de controle, as decises o no possuem qualquer valor. Isto , o que adianta tomar uma deciso a e a se voc no pode efetu-la? Sem estruturas de controle, o algoritmo e a a apenas uma lista de instruoes que deve ser executada sequenciale c mente. Estruturas de controle permitem que um algoritmo possa tomar decises e, a partir delas, executar algumas instrues ou no, repetir o co a a execuo de certas instruoes e executar um grupo de instrues em ca c co detrimento de outro. 11

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

No algoritmo para calcular o MDC de dois nmeros naturais foi utiu lizada uma estrutura de controle condicional que permite encerrar ou no a execuao do algoritmo, dependendo do resultado da avaliaao da a c c expresso condicional r igual a zero: se r igual a zero ento o a e e a MDC igual a b e a execuao encerra aqui. Caso contrrio, siga para e c a a prxima instruao. o c Mdulos. Algoritmos podem se tornar muito complexos, de modo o que agrupar todos os seus componentes em uma unica unidade far a com que o algoritmo seja dif de entender, dif de manter e dif cil cil cil de estender. Para evitar que isso ocorra, constru mos nosso algoritmos utilizando mdulos, que so trechos de algoritmos que agrupam inso a truoes e dados necessrios para a realizaao de uma dada tarefa lgica c a c o do algoritmo, que seja a mais independente poss das demais. vel A utilizaao de mdulos facilita o entendimento do algoritmo, pois eles c o so menores do que o algoritmo como um todo e podem ser entendia dos individualmente, isto , para entendermos um deles no precisamos, e a necessariamente, entender os demais, visto que eles so partes indepena dentes do algoritmo. A manutenao do algoritmo tambm facilitada, c e e pois a modicaao de um mdulo no deve afetar os demais, desde c o a que o mdulo continuar fazendo o que ele fazia antes. Por ultimo, a o a extenso de um algoritmo pode ser feita mais facilmente se pudermos a reutilizar mdulos j existentes. o a

2.2

Uma Linguagem para Algoritmos

A experincia tem mostrado que necessrio expressar idias algor e e a e tmicas em uma forma mais precisa e mais compacta do que do que aquela encontrada em uma linguagem natural, tal como Portugus. H muitas linguagens e a que poder amos utilizar com o propsito de escrever algoritmos, incluindo o qualquer linguagem de programao, as quais nos permitem escrever em uma ca forma que os computadores podem entender. A vantagem de usar uma linguagem de programao que podemos, ca e de fato, executar nossos algoritmos em um computador. Entretanto, para o propsito de introduzir conceitos algor o tmos, esta abordagem possui trs e srias desvantagens: e Linguagens de programaao so criadas com algum propsito espec c a o co em mente e, desta forma, enfatizam algumas caracter sticas em detrimento de outras. No h linguagens de programao que possa ser a a ca 12

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

considerada a melhor. A opo por qualquer uma delas resultaria ca em compromissos que omitem a diferena entre propriedades imporc tantes de algoritmos e as propriedades de certos tipos de programas. As linguagens de programao incluem muitos detalhes tcnicos que inca e troduzem diculdades extras que no esto relacionadas com o aspecto a a lgico da resoluao de problemas algor o c tmicos. Os praticantes se tornam to envolvidos com os aspectos tcnicos das a e linguagens que desviam a atenao da importncia de um bom projeto c a de algoritmo. Por estas razes, neste curso, os algoritmos sero descritos em pseuo a docdigo (uma linguagem virtual de programao). Entretanto, traduzio ca remos os algoritmos para seus equivalentes na linguagem de programao ca C++.

2.3

Tipos de Dados

Os dados manipulados por um algoritmo podem possuir natureza distinta, isto , podem ser nmeros, letras, frases, etc. Dependendo da natureza de e u um dado, algumas operaes podem ou no fazer sentido quando aplicadas co a a eles. Por exemplo, no faz sentido falar em somar duas letras. Para poder a distinguir dados de naturezas distintas e saber quais operaoes podem ser c realizadas com eles, os algoritmos lidam com o conceito de tipo de dados. O tipo de um dado dene o conjunto de valores ao qual o valor do dado pertence, bem como o conjunto de todas as operaes que podem atuar co sobre qualquer valor daquele conjunto de valores. Por exemplo, o tipo de dados numrico pode ser imaginado como o conjunto de todos os nmeros e e u de toda as operaoes que podem ser aplicadas aos nmeros. c u Os tipos de dados manipulados por um algoritmo podem ser classicados em dois grupos: atmicos e complexos. Os tipos atmicos so aqueles o o a cujos elementos do conjunto de valores so indivis a veis. Por exemplo, o tipo numrico atmico, pois os nmeros no so compostos em partes. Por outro e e o u a a lado, os tipos complexos so aqueles cujos elementos do conjunto de valores a podem ser decompostos em partes mais simples. Por exemplo, o tipo cadeia aquele cujos elementos do conjunto de valores so frases, e frases podem e a ser decompostas em caracteres, os quais so indivis a veis.

13

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

Entre os tipos atmicos, os mais comuns so: o a numrico: inclui os nmeros inteiros, racionais e irracionais e as e u operaoes aritmticas e relacionais para estes nmeros. Na nossa linc e u guagem de descriao de algoritmos, os nmeros inteiros so escritos c u a apenas como a concatenaao dos d c gitos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Por exemplo, 5, 100, 1678. Os nmeros com frao devem ser escritos, nos u ca algoritmos, com a presena do ponto decimal. Por exemplo, 3.14159, c 100.0 e 0.5. No caso do nmero se negativo, adicionamos o sinal - na u frente do nmero, tal como -23. Dentre os tipos numricos distinguireu e mos os tipos inteiro e real que incluem, respectivamente, os nmeros u inteiros e fracionrios. a caracter: inclui os s mbolos do alfabeto usado pela nossa linguagem de programaao virtual. Estes s c mbolos consistem das letras do alfabeto romano, dos d gitos 0, 1, ...., 9, dos caracteres de pontuao, tais como?, ca ., ;, :, ..., dos s mbolos de operaao aritmtica + e -, entre outros. As c e operaoes denidas para este tipo de so igualdade e desigualdade. Os c a elementos do conjunto de valores do tipo caracter devem ser escritos, nos algoritmos, entre aspas simples, como, por exemplo, a, 1 e ?. Note a diferena entre escrever 1 e 1. No primeiro caso, temos o c nmero inteiro um; no segundo caso, o caracter representando o d u gito um. lgico: inclui apenas os valores verdadeiro e falso e as operaes lgicas. o co o Nos algoritmos, estes valores so escritos como Verdadeiro ou Falso. a Entre os tipos complexos, vamos utilizar inicialmente apenas o tipo cadeia, cujo conjunto de valores formado por frases ou cadeias. Por frase, e entendemos uma concatenaao de valores do tipo caracter. As frases so c a escritas, nos algoritmos, entre aspas duplas, tal como Entre com algum valor:. Note que a e a so valores pertencentes a tipos distintos. No a primeiro caso, temos uma frase que contm apenas o caracter a; no segundo, e temos o caracter a.

2.4

Variveis a

Como dito antes, um algoritmo manipula dados, que podem ser variveis a ou constantes. Por exemplo, em um algoritmo que calcula a rea de um a c rculo, o raio do c rculo um dado de entrada varivel, pois o valor do raio e a pode variar de c rculo para c rculo. Por outro, o valor do nmero , utilizado u 14

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

no clculo da rea do c a a rculo2 , uma constante. No importa qual seja o e a raio do c rculo, o mesmo valor utilizado no clculo da area. e a Um algoritmo representa dados variveis e dados constantes atravs de a e variveis e constantes, respectivamente. Uma varivel pode ser imaginada a a como um depsito para armazenar valores de dados, para o qual existe o um nome, conhecido como identicador, e cujo contedo pode ser alterado u pelo algoritmo. O identicador de uma varivel deve ser distinto daquele das a demais variveis do algoritmo, pois atravs do identicador da varivel que a e e a o algoritmo a distinge das demais e tem acesso ao seu contedo. u u O ato de criar uma varivel conhecida como declarao de varivel. a e ca a Cada varivel utilizada em um algoritmo deve ter sido declarada antes de a ser utilizada pela primeira vez. Ao criarmos uma varivel, temos de, explia citamente, associar-lhe um tipo de dado, pois o tipo determina o conjunto de valores que a varivel pode armazenar e, conseqentemente, a estrutura a u de dados que dene o contedo da varivel. Desta forma, se uma varivel u a a e declarada como sendo do tipo numrico, ela no poder armazenar qualquer e a a outro valor que no seja um nmero. a u Para se declarar uma varivel, segue-se o formato abaixo: a a declare <lista de identicadores> <tipo da varivel>; onde declare uma palavra chave, lista de identicadores uma lista de e e identicadores de variveis separados por v a rgula e tipo da varivel o nome a e do tipo ao qual as variveis estaro associadas. a a Como exemplo, considere a declarao de duas variveis denominadas x ca a e y do tipo inteiro e z do tipo real: declare x, y inteiro; declare z real; Quando executamos um algoritmo em um computador, a cada varivel a corresponde uma posio distinta de memria, em geral, o endereo da prica o c meira clula de memria ocupada pelo contedo da varivel. Variveis, e o u a a portanto, nada mais so do que representaoes simblicas para posioes de a c o c memria que armazenam dados. O uso de variveis uma caracter o a e stica das linguagens de alto-n vel, pois, como pudemos constatar no cap tulo anterior, quando programamos em linguagens de mquinas, utilizamos os prprios ena o dereos de memria para referenciar os dados manipulados pelo programa. c o

15

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

2.5

Constantes

Uma constante faz exatamente o que o nome sugere: representa um dado cujo valor no muda durante todo o algoritmo. Assim como uma varivel, a a uma constante tambm possui um identicador unico e deve ser declarada e antes de ser utilizada. No entanto, como valor da constante xo, ele e e atribu a constante no momento de sua declaraao, de modo que no h do ` c a a necessidade de explicitarmos o tipo do valor da constante. Em nossa linguagem de escrita de algoritmos, uma constante declarada e seguinte forma: dena <identicador> <valor>; onde dena uma palavra-chave, identicador o identicador da constante e e e valor o valor da constante. Entenda por palavra-chave qualquer palavra e que tenha um signicado espec co para o algoritmo e que no deve ser a utilizada para qualquer outro propsito, tal como para dar um nome a uma o varivel. Neste curso, as palavras-chaves sempre aparecero sublinhadas. a a Como exemplo, temos a declaraao de duas constantes, PI e MENSAc GEM: dena PI 3.14159; dena MENSAGEM A rea do c a rculo :; e Desta forma, PI uma constante do tipo numrico e MENSAGEM uma e e e constante do tipo cadeia, ou seja, MENSAGEM uma frase. e

2.6

Operadores

Ns declaramos variveis e constantes a m de criar espao para armao a c zenar os valores dos dados manipulados pelo algoritmo. Uma vez que declaramos as variveis e constantes, temos a nossa disposiao vrios tipos de a c a operadores, com os quais podemos atribuir valor a uma varivel e manipular a os valores armazenados em variveis e constantes. H trs categorias bsicas a a e a de operadores: operadores de atribuio, operadores aritmticos e operadores ca e de entrada e sada.

16

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

2.6.1

Operador de Atribuio ca

O ato de atribuir ou copiar um valor para uma varivel conhecido como a e atribuio. utilizaremos o operador de atribuiao () como um s ca c mbolo para esta operao. Por exemplo, as seguintes instruoes atribuem os valores ca c 4 e a as variveis x e y, respectivamente: ` a x 4; y a; Aps tais operaoes de atribuiao serem executadas, x conter o valor 4 e o c c a y, o valor a. Lembre-se de que, para qualquer varivel ser utilizada em um a algoritmo, temos de declar-la antes de seu primeiro uso. a

2.6.2

Operadores Aritmticos e

Os operadores aritmticos bsicos so quatro: e a a adio, representado pelo s ca mbolo +; subtrao, representado pelo s ca mbolo -; multiplicao, representado pelo s ca mbolo *; diviso, representado pelo s a mbolo /. Estes operadores podem ser aplicados a expresses envolvendo valores o numricos quaisquer, no importando se o nmero inteiro ou contm parte e a u e e fracionria. a Como exemplo, suponha que as variveis a, b e c tenham sido declarada a como segue: declare a, b, c inteiro; Ento, podemos escrever expresses como as seguintes: a o a + b + c; a - b * c / 2; Para obtermos o resto de uma diviso inteira utilizamos o operador mod. a Por exemplo, 5 mod 2 igual a 1, o resto da diviso inteira de 5 por 2. e a 17

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

2.6.3

Comando de Atribuio ca

Um comando de atribuio qualquer comando que inclua um operaca e dor de atribuiao. Este comando sempre envolve uma varivel, que se localiza c a a esquerda do operador, e um valor ou uma expresso que se localiza ` direita ` a a do operador. Quando um comando de atribuio executado, o valor do lado ca e direito do operador de atribuiao, que pode ser uma constante, o contedo c u de uma varivel ou o resultado de uma expresso, copiado para a varivel a a e a do lado esquerdo do operador. Como exemplo, considere os seguintes comando de atribuio: ca x a + 2 - c; y 4; z y; onde a, c, x, y e z so variveis. a a

2.6.4

Precedncia de Operadores e

Assim como na aritmtica padro, a precedncia de operadores nas e a e expresses aritmticas dos algoritmos tambm governada pelo uso de o e e e parnteses. A menos que os parnteses indiquem o contrrio, as operaoes e e a c de diviso e multiplicaao so executadas primeira e na ordem em que forem a c a encontradas ao lermos a expresso da esquerda para a direita. Em seguida, a temos as operaoes de adio e subtrao. c ca ca Como exemplo, considere o seguinte trecho algor tmico: declare a, b, c, x inteiro; a 2; b 3; c 4; x a + b * c; Este trecho de cdigo armazenar o valor 14 na varivel x. Se fosse desejado o a a realizar a operao de adio primeiro, o comando de atribuiao seria: ca ca c x (a + b) * c;

18

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

Neste caso, o uso dos parnteses fez com que a operaao de adio fosse reae c ca lizada primeiro. Na nossa linguagem para escrita de algoritmos, a utilizaao c de parnteses possui o mesmo signicado visto no primeiro grau. Alm de e e possu rem prioridade mxima perante os demais operadores aritmticos, os a e parnteses tambm podem ocorrer de forma aninhada, como na expresso e e a abaixo: ((2 + 3) - (1 + 2)) * 3 - (3 + (3 - 2)); que resulta no valor 2.

2.6.5

Entrada e Sa da

Qualquer algoritmo requer a obteno de dados do mundo (entrada) ca e tambm um meio de comunicar ao mundo o resultado por ele obtido e (sa da). Para tal, existem duas operaoes, denominadas entrada e sa c da, realizadas, respectivamente, pelos operadores leia e escreva. O operador de leitura tem sempre um ou mais variveis como operandos, enquanto o operaa dor de sa pode possuir constantes, variveis e expresses como operandos. da a o A forma geral destes operandos : e a leia <lista de variveis>; escreva <lista de variveis e/ou constantes e/ou expresses>; a o onde leia e escreva so palavras-chave, lista de variveis uma lista de idena a e ticadores separados por v rgula, e lista de identicadores e/ou constantes e/ou expresses, como o prprio nome j dene uma lista contendo identio o a e cadores (de constantes ou variveis), constantes e expresses, independente a o de alguma ordem. Como exemplo do uso dos operandos de entrada e sa da, temos: declare x inteiro; leia x; escreva x; escreva O valor de x :, x; e

19

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

2.6.6

Estrutura Geral de um Algoritmo

Nesta Seao, veremos algumas caracter c sticas que encontraremos nos algoritmos que estudaremos neste curso: 1. A linha do cabealho, que a primeira linha do algoritmo, contm a c e e palavra-chave algoritmo. 2. A declarao de constantes e variveis ser o prximo passo, sendo que ca a a o a declaraao de constantes precede a declarao de variveis. c ca a 3. O corpo do algoritmo contm as instruoes que fazem parte da descriao e c c do algoritmo. 4. A linha nal, que a ultima linha do algoritmo, contm a palavra-chave e e malgoritmo para especicar onde o algoritmo termina. Temos ainda alguns detalhes que serviro para deixar o algoritmo mais a claro e mais fcil de ler: a 1. Os passos do algoritmo so especicados atravs da identao dos vrios a e ca a comandos entre linha de cabealho e a linha nal. A identaao, visualc c mente, enquadra o corpo do algoritmo no olho humano e acaba com a confuso criada por no sabermos onde o algoritmo comea ou termina. a a c 2. Dentro do corpo do algoritmo, linhas em branco so usadas para dividir a o algoritmo em partes logicamente relacionadas e tornar o algoritmo mais leg vel. 3. O algoritmo pode vir seguido de comentrios. Comentrios so linhas a a a que no so executadas e cujo propsito apenas o de facilitar o ena a o e tendimento do algoritmo por parte de quem desejar l-lo. As linhas e de comentrio so iniciadas com duas barras (//) e podem abrigar a a qualquer texto. Como exemplo, considere um algoritmo para calcular e escrever a rea de a um c rculo, dado o raio do c rculo. //algoritmo para calcular a area do c rculo algoritmo //declaraao de constantes e variveis c a dena PI 3.14159; 20

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

dena MENSAGEM O valor da area do c rculo :; e declare raio, area real; //leitura do raio do circulo leia raio; //clculo da area do c a rculo area PI * raio * raio; //comunicao do resultado ca escreva MENSAGEM, area; malgoritmo

21

Cap tulo 3 Desenvolvimento de Algoritmos - Parte II


Neste Tpico, voc estudar detalhadamente dois componente dos alo e a goritmos: expresses condicionais e estruturas de controle. Como visto no o cap tulo anterior, as expresses condicionais possibilitam os algoritmos too marem decises que so governadas pelas estruturas de controle. o a

3.1

Expresses Condicionais o

Denomina-se expresso condicional ou expresso lgica a expresso a a o a cujos operandos so relaes, constantes e/ou variveis do tipo lgico. a co a o

3.1.1

Relaes co

Uma expresso relacional, ou simplesmente relao, uma coma ca e paraao entre dois valores do mesmo tipo bsico. Estes valores so represenc a a tados na relao atravs de constantes, variveis ou expresses aritmticas. ca e a o e Os operadores relacionais, que indicam a comparao a ser realizada entre ca os termos da relaao, so conhecidos da Matemtica: c a a

22

Profo Marcos A. Mariano Operador = = > <

Engenharia Civil - UNIGRAN Descrio ca igual a diferente de maior que menor que maior ou igual a menor ou igual a

O Resultado da avaliaao de uma relao sempre um valor lgico, isto c ca e o , Verdadeiro ou Falso. e Como exemplo, considere as variveis a, b e c denidas a seguir: a declare a, b, c inteiro; Agora, suponha as seguintes atribuioes: c a 2; b 3; c 4; Ento, as expresses a = 2, a > b + c, c 5 - a e b = 3 valem Verdadeiro, a o Falso, Falso e Falso, respectivamente.

3.1.2

Operadores Lgicos o

Uma proposio qualquer sentena que possa ser avaliada como verca e c dadeira ou falsa. Por exemplo, a sentena a populao de Campo Grande c ca de 800 mil habitantes pode ser classicada como verdadeira ou falsa e, e portanto, uma proposiao. J a sentena feche a porta! no pode e, cone c a c a seqentemente, no uma proposio. No nosso contexto, uma proposiao u a e ca c e uma relaao, uma varivel e/ou uma constante do tipo lgico. c a o As expresses condicionais ou lgicas so formadas por uma ou mais proo o a posioes. Quando h mais de uma proposiao em um expresso lgica, elas c a c a o esto relacionadas atravs de um operador lgico. Os operadores lgicos a e o o utilizados como conectivos nas expresses lgicas so os seguintes: o o a

23

Profo Marcos A. Mariano Operador e ou no a

Engenharia Civil - UNIGRAN Descrio ca para a conjuno ca para a disjuno ca para a negao ca

Duas proposies podem ser combinadas pelo conectivo e para formar co uma unica proposiao denominada conjuno das proposies originais. A c ca co conjunao das proposies p e q representada por p q e lemos p e q. c co e O resultado da conjunao de duas proposioes verdadeiro se e somente se c c e ambas as proposies so verdadeiras, como mostrado na tabela a seguir: co a q pp V V F F V F F F

p V V F F

Duas proposies quaisquer podem ser combinadas pelo conectivo ou co (com o sentido de e/ou) para formar uma nova proposiao que chamada c e disjuno das duas proposioes originais. A disjuno de duas proposies ca c ca co p e q representada por p q e lemos p ou q. A disjuno de duas proe ca posioes verdadeira se e somente se, pelo menos, uma delas for verdadeira, c e como mostrado na tabela a seguir: q pp V V F V V V F F

p V V F F

Dada uma proposiao p qualquer, uma outra proposio, chamada c ca falso que antes de p ou, negao de p, pode ser formada escrevendo E ca se poss vel, inserindo a palavra no em p. Simbolicamente, designamos a a negaao de p por p e lemos no p. Desta forma, podemos concluir que c a se p verdadeira, ento p falsa; se p falsa, ento p verdadeira, como e a e e a e mostrado na tabela a seguir: 24

Profo Marcos A. Mariano p p V F F V

Engenharia Civil - UNIGRAN

Agora, vejamos alguns exemplos de expresses lgicas que utilizam os o o conectivos vistos antes. Considere as variveis a, b, c e x denidas a seguir: a declare a, b, c inteiro; declare x lgico; o Agora, suponha as seguintes atribuioes: c a 2; b 3; c 4; x F; Ento, as expresses a = 2 e a > b + c, c 5 - a ou b = 3, e no x valem a o a Falso, Falso e Verdadeiro, respectivamente. Na primeira expresso, a = 2 e a > b + c, a = 2 e a > b + c so a a relaoes. Em particular, a > b + c contm uma expresso aritmtica, b c e a e + c, que devemos resolver primeiro para da podermos avaliar a relao a ca > b + c. De forma anloga, devemos primeiro resolver as relaoes a = 2 a c e a > b + c para podermos resolver a expresso lgica a = 2 e a > b + a o c. Isto signica que estamos realizando as operaoes em uma certa ordem: c em primeiro lugar, fazemos as operaes aritmticas, depois as operaes co e co relacionais e, por ultimo, as operaes lgicas. A tabela a seguir ilustra a co o prioridade de todos os operadores vistos at aqui. e Operador Prioridade /, *, mod 1 +, 2 =, =, , , >, < 3 no a 4 e 5 ou 6 Observe que entre os operadores lgicos existe n o veis distintos de prioridade, assim como entre os operadores aritmticos. Isto signica que na e 25

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

expresso a = 2 ou a > b + c e c 5 - a, a expresso lgica a > b + c e a a o c 5 - a realizada primeiro e seu resultado , ento, combinado atravs e e a e c e do operador de disjunao (ou) com aquele da relaao a = 2. Se quisssemos c mudar a ordem natural da avaliaao, poder c amos escrever a expresso com o a uso de parnteses: (a = 2 ou a > b + c) e c 5 - a. e

3.2

Estruturas de Controle

Uma vez que a expresso condicional foi avaliada, isto , reduzida para a e uma valor Verdadeiro ou Falso, uma estrutura de controle necessria para e a governar as aoes que se sucedero. Daqui em diante, veremos dois tipos de c a estruturas de controle: estrutura condicional e estrutura de repetio. ca

3.2.1

Estruturas Condicionais

a A estrutura condicional mais simples a se - ento - mse. A forma geral e desta estrutura mostrada a seguir: e a a se <expresso condicional> ento comando1 ; comando2 ; comandon ; mse Estas estruturas funciona da seguinte forma: se expresso condicional for a verdadeira, os comandos 1, 2, ..., n, contidos dentro da estrutura so executaa dos e, depois disso, o comando imediatamente depois da estrutura de controle executado. Caso contrrio, os comandos 1, 2, ..., n no so executados e o e a a a uxo de execuo do algoritmo segue com o comando imediatamente depois ca da estrutura de controle. Isto signica que esta forma de estrutura de controle permite que um algoritmo execute ou no um determinado nmero de a u comandos, dependendo de uma dada condio ser ou no satisfeita. ca a Como exemplo, considere um algoritmo para ler dois nmeros, a e b, e u escrev-los em ordem no decrescente: e a //algoritmo para escrever dois nmeros em ordem u //no decrescente a algoritmo 26

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

//declaraao de variveis c a declare a, b, temp inteiro; //l os nmeros e u leia a, b; //ordena os nmeros u a se a > b ento temp a; a b; b temp; mse //escreve os nmero ordenados u escreva a, b; malgoritmo Tudo que este algoritmo faz vericar se o valor de a, fornecido na ene trada, maior do que o valor de b; se sim, ele troca os valores de a e b; caso e contrrio, ele no altera o valor destas variveis. Como a operaao de troca a a a c deve ser realizada apenas quando a > b, ela foi inserida dentro da estrutura a condicional se - ento - mse. Um outro ponto importante deste exemplo a operaao de troca. Esta e c operaao realizada com a ajuda de uma outra varivel, denominada temp, c e a e atravs de trs atribuioes. Isto no pode ser feito de outra forma! Am e e c a de atribuir o valor de a a b e o valor de b a a, temos de utilizar uma outra varivel, pois ao executarmos a b, atribu a mos o valor de b a a e, conseqentemente, perdemos o valor que, anteriormente, estava retido em a. u Logo, para podermos fazer com que este valor possa ser atribu a b, ando tes de executarmos a b, guardamos o valor de a em um lugar seguro: a varivel temp. Depois, atribu a mos o valor em temp a b. a e Uma variao da estrutura de controle se - ento - mse estrutura se ca ento - seno - mse. Esta estrutura permite ao algoritmo executar uma de a a duas seqncias mutuamente exclusivas de comandos. ue A forma deste comando dada a seguir: e se <expresso condicional> ento a a comando1 ; comando2 ; comandon ; 27

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

seno a comando1 ; comando2 ; comandon ; mse Neste caso, se o resultado da expresso condicional for verdadeira, os coa mandos 1, 2, ..., n so executadas e depois disso o primeiro comando logo a aps o m da estrutura de controle executado; caso contrrio, se o resultado o e a da expresso condicional for falso, os comandos 1, 2, ...n so executados e a a depois disso o prximo comando a ser executado aquele logo aps o m da o e o estrutura de controle. Notemos que as seqncias de comandos corresponue dentes a ento e seno so mutuamente exclusivas, isto , ou os comandos 1, a a a e 2, ..., n so executados ou os comandos 1, 2, ..., n so executados. a a Como exemplo, considere um algoritmo para escrever uma mensagem com o resultado de exame, dada a nota obtida pelo candidato no exame: //algoritmo para escrever o resultado de um exame //baseado na nota obtida pelo candidato algoritmo //declaraao de constantes e variveis c a dena NOTAMINIMA 6.0; declare nota real; //l a nota do candidato e leia nota; //compara a nota lida e escreve o resultado se nota NOTAMINIMA ento a escreva candidato aprovado; seno a escreva candidato reprovado; mse malgoritmo As estruturas condicionais podem estar aninhadas, isto , elas podem e ocorrer umas dentro de outras. Como exemplo disto, considere o seguinte algoritmo que l trs nmeros escreve-os em ordem no decrescente: e e u a

28

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

//algoritmo para ordenar trs nmeros e u algoritmo //declaraao de variveis c a declare a, b, c, temp inteiro; //l os trs nmeros e e u leia a, b, c; //encontra o menor dos trs nmeros e guarda em a e u se (a > b) ou (a > c) ento a se b c ento a temp a; a b; b temp; seno a temp a; a c; c temp; mse mse //encontra o valor intermedirio e guarda em b a a se b > c ento temp b; b c; c temp; mse //escreve os nmero em ordem no decrescente u a escreva a, b, c; malgoritmo

3.2.2

Estruturas de Repetio ca

A estrutura de repetio, ou simplesmente lao, permite que um ca c grupo de comandos seja executado repetidamente um nmero determinado u de vezes ou at que uma determinada condiao se torne verdadeira ou falsa. e c Nesta Subseao, estudaremos trs estruturas de repetio: c e ca a estrutura para - faa; c

29

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

a estrutura enquanto - faa; c e a estrutura repita - at; A estrutura de repetiao para - faa possui a seguinte forma geral: c c para <varivel> de <valor inicial> at <valor nal> faa a e c comando1 ; comando2 ; comandon ; mpara e funciona como segue: 1. atribui ` varivel, que o nome de uma varivel numrica, o valor a a e a e numrico valor inicial; e 2. compara o valor de varivel com o valor numrico valor nal. Se ele a e for menor ou igual a valor nal, vai para o passo 3. Caso contrrio, a executa o comando imediatamente aps a estrutura de repetio; o ca 3. executa os comandos 1 a n; 4. incrementa o valor de varivel de uma unidade; a 5. volta para o passo 2. Como exemplo, considere o seguinte algoritmo para calcular e exibir a soma de todos os nmeros pares desde 100 at 200, inclusive: u e //algoritmo para somar os pares de 100 a 200 algoritmo //declaraao de variveis c a declare soma, i inteiro; //inicializa com 0 a varivel que guardar a soma a a soma 0; //calcula a soma para i de 100 at 200 faa e c se i mod 2 = 0 ento a soma soma + i; mse 30

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

mpara //escreve o valor da soma e escreva A soma dos pares de 100 a 200 : , soma; malgoritmo Neste algoritmo, o lao para - faa inicia com a atribuiao do valor 100 a c c c ` varivel i. Da compara o valor de i com 200 e, como i < 200, executa pela a , primeira vez os comandos dentro do lao e, ao nal da execuo, incrementa c ca i de uma unidade. Deste ponto em diante, o valor de i comparado com 200 e e, caso seja menor ou igual a 200, uma nova iteraao do lao realizada e i c c e e novamente incrementada de uma unidade ao nal da iteraao. Este processo c se repete at que i seja igual a 201. Desta forma, i guarda um valor de 100 a e 200 a cada repetiao do lao. A cada iteraao, o algoritmo verica se o valor c c c de i par ou e mpar. Se o valor de i for par, o valor de i adicionado ao valor e na varivel soma. a Observe que a varivel soma recebe o valor 0 antes do lao ser executado. a c Esta atribuio denominada inicializao da varivel. Como voc pode ca e ca a e perceber, soma utilizada como um acumulador, isto , a cada iteraao do e e c lao, soma incrementada de mais um nmero par e isto feito somando o c e u e valor atual de soma ao nmero par em i e atribuindo o resultado novamente a u ` varivel soma: soma soma + i. Entretanto, se a inicializao no estivesse a ca a presente no algoritmo, quando o lao fosse executado pela primeira vez, no c a haveria um valor em soma e a atribuio soma soma + i no faria sentido. ca a c e Uma variao da estrutura de repetiao para - faa aquela que nos ca c possibilita controlar o valor do incremento da varivel contadora do lao: a c para <varivel> de <valor inicial> at <valor nal> passo a e <incremento> faa c comando1 ; comando2 ; comandon ; mpara onde incremento o valor adicionado ao valor de varivel ao nal de cada e a iteraao. Quando a parte do comando passo <incremento> no est presente, c a a o valor assumido para o incremento 1 (um). e Esta variao da estrutura de repetiao para - faa nos permite, por ca c c exemplo, resolver o problema de calcular a soma de todos os pares de 100 31

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

a 200 de uma forma mais elegante do que aquela vista anteriormente, como podemos constatar a seguir: //algoritmo para somar os pares de 100 a 200 algoritmo //declaraao de variveis c a declare soma, i inteiro; //inicializa com 0 a varivel que guardar a soma a a soma 0; //calcula a soma para i de 100 at 200 passo 2 faa e c soma soma + i; mpara //escreve o valor da soma e escreva A soma dos pares de 100 a 200 : , soma; malgoritmo A estrutura de repetio para - faa deve ser utilizada apenas quando ca c queremos repetir a execuao de um ou mais comandos um nmero conhecido c u de vezes, como no exemplo anterior. Entretanto, h problemas em que no a a poss e vel determinar, previamente, o nmero de repetioes. Neste caso, u c c e devemos utilizar a estrutura enquanto - faa ou repita - at. c A estrutura enquanto - faa possui a seguinte forma geral: enguanto <expresso condicional> faa a c comando1 ; comando2 ; comandon ; menquanto A lgica de funcionamento desta estrutura de repetiao a seguinte: o c e 1. expresso condicional avaliada. Se o resultado for verdadeiro, ento a e a o uxo do algoritmo segue para o passo seguinte. Caso contrrio, o a comando imediatamente posterior a estrutura de repetiao executado; ` c e 2. executa os comandos de 1 a n;

32

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

3. volta para o passo 1. Como exemplo, considere o seguinte algoritmo para ler um nmero inteiro u n, que no contm d a e gito 0, e escrever um nmero inteiro m que corresponde u a n invertido: //algoritmo para inverter um nmero inteiro sem d u gito 0 u algoritmo inverte nmero //declaraao de variveis c a declare n, r, m inteiro; //l o valor de um inteiro e leia n; //inicializa a varivel que conter o inteiro invertido a a m 0; //encontra o nmero invertido u c enquanto n > 0 faa r n mod 10; m m * 10 + r; n n / 10; menquanto //exibe o nmero invertido u escreva m; malgoritmo Observe que, neste algoritmo, o lao repetido uma quantidade de vezes c e igual ao nmero de d u gitos de n. Como n desconhecido at a execuao do e e c algoritmo iniciar, no somos capazes de dizer, ao escrevermos o algoritmo, a quantos d gitos n ter, logo no saberemos prever o nmero de repetioes do a a u c lao. Entretanto, podemos determinar o nmero de d c u gitos de n ao longo da execuao do algoritmo e isto feito indiretamente pelo algoritmo ao dividir c e n, sucessivamente, por 10, o que far n perder o d a gito menos signicativo a cada repetiao do lao e se tornar 0 em algum momento. Neste ponto, c c podemos encerrar o lao. c A estrutura de repetiao repita - at semelhante a estrutura enquanto c ee ` - faa, pois ambas so utilizadas quando conhecemos, antecipadamente, o c a nmero de repetioes. A diferena entre elas reside no fato que a seqncia u c c ue de instrues da estrutura repita - at executada pelo menos uma vez, co e e independentemente da expresso condicional ser ou no verdadeira. a a 33

Profo Marcos A. Mariano

Engenharia Civil - UNIGRAN

A estrutura repita - at tem a seguinte forma geral: e repita comando1 ; comando2 ; comandon ; at <expresso condicional>; e a A lgica de funcionamento desta estrutura de repetiao a seguinte: o c e 1. executa a seqncia de instrues; ue co 2. expresso condicional avaliada. Se ela for falsa, ento o uxo de a e a execuao volta para o passo 1. Caso contrrio, o comando imediatac a mente posterior a estrutura de repetiao executada. ` c e Como exemplo, considere o seguinte trecho algor tmico: repita escreva entre com um nmero positivo; u leia n; at n > 0; e Neste trecho de algoritmo, o objetivo do lao garantir que a varivel c e a n receba um nmero positivo; enquanto o usurio entrar com um nmero u a u menor ou igual a zero, o algoritmo continuar solicitando a entrada. a

34

Você também pode gostar