Conceitos básicos de algoritmos e pseudocódigo ______________________________1

1.1 Algoritmo ______________________________________________________________ 1 1.2 O Pseudocódigo _________________________________________________________ 2 1.3 Variáveis _______________________________________________________________ 2 1.4 Literais ________________________________________________________________ 3 1.5 Expressões Aritméticas ___________________________________________________ 3
1.5.1 Operadores Aritméticos ________________________________________________________ 3 1.5.2 Regras de hierarquia dos operadores aritméticos _____________________________________ 4

1.6 Expressões Lógicas ou booleanas ___________________________________________ 5 1.7 Instruções Algorítmicas Básicas____________________________________________ 6
1.7.1 Entrada _____________________________________________________________________ 6 1.7.2 Saída _______________________________________________________________________ 6 1.7.3 Corpo do algoritmo____________________________________________________________ 6 1.7.3.1 Atribuição __________________________________________________ 6 1.7.3.2 Decisão Simples______________________________________________ 7 1.7.3.3 Decisão com caso oposto _______________________________________ 7 1.7.3.4 Iteração para frente ___________________________________________ 7 1.7.3.5 Iteração para trás _____________________________________________ 7 1.7.3.6 Loops ______________________________________________________ 8 1.7.3.7 Verificação de Casos __________________________________________ 8

Rotinas e Passagem de parâmetros_________________________________________9
Variáveis ________________________________________________________________________ 9 Parâmetros _______________________________________________________________________ 9 Parâmetros por valor _______________________________________________ 11 Parâmetros por referência ___________________________________________ 11

Exemplos de Invocações ____________________________________________________ 12
A Procedimentos _________________________________________________________________ 12 A Funções ______________________________________________________________________ 13

Conclusões _______________________________________________________________ 14

FIM Evidentemente este é um algoritmo não computacional. podemos dizer que um programa é a implementação de um algoritmo em uma determinada linguagem de programação seguindo as regras estabelecidas pela linguagem escolhida. mas sim por uma pessoa. Quando um algoritmo pode ser executado por um computador. algoritmo e programa Todo algoritmo deve ter as seguintes características: Deve ser preciso. caso contrário. Por exemplo. Entrada de dados. diz-se que é um algoritmo não computacional. Para um algoritmo poder ser executado por um computador. O algoritmo expresso em uma determinada linguagem de programação. cada instrução deve indicar em forma inequívoca o que deve ser feito.CONCEITOS BÁSICOS DE ALGORITMOS E PSEUDOCÓDIGO 1. ou seja. Outro caso de algoritmo é o algoritmo matemático de Euclides para a obtenção do máximo divisor comum de dois números. Deve ser finito.. ENTRADAS: 2 colheres de cacau 1/3 xícara de manteiga 2 colheres de água 1 xícara de açúcar ½ colherinha de baunilha 1 pitada de sal SAÍDAS: O molho de chocolate pronto para servir. deve produzir os mesmos resultados para as mesmas condições de entrada.1 Algoritmo Um algoritmo é um conjunto ordenado e finito de instruções que conduzem à solução de um problema. ao instalar uma aparelho de som executamos as instruções contidas no manual do equipamento. Na Figura a seguir. para isto é necessária uma determinada linguagem de programação. apresenta-se a relação entre problema. Processo. com a manteiga e o cacau (tudo misturado). Colocar no microondas mais 30 segundos. INÍCIO Aquecer 1 minuto no microondas a água. 3. este conjunto de instruções constituem um algoritmo. . mas o algoritmo para instalar o aparelho de som é um algoritmo não computacional. denomina-se programa. ele precisa ser expresso em instruções compreensíveis pelo computador. diz-se que é um algoritmo computacional. Deve ser definido. algoritmo e programa Figura Problema. não poderá ser executado por um computador. ou seja. ou seja. Saída de resultados Exemplo: Algoritmo para preparar um molho de chocolate no microondas. 2. o algoritmo de Euclides é um algoritmo computacional. Na vida cotidiana executamos constantemente algoritmos. Em outras palavras. Acrescentar batendo os demais ingredientes. Todo algoritmo pode se decompor em três partes: 1. deve ter um número limitado de passos. Segundo isto.

No caso deste curso orientaremos os pseudocódigos à linguagem Java. nome3.. O objetivo do pseudocódigo é permitir ao programador se focar nos aspectos lógicos da solução. além disso. C. C++.. é fácil sua tradução às linguagens de programação. Java. nome2 nomen.3 Variáveis Uma variável é uma localização ou casa na memória principal que armazena um valor que pode mudar no decurso da execução do programa. Como linguagem de pseudoprogramação. Nomes das variáveis. 1. Outros caracteres do nome podem ser letras. Toda variável tem um nome.. 1. evitando as regras de sintaxe das linguagens de programação. ENTRADAS: A quantidade M de metros SAÍDAS: A quantidade C de centímetros e a quantidade P de polegadas INÍCIO Cálculo de centímetros : C = M*100 Cálculo de polegadas : P = C/2.Exemplo: Algoritmo para expressar em centímetros e polegadas uma quantidade dada em metros. Desta maneira podemos encontrar pseudocódigos orientados a linguagens de programação como Pascal. ou seja. CARACTER (se a variável irá armazenar um caractere). Para declarar variáveis usaremos os seguintes formatos: Declaração de uma variável: tipo nome Declaração de várias variáveis com o mesmo tipo de dado: tipo nome1.. que pode ser: INTEIRO (se a variável irá armazenar um número inteiro). não há um pseudocódigo padrão. os pseudocódigos variam de um programador para outro. O nome de uma variável deve começar com uma letra. . nome1. um tipo de dado e um valor. Antes de poder utilizar uma variável é necessário declará-la especificando seu nome e seu tipo de dado. Quando um programa precisa armazenar um dado. REAL (se a variável irá armazenar um número decimal) . Pode se fazer a conversão para um programa de computador (para o qual temos que escrevê-lo em uma linguagem de programação). mas também pode ser executado manualmente por uma pessoa.. nome2. nomen Na qual tipo É o tipo de dado da variável.2 O Pseudocódigo O pseudocódigo é uma linguagem de pseudoprogramação utilizada para escrever algoritmos computacionais. ele precisa de uma variável.. o pseudocódigo é uma imitação de uma ou mais linguagens de programação. . Não sendo o pseudocódigo uma linguagem formal. símbolos de sublinhado ou símbolo de dólar. Também deve se levar em conta que uma letra maiúscula se considera diferente de uma letra minúscula. um símbolo de sublinhado ou um símbolo de dólar. É também fácil modificar o pseudocódigo caso sejam encontrados erros ou anomalias na lógica do programa.54 FIM Este é um algoritmo computacional escrito em linguagem natural. etc. CADEIA (se a variável irá armazenar um conjunto de caracteres) ou LOGICO (se a variável irá armazenar o valor verdadeiro ou o valor falso).

'B'. '. idade desconto ? ? A seguinte instrução declara as variáveis nota1. INTEIRO idade REAL desconto Isto cria as casas de memória idade e desconto. INTEIRO nota1. as variáveis estão indefinidas ( ? ). . etc. literais e operadores aritméticos.456.4 Literais Denominam-se literais todos aqueles valores que figuram no pseudocódigo e podem ser: Literais inteiros 12.Exemplo: Declaração de variáveis A seguinte instrução declara a variável idade de tipo INTEIRO e a variável desconto de tipo REAL. Literais reais 3. todas do tipo INTEIRO. Depois da criação.1416. nota2 e nota3. Tabela Operadores aritméticos Operador + Significado Adição Subtração Exemplo a+b a-b . "Algoritmos Computacionais". Literais lógicos verdadeiro. '+'. Literais de caracteres 'a'. etc.5 Expressões Aritméticas Uma expressão aritmética é uma combinação de variáveis. etc. nota2 e nota3. 15. nota2. falso 1.1 Operadores Aritméticos Na tabela a seguir apresentam-se os operadores aritméticos que iremos utilizar. nota1 nota2 nota3 ? ? ? 1. '<'.'. 1. nota3 Isto cria as casas de memória nota1. Depois da criação.5. etc. Literales de cadeia "Oi". 2345. 20300. as variáveis estão indefinidas ( ? ).

Assim. ambos os operandos são inteiros.75. o resultado já obtido de a*b*c será dividido entre d.5.0/4 é 3. 1. abc e= d e . /. o resultado já obtido de a*b será multiplicado por c. se algum deles é real. 15/4 é 3 e não 3. a e= b c Exemplo: Qual é o equivalente em pseudocódigo da seguinte expressão algébrica? Solução e = a*b*c/d/e Como todos os operadores têm a mesma hierarquia. Terceiro. % +. a avaliação será de esquerda para a direita. a avaliação será de esquerda para a direita: Primeiro. Ordem de avaliação Avaliam-se em primeiro lugar Avaliam-se em segundo lugar Avaliam-se em terceiro lugar Se existirem parênteses aninhados. avalia-se primeiro a expressão no par mais interno. por isso não é necessário nenhum par de parênteses. o resultado já obtido de a*b*c/d será dividido entre e.* / % Multiplicação Divisão Resíduo a*b a/b a%b Os operadores aritméticos podem utilizar-se com tipos inteiros e reais. o resultado já obtido de a/b será dividido entre c. 15. Segundo. Quarto.75. Exemplo: Qual é o equivalente em pseudocódigo da seguinte expressão algébrica? Solução e = a/b/c Como todos os operadores têm a mesma hierarquia. será multiplicado a por b. a ordem de aplicação dos operadores segue uma ordem precisa determinada pelas regras de hierarquia dos operadores aritméticos apresentados na seguinte tabela. por isso não é necessário nenhum par de parêntese. Tabela Regras de hierarquia dos operadores aritméticos Operador () *. o resultado é real. Segundo. o resultado é um inteiro. Se em uma operação com dois operandos. será dividido a entre b. Observe que a ordem desta execução de acordo com a expressão algébrica.2 Regras de hierarquia dos operadores aritméticos Quando uma expressão aritmética tem mais de um operador aritmético. Se vários operadores ou parênteses têm a mesma hierarquia. a avaliação será de esquerda para a direita: Primeiro. no entanto. Observe que a ordem desta execução está de acordo com a expressão algébrica.

6 Expressões Lógicas ou booleanas Uma expressão lógica combina variáveis.1. literais. Os operadores relacionais e os operadores lógicos são exibidos nas tabelas que apresentamos a seguir. Tabela Operadores relacionais Operador > >= < <= == != Significado maior que maior ou igual a menor que menor ou igual a igual a diferente de Exemplo a>b a >= b a<b a <= b a == b a != b Tabela Operadores lógicos ou booleanos Operador ! && || Significado Não E Ou Exemplo !a a && b a || b Tabelas de verdade: a Verdadeiro Falso a Falso Falso Verdadeiro verdadeiro b Falso Verdadeiro Falso Verdadeiro !a Falso Verdadeiro a && b Falso Falso Falso Verdadeiro a || b Falso Verdadeiro Verdadeiro Verdadeiro . operadores relacionais e operadores lógicos. operadores aritméticos. Ambos geram um resultado booleano.

7. Assim. Vejamos agora uma solução “em pseudocódigo”. o valor da variável ImportânciaCompra.3 Corpo do algoritmo No corpo (ou body.1 Entrada Consiste em obter um dado de um dispositivo de entrada. A expressão pode ser uma simples variável. C e P REAL M.54 centímetros.3.1. os passos a seguir (as instruções) para resolver o problema que resolve o algoritmo.7. e armazená-lo em uma variável.7 Instruções Algorítmicas Básicas Existem três instruções algorítmicas básicas que são as seguintes. como o teclado. 1. ao atribuir o valor INTEIRO 25 a uma variável REAL. As instruções podem ser quaisquer das que se mencionam a seguir. Exemplo: Algoritmo para expressar em centímetros e polegadas uma quantidade dada em metros. a ação de mostrar o valor de uma variável é expressada no pseudocódigo mediante a palavra IMPRIMIR da seguinte forma: IMPRIMIR (variável) Por exemplo. então o valor INTEIRO será convertido em REAL antes de armazenar-se. Quando se atribui um valor INTEIRO a uma variável REAL. guardando o mencionado valor na variável M . Em geral. Sobre este mesmo exemplo já vimos antes seu “algoritmo computacional escrito em linguagem natural”.2 Saída Consiste em mostrar o valor de uma variável em um dispositivo de saída. será armazenado 25. literais e operadores. 1.0.1 ATRIBUIÇÃO Consiste em atribuir a uma variável o valor de uma expressão. a ação de ingressar um dado a uma variável é expressada no pseudocódigo mediante a palavra LER. INÍCIO // Declara as variáveis M. P // Solicita o ingresso da quantidade em metros. a instrução: IMPRIMIR (ImportânciaCompra) mostra.7. em algum dispositivo de saída (como a tela). como a tela. utilizando conceitos computacionais de variável. A solução considera que 1 metro = 100 centímetros e que 1 polegada = 2. em inglês) é onde escrevemos o que conforma o algoritmo como tal. em forma ordenada.7. Ou seja. da seguinte forma: LER variável Por exemplo. Em geral. a instrução: LER estatura solicita o ingresso de um valor de algum dispositivo de entrada (como o teclado). para guardar o valor digitado na variável estatura. entrada de dados e saída de resultados. é onde escrevemos. 1. C. 1. um simples literal ou uma combinação de variáveis. A atribuição é expressada no pseudocódigo da seguinte forma: variável = expressão No qual variável e o valor de expressão devem ter o mesmo tipo de dado.

3. FIM PARA (FOR … TO … [STEP] … ENDFOR) 1......7.54 // Mostra os valores das variáveis C e P IMPRIMIR (C..2 DECISÃO SIMPLES SE condição .....LER M // Calcula a quantidade em centímetros e o atribui à variável C C = M*100 // Calcula a quantidade em polegadas e o atribui à variável P P = C/2..7........3...4 ITERAÇÃO PARA FRENTE PARA valor inicial ATÉ valor final .... FIM SE (IF cond – ENDIF) 1....7......3.5 ITERAÇÃO PARA TRÁS PARA valor inicial ATÉ valor final PASSO -1 ..........3 DECISÃO COM CASO OPOSTO SE condição .... FIM PARA ... SE NÃO .. FIM SE (IF cond – ELSE – ENDIF) 1.....3...7... P) FIM 1..

.3....... OTHERWISE: ............ ENDCASE) . CASO 2: ....7 VERIFICAÇÃO DE CASOS EM CASO QUE variável SEJA CASO 1: .. FIM EM CASO (DO CASE CASE cond 1: .............7....... Com verificação de condição ao início ENQUANTO condição FAZER .... CASE cond 2: ...........3............................. EM OUTRO CASO . Com verificação de condição ao final REPETIR ......1....................7................ ATÉ condição 1..6 LOOPS 1.... CASO 3: ............. FIM ENQUANTO (DO WHILE cond) 2...

. As funções são usadas para obter e devolver um valor.As listas pequenas som mais legíveis.O esforço da programação concentra-se finalmente em subproblemas pequenos e simples. - Nestas condições. Em terceiro lugar. libera-se o espaço que ocupavam em memória ficando disponível para ser utilizado por outras. fazendo referência às que estão definidas na linguagem (compilador). As variáveis que só têm significado em uma parte do programa chamam-se LOCAIS. Com esse enfoque. As tarefas de desenvolver os módulos podem se dividir entre várias pessoas. depois. Embora seja possível. Denominam-se parâmetros ou argumentos de uma rotina (procedimento ou função) aqueles dados (variáveis ou expressões) que são necessários para a execução da rotina.ROTINAS E PASSAGEM DE PARÂMETROS Uma rotina é um conjunto de sentenças que têm um identificador associado (nome da rotina) e são executadas como grupo quando invocada.Resulta natural a adaptação ao trabalho em equipe. Isso se obtém mediante as listas dos PARÂMETROS.É fácil escrever módulos pequenos livres de erro e verificá-los independentemente com dados simulados. Variáveis Nas rotinas é possível utilizar e modificar variáveis do escopo de um programa em determinadas condições. O desenho modular está voltado a conseguir programas confiáveis e legíveis: . . Têm a existência garantida só enquanto durar a execução do procedimento ou função na qual foram declaradas. fala-se de variáveis DO SISTEMA. Então resulta fácil desenvolver cada um dos elementos do programa. usam-se dois tipos de rotinas: os PROCEDIMENTOS e as FUNÇÕES. . Invocam-se quando um identificador de função aparece dentro de uma expressão. Geralmente. fica claro que em uma rotina (procedimento ou função) é possível manejar qualquer objeto global e todos os que tiverem sido declarados localmente. depurá-los e prová-los independentemente até ele funcionarem corretamente. É preferível trabalhar com variáveis de âmbito local e dispor de alguma via para relacioná-las com as definidas a nível global e com as que são locais de outras rotinas. Parâmetros Em todos estes casos precisa-se dispor de algum mecanismo para intercambiar valores entre as rotinas e o resto do programa. não convém atuar sobre variáveis globais do interior dos subprogramas para não correr o risco de modificar inadvertidamente valores externos ao procedimento ou função. que consiste em abordar o desenho dos programas decompondo o Problema em partes mais simples e repetindo este processo em forma sucessiva até que a solução de cada uma das partes seja trivial. . que se expressam em forma de rotinas. o programa fica organizado em módulos. São as que se declaram em um procedimento ou função e são conhecidas só no mesmo e em qualquer outro que estiver aninhado dentro. Obviamente. chamados também ARGUMENTOS. A rotina ou subprograma podem ser vistos como uma caixa preta que realiza uma função determinada. Com as rotinas (também chamadas subprogramas) dispõe-se de uma estrutura muito apropriada para praticar o método de desenvolvimento em etapas sucessivas. As variáveis GLOBAIS são conhecidas ao longo de todo o programa e existem durante toda a execução. Invocam-se com uma sentença executável denominada "chamada a procedimento". estas são conhecidas em qualquer parte do programa. Os procedimentos são usados para realizar um conjunto de ações.

visto que a saída produz um valor único que vai associado ao identificador da própria função. Segundo o mecanismo que atua. SAÍDA inteiro resultado) início fim resultado = somando1 + somando2 Os parâmetros indicados na declaração das rotinas chamam-se PARÂMETROS FORMAIS. ENTRADA inteiro somando1 inteiro somando2 SAÍDA inteiro resultado Soma A especificação do procedimento Adicionar é a seguinte: SUBPROGRAMA Somar (ENTRADA inteiro somando1. por REFERÊNCIA. os parâmetros formais só permitem a entrada. A correspondência entre os parâmetros formais e os reais se estabelece pela posição que ocupam nas listas. Nas funções. de saída ou de entrada/saída respectivamente o Ao igual que numa declaração de variáveis. fala-se de várias classes de parâmetros: . Quais DADOS DE ENTRADA precisa: adicionando1 e adicionando2 do tipo inteiro. especifica-se: O QUE deve fazer a rotina Quais DADOS DE ENTRADA precisa Quais DADOS DE SAÍDA produz Distingue-se então entre: Parâmetros de entrada: dados de entrada necessários para executar a rotina Parâmetros de saída: dados de saída que produz a rotina depois de sua execução Parâmetros de entrada/saída: dados que são usados como entrada e nos quais também é guardado um resultado de saída Na especificação da rotina descrevem-se os parâmetros formais. SAÍDA. e a substituição se realiza aplicando alguns dos mecanismos seguintes: por VALOR. ENTRADA/SAÍDA. ENTRADA inteiro somando2.') A especificação dos parâmetros formais inclui: o Uma das palavras ENTRADA. A seguir. Os parâmetros indicados na chamada às rotinas são os PARÂMETROS REAIS. São identificadores de variáveis locais com as quais é possível introduzir e tirar valores nas rotinas. Quais DADOS DE SAÍDA produz: resultado do tipo inteiro. especifica-se: O QUE deve fazer a rotina: adicionar dois números inteiros e devolver o resultado da soma. conforme for um dado de entrada.para a qual precisa de certos dados de entrada para produzir certos dados de saída. inclui-se o tipo e o nome do parâmetro Exemplo: desenhar um procedimento Adicionar que tome como entrada dois números inteiros e devolva como saída o resultado de sua adição. A esse respeito deve se dizer que: Os parâmetros especificam-se entre parênteses Os parâmetros separam-se com vírgula ('. Dados de entrada Dados de saída SUBPROGRAMA Quando - se desenha uma rotina.

Para descrever graficamente a situação. pode-se conseguir a transferência de informação com as rotinas nos dois sentidos: entrada e saída. que una seu nome com o endereço de memória no qual está armazenado seu parâmetro real correspondente. . Estes são parâmetros de entrada.PARÂMETROS POR VALOR Na substituição POR VALOR. Não permitem tirar informação da rotina. uma variável ou uma expressão. Na realidade atribuem-se ao identificador de parâmetro formal os mesmos endereços de memória que correspondem ao parâmetro real. O parâmetro real pode se expressar como uma constante. e o valor resultante dessa avaliação atribui-se ao parâmetro formal correspondente. mas isso não afeta o parâmetro real correspondente. O uso de um parâmetro passado por valor consiste na mera transferência de um valor à rotina invocada (chamada). avalia-se o parâmetro real. PARÂMETROS POR REFERÊNCIA Permitem aplicar o mecanismo de substituição POR REFERÊNCIA. pode se imaginar uma flecha para cada parâmetro formal. Toda operação que afetar o parâmetro formal na realidade é realizada sobre o parâmetro real. pelo que se produz uma associação entre parâmetro real e parâmetro formal que consiste em uma espécie de substituição. de forma tal que qualquer modificação que se produzir dentro da rotina afeta os parâmetros reais que são entidades externas ao mesmo. podem-se modificar dentro da rotina. Com este mecanismo de substituição por referência.

A Procedimentos O subprograma invocador. V2) associa-se: . início /*não é necessário inicializar V1 pois é passado como parâmetro de saída (parâmetro de retorno) */ invocar Somar (1. V2). /* uma mesma variável é passada como primeiro parâmetro e terceiro parâmetro. em • • • • . deve então ir com algum valor */ V3 := 10. em invocar Somar (V1. /* isto se lê assim: a V3 é atribuído o valor 10 */ invocar Somar (V2.3. com cada invocação existe uma nova associação entre parâmetros reais e formais.5). . e portanto não é lembrado nada de possíveis invocações anteriores.o parâmetro real 3 com o parâmetro formal somando2.o parâmetro real V1 com o parâmetro formal somando1. não é possível passar um valor como parâmetro de saída */ /* ERRO. Por exemplo. A esse respeito. V2). em invocar Somar(V1. é necessário dizer que: • Associa-se conforme a ordem de aparição. cujo valor se associa com o parâmetro formal somando2 O parâmetro real que se associa com um parâmetro formal de SAÍDA deve ser uma variável. V2 vai com valor 6. V1). V2).o parâmetro real V1 é uma variável. caractere c. V2. Por exemplo. V3. 3. /* V1 tem o valor 3 depois da execução de Somar */ invocar Somar (V1. Deve haver coincidência ou compatibilidade de tipos entre os parâmetros formais e os parâmetros reais. invocar Somar(1.c). e tem o valor 16 depois da execução de Somar. . .Exemplos de Invocações Conforme o que foi visto até agora. Por exemplo. ou seja. cada parâmetro formal com cada parâmetro real.o parâmetro real V2 com o parâmetro formal resultado.V3.o parâmetro real 1+2 é uma expressão. não há compatibilidade de tipos no terceiro parâmetro */ A invocação de um subprograma é realizada com parâmetros reais. veremos exemplos de invocações (chamadas) a procedimentos e funções. c) dá ERRO devido a que o parâmetro real c é de tipo caractere e o parâmetro formal resultado é de tipo inteiro. cujo valor se associa com o parâmetro formal somando1 .3. V2=16 e V3=10*/ invocar Somar (1. fim invocador. O parâmetro real que se associa com um parâmetro formal de ENTRADA pode ser tanto uma variável como uma expressão. 3. V3 não muda seu valor por ser parâmetro de entrada */ /* neste ponto cumpre-se que V1=3. com diferentes valores de parâmetros conforme seja necessário. na qual se guarda o resultado devolvido pela rotina que se invocou. 2. Cada invocação é independente das demais.1+2. Por exemplo.1+2. /* V2 tem o valor 6 depois da execução de Somar e V1 não muda seu valor por ser parâmetro de entrada */ /* inicializa-se V3 pois é passado como parâmetro de entrada. /* ERRO. invocar Somar (1. SUBPROGRAMA invocador inteiro V1. pode invocar o procedimento Somar.

. A diferença do procedimento Somar. na função não existe o parâmetro de saída resultado. ENTRADA inteiro somando2) A implementação da função Somar é levemente diferente ao procedimento. Neste caso. dado que • inteiro início todas as funções devem devolver um valor do tipo que especificam em sua definição. ENTRADA inteiro somando2. que retorna apenas um dado de saída.5) . fim Somar. em lugar de definir um subprograma da seguinte forma SUBPROGRAMA nome_subprograma (ENTRADA…. mas • na especificação de uma função deve-se indicar o tipo de dado de saída que devolve a função: inteiro FUNÇÃO Somar (ENTRADA inteiro somando1. . V3. Vejamos então como fica agora o invocador à função Somar: SUBPROGRAMA invocador inteiro V1. caráter c. em lugar de definir um procedimento Somar que receba dois parâmetros de entrada (somando1 e somando2). mas em invocar Somar(1. A Funções Existe um caso especial de procedimento. ENTRADA inteiro somando2) devolver (somando1 + somando2). V2. /* uma mesma variável é passada como primeiro parâmetro e usada para guardar o valor devolvido pela função. 2).V3).o parâmetro real V2 é uma variável que se associa (no terceiro parâmetro) com o parâmetro formal de nome resultado. pode-se definir como uma função que devolve um valor do tipo tipo_saída tipo_saída FUNÇÃO nome_função (ENTRADA . SAÍDA tipo_saída nome_saída) sendo que possui um único parâmetro de saída. V3. início /* atribui a V1 o resultado da função Somar */ V1 := invocar Somar (1. e devolva o resultado no parâmetro de saída (resultado) SUBPROGRAMA Somar (ENTRADA inteiro somando1. /* V2 tem o valor 6 depois da execução de Somar e V1 não muda seu valor por ser parâmetro de entrada */ /* inicializa-se V3 pois é passado como parâmetro de entrada */ V3 := 10.3. V2). /* V1 tem o valor 3 logo depois da execução de Somar */ /* atribui A V2 o resultado da função Somar */ V2 := invocar Somar (V1.é um ERRO tentar associar um valor a um parâmetro formal de saída.invocar Somar(V2.1+2).) Por exemplo.. que receba os mesmos parâmetros de entrada que o procedimento.. SAÍDA inteiro resultado) pode-se definir a função Somar. V2 tem o valor 16 depois da execução de Somar e V3 não muda seu valor . /* atribui a V2 o resultado da função Somar */ V2 := invocar Somar (V2. FUNÇÃO Somar (ENTRADA inteiro somando1.

ou em uma expressão que faz parte de uma condição. 3). não há compatibilidade de tipos entre a função Somar e a A invocação a uma função é também levemente diferente da invocação de um procedimento. Por exemplo. Neste exemplo.3).1+2). . V2 := invocar Somar (V1. A esse respeito é necessário dizer que: • Visto que as funções podem se considerar em si próprías como o valor de saída que devolvem. Conclusões O uso de rotinas em um programa permite dividir um problema em vários problemas menores e portanto mais fáceis de solucionar. V1 := invocar Somar (1. o resultado 6 é atribuido à variável V2. evitando atuar sobre variáveis globais do interior das rotinas para não correr o risco de modificar sem perceber valores externos a elas. Isto determina se os parâmetros serão passados: por valor (parâmetros de entrada). utilizam-se parâmetros. c := invocar Somar (1. pode-se encontrar uma única instrução equivalente a ambas as instruções: V2 := invocar Somar (invocar Somar (1. Por exemplo. avalia-se a invocação mais interna Somar (1. mediante o qual a rotina chamada pode mudar o valor original e a rotina chamadora recebe o novo valor. Os parâmetros podem ser: de entrada.3). atribui-se às variáveis V1 e V2 o resultado de diferentes invocações da função Somar.2). 1+2). permite uma manutenção mais simples e oferece a possibilidade de reutilizar o código de um módulo (rotina) em outros programas. c := invocar Somar (1. também deve havê-la entre o tipo que devolve a função e a expressão em que é usada. variável c */ fim invocador. V2=16 e V3=10 */ 5 := invocar Somar (1. /* ERRO. podem fazer parte de uma expressão. O resultado é 3 e toma-se como primeiro parâmetro real da invocação mais externa.por ser parâmetro de entrada */ /* neste ponto cumpre-se que V1=3. A passagem de parâmetros é fundamental para garantir um correto fluxo de informação entre os distintos módulos de um programa. 2). Em primeiro lugar. Por último. a invocação pode se usar em uma expressão da parte direita de uma atribuição. não é possível atribuir nada a um valor */ /*ERRO. Para a passagem de informação entre rotinas. também chamados argumentos. de saída ou de entrada/saída.3). Avalia-se a expressão do segundo parâmetro real 1+2. dá ERRO devido a que não há compatibilidade de tipos entre a função Somar e a variável C. o que implica que a rotina chamada não muda o valor que esse parâmetro tinha na rotina chamadora. Ou seja. ou se se serão passados por referência (parâmetros de entrada/saída). A modularização que se obtém. 2). e a seguir realiza-se a invocação mais externa Somar (3. • Da mesma forma em que na associação de parâmetros reais e formais deve haver compatibilidade de tipos.

Sign up to vote on this title
UsefulNot useful