Algumas notas sobre PASCAL



Documentos relacionados
Algumas notas sobre PASCAL

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

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

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

Manipulação de Arquivos em Pascal

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

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

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

INTRODUÇÃO OBJECT PASCAL/DELPHI

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

Conversão de Tipos e Arrays

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

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

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

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

Estrutura de Dados Básica

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

Linguagem de Programação

II. LÓGICA DE PROGRAMAÇÃO COM PASCAL

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

DESENVOLVIMENTO DE SOFTWARE

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

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

INTRODUÇÃO À LINGUAGEM C++

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

UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

JavaScript (ou JScript)

JSP - ORIENTADO A OBJETOS

PROGRAMAÇÃO II 3. FILA DINÂMICA

Algoritmos e Programação

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

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROG. DE COMPUTADORES II SI Arquivos

Tubarão / Santa Catarina / BRAZIL osmarjr@unisul.rct-sc.br

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

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

Computação II Orientação a Objetos

Algoritmos e Estruturas de Dados I

Registros. Técnicas de Programação. Rafael Silva Guimarães

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Aula Teórica 16: Estruturas de Dados Heterogêneas

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

MANIPULAÇÃO DE STRINGS

Linguagens de Programação

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

9 Comandos condicionais

Introdução à Engenharia ENG1000

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..

Estruturas (Registros)

Tipos de Dados Avançados Vetores e Matrizes

A4 Projeto Integrador e Lista de Jogos

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

Notas de Aula de Algoritmos e Programação de Computadores

SQL Procedural. Josino Rodrigues Neto

14.1 Vetor - Problemas

Linguagem de Montagem 2. Operações e Operandos

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

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

Vetores. Professor Dr Francisco Isidro Massettto

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Elementos básicos das linguagens de programação

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Convertendo Algoritmos para a Linguagem C

Planificação. Apreender conceitos sobre a lógica de programação. Aplicar instruções e sequências lógicas na resolução de problemas

Laboratório de Programação I

PROGRAMAÇÃO II 4. ÁRVORE

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Técnicas de Programação I

CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito

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

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Programação de Computadores I. Ponteiros

Algoritmos em Javascript

Conceitos básicos da linguagem C

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

ESTRUTURA DE DADOS PILHA

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos

MÉTODOS DE ORDENAÇÃO

Trabalho 3: Agenda de Tarefas

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

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

Transcrição:

Algumas notas sobre PASCAL PARTE I Anjolina Grisi de Oliveira 1 Um programa em PASCAL Esse texto inclui algumas notas sobre a linguagem PASCAL. As diferenças existentes entre os diversos compiladores não serão consideradas. Foram consultados os livros [CooCla85], [Ziv99] e [Asc99]. A estrutura de um programa em PASCAL é basicamente definida como a seguir: Program const type procedure e/ou function Begin corpo do programa cabeçalho do programa definição de constantes definição dos tipos dos dados declaração das iáveis declaração dos procedimentos e funções início do programa principal End. fim do programa principal 2 Tipos de dados Na linguagem PASCAL as iáveis, constantes e funções possuem um tipo associado. Os tipos podem ser classificados como a seguir: 1. simples ou básico: integer. char, boolean, real, etc. 2. estruturados ou compostos: array, record. file e sets. 3. Apontadores ou ponteiros: um apontador é uma iável que contém o endereço de uma outra iável alocada dinamicamente. Os tipos simples também são chamados tipos primitivos. Os tipos estruturados são construídos a partir dos tipos primitivos. 2.1 O tipo array As iáveis simples fazem referência a apenas um único valor. Entretanto, as iáveis estruturadas, como por exemplo o tipo array, podem armazenar uma coleção de valores do mesmo tipo, por isso é chamado de um tipo de dado homogêneo. Os arranjos (arrays) são estruturas n-dimensionais. Nesse texto, iremos abordar os arranjos unidimensionais, conhecidos como vetores e os arranjos bi-dimensionais, conhecidos como matrizes. 1

Vetores Os vetores são arranjos unidimensionais. É uma sequencia de iáveis, todas do mesmo tipo, que são alocadas em posições contíguas na mémoria. A figura 1 ilustra um arranjo desse tipo. Declarando vetores <identificador> : array[limiteinferior.. limitesuperior] of <tipo dos elementos>; Vetor 3 5 6 2 4 3 1 2 3 4 5 6 Figura 1: Vetor Exemplo 1 O seguinte programa em PASCAL ler um vetor de 6 posições inteiras e imprime seus elementos na ordem reversa. Program reverte; i: integer; vetor: array[1..6] of integer; Begin for i:=1 to 6 do readln(vetor[i]); for i:=6 downto 1 to writeln{vetor[i]); readln; End. Atenção: para a diferença entre os elementos de um vetor e os índices; Na figura 1, o primeiro elemento é o número 3, ou seja, vetor[1] é 3. O índice é 1 e o conteúdo é 3. O tamanho de um vetor é o número de elementos. No caso do exemplo 1, o vetor possui 6 elementos; a declaração de um vetor inclui os seus limites: inferior e o superior e não o seu tamanho. No exemplo 1 os limite inferior é 1 e o limite superior é 6. Entretanto, poderiamos alterar a definição desse vetor: 2

vetor: array[0..5] of integer; Nesse caso, o vetor continua tendo 6 elementos, sendo que os limites são diferentes da primeira definição. Devem ser feitas alterações apropriadas nos limites dos comandos for também. Podemos definir um vetor de uma forma diferente, usando a declaração type, conforme ilustrado a seguir. type tipovetor = array[1..6] of integer; vetor : tipovetor; Exemplo 2 Os três arranjos definidos a seguir possuem 6 elementos: vet1: array[2..7] of integer; vet2: array[-3..2] of char; vet3: array[ A.. F ] of real; Atribuindo valores a um vetor Considerando os vetores definidos no exemplo 2, podemos atribuir valores a eles da seuinte forma: vet1[2] := 3; vet2[0] := B ; vet3[ A ] := 3.2; Mais um exemplo O seguinte programa, ilustrado no livro [CooCla85], mostra a importância do uso de vetores na programação. Exemplo 3 Suponha que um programa receba como entrada uma longa sequencia de números inteiros. Nós desejamos contar o número de vezes em que cada caracter, que é um dígito ocorre na sequencia. Program ContaDig; type Totais = array[ 0.. 9 ] of integer; Digitos: Totais; DigitoAtual: char; i, Quant: integer; Begin for DigitoAtual:= 0 to 9 do Digitos[DigitoAtual]:=0; 3

writeln( Quantos digitos possui a sequencia? ); readln(quant); writeln( Entre com a sequencia de numeros ); for i:=1 to Quant do readln(digitoatual); Digitos[DigitoAtual] := Digitos[DigitoAtual] + 1; writeln( Numero de vezes que cada digito ocorre na sequencia: ); for DigitoAtual:= 0 to 9 do writeln(digitoatual, =,Digitos[DigitoAtual]); readln; End. Matrizes Matrizes são arranjos bi-dimensionais. Declarando matrizes <identificador>:array[l1..l2,c1..c2] of <tipo dos elementos>; Onde l1 e l2 são os limites das linhas da matriz, enquanto que c1 e c2 são os limites das colunas. Exemplo 4 Exemplos de iáveis do tipo matriz: Matriz1: array[1..5,1..5] of integer; Matriz2: array[1..3,1..8] of char; Atribuindo valores às matrizes Matriz1[1,2]:=0; Matriz2[3,8]:= A ; Exemplo 5 O seguinte programa faz a leitura de uma matriz de números reais e imprime a soma dos elementos da linha e da coluna fornecidos pelo usuário. Program ExMatriz; Mat: array[1..4,1..3] of real; i,j,linha,coluna: integer; somanl,somac:real; DadosCorretos: boolean; Begin somal:=0.0; somac:=0.0; DadosCorretos := false; 4

i:=1; while (i<=3) and (not DadosCorretos) do writeln( Entre com o numero da linha e da coluna a ser somada ); readln(linha,coluna); if (linha < 1) or (linha > 4) or (coluna < 1) or (coluna >3) then writeln( dados incorretos ); writeln( voce tem mais,3-i, chances ); end else DadosCorretos:=true; i:=i+1; if DadosCorretos then writeln( Entre com a matriz ); for i:= 1 to 4 do for j:=1 to 3 do writeln( Elemento,i,,j); readln(mat[i,j]); for j:=1 to 3 do somal := somal + Mat[linha,j]; for i:=1 to 4 do somac := somac + Mat[i,coluna]; writeln( soma dos elementos da linha,linha, =,somal); writeln( soma dos elementos da coluna,coluna, =,somac); readln; End. 2.2 O tipo record O tipo record (registro) é um tipo de dado estruturado heterogêneo. Isso porque ele pode agrupar dados de tipos diferentes. O tipo registro é usado quando os dados agrupados têm alguma afinidade, ou seja, estão logicamente relacionados. Sua sintaxe no PASCAL é definida com a seguir: type <nome do registro> = record nome campo1 : tipo do dado do campo1; nome campo2 : tipo do dado do campo2;.. nome campo-n: tipo de dado do campo-n; 5

Acesso a um campo do registro Usa-se um mecanismo conhecido como dot notation: nomedoregistro.campo Exemplo 6 Ilustrando o uso de registros. type tipoplaca = record alfa : string[3]; num : integer; type tipocarro = record placa : tipoplaca; ano: integer; carro: tipocarro; readln(carro) writeln( placa do carro lido =,carro.placa, ano =,carro.ano); writeln( parte alfa da placa =,carro.placa.alfa); writeln( parte numerica da placa =,carro.placa.num); readln; end. O comando with Com esse comando é possível acessar os componentes de um registro utilizandose apenas os nomes dos campos. with registro1, registro2,..., registron do... Exemplo 7 Os seguintes trechos de programa possuem o mesmo efeito. with carro do ano = 2003; placa.alfa = KKI ; 6

placa.num = 3241; with carro,placa do ano = 2003; alfa = KKI ; num = 3241; Exemplo 8 Esse exemplo [CooCla85] ilustra o uso de arrays de registros. type CoresPeca = (nenhuma,preta,branca); ValoresPeca = (vazio,rei,rainha,bispo,piao,torre,cavalo); quadrados = record ocupado : boolean; peca : ValoresPeca; CorPeca : CoresPeca; TabuleiroXadrez = array[1..8,1..8] of quadrados; UltimoMovimento, MovimentoAtual : quadrados; Tabuleiro : TabuleiroXadrez; Assuma que o elemento 5,2 é um pião branco. Os comandos definidos a seguir movem o pião branco da posição 5,2 para a posição 5,4. Todas os blocos de comandos mostrados abaixo fazem a mesma tarefa: BLOCO1: BLOCO2: BLOCO3: BLOCO4: Tabuleiro[5,4] := Tabuleiro[5,2]; Tabuleiro[5,4].ocupado := true; Tabuleiro[5,4].peca := piao; Tabuleiro[5,4].corpeca := branca; MovimentoAtual.ocupado := true; MovimentoAtual.peca := piao; MovimentoAtual.corpeca := branca; Tabuleiro[5,4] := MovimentoAtual; 7

with Tabuleiro[5,4] do ocupado := true; peca := piao; corpeca := branca; Após a execução de um desses blocos, precisamos esvaziar a posição 5,2: with Tabuleiro[5,2] do ocupado := false; peca := vazio; corpeca := nenhuma; Referências [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. [VeSaAzFu83]. Veloso, C dos Santos, P. Azeredo and A. Furtado. Estrutura de Dados Editora Campus, Brasil, 15a edição, 1983. [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