Anda di halaman 1dari 26

UNIVALI

CTTMAR Itaja / So Jos Engenharia de Computao / Cincia da Computao

UNIVERSIDADE DO VALE DO ITAJA

Algoritmos e Programao de Computadores


(1o perodo)
Autoria Profa. Joyce Martins / Adaptao Profa. Fernanda dos Santos Cunha

So Jos / SC

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

SUMRIO
1 CONCEITOS PRELIMINARES ............................................................................................................................1 1.1 NOES DE LGICA ............................................................................................................................................1 1.2 CONCEITO DE ALGORITMO ..................................................................................................................................2 1.3 NOES DE SISTEMAS DE COMPUTAO.............................................................................................................3 1.3.1 Hardware: componentes bsicos ..................................................................................................................3 1.3.2 Software ........................................................................................................................................................5 1.4 CONCEITO DE PROGRAMA ...................................................................................................................................5 2 REPRESENTAO DE DADOS ...........................................................................................................................7 2.1 CONSTANTES ......................................................................................................................................................7 2.2 VARIVEIS..........................................................................................................................................................7 2.3 OPERADORES ARITMTICOS, LGICOS E RELACIONAIS ........................................................................................8 2.3.1 Operadores aritmticos.................................................................................................................................8 2.3.2 Operadores relacionais.................................................................................................................................9 2.3.3 Operadores lgicos .......................................................................................................................................9 2.3.4 Hierarquia dos operadores ...........................................................................................................................9 3 ALGORITMO: REPRESENTAO E ESTRUTURAS DE ELABORAO ...............................................10 3.1 ETAPAS NA CONSTRUO DE UM ALGORITMO ..................................................................................................10 3.2 FORMA GERAL DE UM ALGORITMO ...................................................................................................................10 3.3 COMANDOS SIMPLES.........................................................................................................................................11 3.3.1 Comando de atribuio...............................................................................................................................11 3.3.2 Comandos de entrada e sada de dados......................................................................................................12 3.4 COMANDOS ESTRUTURADOS.............................................................................................................................13 3.4.1 Comandos de seleo ..................................................................................................................................13
3.4.1.1 Comando de seleo: SE-ENTO-SENO................................................................................................................13 3.4.1.2 Comando de seleo: ESCOLHA ...............................................................................................................................15

3.4.2

Comandos de repetio...............................................................................................................................16

3.4.2.1 Comando de repetio: ENQUANTO-FAA.............................................................................................................16 3.4.2.2 Comando de repetio: REPITA-AT........................................................................................................................18 3.4.2.3 Comando de repetio: PARA-FAA ........................................................................................................................18 3.4.2.4 Comparao entre os comandos de repetio .............................................................................................................20

MODULARIZAO DE ALGORITMOS..........................................................................................................21 4.1 4.2 4.3 4.4 FUNES ..........................................................................................................................................................21 PROCEDIMENTOS ..............................................................................................................................................22 VARIVEIS GLOBAIS E LOCAIS ..........................................................................................................................23 PARMETROS ...................................................................................................................................................23

BIBLIOGRAFIA.............................................................................................................................................................24

iii

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

1
1.1

CONCEITOS PRELIMINARES
NOES DE LGICA
"LGICA: coerncia de raciocnio, de idia; seqncia coerente, regular e necessria de acontecimentos, de coisas" (AURLIO). "LGICA: trata da correo do pensamento; ensina a colocar ordem no pensamento" (FORBELLONE, 1993).

Segundo FORBELLONE (1993), o pensamento e suas representaes (palavra escrita, palavra falada) sempre vem acompanhado da lgica ou da ilgica. Assim, a lgica no somente importante na teoria como tambm o na prtica, visto que quando algum deseja expressar seus pensamentos e se fazer entender atravs da escrita ou atravs da fala, necessariamente precisa colocar ordem no pensamento, ou seja, usar a lgica. Podemos tambm citar, como exemplo, concursos pblicos que incluem, entre as provas de conhecimentos gerais, a disciplina de raciocnio lgico matemtico. No edital do concurso pblico para auditor fiscal do tesouro nacional (1998) encontramos: RACIONCNIO LGICO MATEMTICO: esta prova objetiva medir a habilidade do candidato em entender a estrutura lgica de relaes arbitrrias entre pessoas, lugares, coisas, ou eventos fictcios; deduzir novas informaes das relaes fornecidas, e avaliar as condies usadas para estabelecer a estrutura daquelas relaes. EXEMPLO 1: a gaveta est fechada. a bala est na gaveta. preciso primeiro abrir a gaveta, para depois pegar a bala. EXEMPLO 2: Joo mais velho que Pedro. Pedro mais velho que Jos. Logo, Joo mais velho que Jos. EXEMPLO 3: seleo de 4 litros de gua: tem-se 3 potes A, B e C com capacidades de 8 litros, 5 litros e 3 litros, respectivamente. O pote A est cheio de gua e os outros dois esto vazios. Como selecionar 4 litros de gua? Os potes no possuem graduao. A B C

8 litros cheio SOLUO 1: BA CB joga B fora BC BA CB AC

5 litros vazio SOLUO 2: CA BC CA BC joga C fora CB AB

3 litros vazio

A 8 3 3 3 3 1 1 4

B 0 5 2 0 3 5 2 2

C 0 0 3 3 0 0 3 0

A 8 5 5 2 2 2 2 4

B 0 0 3 3 5 5 2 0

C 0 3 0 3 1 0 3 3

"A LGICA envolve as declaraes, pressupostos e operaes que definem o que um 1

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per determinado programa far. A definio da lgica dos programas , quase sempre, o primeiro passo na resoluo de um problema" (XIMENES, 1993) .

1.2

A construo de programas de computadores, em alguns casos, pode ser uma tarefa difcil, no porque o programador seja incompetente, mas devido complexidade dos problemas. Portanto, importante separar a tarefa de construo de programas em duas fases (FIGURA 1): a fase de resoluo do problema e a fase de implementao. PROBLEMA anlise ALGORITMO implementao PROGRAMA

CONCEITO DE ALGORITMO

passo difcil FIGURA 1: fases da tarefa de construo de um programa No sentido mais geral, um algoritmo qualquer conjunto finito de instrues que possa ser seguido para a realizao de uma tarefa especfica ou resoluo de um determinado problema (XIMENES, 1993). EXEMPLO 4: uma receita de culinria: massa folheada amassar bem todos os ingredientes deixar repousar por 30 min. REPETIR (3 vezes) abrir a massa passar margarina dobrar 3 vezes deixar repousar por 15 min. abrir a massa rechear levar ao forno quente numa forma untada ENQUANTO (no estiver assado) manter no forno quente EXEMPLO 5: a atividade de um assistente administrativo fornecer formulrio verificar o preenchimento do formulrio SE (preenchimento estiver correto) ENTO arquivar formulrio fornecer protocolo SENO fornecer novo formulrio instruir quanto forma de preenchimento Na informtica, um algoritmo definido como uma seqncia ordenada e finita de passos, independente da linguagem de programao a ser utilizada para codific-lo, que leva soluo de um dado problema (XIMENES, 1993). EXEMPLO 6: o clculo da rea de um retngulo saber o valor da base saber o valor da altura multiplicar a base pela altura o valor obtido o resultado esperado 2

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per Os algoritmos so utilizados na programao da mesma forma que as receitas de culinria podem ser usadas no preparo das refeies, tanto como soluo especfica quanto como ponto de partida para experincias. A construo de um algoritmo consiste em entender claramente o enunciado do problema para que seja possvel definir a soluo e o que deve ser feito (processamento).

Um sistema computacional formado por um conjunto de componentes fsicos (o hardware) e por um conjunto de mtodos e procedimentos necessrios ao funcionamento da parte fsica (o software).

1.3

NOES DE SISTEMAS DE COMPUTAO

1.3.1 Hardware: componentes bsicos

Podemos considerar o computador como uma mquina capaz de executar aes com objetivos especficos. Essas aes so basicamente instrues para leitura e escrita de informaes e para a execuo de operaes aritmticas e lgicas. Assim, embora existam computadores dos mais diferentes tipos e tamanhos, todos consistem em cinco componentes bsicos interligados: unidade aritmtica e lgica (ULA), unidade de controle, unidade de entrada de dados, unidade de sada de dados e memria. Esquematicamente, temos (FIGURA 2):

unidade de CONTROLE

ULA

ENTRADA

MEMRIA

SADA

FIGURA 2: componentes bsicos de um computador Unidade aritmtica e lgica (ULA): executa clculos que envolvem operaes aritmticas como soma, subtrao, multiplicao e diviso e/ou operaes lgicas como comparaes de grandeza (maior, menor, igual). Unidade de CONTROLE: acompanha cada instruo do programa sendo executado e aciona as unidades que executaro determinada instruo, controlando o fluxo de dados. Em outras palavras, aciona a unidade de ENTRADA para leitura de dados, armazena e recupera dados da MEMRIA, transfere valores da memria para a ULA e aciona a unidade de SADA para visualizao de resultados. Por exemplo, em uma operao de soma deve acionar a MEMRIA para transferir ULA as parcelas a somar e deve transferir o resultado calculado MEMRIA. A unidade aritmtica e lgica e a unidade de controle constituem a unidade central de processamento (CPU). Unidade de ENTRADA: refere-se a qualquer dispositivo que possa captar dados do meio externo e transferi-los memria do computador. EXEMPLOS: teclado, mouse, scanner, faxmodem, leitora de cartes magnticos, caneta tica, mesa digitalizadora, leitora de cdigos de barra, joystick, touch-screen, sensores especiais, etc. 3

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per Unidade de SADA: refere-se a qualquer dispositivo que transfere dados gravados na memria para um meio externo ao computador. Normalmente para cada tipo de unidade de entrada existe uma unidade de sada correspondente e algumas vezes o mesmo dispositivo faz as duas funes. EXEMPLOS: fax-modem, touch-screen, vdeo, impressora, plotter, caixa de som, etc. MEMRIA: armazena dados e programas durante o processamento. A memria dividida em unidades pequenas e de mesmo tamanho identificadas por nico endereo - um nmero representado atravs da notao hexadecimal. Cada unidade de memria capaz de armazenar uma nica informao como, por exemplo, o resultado de uma operao aritmtica. A memria pode ser pensada como um armrio (FIGURA 3) repleto de gavetas, onde armazena-se os objetos, os quais podem ser substitudos. Os objetos so as informaes ou dados e as gavetas so as unidades de memria. Como no armrio (memria) existem inmeras gavetas (unidades), necessrio diferenci-las, ou melhor, identific-las de forma nica - sero usados nomes ao invs de nmeros como identificadores. Alm disso, cada gaveta (unidade) pode armazenar apenas um objeto (informao) de cada vez, sendo sempre do mesmo material (tipo). Ou seja, define-se nomes para determinadas gavetas especificando qual o material dos objetos que l podem ser armazenados. armrio ? ? ? ? identificao nome idade endereo telefone

FIGURA 3: modelo de memria como um armrio de gavetas A referncia a uma determinada unidade de memria feita atravs de seu identificador. Assim, uma instruo para armazenar um valor em uma unidade de memria pode ser expressa da seguinte forma: armazene o valor 13 na unidade de memria IDADE obtendo como resultado (FIGURA 4): armrio ? 13 ? ? identificao nome idade endereo telefone

FIGURA 4: estado da memria aps execuo de instruo importante notar que nas demais unidades de memria foram colocados um ponto de interrogao, indicando que o valor desconhecido. Portanto, antes de usar o contedo de uma unidade de memria interessante que o valor seja definido atravs de uma instruo de armazenamento, por exemplo, caso contrrio, o resultado obtido pode no ser o desejado. A memria pode ser subdividida em dois tipos diferentes: memria ROM (Read Only Memory) ou memria permanente: armazena informaes e 4

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per programas bsicos para o funcionamento do computador. memria RAM (Random Access Memory) ou memria temporria: armazena dados e programas. voltil. Um software um programa de computador, conjunto de instrues, que faz com que o hardware realize determinada tarefa. O software um termo coletivo que abrange vrias categorias que podem ser subdivididas de acordo com o tipo de trabalho feito ou a forma de distribuio. Quanto ao tipo do trabalho feito, temos: os sistemas operacionais (software bsico), que controlam o funcionamento do computador, cuidam de atividades essenciais porm muitas vezes invisveis como a manuteno de arquivos em discos e o gerenciamento da tela; so a base sobre a qual aplicaes so construdas (OS/2, UNIX, DOS, etc.); os softwares de uso geral, como planilhas eletrnicas, editores de texto, etc.; os softwares de rede, que permitem a comunicao de computadores entre si; as linguagens de programao, que fornecem aos programadores as ferramentas de que necessitam para escrever programas.

1.3.2 Software

1.4

Como foi dito anteriormente, a construo de programas de computadores, em alguns casos, pode ser uma tarefa difcil e, portanto, a elaborao de algoritmos faz-se necessria. Elaborado o algoritmo, temos todos os passos bem definidos e, ento, podemos transformar com facilidade o algoritmo em um programa, ou seja, podemos traduzir as instrues do algoritmo para instrues em uma linguagem de programao, preocupando-nos apenas com detalhes da linguagem e no com a seqncia de passos a serem realizados. Assim, podemos dizer que um programa a implementao de um algoritmo em uma determinada linguagem de programao.

CONCEITO DE PROGRAMA

EXEMPLO 7: o clculo da rea de um tringulo. Seguindo as fases da construo de um programa apresentadas na FIGURA 1, temos: 1O PASSO: anlise - elaborao do algoritmo detalhado ALGORITMO exemplo INCIO leia o valor da base armazene o valor lido na unidade memria BASE leia o valor da altura armazene o valor lido na unidade de memria ALTURA multiplique o valor armazenado em BASE pelo valor armazenado em ALTURA armazene o resultado na unidade de memria VALOR_INTERMEDIRIO divida o valor armazenado em VALOR_INTERMEDIRIO por 2 armazene o resultado na unidade de memria REA escreva o valor armazenado em REA FIM 2O PASSO: implementao - traduo do algoritmo em uma linguagem de programao. na linguagem de programao PASCAL: PROGRAM area; { OBJETIVO: esse programa tem por objetivo calcular a rea de um tringulo qualquer, sendo os valores da base e da altura fornecidos pelo usurio. programador: Fulano de Tal linguagem de programao: PASCAL 5

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per VAR base, altura, valor_intermediario, area: REAL; BEGIN WRITELN (Clculo da rea de um tringulo); WRITELN ( informe o valor da base ); READLN (base); WRITELN ( informe o valor da altura ); READLN (altura); valor_intermediario:= base * altura; area:= valor_intermediario / 2; WRITELN (o valor da rea do tringulo : ); WRITELN (area); END. na linguagem de programao C++ // OBJETIVO: esse programa tem por objetivo calcular a rea de um tringulo qualquer, // sendo os valores da base e da altura fornecidos pelo usurio. // // programador: Fulano de Tal // linguagem de programao: C++ # include <iostream.h> void main () { float base, altura, valor_intermediario, area; cout << "Clculo da rea de um tringulo \n"; cout << informe o valor da base \n; cin >> base; cout << informe o valor da altura \n; cin >> altura; valor_intermediario = base * altura; area = valor_intermediario / 2; cout << o valor da rea do tringulo : \n; cout << area; }

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

REPRESENTAO DE DADOS

O homem um processador de dados notvel, mas por princpio adota a lei do menor esforo e por isto vem se instrumentando no seu trabalho de processamento de dados desde a pr-histria, com ferramentas cada vez mais sofisticadas. No incio utilizou o que tinha literalmente mo: os prprios dedos e depois de pedrinhas; deste costume, ainda vivo em certas aplicaes, nos ficaram as palavras dgito (do latim digitus, dedo) e clculo (do latim calculus, pedra). Alguns povos usaram ns em uma corda formando um rosrio (os quipos dos Incas) e os orientais usaram o baco para auxlio do processamento de dados. Com o advento da era industrial, comeou-se a fabricar mquinas baseadas em componentes mecnicos como engrenagens, eixos, manivelas, etc. que auxiliavam, sobretudo, o processamento aritmtico dos dados. A maioria dos programas computacionais manipula informaes ou dados. Entende-se como DADO um atributo que descreve sucintamente eventos, entidades ou caractersticas: o nome de uma pessoa, seu peso ou o nmero de pginas de um livro so dados. Os computadores podem lidar com tipos diferentes de dados: dados numricos ou dados no numricos (texto, imagem, som, ...). Os dados podem ser classificados como: INTEIROS: toda e qualquer informao numrica que representa os nmeros inteiros relativos (negativo, nulo ou positivo) da aritmtica. EXEMPLO 1: 12 anos; -15 graus; ano de 1996. REAIS: valores numricos que representam os nmeros reais da aritmtica. So escritos com o ponto decimal (no lugar da vrgula). EXEMPLO 2: 12.41 reais; 2.5 quilmetros de distncia; 1.25 metros de altura; 2.6e04 = 2.6*104; 0.371e-2 = 0.371*10-2. LGICOS: toda e qualquer informao que pode assumir apenas apenas dois valores. EXEMPLO 3: aberto ou fechado, ligado ou desligado, verdadeiro (TRUE) ou falso (FALSE). CARACTERES: valores no-numricos que so escritos com apenas um caracter conhecido do computador (tabela ASCII). EXEMPLO 4: A, a, ., 2, +, STRINGS: valores no-numricos que so constitudos por um ou mais caracteres. Esto delimitados por apstrofos. EXEMPLO 5: rua; Lgica; ; rua Tenente Silveira; 1996 O PROCESSAMENTO DE DADOS envolve as operaes de armazenamento, transmisso, combinao e comparao de dados.

Os exemplos apresentados anteriormente representam valores constantes. Uma informao constante quando no sofre nenhuma variao no decorrer do tempo.

2.1

CONSTANTES

2.2

Quando uma informao tem a possibilidade de ser alterada em algum instante no decorrer do tempo classificada como varivel.

VARIVEIS

EXEMPLO 6: suponha que, ao fazer um contrato de locao de um imvel, no seja permitido utilizar um valor fixo em moeda corrente como base para o reajuste, pois com o passar do tempo 7

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per esse valor estar defasado. Para resolver esse problema podemos utilizar um parmetro que fornea valores atualizados em moeda corrente para cada perodo. Identificamos esse parmetro de IRT, ndice de reajustes totais. No ambiente computacional, as informaes variveis so armazenadas nas unidades de memria. Variveis so, portanto, entidades (unidades de memria) que armazenam um valor de um tipo determinado e so identificadas por um nome (ou seja, um local na memria do computador destinado ao armazenamento de dados). EXEMPLO 7: salario 100.00 nome Pedro

onde: o valor 100.00 armazenado na varivel salrio e o valor Pedro armazenado na varivel nome. Uma varivel pode receber muitos valores diferentes, mas em um dado instante uma varivel s pode apresentar um valor e o ltimo valor armazenado o que ser considerado nos usos subseqentes. Devemos usar, preferencialmente nomes significativos para as variveis relacionados s informaes que sero armazenadas, como, por exemplo, lado1, lado2, hipotenusa. Os nomes das variveis ou identificadores devem comear sempre com uma letra, podendo ser seguida de letras, nmeros e/ou o under-score ( _ ). So nomes vlidos de variveis: aluno, cdigo_disciplina, nome_disciplina, u, u2, ub_40. So identificadores invlidos: o&m, 3m. Como as constantes apresentadas na seo anterior, as variveis tambm so de determinados tipos: variveis INTEIRAS: so aquelas posies que armazenam um valor do tipo INTEIRO variveis REAIS: so aquelas posies que armazenam um valor do tipo REAL variveis LGICA: so aquelas posies que armazenam um valor do tipo LGICO variveis CARACTER: so aquelas posies que armazenam um valor do tipo CARACTER variveis STRING: so aquelas posies que armazenam um valor do tipo STRING Como se utiliza as variveis? Podemos atribuir um valor constante uma varivel ou fornec-lo atravs de uma operao de leitura (entrada de dados).

2.3

O processamento de dados envolve a manipulao desses dados atravs de operaes. Da aritmtica vm as quatro operaes bsicas: soma, subtrao, multiplicao e diviso. Existem tambm as operaes para manipulao de dados do tipo lgico. Para os outros dados no-numricos o estudo ser feito posteriormente. importante observar que: o resultado de qualquer operao tem o mesmo tipo de seus operandos.

OPERADORES ARITMTICOS, LGICOS E RELACIONAIS

2.3.1 Operadores aritmticos

Expresses aritmticas so aquelas cujo resultado da avaliao um valor de tipo numrico (inteiro ou real): se todas as variveis e/ou constantes so do tipo inteiro, ento o resultado da expresso tambm um valor do tipo inteiro; se todas as variveis e/ou constantes so do tipo real, ento o resultado da expresso tambm um valor do tipo real; se ao menos uma das variveis ou constantes for do tipo real ou for usado o operador aritmtico / (diviso real), ento o resultado da expresso um valor do tipo real. Em expresses desse tipo, somente permitido o uso de operadores aritmticos e variveis numricas. Os operadores aritmticos so os seguintes:

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per + adio / diviso real subtrao ** potenciao * multiplicao // radiciao DIV diviso inteira (s pode ser aplicada a operandos inteiros) MOD resto da diviso inteira (s pode ser aplicada a operandos inteiros) Na resoluo das expresses aritmticas, os operadores tm uma hierarquia de prioridades: () + ** // o que aparecer primeiro da esquerda para direita * / DIV MOD o que aparecer primeiro da esquerda para direita + o que aparecer primeiro da esquerda para direita EXEMPLO 8: a expresso aritmtica: y 2 + 4 + 4 x 5 - 22 3 - 1 deve ser escrita da seguinte forma, obedecendo a prioridade dos operadores: y (2 + 4) / (3 - 1) + 4 * 5 - 2 ** 2

2.3.2 Operadores relacionais

Uma relao uma comparao realizada entre dois valores do mesmo tipo bsico. Os operadores relacionais, que indicam a comparao a ser realizada entre os termos da relao so: = igual a < menor que <> diferente de >= maior ou igual a > maior que <= menor ou igual a O resultado obtido de uma relao sempre um valor lgico.

2.3.3 Operadores lgicos

A combinao de valores lgicos com os operadores lgicos tem como resultado outro valor lgico. Os operadores lgicos so: negao NO P1 F V E P1 V V F F conjuno P2 V F V F P1 E P2 V F F F OU P1 V V F F disjuno P2 V F V F P1 OU P2 V V V F

NO P1 V F

Na resoluo das expresses lgicas, os operadores tm uma hierarquia de prioridades: NO E OU

2.3.4 Hierarquia dos operadores

Na resoluo de expresses em geral, os operadores tm a seguinte hierarquia de prioridades: () + operaes aritmticas operaes relacionais operaes lgicas

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

ALGORITMO: REPRESENTAO ELABORAO

ESTRUTURAS

DE

A grosso modo, podemos dizer que o homem faz todas as aes de seu dia a dia seguindo algoritmos. bvio que estes algoritmos quase nunca esto escritos explicitamente, mas com certeza esto muito bem gravados no subconsciente de quem os executa mecnica e inconscientemente. So exemplos de algoritmos as receitas de culinria, os manuais de montagem ou de operao de mquinas, etc. No contexto computacional, algoritmo um procedimento constitudo de um conjunto de instrues bem definidas, passveis de serem executadas por uma mquina, com o objetivo de resolver um problema. Um algoritmo deve possuir as seguintes caractersticas: ser finito, ou seja, o algoritmo possui um trmino aps um nmero limitado de passos; ser eficiente, ou seja, a execuo de um algoritmo necessita de um tempo razovel; ser bem definido, ou seja, o resultado da execuo de uma ao no deve ser ambguo, isto , aps a execuo da ao deve estar bem definida qual a prxima ao a ser realizada.

Na construo de algoritmos podemos seguir as seguintes etapas: ETAPA 1 - ESQUEMATIZAR A SADA E A ENTRADA: a tarefa de construo de algoritmos deve ser iniciada pela anlise do problema e conseqentemente dos resultados desejados, que sero chamados de SADA. Em seguida analisamos os dados necessrios para conseguir a SADA, isto , determinamos a ENTRADA do algoritmo. ETAPA 2 - CONSTRUIR O ALGORITMO: escrevemos o algoritmo em pseudocdigo (portugus estruturado), explicitando as instrues, passveis de serem executadas por uma mquina. ETAPA 3 - RASTREAR O ALGORITMO: verificamos se os resultados obtidos condizem com o esperado.

3.1

ETAPAS NA CONSTRUO DE UM ALGORITMO

3.2

Os algoritmos escritos em portugus estruturado tero a seguinte forma geral (FIGURA 5):

FORMA GERAL DE UM ALGORITMO

ALGORITMO nome_do_algoritmo { descrio suscinta do seu objetivo } VARIVEIS { declarao das variveis } INTEIRO: REAL: LGICO: CARACTER: STRING: INCIO <comandos> FIM

cabealho

rea de declaraes

corpo do algoritmo

FIGURA 5: forma geral de um algoritmo O "corpo do algoritmo" constitudo de comandos de ENTRADA, SADA e ATRIBUIO, entre outros. EXEMPLO 1: faa um algoritmo para calcular a rea de um tringulo de base B e a altura H. 10

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per ETAPA 1 - ESQUEMATIZAR A SADA E A ENTRADA: SADA: a rea do tringulo ENTRADA: a base e a altura do tringulo, sendo dado primeiramente a base e em seguida, a altura. ETAPA 2 - CONSTRUIR O ALGORITMO: o algoritmo apresentado no EXEMPLO 7 do Captulo 1 pode ser reescrito em uma forma mais simples e compacta como abaixo: ALGORITMO exemplo { OBJETIVO: ler a base e a altura de um tringulo, calcular a sua rea usando a frmula rea = base x altura 2 } VARIVEIS REAL: base, altura, valor_intermedirio , rea INCIO LEIA (base) LEIA (altura) valor_intermedirio base * altura rea valor_intermedirio / 2 ESCREVA ( rea do tringulo: , rea, cm); FIM importante notar que: o comando LEIA indica que um valor ser lido e armazenado varivel; o comando de atribuio () indica que a expresso do lado direito ser avaliada e o resultado armazenado na varivel do lado esquerdo; o comando ESCREVA indica que o valor armazenado na varivel ser mostrado em uma unidade de SADA (no vdeo, por exemplo). ETAPA 3 - RASTREAR O ALGORITMO (ou fazer o teste de mesa): supondo que o valor da base do tringulo seja 3 e o valor da altura do tringulo seja 4, executamos o algoritmo instruo por instruo, observando o valor armazenado na memria em cada varivel e o resultado obtido. instruo base ? o n 1 3 no 2 3 no 3 3 o n 4 3 no 5 3 altura ? ? 4 4 4 4 valor_intermedirio ? ? ? 12 12 12 rea ? ? ? ? 6 6

3.3

COMANDOS SIMPLES

3.3.1 Comando de atribuio

Permite que se fornea um valor a uma certa varivel, onde o tipo desse valor deve ser compatvel com o tipo da varivel. FORMA GERAL comando de atribuio: identificador valor onde valor pode ser: um valor fixo (constante); uma outra varivel; uma expresso aritmtica ou lgica: combinao de variveis, constantes e operadores.

Primeiro se avalia o que est do lado direito do operador de atribuio (valor). Isso resultar um valor que ento atribudo a varivel que est do lado esquerdo do operador 11

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per (identificador). O valor previamente armazenado ser substitudo. As variveis que estiverem do lado direito do operador de atribuio devem ter seus valores previamente definidos, os quais no sero alterados aps a execuo do comando. EXEMPLO 2: qual o valor armazenado em cada uma das variveis aps a execuo dos comandos de atribuio abaixo? a. soma_parcial 5 + 10 soma_total soma_parcial nome Jos soma_parcial 30 b. soma_parcial 5 soma_total 6 soma_total soma_parcial + 3 c. soma_total soma_total 5 soma_total + 3
instruo soma_parcial ? o n 1 15 o n 2 15 o n 3 15 o n 4 30 instruo soma_parcial ? o n 1 5 o n 2 5 o n 3 5 Instruo soma_total ? o n 1 5 o n 2 8 soma_total ? ? 15 15 15 soma_total ? ? 6 8 nome ? ? ? Jos Jos

O aparecimento da varivel do lado direito indica: use o valor armazenado; do lado esquerdo indica: armazene um novo valor.

3.3.2 Comandos de entrada e sada de dados

Para que alguns clculos sejam realizados, torna-se necessrio que sejam fornecidos dados (ENTRADA). Tambm importante ver os resultados desses clculos (SADA). Fazendo uma analogia com a culinria domstica, para fazer um bolo, so necessrios os ingredientes (a entrada), que sero processados segundo uma receita (o algoritmo), e obtm-se como resultado o bolo (a sada). Devemos construir algoritmos que permitam que o usurio fornea qualquer tipo de informao a algumas variveis, mesmo sem saber ao certo que informao ser fornecida. Como calcular a mdia de altura dos alunos do 1o. perodo, do 2o. perodo, etc.? Assim como existe um comando para atribuir um valor a uma varivel, existe um comando que permite que o usurio fornea esse valor, isto , realize a entrada de dados. FORMA GERAL comando de entrada de dados: LEIA (lista de variveis) onde lista de variveis so os nomes das variveis, separados por vrgula, nas quais sero armazenados os valores digitados pelo usurio Num programa, quando um comando de entrada de dados processado, a execuo interrompida at que uma informao compatvel com o tipo da varivel declarada seja digitada seguida da tecla ENTER. EXEMPLO 3: LEIA (nota) LEIA (nome) LEIA (nota, nome) 12

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per Da mesma forma, um algoritmo deve mostrar os resultados obtidos durante o seu processamento. Isso feito atravs de comando de sada de dados. FORMA GERAL comando de sada de dados: ESCREVA (lista de variveis e/ou constantes) onde lista de variveis e/ou constantes so os nomes das variveis, separados por vrgula, cujos contedos sero mostrados ao usurio. Alm dos contedos das variveis, o valor de uma constante (nmero ou texto) pode ser escrito diretamente

Num algoritmo ou programa, quando um comando de sada de dados processado, as informaes entre parnteses so escritas no vdeo. EXEMPLO 4: ESCREVA (nota) ESCREVA (nome) ESCREVA (nota, nome) ESCREVA (Voc pesa , peso, quilos.)

3.4

At agora vimos como desenvolver algoritmos para resolver uma classe de problemas. Esses algoritmos seguiam mais ou menos um modelo padro: entrada de valores, clculos e sada de resultados, numa estrutura seqencial, ou seja, todos os comandos eram executados uns aps os outros, linha a linha. A seguir, sero vistas as formas de selecionar e de repetir instrues.

COMANDOS ESTRUTURADOS

3.4.1 Comandos de seleo

Uma seleo permite a escolha de um grupo de comandos (instrues) a ser executado quando determinadas condies so ou no satisfeitas.

PROBLEMA 1: faa um algoritmo que leia dois valores inteiros e armazene-os em variveis, A e B. Escreva o maior dos dois valores. SOLUES: 1. uso da frmula: MAIOR entre A e B = A + B + ABS (A - B) 2 2. uso de comando de seleo

3.4.1.1 Comando de seleo: SE-ENTO-SENO


FORMA GERAL comando de seleo simples: SE expresso ENTO comando1 ... comandon FIMSE No comando de seleo simples SE-ENTO, SE o resultado da avaliao da expresso for verdadeiro, os comandos sob a clusula ENTO sero executados at encontrar o FIMSE, encerrando o comando de seleo. No entanto, SE o resultado da avaliao da expresso for falso, nenhum comando sob a clusula ENTO ser executado, ou seja, o comando de seleo ser encerrado. Encerrado o comando de seleo, o primeiro comando aps o FIMSE ser 13

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per executado. EXEMPLO 5: verificar como est o tempo SE est chovendo ENTO levar guarda-chuva FIMSE sair de casa EXEMPLO 6: faa um algoritmo que leia dois valores inteiros e escreva o maior deles. ALGORITMO exemplo VARIVEIS INTEIRO: a, b INCIO LEIA (a, b) SE (a > b) ENTO ESCREVA (o valor : , a) FIMSE SE (b > a) ENTO ESCREVA (o valor : , b) FIMSE FIM onde (a > b) uma expresso lgica cujo valor verdadeiro ou falso, e que define qual ao ser tomada. Por exemplo, se o valor armazenado em a for 5 e o valor armazenado em b for 8, a expresso (a > b) falsa, o valor de b deve ser escrito atravs da execuo do comando ESCREVA (o valor : , b). FORMA GERAL comando de seleo composto: SE expresso ENTO comando1 ... comandon SENO comando1 ... comandom FIMSE No comando de seleo composto SE-ENTO-SENO, SE o resultado da avaliao da expresso for verdadeiro, os comandos sob a clusula ENTO sero executados at encontrar a clusula SENO, encerrando o comando de seleo. J SE o resultado da avaliao da expresso for falso, os comandos sob a clusula SENO sero executados at encontrar o FIMSE encerrando o comando de seleo. Encerrado o comando de seleo, o primeiro comando aps o FIMSE ser executado.

14

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per EXEMPLO 7: verificar o fluxo de carros SE vem carro ENTO atravessar correndo a rua descansar SENO atravessar a rua FIMSE EXEMPLO 8: faa um algoritmo que leia os nomes de duas pessoas e verifique se so ou no iguais. ALGORITMO exemplo VARIVEIS STRING: nome1, nome2 INCIO LEIA (nome1, nome2) SE (nome1 = nome2) ENTO ESCREVA (nomes iguais) SENO ESCREVA (nomes diferentes) FIMSE FIM importante salientar que qualquer comando simples ou estruturado pode aparecer dentro de qualquer outro comando estruturado. Assim, dentro de um comando SE-ENTOSENO podem estar diversos comandos de entrada de dados, de sada de dados, de atribuio e inclusive outros comandos de seleo. Observa-se ainda que os algoritmos apresentados at aqui foram escritos usando o recurso de identao, ou seja, os algoritmos foram escritos com margens que facilitam a visualizao do escopo de cada comando.

3.4.1.2 Comando de seleo: ESCOLHA


FORMA GERAL comando de seleo: ESCOLHA expresso opo1: comando1 ... comandon comando1 opon: ... comandom SENO comando1 ... comandoo FIMESCOLHA onde: expresso opo deve ser do tipo INTEIRO, CARACTER ou LGICO deve ser uma ou mais constantes e/ou uma ou mais faixas de valores se parados por vrgula

No comando de seleo ESCOLHA, se o valor da expresso for igual ao valor da opo1 , ento os comandos associados opo sero executados; caso contrrio, se o valor da expresso for igual ao valor da opon, ento os comandos associados opo sero executados; caso contrrio, os comandos sob a clusula SENO sero executados. Encerrada a execuo dos comandos associados a uma das opes ou os comandos sob a clusula SENO, o primeiro comando aps o FIMESCOLHA ser executado. No comando ESCOLHA, a clusula 15

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per SENO opcional e apenas uma opo considerada verdadeira. EXEMPLO 9: faa um algoritmo que leia um caracter e determine se uma letra, um dgito ou um operador (+, -, *, /), caso contrrio, identifique-o como um caracter especial. ALGORITMO exemplo VARIVEIS CARACTER: caracter_lido INCIO LEIA (caracter_lido) ESCOLHA caracter_lido A..Z, a..z : ESCREVA ( letra) 0..9 : ESCREVA ( dgito) +, -, *, / : ESCREVA ( operador) SENO ESCREVA ( caracter especial) FIMESCOLHA FIM

3.4.2 Comandos de repetio


vezes.

Esses comandos produzem a repetio da execuo de um conjunto de comandos vrias

PROBLEMA 2: uma pessoa comprou 2 artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com desconto de cada artigo, e escreva tambm o total a pagar. Podemos escrever um conjunto de instrues para executar os clculos solicitados. Quantas vezes esse conjunto de instrues ser executado? 1 vez para 2 produtos. E se forem 4, 8, 20, 40 produtos? Poderamos escrever o conjunto de instrues 2, 4, 10, 20 vezes. Soluo simples, porm invivel. Outra soluo seria uma repetio da mesma seqncia de comandos usando um comando de repetio. O nmero de repeties pode ser indeterminado, porm deve finito. Podemos, por exemplo: calcular o preo com desconto enquanto a quantidade de produtos for menor que 2, calcular o preo com desconto at que a quantidade de produtos seja igual a 2.

3.4.2.1 Comando de repetio: ENQUANTO-FAA

No comando ENQUANTO-FAA, o conjunto de comandos executado repetidamente enquanto uma expresso permanece verdadeira. FORMA GERAL comando de repetio: ENQUANTO expresso FAA comando1 ... comandon FIMENQUANTO

No comando ENQUANTO-FAA, a expresso avaliada antes do conjunto de comandos que compe o comando de repetio ser executado. Se o resultado da avaliao da expresso for verdadeiro, todos os comandos sero executados, quando a expresso novamente avaliada. Se o resultado da avaliao da expresso for falso, o comando de repetio encerrado. Encerrado o comando de repetio, o primeiro comando aps o FIMENQUANTO ser executado. EXEMPLO 10: uma pessoa comprou 4 artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com 16

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per desconto de cada artigo, e escreva tambm o total a pagar. ALGORITMO exemplo VARIVEIS INTEIRO: desconto, numero_produtos REAL: preo, pcd, total STRING: nome INCIO numero_produtos 0 total 0 ENQUANTO numero_produtos < 4 FAA LEIA (nome, preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) numero_produtos numero_produtos + 1 total total + pcd FIMENQUANTO ESCREVA (total) FIM EXEMPLO 11: uma pessoa comprou n artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com desconto de cada artigo, e escreva tambm o total a pagar. ALGORITMO exemplo VARIVEIS INTEIRO: desconto, nmero_produtos, n REAL: preo, pcd, total STRING: nome INCIO LEIA (n) numero_produtos dutos 0 total 0 ENQUANTO numero_produtos < n FAA LEIA (nome, preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) numero_produtos numero_produtos + 1 total total + pcd FIMENQUANTO ESCREVA (total) FIM EXEMPLO 12: uma pessoa comprou artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com desconto de cada artigo, e escreva tambm o total a pagar. Um nome de produto igual a FIM indica o fim da entrada de dados. ALGORITMO exemplo VARIVEIS INTEIRO: desconto REAL: preo, pcd, total STRING: nome INCIO total 0 LEIA (nome) 17

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per ENQUANTO nome FIM FAA LEIA (preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) total total + pcd LEIA (nome) FIMENQUANTO ESCREVA (total)

FIM

3.4.2.2 Comando de repetio: REPITA-AT

No comando REPITA-AT, o conjunto de comandos executado repetidamente at que uma expresso torne-se verdadeira. FORMA GERAL comando de repetio: REPITA comando1 ... comandon AT expresso Os comandos que compem o comando de repetio so executados e ento a expresso avaliada. Se o resultado da avaliao da expresso for falso, todos os comandos sero novamente executados, quando a expresso mais uma vez avaliada. Se o resultado da avaliao da expresso for verdadeiro, encerra o comando de repetio. Encerrado o comando de repetio, o primeiro comando aps o AT ser executado.

EXEMPLO 13: uma pessoa comprou 4 artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com desconto de cada artigo, e escreva tambm o total a pagar. ALGORITMO exemplo VARIVEIS INTEIRO: desconto, nmero_produtos REAL: preo, pcd, total STRING: nome INCIO nmero_produtos 0 total 0 REPITA LEIA (nome, preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) nmero_produtos nmero_produtos + 1 total total + pcd AT nmero_produtos = 4 ESCREVA (total) FIM

3.4.2.3 Comando de repetio: PARA-FAA

No comando PARA-FAA, o conjunto de comandos executado repetidamente enquanto uma varivel de controle vai sendo incrementada ou decrementada, at que ela assuma um determinado valor. 18

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

FORMA GERAL comando de repetio: PARA varivel DE valor-inicial AT valor-final (passo) FAA comando1 ... comandom FIMPARA Os comandos que compem o comando de repetio so executados um nmero determinado de vezes. A varivel de controle assume o valor-inicial sendo incrementada automaticamente aps a execuo dos comandos de acordo com o valor dado em passo at o valor-final. A cada execuo do comando de repetio avaliado se a varivel de controle assumiu um valor igual ao valor-final. Nesse caso, o comando de repetio executado mais uma vez e ento encerrado. Encerrado o comando de repetio, o primeiro comando aps o FIMPARA ser executado. EXEMPLO 14: uma pessoa comprou 4 artigos em uma loja. Para cada artigo tem-se: nome, preo, percentual de desconto. Faa um algoritmo que escreva nome, preo e preo com desconto de cada artigo, e escreva tambm o total a pagar. ALGORITMO exemplo VARIVEIS INTEIRO: desconto, nmero_produtos REAL: preo, pcd, total STRING: nome INCIO total 0 PARA nmero_produtos DE 1 AT 4 (passo 1) FAA LEIA (nome, preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) total total + pcd FIMPARA ESCREVA (total) FIM No comando PARA-FAA, quando o valor do passo for 1 (um) pode ser omitindo. Assim, poderamos ter escrito o algoritmo acima da seguinte forma: ALGORITMO exemplo VARIVEIS INTEIRO: desconto, nmero_produtos REAL: preo, pcd, total STRING: nome INCIO total 0 PARA nmero_produtos DE 1 AT 4 FAA LEIA (nome, preo, desconto) pcd preo - preo * desconto ESCREVA (nome, preo, pcd) total total + pcd FIMPARA ESCREVA (total) FIM 19

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

3.4.2.4 Comparao entre os comandos de repetio


comando ENQUANTO-FAA REPITA-AT PARA-FAA expresso incio fim no tem

nmero de execues ? No mnimo 1 ABS (valor-final - valor-inicial + passo)

condio de parada expresso falsa expresso verdadeira varivel = valor-final

Observa-se que todo comando ENQUANTO-FAA pode ser convertido para REPITA-AT e vice-versa. E todo comando PARA-FAA pode ser convertido para ENQUANTO-FAA, mas nem todo comando ENQUANTO-FAA pode ser convertido para PARA-FAA.

20

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

MODULARIZAO DE ALGORITMOS

Para resolver um problema, desenvolvemos uma seqncia de passos que representam as aes que levam resoluo do problema. Essas aes constituem-se de estruturas de controle (seqncia, repetio, seleo), comandos de entrada/sada e comandos de atribuio. medida que os problemas a serem solucionados se tornam mais complexos, temos uma srie de pequenos problemas, cujas respectivas solues integram a soluo global. Quando esse conjunto de aes construdo, podemos nos deparar literalmente com um amontoado de aes que afetam a legibilidade do algoritmo, porque no ficam claras as pequenas partes lgicas que solucionam cada pequeno problema, dificultando a assimilao da soluo por outra pessoa. Utilizamos, ento, a tcnica de modularizao que permite a construo de pequenas solues (mdulos) para problemas complexos. Buscamos assim, aumentar a funcionalidade das partes do conjunto de aes que compe a soluo final. Muitas vezes, os mdulos podem conter um conjunto de aes (seqncia de comandos) que repetida vrias vezes num algoritmo, ou seja, os mdulos proporcionam uma diminuio do tamanho de algoritmos maiores. Alm disso, a estruturao de algoritmos facilita a deteco de erros, a documentao e manuteno de sistemas e a reutilizao de mdulos j implementados. Um algoritmo pode ser dividido em algoritmo PRINCIPAL e em diversos mdulos, tantos quantos forem necessrios para a soluo do problema. O algoritmo PRINCIPAL sempre por onde inicia e termina a execuo do algoritmo, devendo ativar os demais mdulos. Os mdulos podem ser ativados por outros mdulos e podem ativar outros mdulos. A ativao de um mdulo ocorre quando um determinado ponto do algoritmo contm o identificador do mdulo. Existem basicamente dois tipos de mdulos: funes: retornam somente um valor; procedimentos: retornam zero ou mais valores.

4.1

A maioria das linguagens de programao disponibiliza vrias funes e procedimentos. As funes trigonomtricas seno (SIN), cosseno (COS) e tangente (TAN) so comumente encontras em linguagens cientficas, entre outras. Funes podem ser utilizadas diretamente nas expresses.

FUNES

EXEMPLO 1: faa um algoritmo que leia para 10 tringulos o valor dos catetos e calcule a hipotenusa (h2 = a2 + b2). Considere a existncia das funes SQRT para raiz quadrada e SQR para quadrado de um nmero. ALGORITMO exemplo VARIVEIS REAL: a, b, hipotenusa INTEIRO: contador INCIO PARA contador DE 1 AT 10 FAA LEIA (a, b) hipotenusa SQRT (SQR (a) + SQR (b)) ESCREVA (hipotenusa) FIMPARA FIM O comando hipotenusa SQRT (SQR (a) + SQR (b)) calcula o comprimento da hipotenusa de um tringulo retngulo como sendo a raiz quadrada da soma dos quadrados dos 21

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per catetos. As funes so utilizadas em expresses e tm um nico valor. Devemos fornecer o argumento (ou argumentos) necessrios para o clculo de um valor especfico. Esse argumento pode ser uma expresso qualquer, cujo o resultado o valor que a funo opera. Em matemtica, uma funo escrita numa forma geral, como por exemplo: f (x) = x2 - 3 x + 2 2 2 g (x, y) = x - y A funo f foi definida em termos de um parmetro x. Assim, quando x = 3, devemos substituir o valor de x na funo f obtendo f (3) = 12. A funo g foi definida em termos de dois parmetros. Assim, um nmero correspondente de argumentos requerido para cada avaliao da funo. Por exemplo, g (3, 2) = 5 g (2, 3) = -5. Portanto, na definio de uma funo importante a enumerao dos parmetros em termos dos quais a funo definida. E, na avaliao de uma funo estabelecida uma correspondncia entre os parmetros da definio e os argumentos fornecidos. Os comandos que compem uma funo so escritos separadamente dos comandos que compem (a parte principal d)o algoritmo. Os clculos sero executados sob controle do algoritmo principal quando solicitado, uma ou mais vezes quando necessrio. parmetros FORMA GERAL de uma funo: FUNO nome_da_funo ( p1: TIPO, p2, p3: TIPO, ... pn: TIPO ) : TIPO VARIVEIS { declarao das variveis locais } INCIO tipo do resultado da <comandos> funo nome_da_funo valor FIM

cabealho

corpo da funo

Os parmetros so opcionais, ou seja, podem ou no existir. Uma funo calcula e retorna um valor do tipo especificado (aps os dois pontos : ). Entre os comandos que compem o corpo da funo deve existir no mnimo um que uma atribuio de um valor ao nome da funo. O resultado da funo o ltimo valor atribudo. Os tipos de resultados vlidos para uma funo so: INTEIRO, REAL, CARACTER, STRING (TYPE palavra = STRING [20]) ou LGICO. A utilizao de funes altera o fluxo de execuo do algoritmo. Quando uma funo chamada (ativada), a execuo passa para os comandos da funo. Aps a execuo da funo com os argumentos fornecidos, a execuo retorna ao ponto de chamada no algoritmo principal com os valores calculados na funo. Dentro do algoritmo, a chamada de uma funo pode aparecer numa expresso de mesmo tipo do valor retornado pela funo, num comando de atribuio ou num comando de sada de dados.

4.2

Um procedimento um mdulo composto por um conjunto de comandos, contendo incio e fim, identificado por um nome, atravs do qual ser referenciado em qualquer parte do algoritmo principal. A diferena bsica entre procedimento e funo que uma funo sempre retorna um valor aps o seu processamento, enquanto um procedimento pode ou no retornar valores aps seu processamento. O retorno de qualquer valor por um procedimento feito atravs da lista de parmetros. Qualquer quantidade de valores pode retornar.

PROCEDIMENTOS

22

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per parmetros FORMA GERAL de um procedimento: PROCEDIMENTO nome_do_procedimento ( p1: TIPO, ... pn: TIPO ) VARIVEIS { declarao das variveis locais } INCIO <comandos> FIM

cabealho

corpo do procedimento

Dentro do algoritmo, a chamada de um procedimento nunca aparece numa expresso ou num comando de atribuio ou num comando de sada de dados, como no caso das funes. Pelo contrrio, a chamada de um procedimento feita atravs de comandos isolados, ou seja, atravs do nome do procedimento e dos respectivos parmetros.

4.3

So dois os tipos das variveis utilizadas em um algoritmo: variveis globais e variveis locais. Uma varivel considerada varivel global quando declarada no algoritmo tornando-se passvel de aplicao por qualquer mdulo integrante e em qualquer parte. Em alguns casos, uma varivel utilizada por apenas um mdulo especfico, o que no justifica uma definio global. Nessa situao, a varivel declarada internamente ao mdulo e denominada local. Dessa forma, os demais mdulos (funes e procedimentos) e o algoritmo principal no podero fazer uso daquela varivel. O escopo de uma varivel denota a sua visibilidade perante os diversos mdulos integrantes do algoritmo.

VARIVEIS GLOBAIS E LOCAIS

Segundo SALIBA (1992), "parmetros so canais pelos quais estabelecida uma comunicao bidirecional entre um mdulo e o algoritmo PRINCIPAL ou outros mdulos". Na utilizao de mdulos parametrizados, devemos enviar as informaes (argumentos) quando da chamada do mdulo atravs de variveis e/ou constantes, na respectiva ordem e tipo de declarao dos parmetros do mdulo. Em cada chamada de um mdulo, uma correspondncia estabelecida entre os argumentos (ou parmetros reais) da chamada e os parmetros (formais) do mdulo. Assim, podemos dizer que parmetros so os nomes definidos no cabealho do mdulo e argumentos so as variveis ou valores que so enviados para o mdulo quando da ativao do mesmo. O nome do parmetro pode ser qualquer um, inclusive o mesmo nome do argumento. O mtodo mais direto de associao de argumentos com parmetros o da passagem por valor. No processamento da chamada, cada argumento avaliado e os valores individuais so atribudos aos respectivos parmetros. No faz diferena se o argumento um varivel, uma constante ou uma expresso, o que importa que tenha um valor. Na passagem de parmetros por valor, mudanas nos parmetros dentro do mdulo no resultam em mudanas correspondentes nos argumentos pois feita uma cpia do valor do argumento no parmetro. Um outro mtodo de passagem de parmetro o da passagem por varivel (ou passagem por referncia). Neste caso, passada a prpria varivel e modificaes efetuadas dentro do mdulo refletem no algoritmo. A passagem de parmetros por varivel pode gerar os chamados efeitos colaterais. Utilizamos passagem por varivel quando necessrio retornar informaes do procedimento. A definio da passagem por varivel feita atravs do uso da palavra VAR antecedendo o parmetro na declarao do cabealho do mdulo. "Um mesmo mdulo pode utilizar diferentes mtodos de passagem de parmetros, para parmetros distintos" (SALIBA, 1992).

4.4

PARMETROS

23

ALGORITMOS E PROGRAMAO DE COMPUTADORES 1. per

BIBLIOGRAFIA
FARRER, H. et al. Programao estruturada e computadores: algoritmos estruturados. Rio de Janeiro: LTC, 1989. 259 p. FORBELLONE, A.L.V.; EBERSPCHER, H.F. Lgica de Programao: a construo de ALGORITMOS e ESTRUTURA DE DADOS. So Paulo: Makron Books do Brasil, 1993. 178 p. MANZANO, J.A.N.G.; YAMATUMI, W.Y. Programando em Turbo PASCAL 7.0: guia prtico de orientao e desenvolvimento. So Paulo: rica, 1996. 362 p. SALIBA, W.L.C. Tcnicas de programao: uma abordagem estruturada. So Paulo: Makron Books do Brasil, 1992. 141 p. THIRY, M. Lgica: notas de aula. Curso de Cincia da Computao: UNIVALI. Biguau/SC. 1994. TREMBLAY, J.P.; BUNT, R.B. Cincias dos computadores: uma abordagem algortmica. So Paulo: McGraw-Hill, 1989. 402 p.
XIMENES, F. Microsoft Press Dicionrio de Informtica Ingls-Portugus Portugus-Ingls. Rio de Janeiro: Campus, 1993, 500 p.

24