algoritmos - procedimentos

54
PROCEDIMENTOS Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado Coração – USC Bauru/SP

Upload: elaine-cecilia-gatto

Post on 19-Jun-2015

755 views

Category:

Education


5 download

DESCRIPTION

Algoritmos - Procedimentos

TRANSCRIPT

Page 1: Algoritmos - Procedimentos

PROCEDIMENTOSProfª Ms. Engª Elaine Cecília GattoCurso de Bacharelado em Engenharia de ComputaçãoUniversidade do Sagrado Coração – USCBauru/SP

Page 2: Algoritmos - Procedimentos

SubAlgoritmos

• DIVIDIR PARA CONQUISTAR:• Método para resolução de problemas que consiste

em dividir um problema, em problemas menores e mais fáceis de solucionar.

• PROJETO DESCENDENTE (TOP-DOWN DESIGN):• Método de projetar a solução de um problema

principal obtendo soluções de seus subproblemas.

• As partes em que se divide um programa devem ser desenvolvidas independentemente umas das outras

Page 3: Algoritmos - Procedimentos

SubAlgoritmos ALGORITMOPRINCIPAL

SUBALGORITMO 1 SUBALGORITMO 2 SUBALGORITMO 3

PROGRAMAPRINCIPAL

SUBPROGRAMA1 SUBPROGRAMA 2 SUBPROGRAMA 3

Page 4: Algoritmos - Procedimentos

SubAlgoritmos

• Um subprograma/subalgoritmo pode realizar as mesmas ações que um programa:

1. Aceitar dados2. Realizar alguns cálculos3. Devolver resultados

Page 5: Algoritmos - Procedimentos

SubAlgoritmos

• Entretanto, um subprograma é utilizado por um programa para um propósito específico.

• O programa principal chama ou invoca um subprograma.

• O subprograma, quando invocado, obtém o controle, executa sua tarefa e devolve o controle ao programa principal.

• Existem dois tipos de subprogramas: FUNÇÕES e PROCEDIMENTOS.

Page 6: Algoritmos - Procedimentos

SubAlgoritmos

PROGRAMA PRINCIPAL

---------------------

ALGORITMO

SUBPROGRAMA

--------------------------

SUBALGORITMO

Chamada 1

Retorno 1

Chamada 2

Retorno 2

Page 7: Algoritmos - Procedimentos

SubAlgoritmos

PROGRAMA PRINCIPAL

SUBPROGRAMA 1Chamada 1

Retorno 1

Retorno 2 SUBPROGRAMA 2

SUBPROGRAMA 3

SUBPROGRAMA 2.1Chamada 2

Page 8: Algoritmos - Procedimentos

FUNÇÕES• Função: é uma operação que recebe um ou mais valores

chamados argumentos e produz um valor denominado resultado.

• Exemplo:

• f(x) = é o nome da função;• x = é o argumento da função;• Nenhum valor específico é associado a x;• Portanto, x é um parâmetro formal;• Para avaliar f, devemos dar um valor real ou atual a x;• Se x = 3, então, qual será o resultado da função? f(x) = f(3)

Page 9: Algoritmos - Procedimentos

FUNÇÕES• Uma função pode ter vários argumentos. Exemplo:

• f(x) é uma função com dois argumentos: x e y;• Uma função se transforma em uma expressão aritmética

que é executada pelo processador. Exemplo:

• Funções internas: são as funções nativas da linguagem de programação, incorporadas ao sistema, também chamadas de intrínsecas.

• Funções externas: são as funções definidas pelo usuário.

Page 10: Algoritmos - Procedimentos

SUB-ROTINA

• O mesmo que subprogramas ou funções

• São blocos de instruções que realizam tarefas específicas

• O código é carregado uma vez e pode ser executado várias vezes

• Os programas ficam menores e mais organizados

Page 11: Algoritmos - Procedimentos

SUB-ROTINA

• Em linguaguens estruturadas, os programas são executados linearmente, LINHA APÓS LINHA

• Subrotinas permitem um desvio nesta execução

• A ordem da execução das instruções do programa é desviada quando existe a chamada de uma rotina no programa principal

Page 12: Algoritmos - Procedimentos

SUB-ROTINA

• Enquanto a subrotina é executada, o programa principal fica suspenso

• O controle volta ao programa principal quando a execução da subrotina chega ao seu fim, por meio da palavra chave RETURN

Page 13: Algoritmos - Procedimentos

SUB-ROTINA

• Variáveis locais: variáveis declaradas dentro das subrotinas. São destruídas assim que a execução da rotina é finalizada.

• Variaveis globais: variáveis declaradas dentro do programa principal. Qualquer ponto do programa pode usá-las. São destruídas quando a execução do programa é finalizado

Page 14: Algoritmos - Procedimentos

SUB-ROTINA

• Passagem por valor: quando um parâmetro é passado para a função. A variável do cabeçalho se comportará como uma variável local da subrotina

• Passagem por referência: quando um parâmetro é passado para a função. A variável do cabeçalho se comportará como uma variável global.

Page 15: Algoritmos - Procedimentos

SUB-ROTINAAlgoritmo exemplo1;

Inteiro : sal, aum, novo_sal;Leia(sal)Aum calculo(sal);Novo_sal sal + aum;Escreva(“Novo Salário é: ”, novo_sal);

FIM.

Subrotina calculo(inteiro: sal)Inteiro : perc, valor;Leia(perc);Valor (sal * perc) / 100;Retorne valor

Fim_subrotina calculo

Page 16: Algoritmos - Procedimentos

SUB-ROTINAAlgoritmo exemplo2;

Inteiro : x, y;X <-- 1;Y 2;Escreva( “ valores iniciais ” );Escreva( “ x = ”, z, “ y ”, = y );S1;Escreva( “ valores depois da execução da s1” );Escreva( “ x = ”, z, “ y ”, = y );S2( x, y ); //por valorEscreva( “ valores depois da execução da s2” );Escreva( “ x = ”, z, “ y ”, = y );S3( x, y ); //por referênciaEscreva( “ valores depois da execução da s3” );Escreva( “ x = ”, z, “ y ”, = y );

FIM.

Page 17: Algoritmos - Procedimentos

SUB-ROTINA

//subrotina sem parâmetro e sem retornoSubrotina s1

Inteiro : x, y, z; //variáveis locaisX 8;Y 10;Z 5;Escreva( “Valores impressos dentro da subrotina s1” );Escreva( “ x = ”, x, “ y = ”, y, “ z = ”, z );

FIM_Subrotina_S1;

Page 18: Algoritmos - Procedimentos

SUB-ROTINA

//subrotina com parâmetro por valor e sem retornoSubrotina s2 ( inteiro : x, y )

Inteiro : z; //variáveis locaisX x + 2;Y y + 2;Z x + y;Escreva( “ Valores impressos dentro da subrotina s2” );Escreva( “ x = ”, x, “ y = ”, y, “ z = ”, z );

FIM_Subrotina_S2;

Page 19: Algoritmos - Procedimentos

SUB-ROTINA

//subrotina com parâmetro por referência e sem retornoSubrotina s3 ( inteiro : x, y )

Inteiro : a; //variáveis locaisA x + y;X y - 1;Y x - 2;Escreva( “ Valores impressos dentro da subrotina s2” );Escreva( “ x = ”, x, “ y = ”, y, “ a = ”, z );

FIM_Subrotina_S2;

Page 20: Algoritmos - Procedimentos

Modularização

• Pascal permite o uso de: • PROCEDURES – procedimentos • FUNCTIONS – funções • UNITS – unidades

• São três formas de modularizar um programa• Procedures e functions devem ter o seu

código escrito antes do BEGIN

Page 21: Algoritmos - Procedimentos

PROCEDURES

Page 22: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROS• São rotinas chamadas pelo programa principal

para executar alguma operação especí´fica, mas não retornam valor para quem as chamou

Procedure nome_da_procedure;Declaração_de_variáveis_locais;Begin

ComandosEnd;

PROCEDURES

Page 23: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROSProgram exemplo;Uses crt;

Vara, b, s : integer //variáveis globais

Procedure somar;Begin

s := a + b;End;

PROCEDURES

Page 24: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROSBegin

clrscr;writeln(‘Digite o primeiro numero’);readln(a);writeln(‘Digite o segundo numero’);readln(b);somar;writeln(‘A soma é: ’, s);readln();

End.

PROCEDURES

Page 25: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROSProgram exemplo2;Uses crt;

Procedure somar;Var

a, b, s : integer;Begin

writeln(‘digite o primeiro numero’);readln(a);

PROCEDURES

Page 26: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROS

Writeln(‘Digite o segundo numero’);Readln(b);s := a + b;Writeln(‘A soma é: ’, s);

End;

BeginClrscr;Somar;Readln;

End.

PROCEDURES

Page 27: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORAlguns valores são fornecidos à procedure quando ela é solicitada

Procedure nome_da_procedure(parâmetros : tipo_dos_dados)Declaração_de_variáveis_locais;Begin

Comandos;End;

PROCEDURES

Page 28: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORProgram exemplo1;Uses crt;Var

A, b : integer;

Procedure somar(x, y : integer);Var

S : integer;begin

s := x + y;writeln(‘A soma é: ’, s);

end;

PROCEDURES

Page 29: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORBegin clrscr;

writeln(‘Digite o primeiro número’);readln(a);writeln(‘Digite o segundo número’);readln(b);somar(a, b);readln;

End.

PROCEDURES

Page 30: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORProgram exemplo2;Uses crt;

//passando matriz ou vetor como parâmetroType x = array[1..5] of integer;

Vari : integer;w : x;

PROCEDURES

Page 31: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORProcedure mostrar(y:x);

BeginWriteln(‘Mostrando o vetor na subrotina’);For i:=1 to 5 do

BeginWriteln( y [ i ] );

End;End;

PROCEDURES

Page 32: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR VALORBegin

clrscr;writeln(‘digitando os números do vetor: ’);for i:=1 to 5 do

Beginreadln( w [ i ] );

End;mostrar(w);readln;

End.

PROCEDURES

Page 33: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR REFERÊNCIAOs parâmetros se comportam como variáveis globais

Procedure nome_da_procedure(VAR parâmetros : tipo_dos_dados);Declaração_de_variáveis_locais;

BeginComandos

End;

PROCEDURES

Page 34: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR REFERÊNCIAProgram exemplo1;Uses crt;Var

a, b : integer;

Procedure somar(VAR x, y : integer);Var

s : integer;

PROCEDURES

Page 35: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR REFERÊNCIABegin

s := x + y;writlen(‘A soma é: ’, s);

End;

Beginclrscr;writeln(‘Digite o primeiro número’);readln(a);

PROCEDURES

Page 36: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETROS POR REFERÊNCIA

writeln(‘Digite o segundo número’);readln(b);somar(a, b);readln;

End.

PROCEDURES

Page 37: Algoritmos - Procedimentos

FUNCTIONS

Page 38: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETRO• FUNCTION X PROCEDURE• Function SEMPRE retorna um valor• A PROCEDURE NEM sempre retorna um valor• O OBJETIVO é para ambos é o mesmo

FUNCTION NOME_DA_FUNCTION : TIPO_DE_DADO_DO_VALOR_RETORNADO;Declaração_de_variáveis_locais;

BeginComandos;

End;

FUNCTIONS

Page 39: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETRO• Para que ocorra o retorno de algum valor para quem

chamou a function, deve-se atribuir tal valor a uma variável cujo nome seria igual ao dado à function

Program exemplo1;Uses crt;Var

a, b, s : integer;Function somar : integer;

beginsomar := a + b;

end;

FUNCTIONS

Page 40: Algoritmos - Procedimentos

SEM PASSAGEM DE PARÂMETROBegin

Clrscr;writeln(‘Digite o primeiro número’);readln(a);writeln(‘Digite o segundo número’);readln(b);s := somar;writeln(‘ A soma é: ’, s);readln;

End.

FUNCTIONS

Page 41: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR VALORFUNCTION nome_da_function(parâmetros : tipo_dos_dados) : tipo_de_dado_do_valor_retornado;

Declaração_de_variáveis_locais;

Begin

Comandos;

End;

FUNCTIONS

Page 42: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR VALOR• A chamada a uma FUNCTION acontece

atribuindo seu nome a uma variável ou a um condição, que receberá o retorno ao término de sua execução

• No momento da chamada, são informados os parâmetros que deverão ser levados para a FUNCTION

FUNCTIONS

Page 43: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR VALORProgram exemplo1;Uses crt;Var

a, b, s : integer;

Function somar(x, y : integer) : integer;Begin

Somar := x + y;End;

FUNCTIONS

Page 44: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR VALORBegin

clrscr;writeln(‘Digite o primeiro número’);readln(a);writeln(‘Digite o segundo número’);readln(b);s := somar(a, b);writeln(‘ A soma é: ’, s);readln;

End.

FUNCTIONS

Page 45: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR REFERÊNCIAUma function pode receber parâmetros no momento em que é chamada

Os valors informados são copiados, sequencialmente, em variáveis descritas em seu cabeçalho

FUNCTION nome_da_function( VAR parâmetros : tipo_dos_dados ) : tipo_de_dado_do_valor_retornado;Declaração de variáveis locais;BeginComandos;End;

FUNCTIONS

Page 46: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR REFERÊNCIAProgram exemplo1;Uses crt;Var

a, b, s : integer;

Function somar(VAR x, y : integer) : integer;Begin

somar := x + y;End;

FUNCTIONS

Page 47: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR REFERÊNCIABegin

clrscr;writeln(‘Digite o primeiro número’);readln(a);writeln(‘Digite o segundo número’);readln(b);s := somar(a, b);writeln(‘ A soma é: ’, s);readln;

End.

FUNCTIONS

Page 48: Algoritmos - Procedimentos

PASSAGEM DE PARÂMETRO POR REFERÊNCIA• Os parâmetros passados por referência – isso

é identificado pela presença da palavra VAR no cabeçalho da FUNCTION – qualquer alteração nos valores de X ou de Y será também refletida nas variáveis A e B, respectivamente

FUNCTIONS

Page 49: Algoritmos - Procedimentos

UNITS

• É um arquivo (.pas)• Contém várias procedures e functions• Torna-se um TPU depois de ser compilado –

isto é, torna-se uma biblioteca• A biblioteca pode ser chamada por outros

programas por meio do uso da palavra chave USES• O nome de uma UNIT deve ser o nome do

arquivo

Page 50: Algoritmos - Procedimentos

UNITS

UNIT nome_da_unit;

INTERFACECabeçalho das procedures e das functions;

IMPLEMENTATIONImplementação das procedures e das functions;

END;

Page 51: Algoritmos - Procedimentos

UNITSunit calcula;

interfaceprocedure somar(a, b : integer);function multiplicar(a, b, c : integer) : integer;

Implementation

procedure somar(a, b : integer);vars : integer;writeln(‘ A soma é : ’, s);

end;

function multiplicar(a, b, c : integer) : integer;beginmultiplicar : = a * b * c;

end;end.

Page 52: Algoritmos - Procedimentos

UNITS

• Para criar uma UNIT (biblioteca) é necessário abrir um arquivo novo, digitar os códigos da biblioteca e salvar o arquivo com o mesmo nome da UNIT. Esse arquivo será o .PAS.

• Depois, no menu COMPILAR, o destino da compilação deve ser alteração para DISK. Somente depois disso será gerado o arquivo TPU (que é a biblioteca propriamente dita)

Page 53: Algoritmos - Procedimentos

UNITSProgram subrotina;Uses crt, calcula;Var

x, y, z, mult : integer;Begin

Clrscr;Writeln(‘digite o valor de x’);Readln(x);Writeln(‘digite o valor ’);Readln(y);somar(x,y);Writeln(‘digite o valor de z’);readln(z);mult := multiplicar(x, y, z);writeln(‘multiplicação = ’, mult);Readln;

End.

Page 54: Algoritmos - Procedimentos

Exercícios