Linguagem PASCAL Subprogramas

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Funções em C Prof. Fabiano Utiyama.
Python: Funções Claudio Esperança.
Linguagem de Programação I
Programação em Java Prof. Maurício Braga
Programação de Computadores
Linguagem PASCAL Estruturas de Controle
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Conteúdo: - Modularização.
Prof. Heloise Manica Paris Teixeira
PROGRAMAÇÃO MODULAR (com uso de subprogramas) prof
Algoritmos e Programação Estruturada Conceitos básicos
Introdução a Informática
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Algoritmos e Estruturas de Dados II
Linguagem C Funções.
Vetores, Matrizes e Funções
Algoritmos e Programação
Paradigmas de programação
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Variáveis, Tipos de Dados e Constantes
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
BCC /01 Funções. Material Didático Unificado. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência.
Introdução a Programação COM 100 Aula 07 Procedimentos.
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Verificação de Tipos e Escopos
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Ambiente de Execução - Rotinas
Técnicas de Desenvolvimento de Programas
Computação Eletrônica Subprograma. Função O que este programa faz? Program funcao; var n,x: real; begin write('Entre n: '); readln(n); x := cos(n); write(x);
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem Pascal Prof. Sérgio Rodrigues.
Linguagem PASCAL1 Módulo 3 Estrutura de Dados.. Linguagem PASCAL2 Arrays (“Variáveis compostas homogêneas”) n Arrays unidimensionais: identificador: array.
Lógica Estruturada Aplicada
Prof: Leandro Maranim Dei Santi Prof. Eduardo Rossit Paiossin
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Algoritmos e Estruturas de Dados I – Modularização
Aula01 – Técnicas de Programação II
Programação de computadores Prof. Giovanni Castro.
Algoritmos e Programação
Aula Prática 3 Funções Monitoria Introdução à Programação.
Fundamentos de linguagens de programação
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos.
Subprogramas : Procedimentos (procedures) em Pascal
Programação de Computadores - 1
Introdução à Programação
Linguagens de Programação
Programação Computacional Aula 9: Meu primeiro programa em C
Conceituando o uso de funções em linguagens de programação
Linguagem de Programação I Parte IV
Linguaguem de Programação II
Linguagens de Programação Pedro Lopes MÓDULO 4- Subprogramas (Procedimentos e Funções) 2010/2011.
MODULARIZAÇÃO Existem dois tipos de sub-programas –Procedures (procedimentos).Não retorna valores –Functions (funçöes). Retorna valores.
MODULARIZAÇÃO Técnica utilizada e tida como vantajosa na confecção de programas. Consiste em dividir o programa em diversos módulos ou sub-programas, de.
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação.
PRE 1002 Éverlin Marques 2015/1.
P ARADIGMAS DE L INGUAGENS S UBPROGRAMAS Prof. Thiago Pereira Rique
Linguagem de Programação Prof. Fabricio Roulin Bittencout
Lógica de Programação – Forbellone / Eberspacher Lógica de Programação Capítulo 6 Modularizando Algoritmos.
SUB-ROTINAS EM PASCAL PROGRAMAÇÃO MODULARIZADA 252.
Transcrição da apresentação:

Linguagem PASCAL Subprogramas UFRPE – Deptº de Estatística e Informática Disciplina: Introdução à Computação Prof.: Paulemir G. Campos Linguagem PASCAL Subprogramas Material elaborado pela Profª Alzennyr Cléa da UFRPE/DFM. Linguagem PASCAL

Subprogramação A subprogramação é uma ferramenta que contribui com a tarefa de programar: Favorecendo a estruturação do programa; Facilitando a correção do programa; Facilitando a modificação do programa; Melhorando a legibilidade do programa; Divisão do problema a ser resolvido em partes (modularização). Linguagem PASCAL

Subprogramação Com a modularização de um programa, as partes que o compõem podem ser desenvolvidas por diferentes equipes; Para isto deve-se estabelecer antes padrões de programação; Deve-se definir também que dependência haverá entre os vários subprogramas. Linguagem PASCAL

Subprogramação A dependência entre os sub-programas deve ser a mínima possível; Um subprograma é um grupo de instruções arranjadas de forma lógica, que executem uma ação bem definida; A subprogramação tende a diminuir a complexidade da resolução de um problema já que, por um instante, a atenção é voltada apenas para uma parte do problema. Linguagem PASCAL

Subprogramação As linguagens de programação oferecem algum tipo de suporte à subprogramação. Exemplos: Algol: bloco; FORTRAN: subrotina; Modula: co-rotinas; ADA: tarefas; C: funções; Pascal: procedimentos e funções. Linguagem PASCAL

Subprogramação Procedimentos Procedimento é uma forma de criar um sub-programa; Quando um determinado conjunto de instruções tiver que ser repetido dentro da solução de um problema, é conveniente colocá-lo dentro de um procedimento; Para se criar um procedimento é necessário: Um identificador (o nome do procedimento); Uma lista de parâmetros (que possibilitam a comunicação entre o programa principal e o procedimento); As ações a serem executadas (que formam o corpo do procedimento). Linguagem PASCAL

Subprogramação Funções Função também é uma forma de criar um sub-programa; Procedimento e Função podem ambos retornar valores através de seus parâmetros; Entretanto, a função deve obrigatoriamente retornar um valor processado através do seu nome identificador; Uma função deve ser ativada em um contexto de expressão. Linguagem PASCAL

Subprogramação Existem problemas mais adequados ao uso de funções, enquanto outros adequam-se melhor ao uso de procedimentos; Tudo que um procedimento pode fazer, uma função também pode; Dicas para escolha do tipo de subprograma: Quando usar funções, evite ao máximo a passagem de parâmetros por referência; Se o valor que é processado na unidade será reutilizado em uma expressão, existem grandes possibilidades de que uma função seja mais adequada; Se o objetivo da unidade é apenas fazer uma mudança de estado (valor) em um ou mais objetos, adote um procedimento. Linguagem PASCAL

Subprogramação Um subprograma pode ser ativado em qualquer parte do programa (em algumas linguagens somente depois de definido); Sua ativação se dá através do uso de seu identificador como uma instrução; Linguagem PASCAL

Subprogramação Exemplo de aplicação: Fazer um algoritmo para calcular a combinação (análise combinatória) de N elementos tomados P a P. Sabe-se que isto é possível através da seguinte expressão: Cp= n n! p! (n-p)! com n  p Linguagem PASCAL

Subprogramação A solução deste problema pelos métodos vistos até agora (sem o uso da subprogramação) teria N e P como argumentos de entrada e C como argumento de saída; Seriam necessários os seguintes passos: Calcular o fatorial de N (armazenar numa variável, ex: FatN); Calcular o fatorial de P (armazenar numa segunda variável, ex: FatP); Calcular o fatorial de N-P (armazenar numa terceira variável, ex:FatNP); E finalmente calcular a expressão: FatN/(FatP*FatNP). Linguagem PASCAL

Subprogramação Note que nesta solução teríamos que descrever várias vezes uma mesma seqüência de ações que são utilizadas para o cálculo do fatorial de um número; Esta seqüência tem um comportamento padrão. Linguagem PASCAL

Como poderíamos fazer isto? Subprogramação Suponha que tivéssemos à disposição um procedimento genérico, chamado FAT, para calcular o fatorial de um número qualquer: Como poderíamos fazer isto? Linguagem PASCAL

Subprogramação Procedimento FAT (x: inteiro, ResFat: inteiro); Declare Identificador Procedimento FAT (x: inteiro, ResFat: inteiro); Declare I:inteiro; Inicio ResFat  1; Para I  1 até x Faça ResFat  ResFat * I; Fim-Para; Fim; Lista de Parâmetros Corpo Linguagem PASCAL

Subprogramação em PASCAL Uma subrotina é um subprograma com variáveis e comandos próprios e que, para ser executada, precisa ser chamada pelo programa principal. Na linguagem PASCAL existem dois tipos de subrotinas: Procedimento (procedure) Função (function) Diferença entre elas: A função retorna um valor O procedimento não retorna valor Linguagem PASCAL

Procedimento em PASCAL Sintaxe procedure nome (lista-de-parâmetros); declaração de variáveis locais; begin comandos; end; Exemplo: procedure Troca (var A,B: real); var aux: real; aux:=A; A:=B; B:=aux; Linguagem PASCAL

Função em PASCAL Sintaxe function nome (lista-de-parâmetros): tipo; declaração de variáveis locais; begin comandos; nome:=<valor a ser retornado>; end; Exemplo: function Hipotenusa (A,B: real): real; Hipotenusa:= sqrt( sqr(A) + sqr(B) ); Linguagem PASCAL

Nomenclatura dos parâmetros Existem dois tipos de parâmetros: reais: presentes na unidade ativadora formais: presentes na subrotina procedure Troca (var A,B: real); … Troca ( x,y ); Linguagem PASCAL

Passagem de parâmetros por valor: Apenas o valor é transferido. Então, as alterações feitas nos parâmetros formais (da subrotina) não alteram os reais (unidade ativadora). por referência: O endereço do parâmetro real é transferido. Então, as alterações nos parâmetros formais da subrotina na verdade estão sendo feitas sobre os parâmetros reais. Declaração: por referência procedure inicializa ( var A,B: real; C: real; var D: integer ); por valor Linguagem PASCAL

Passagem de parâmetros A passagem de parâmetros é o meio de comunicação entre as unidades de um programa, pode acontecer com um dos seguintes propósitos: apenas fornecer um valor para que a subrotina realize um processamento; apenas retornar um valor processado pela subrotina; fornecer um valor para processamento pela subrotina, e também ser responsável pelo retorno de um valor processado. Linguagem PASCAL

Passagem de parâmetros por valor Quando e porque passagem por valor: apenas fornecer um valor à subrotina para que ela realize um determinado processamento; utilizados somente para “valores de entrada”; protegem automaticamente o parâmetro real; deve ser explorado sempre que possível. Linguagem PASCAL

Passagem de parâmetros por referência Quando e porque passagem por referência: quando a unidade ativada (subrotina) necessitar retornar um valor a ser utilizado pela unidade ativadora; seu uso deve ser cuidadoso. Passagem por valor Passagem por referência Unidade Ativadora Unidade Ativada Unidade Ativada Unidade Ativadora Unidade Ativada Unidade Ativadora Linguagem PASCAL

Declaração de variáveis Variáveis Locais X Variáveis Globais Uma variável é dita local quando sua declaração estiver dentro de um subprograma, ou quando for declarado como parâmetro formal do subprograma; Uma variável local só é visível dentro do bloco onde foi declarada; Variáveis globais são aquelas declaradas em blocos mais externos, podendo ser referenciadas nas unidades mais internas. Linguagem PASCAL

Declaração de variáveis O conceito de variável global e local é muito relativo Subprograma A Subprograma B Subprograma D Subprograma E Subprograma C Linguagem PASCAL

Exemplos práticos Nos próximos slides existem exemplos que mostram o uso prático de procedimentos e funções, bem como a passagem de parâmetros por valor e por referência. Linguagem PASCAL

procedure inicializa ( var A,B: real; C: real; var D: integer ); begin program Parametros; procedure inicializa ( var A,B: real; C: real; var D: integer ); begin writeln ('Passo 1:', A:4:1, B:4:1, C:4:1, D:2); A:=1; B:=1; C:=1; D:=1; writeln ('Passo 2:', A:4:1, B:4:1, C:4:1, D:2); end; var X,Y,Z: real; W: integer; begin X:=0; Y:=0; Z:=0; W:=0; inicializa (X, Y, Z, W); writeln ('Passo 3:', X:4:1, Y:4:1, Z:4:1, W:2); end; Linguagem PASCAL

program OrdemCrescente; { ------- SUBROTINA TROCA ------- } procedure Troca (var A,B: integer); var aux: integer; begin aux:=A; A:=B; B:=aux; end; { ------- FIM TROCA ------- } { ------- PROGRAMA PRINCIPAL ------- } var L,M,N: integer; begin readln (L, M, N); if (L>M) then Troca(L,M); if (M>N) then Troca(M,N); if (L>M) then Troca(L,M); writeln(L, M, N); end. { ------- FIM PRINCIPAL ------- } Linguagem PASCAL

D C B A program Diagonal; {Diagonal de um paralelepípedo } { Funcao Hipotenusa } function Hipotenusa (A,B: real): real; begin Hipotenusa:= sqrt ( sqr(A) + sqr(B) ); end; { Fim Funcao Hipotenusa } { Programa Principal } var A, B, C, D: real; begin readln (A, B, C); { dimensoes } D := Hipotenusa ( Hipotenusa (A, B), C ); writeln (D); end. { Fim Programa Principal } Linguagem PASCAL