• Nenhum resultado encontrado

02-Pascal

N/A
N/A
Protected

Academic year: 2021

Share "02-Pascal"

Copied!
52
0
0

Texto

(1)

Prof. Sidney Cassemiro do Nascimento

Lógica de Programação IFS

2013/2

(2)

2

Conteúdo

Introdução

Programação Estruturada Linguagem Pascal

(3)

3

Origem

Criada em 1968 pelo prof. Niklaus Wirth (Suíça)

Homenagem a Blaise Pascal (1623-1662) Inicialmente destinada à programação

científica

Linguagem estruturada

Favorece o uso de boas técnicas de programação

(4)

4

Algoritmo x Programa

Algoritmo: “Conjunto de etapas finitas,

ordenadamente definidas com o propósito de obter soluções para um determinado problema.”

Programa: “Formalização de um algoritmo em uma linguagem inteligível pelo computador. É escrito em uma linguagem de alto nível, gerando o

programa fonte.”

(5)

5

Conceitos básicos

Qual o tipo de linguagem que o computador entende?

– Linguagem de máquina

Como podemos fazer a tradução de uma

linguagem de programação para linguagem de máquina?

– Usando um compilador

Como um programa é executado no computador?

– Primeiro ele é carregado na memória e depois cada instrução é executada de acordo com a lógica do programa

(6)

6

Conceitos básicos

Linguagem de programação: As

linguagens de programação constitui um conjunto de regras sintáticas bem definidas e se seguidas, é

possível construir um programa de computador.

Exemplos de linguagem : Pascal, C, C++, Java e etc.

Compiladores: O compilador é uma ferramenta ou um aplicativo cuja função é "traduzir" o código

escrito em linguagem de alto nível (linguagem de programação) para um código de baixo nível

(linguagem de máquina) permitindo assim, a criação de um programa de computador (aplicativo).

(7)

7

Compiladores

(8)

8

Programação Estruturada

Qual são os objetivos da programação estruturada?

– Facilitar a escrita dos programas

– Facilitar a leitura dos programas

– Permitir a verificação prévia dos programas

– Facilitar a manutenção e modificação dos programas

Porque ela é tão importante?

– Devido a complexidade dos sistemas

(9)

9

Programação Estruturada

Qual as características da programação estruturada?

– Desenvolvimento Top-Down

– Modularização

– Estruturas de Controle

Quais os problemas na produção de software?

– Confiabilidade x Complexidade

– Manutenabilidade

– Documentação

– Fluxo de controle dos algoritmos

(10)

10

Programação Estruturada

Desenvolvimento Top-Down

– identificar o sistema que se deseja modelar

– ir descendo cada vez mais no nível de especificação dos sub-sistemas relacionados

Modularização

– separar o sistema em pequenos blocos funcionais

– realizar o encadeamento destes blocos funcionais

– alterações a nível de bloco => reaproveitamento de código fonte

Estruturas de controle: sequencial, condicional e repetitivo

(11)

11

Fases

1) Definição do problema

2) Desenvolvimento de um algoritmo

3) Transcrição para a linguagem (PASCAL) 4) Digitação do programa

5) Compilação

6) Executa e Análise dos resultados

(12)

12

program SomaPares; {nome do programa} var par: integer; { declaração de variáveis } soma: integer;

begin { inicio do bloco principal do programa }

soma := 0; { inicializa a variável soma }

par := 0; { inicializa a variável par }

while par <= 10 do { loop da soma }

begin { inicio do comando enquanto }

soma := soma + par; { acumula a variável par }

par := par + 2; { adiciona 2 a variável par }

end; { fim do comando enquanto }

writeln (soma); { escreve o valor da variável soma }

(13)

13

Ambiente de programação

PascalZIM

– http://br.geocities.com/pascalzim/ – Espaço em disco: 1,11 Mb

– Sistema Operacional: Windows 95, 98, ME, XP, Vista*, NT4 ou 2000

Free Pascal

– http://www.freepascal.org/

– Espaço em disco: 130 Mb

– Sistema Operacional: DOS, UNIX, Windows, OS/2 ou Mac OS/2

Dev-Pascal

– Espaço em disco: 26 Mb

(14)

14

Comentários

Usado para aumentar a clareza do programa, embora não seja analisado pelo computador:

{ comentário } ou (* comentário *)

Ex:

var mat: integer; { num. de matricula } nome: string; { nome do aluno }

(15)

15

Palavras Reservadas

absolute and array asm begin case const constructor destructor div do downto else end file for function goto if implementation in inherited inline interface label mod nil not object of on operator or packed procedure program record reintroduce repeat self set shl shr string then to type unit until uses var while with xor Linguagem Pascal

(16)

16

Formato básico de um programa

Todo programa em PASCAL deve ter a seguinte forma:

program <nome>; – <bloco>.

– Onde:

<nome> - nome do programa <bloco> - bloco do programa

(17)

17

Bloco do programa

Linguagem Pascal

O <bloco> é formado por:

const

//declaração de constantes;

type

//definição de novos tipos;

var

//declaração de variáveis;

//definição de funções e procedimentos;

begin

//sequência de comandos;

(18)

18

Constantes

Valor fixo;

Não muda durante a execução de um programa;

Podem ser numéricas, lógicas ou alfanuméricas (literal).

Ex:

Const

e = 2.7182818; { Real type constant. } a = 2; { Ordinal (Integer) type constant. } c = ’4’; { Character type constant. }

s = ’This is a constant string’; { String type constant. } k = chr(32);

(19)

19

Definição de novos tipos

Uma vez definido o novo tipo, este passa a ser referenciado pelo seu identificador.

Exemplo:

type Indices = 0..10; Letras = ‘A’..’Z’; Faixa = -3..3; var i, k: Indices;

letra, opcao: Letras; fx: Faixa;

(20)

20

Variáveis

São representadas por identificadores Formado por:

– uma letra, ou

– uma letra seguida de letras ou dígitos:

Ex: A, Nota, matricula, x, a, a1, a2, dt, Tot32Sub

Maiúsculas são iguais a minúsculas: dt = DT

var lista-de-variáveis: tipo;

onde tipo=integer, real, boolean, char,

string ou novo tipo (pré-definido)

(21)

21

Comando de atribuição

Identificador := expressão; program Exemplo;

var A, B, X, Y: integer; { tipo inteiro } Media: real; { tipo real }

teste: boolean; { tipo lógico } letra: char; { tipo caractere }

cor: string; { tipo pré-definido cadeia de caracteres } begin

X := 1; B := 3; A := B; Media := (A+B)/2; Y := X-1; teste := (X=0) and (Y<>2);

letra := ‘K’; cor := ‘azul’; end.

(22)

22

Expressões aritméticas

Ordem de prioridade:

– 1a: *, /, div, mod

– 2a: +, -

div - quociente inteiro (divisão e truncamento, sem arrendondamento)

mod - resto inteiro da divisão

begin

x := 11 div 4; { x = 2; retorna o quociente } y := 11 mod 4 { y = 3; retorna o resto }

z := sqrt(x); { x = 4; retorna a raiz quadrada } w := sqr(z); { w = 2; retorna o quadrado }

end.

(23)

23

Expressões lógicas

Relações

– A<>B, nome=‘Maria’, mat<0, tot=0 Operadores lógicos

– p and q, p or q, not p

Ex: (idade>18) and (nome=‘Luzia’) Prioridade

– 1a: not

– 2a: *, /, div, mod, and – 3a: +, -, or

– 4a: =, <>, <, <=, >=, >, in

(24)

24

Expressões literais

Caracter: chr(cod) { cod=código ASCII }

Ordem: ord(char) { código ASCII, char=caracter }

Sucessor do caracter: succ(char)

Antecessor do caracter: pred(char)

(25)

25

Comandos de entrada

Leitura

program leitura;

var cod: integer; nota: real;

Begin

read (cod); read (nota); read (cod, nota);

readln (cod, nota); { a diferença é que o readln gera uma mudança de linha após a leitura dos valores }

end.

(26)

26

Escrita

program escrita;

var cod: integer; nota: real; begin

cod := 1010; nota := 7.5;

write(cod, ’ ‘); write(nota); // write (cod, ' ', nota);

writeln; // pula uma linha

writeln(’Código: ‘, cod); writeln(’Nota: ‘, nota:4:1); // writeln (‘Código: ‘, cod,’ ‘, ‘Nota: ‘, nota:4:1);

{ a diferença é que o writeln gera uma mudança de linha após a escrita dos valores }

end.

Linguagem Pascal

(27)

27

Formatação na escrita

program formata;

var a,b: real; k, l : char;

begin

a:=3.2; b:=5.81; k:=‘+’; l:=‘=’;

write (a:5:2, k:2, b:5:2, l:4, a+b:6:3);

end.

Saída:

3.20 + 5.81 = 9.010 Linguagem Pascal

(28)

28

Sequência

begin

end;

Importante a indentação dos comandos (recuo para direita)

– Lembrar que o programa não será mantido apenas por você, outras pessoas irão também dar manutenção nele

Comando_1; ...

Comando_N;

(29)

29

Seleção

A sintaxe do comando simples é mostrada abaixo:

if (Expressão Lógica) then

Sequência;

O comando de seleção simples funciona da seguinte maneira:

1.A expressão lógica é resolvida;

2.Se o resultado da expressão for true, então a

Sequência será executada;

3.Caso o resultado seja false a Sequência não será executada.

(30)

30

Seleção

A sintaxe do comando composto é mostrada abaixo:

if (Expressão Lógica) then Sequência_1

else

Sequência_2;

O comando de seleção composta funciona da seguinte maneira:

1.A expressão lógica é resolvida;

2.Se o resultado da expressão for true, então a

Sequência_1 será executada;

3.Caso o resultado seja false a Sequência_2 será executada.

(31)

31

Comando de Seleção Aninhado

É possível ter casos em que seja

necessário a utilização de um comando de seleção dentro de outro comando de

seleção

O comando de seleção aninhado permiti a avaliação de diversas condições para os possíveis valores de um dado conjunto de variáveis

(32)

32

Comando de Seleção Aninhado

Abaixo segue um exemplo de um trecho de um código utilizando comando de seleção aninhado:

...

if Num1 > Num2 then

writeln(‘O maior número é: ’, Num1)

else if Num1 < Num2 then

writeln(‘O maior número é: ’, Num2)

else

writeln(‘Os números são iguais’);

(33)

33

Comando escolha

O comando ESCOLHA (case), corresponde ao comando SE-ENTÃO, mas de uma forma mais compacta nas operações de seleção.

Ex.:

var c: char; ...

Case c of

’a’ : WriteLn (’A pressed’);

’b’ : WriteLn (’B pressed’);

’c’ : WriteLn (’C pressed’);

else

WriteLn (’unknown letter pressed : ’, c);

end;

(34)

34

Comando de Repetição - Enquanto

A sintaxe do comando while é mostrada abaixo:

while (Expressão Lógica) do Sequência;

O comando while analisa a Expressão

Lógica e enquanto o seu resultado for, o

valor lógico, true a Sequência é executada.

(35)

35

Comando de Repetição - Repita

A sintaxe do comando repeat é mostrada abaixo:

repeat

Sequência;

until (Expressão Lógica);

O comando repeat executa a Sequência até que o valor retornado pela Expressão

Lógica seja true.

(36)

36

Comando de Repetição - Para

A sintaxe do comando for é mostrada abaixo:

for variável := valor_inicial to / downto

valor_final do

Sequência;

O comando for incrementa, a variável, a partir do valor_inicial de uma unidade, até que, esta atinja o valor_final. E para cada incremento a Sequência é executada.

(37)

37

Estruturas de Dados Homogêneas

Estruturas de dados homogêneas são

tipos de dados que permitem agrupar em uma mesma estrutura variáveis do mesmo tipo básico.

Arrays Vetores Matrizes

(38)

38

Vetores

No caso de vetores, cada elemento possui um índice (unidimensional) que o diferencia dos outros elementos. A sintaxe da

declaração de vetor é da forma:

var identificador[,..,identificador]:

array[1..tamanho] of tipo_var;

(39)

39

Matrizes

Matrizes também são tipos de dados que

permitem agrupar em uma mesma

estrutura variáveis do mesmo tipo básico, sendo que cada elemento possui agora dois índices (bidimensional) que o

diferencia dos outros elementos. A sintaxe da declaração da matriz é da forma:

var identificador[,..,identificador]:

array[1..tam1,1..tam2] of tipo_var;

(40)

40

Estruturas de Dados Heterogêneas

Estruturas de dados heterogêneas são

tipos de dados que permitem agrupar em uma mesma estrutura mais de tipo de

dados.

Registro

As variáveis constituintes de um registro são denominadas campos;

Em Pascal, os tipos registro devem ser

declarados antes das definições das variáveis através da instrução type.

(41)

41

Registro

type

identificador_registro = record

<declaração dos campos>;

end; var

identificador_var: identificador_registro;

(42)

42

Modularização

Modularização é um técnica de

decomposição em unidades funcionais

(subrotinas), proveniente da programação estruturada.

Uma subrotina é um sub-programa com variáveis e comandos próprios e que, para ser executada, precisa ser chamada pelo programa principal.

(43)

43

Modularização

Subrotinas

São trechos de códigos;

Devem ser logicamente coerentes;

Cada um deve realizar uma função definida; De modo geral a estrutura da subrotina e a mesma do programa principal, isto é, tem o cabeçalho e o corpo.

(44)

44

Modularização

Na linguagem PASCAL temos dois tipos de subrotinas:

Função (Function);

Procedimento (Procedure).

Tanto as funções como os procedimentos devem ser colocados após todas as outras subáreas (como const, type e var) e antes

do bloco do programa.

(45)

45

Função

Uma função é um bloco de programa no qual são válidas todas as regras de

programação vistas;

Uma função (function) sempre retorna um valor, que é utilizado exatamente no ponto onde a função é chamada no bloco de

origem.

O valor de retorno pode ser numérico, lógico ou literal.

(46)

46

Função

function nome_funcao [(par1[..,parN]:tipo[;..;parA[..,parZ]:tipo]) :tipo_retorno]; var

//Declarações de variáveis locais;

begin

//Comandos;

end;

(47)

47

Função - Exemplo

function fatorial(n:integer):integer; var i,f: integer; begin f := 1; for i := 1 to n do f := f * i; fatorial := f; end; Linguagem Pascal

Com relação a esta função vejamos alguns itens:

Qual o nome da função? O que ela faz?

O que retorna?

Escreva um programa completo que a utilize.

(48)

48

Procedimento

A diferença básica entre um procedimento (procedure) e uma função (function) é o fato do procedimento NÃO possuir valor de retorno.

A função retorna um valor, o procedimento não.

(49)

49

Procedimento

Procedure nome_procedimento

[(par1[..,parN]:tipo[;..;parA[..,parZ]:tipo])];

var

//Declarações de variáveis locais;

begin

//Comandos;

end;

(50)

50

Procedimento - Exemplo

procedure troca(var x,y: integer); var temp: integer; begin temp := x; x := y; y := temp; end; Linguagem Pascal

Com relação a este procedimento vejamos alguns itens:

Qual o nome do procedimento? O que ele faz?

O que retorna?

Escreva um programa completo que o utilize.

(51)

51

Passagem de parâmetros

Nomenclatura dos parâmetros

Reais: chamadora; Formais: subrotina.

Linguagem Pascal

Procedure Troca (var X,Y: integer);

Begin // bloco do programa …

Troca ( A,B );

… End.

(52)

52

Passagem de parâmetros

Passagem

por valor: Apenas o valor é transferido. Então, as

alterações feitas nos parâmetros formais (da subrotina) não alteram os reais (chamadora).

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

Linguagem Pascal

procedure inicializa ( var A,B: real; C: real; var D: integer );

por referência

Referências

Documentos relacionados

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

Em conseqiiencia, a avaliagao so- frera uma mudanga qualitativa, pois os educadores deixarao de ser cs unicos responsaveis pela eficacia do processo ensino-aprendizagem (ao lado

Para tratar destas questões, serão utilizados artigos acadêmicos, pesquisas, relatórios e também autores atuais que tratam deste assunto, como Susan George com seu livro

Os serviços da secretaria e dividido entre três funcionárias, cujas atividades são: Atendimento de balcão para atender a comunidade escolar; organização dos

Desta forma o presente trabalho visa compreender a distribuição espaço-temporal dos marcadores geoquímicos, Hidrocarbonetos Alifáticos HA e Hidrocarbonetos Policíclicos Aromáticos

Esse trabalho é norteado pela hipótese de que o exercício controlado e supervisionado pode trazer regulação do perfil lipídico e regulação dos problemas

Foi implantado um questionário para avaliação da qualidade de vida das funcionárias de serviços gerais da IES, coleta de dados de dor, glicemia e pressão arterial (PA)

Nessa perspectiva, o questionário, conforme Apêndice 01, aborda os seguintes aspectos: período em que os investigados cursaram as disciplinas de Cálculo Diferencial e