Algumas notas sobre PASCAL



Documentos relacionados
Algumas notas sobre PASCAL

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Representação de Algoritmos - Linguagens de Programação

A4 Projeto Integrador e Lista de Jogos

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Capítulo 12. SUB-ROTINAS

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO (cont)

Manipulação de Arquivos em Pascal

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir:

TÉCNICAS DE PROGRAMAÇÃO

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

UNIDADE 6 - PROGRAMAÇÃO MODULAR

MANIPULAÇÃO DE STRINGS

MÉTODOS DE ORDENAÇÃO

Capítulo 2: Introdução à Linguagem C

Informática Básica. Microsoft Word XP, 2003 e 2007

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Linguagem de Programação

OBS.: Qualquer variável utilizada num subprograma que não for parâmetro deve ser considerada como variável local.

17 - Funções e Procedimentos em C Programação Modular

3 Classes e instanciação de objectos (em Java)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Considerações a serem feitas antes da implantação.

10) REGISTROS : Exemplos: var N,I: integer; A,B,C: real; CHAVE: boolean; CARAC: char; V: array[1..20] of real; M: array[1..10,1..

Orientação a Objetos

indicadas por letras e linhas, indicadas por números. Para selecionar uma planilha para uso, devemos utilizar a guia de planilhas:

1.6. Tratamento de Exceções

Avaliação de Expressões

Algoritmos e Programação

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

Pratica JFlex. Prática criando o primeiro analisador léxico

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Estruturas de Repetição

PROGRAMAÇÃO II 4. ÁRVORE

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Orientação a Objetos

trigger insert, delete, update

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Tutorial 1 - Básico do VBA do Excel

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

INF 1005 Programação I

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

OPERADORES E ESTRUTURAS DE CONTROLE

Usando o Excel ESTATÍSTICA. A Janela do Excel Barra de título. Barra de menus. Barra de ferramentas padrão e de formatação.

PROG. DE COMPUTADORES II SI Arquivos

Sincronização de Processos (4) Monitores

2 echo "PHP e outros.";

Conceitos básicos da linguagem C

Introdução a POO. Introdução a Linguagem C++ e POO

ESTRUTURA CONDICIONAL

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Algoritmos e Programação Estruturada

PREFEITURA MUNICIPAL DO NATAL

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?

4 RECURSOS AUTOMATIZADOS DO EXCEL

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

20 Caracteres - Tipo char

#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 1

Tarefa Orientada 18 Procedimentos armazenados

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Tutorial de Computação Robô Bípede Programa de Controle em Delphi v

INTRODUÇÃO OBJECT PASCAL/DELPHI

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

JSP - ORIENTADO A OBJETOS

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Introdução a Computação

Estruturas de Repetição

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Manual Administrador - Mídia System

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso:

NT_D1216.SYS DRIVER DA CDA12/16 PARA WINDOWS NT 4.0

Transcrição:

Algumas notas sobre PASCAL PARTE II - Procedimentos e Funções Anjolina Grisi de Oliveira 1 Introdução Os procedimentos e funções são úteis na programação uma vez que permitem que um programa possa ser dividido em subprogramas. Quando um programa é grande, fica mais fácil depurá-lo se ele está dividido em subprogramas. A linguagem PASCAL possui dois tipos de subprogramas: procedimentos (procedure) e funções (function). 2 Procedimentos Em PASCAL os procedimentos são definidos após a declaração das variáveis do programa principal. O procedimento é ativado quando é chamado pelo programa principal. Eles podem ou não ter parâmetros. A sua forma mais simples é definida como a seguir, sem a inclusão de parâmetros. 2.1 Procedimentos sem parâmetros Os procedimentos são definidos da seguinte forma: Procedure <nome do procedimento>; declaracao de var. Begin comandos End; Exemplo 1 O seguinte programa recebe dois números e, de acordo com um menu de opções faz diferentes operações com esse número. Program Ex1; uses crt; var num1,num2 : integer; op:char; procedure MostraMenu; clrscr; writeln( Digite a opcao desejada ); writeln( (1) Soma e produto ); 1

writeln( (2) Produto ); writeln( (3) Resto da div. por x ); procedure SomaProduto; writeln( Soma =, num1+num2); writeln( Produto =, num1*num2); procedure Resto; var x: integer; writeln( Entre com o valor de x ); readln(x); if x<=num1 then writeln( resto de,num1, por, x, =,num1 MOD x) writeln(x, maior que, num1); if x<=num2 then writeln( resto de,num2, por, x, =, num2 MOD x) writeln(x, maior que, num2); Begin writeln( Entre com dois numeros inteiros ); readln(num1,num2); MostraMenu; op:=readkey; case op of 1 : SomaProduto; 2 : Resto; writeln( opcao invalida ); readln; End. Algumas observações: Os subprogramas podem incluir definições locais, tanto de variáveis como de constantes ou tipos. No exemplo 1, o procedimento Resto possui uma variável local (x). As definições locais só existem durante a execução do subprograma. Por esse motivo, elas somente são acessíveis pelo subprograma que as contem. 2

As variáveis do programa principal são chamadas de variáveis globais porque são acessíveis por todos os subprogramas, além do programa principal. No exemplo 1, as variáveis num1 e num2 são globais. O escopo de um identificador define a porção do programa em que ele atua. Portanto, o escopo das variáveis locais é o subprograma onde elas foram definidas e os subprogramas contidos no subprograma onde elas foram definidas. O escopo de uma variável global é todo o programa. A figura 1 ([CooCla85]) ilustra esse conceito. no programa A, os seus identificadores possuem como escopo os blocos: A, B, C, D, E; no procedimento B, escopo: B,D; no procedimento C, escopo: C, E, F; na função D, escopo: D; no procedimento E, escopo: E; no procedimento F, escopo: F; program A procedure B function D procedure C procedure E procedure F Figure 1: Escopo de identificadores 2.2 Procedimentos com parâmetros Os parâmetros ou argumentos são usados para comunicação entre o programa principal e os subprogramas. Na realidade, nós já usamos essa comunicação com os procedimentos pré-definidos da linguagem, como por exemplo o readln e o writeln. Quando temos um trecho de programa como a seguir: 3

readln(x); writeln(x); Os procedimentos readln e writeln precisam de parâmetros para executar sua tarefa. No caso de procedimentos definidos pelo usuário, a declaração da procedure fica da seguinte forma: procedure <identificador> (lista de argumentos); declaracao dos identificadores locais comandos; A passagem de parâmetros entre o programa principal e o procedimento se dá de duas formas: 1. passagem por valor: nesse caso, o programa principal passa um valor para o procedimento. Esse valor pode ser passado explicitamente, ou então passa-se o valor de uma variável. Por exemplo, no programa seguinte a segunda chamada do procedimento writeln passa o valor de x como argumento. writeln( A ); x:= A ; writeln(x); 2. passagem por referência (ou por variável): nesse caso, na chamada do subprograma o programa principal passa o endereço da variável. A variável correspondente no subprograma é um nome alternativo da variável da chamada do subprograma. Mudanças nessa variável afetam a variável do programa principal. Definição dos parâmetros Quando a passagem de parâmetros se dá por variável, o grupo de identificadores possui a palavra var na sua frente. Caso contrário, a passagem de parâmetros é por valor. Exemplo 2 No procedimento P 1 os identificadores x e y são parâmetros cuja passagem se dá por variável, ao passo que z é um parâmetro com a passagem por valor. No caso do procedimento P 2, o argumento w1 a passagem é por valor e w2 é por referência. procedure P1(var x,y : integer; z:integer); procedure P2(w1:char; var w2: char); 4

Exemplo 3 Aqui mostramos o exemplo 1 modificado. O exemplo mostrado aqui é mais recomendado em programação, pois não devemos alterar o valor de uma variável global dentro dos subprogramas. Esse tipo de ação pode gerar erros difíceis de serem depurados. Program Ex1; uses crt; var num1,num2 : integer; procedure Menu(var op:char); clrscr; writeln( Digite a opcao desejada ); writeln( (1) Soma e produto ); writeln( (2) Produto ); writeln( (3) Resto da div. por x ); op:=readkey; procedure SomaProduto(x1,x2:integer); writeln( Soma =, x1+x2); writeln( Produto =, x1*x2); procedure Resto(n1,n2:integer); var x: integer; writeln( Entre com o valor de x ); readln(x); if x<=num1 then writeln( resto de,n1, por, x, =,n1 MOD x) writeln(x, maior que, n1); if x<=num2 then writeln( resto de,n2, por, x, =, n2 MOD x) writeln(x, maior que, n2); Begin writeln( Entre com dois numeros inteiros ); 5

readln(num1,num2); Menu(op); case op of 1 : SomaProduto(num1,num2); 2 : Resto(num1,num2); writeln( opcao invalida ); readln; End. 3 Funções Funções são subprogramas que retornam um único valor para o programa principal. Esse valor é retornado no nome da função. A sua chamada pelo programa principal se dá da mesma forma da chamada de uma função pré-definida da linguagem. Declarando funções function <nome da funcao> : tipo do dado retornado; declaracoes locais comandos function <nome da funcao> (lista de argumentos) : tipo do dado retornado; declaracoes locais comandos Exemplo 4 Podemos ainda modificar o nosso exemplo 1. O procedimento MostraMenu pode ser transformado numa função, uma vez que pode retornar para o programa principal a opção teclada pelo usuário. function RecebeOp :char; clrscr; writeln( Digite a opcao desejada ); writeln( (1) Soma e produto ); writeln( (2) Produto ); 6

writeln( (3) Resto da div. por x ); RecebeOp:=readkey; Begin writeln( Entre com dois numeros inteiros ); readln(num1,num2); case RecebeOp of 1 : SomaProduto(num1,num2); 2 : Resto(num1,num2); writeln( opcao invalida ); readln; End. Alternativamente, poderiamos colocar o comando op := RecebeOp, nesse caso o case fica como antes. Exemplo 5 Program Calc; var num,dig: integer; function digito(n:integer) : integer; if n > 1000 then digito:= n mod 9 digito:= (n mod 5) + (n mod 3); readln(num,dig); if dig <> digito(num) then writeln( digito invalido ); readln; end. 4 Arranjos como parâmetros O tipo dos identificadores na declaração dos subprogramas deve ser básico: (a) inteiro, booleano, caracter ou real; (b) definido pelo programador. Os seguintes cabeçalhos de procedimentos [TenAug86] são inválidos: 7

procedure proc(i:1..10); procedure proc2(a:array[1..10] of integer); Podemos apresentar as seguintes declarações para passarmos arrays como parâmetros: type indice = 1..10; tipoa = array[indice] of integer; procedure proc(i:indice); procedure proc2(a:tipoa); References [Asc99] Ana Fernanda Gomes Ascencio. Lógica de programação com Pascal. Makron Books Ltda, São Paulo, Brasil. 1999. [CooCla85] Doug Cooper and Michael Clancy. Oh! Pascal! W.W. Norton and Company, New York and London. Second Edition, 1985. [TenAug86] Aaron M. Tenenbaum and Moshe J. Augenstein. Data Structures using Pascal. Segunda edição, Prentice-Hall International Editions, EUA, 1986. [Ziv99] Nivio Ziviani. Projeto de Algoritmos com implementações em Pascal e C. Pioneira Informática, São Paulo, Brasil. Quarta edição, 1999. 8