Você está na página 1de 68

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

1

1) INTRODUÇÃO

Uma máquina é composta de peças e engrenagens (peças mecânica), ou fios, interruptores, motor (peças elétricas) ou diodos, transistores, capacitores (peças eletrônicas), tudo isso podemos chamar de HARDWARE = componentes físicos. Um programa de computador é feito de códigos, comandos escritos numa determinada linguagem, que faz a máquina tomar decisões múltiplas, e fazer combinações, funcões diversificadas. Podemos chamar um programa de computador de SOFTWARE =Componentes Abstratos.

1.1. que é um Programa?

Programa são seqüências de instruções executadas pelo computador (processador). Conjunto de símbolos, regras de sintaxe e semântica disposto de forma sequencial.

1.2. Programa X Algoritmo

Um algoritmo é uma seqüência lógica de ações a serem executadas. Um programa é a formalização de um algoritmo em uma determinada linguagem de programação.

1.3. Tipos de Linguagem

1.3.1. Linguagem de Máquina: Binária, possui 2 estados (ligado e

desligado) ou 1 e 0, uso interno do processador do computador.

1.3.2. Linguagem de Baixo N ível: Utiliza mnemônicos para representar

instruções elementares. Exemplo: Linguagem de montagem chamada Assembly. Trabalhosa e difícil para realizar múltiplas instruções.

1.3.3. Linguagem de Alto Nível: Utiliza instruções próximas da linguagem

humana de forma a facilitar o raciocínio.

Uso

Linguagem

Uso Científico

Fortran

Uso Geral

Pascal, C , QBasic

Uso Comercial

Cobol, Clipper, Fox Pro

Uso Específico:

Lisp,

Inteligência Artificial

Prolog

Orientadas a

Visual Basic

Eventos

Orientadas a Objetos

Visual Java, Visual C, Delphi

1.4. Interpretador

Traduz simultaneamente uma linha e executa, precisa do programa principal, exemplos: MSAccess, Dbase são programas que precisam estar juntos para realizar a tarefa.

1.5. Compilador

Traduz todo o programa fonte, cria um executável com a união de programa objeto e de um link -editor. Um programa executável pode rodar sozinho.

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

i i i c c c a a a I APOSTILA DE TECNICAS DE PROGRAMAÇÃO Léxico
i i i c c c a a a I APOSTILA DE TECNICAS DE PROGRAMAÇÃO Léxico
i i i c c c a a a I APOSTILA DE TECNICAS DE PROGRAMAÇÃO Léxico
Léxico (Scanner) Analizador Sintático
Léxico
(Scanner)
Analizador Sintático
DE PROGRAMAÇÃO Léxico (Scanner) Analizador Sintático Gerador de Código intermediário Otimização Gerador

Gerador de Código intermediário

Gerador de Código intermediário
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Otimização

Otimização

Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização
Gerador de Código intermediário Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina

Gerador de Código

Tabela de Símbolos

Tabela de Símbolos

Tabela de Símbolos
Tabela de Símbolos
Tabela de Símbolos
Tabela de Símbolos
Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina 2 PROFESSOR BERALDO LOPES FIGUEIREDO
Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina 2 PROFESSOR BERALDO LOPES FIGUEIREDO

Linguagem de máquina

Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina 2 PROFESSOR BERALDO LOPES FIGUEIREDO
Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina 2 PROFESSOR BERALDO LOPES FIGUEIREDO
Otimização Gerador de Código Tabela de Símbolos Linguagem de máquina 2 PROFESSOR BERALDO LOPES FIGUEIREDO

2

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

1.6. Estrutura Geral de um Compilador:

3

1.6.1. Analizador Léxico: Reconhece no código fonte unidades básicas de informação pertencentes à linguagem. Essas unidades de

informação recebem o nome de tokens ou unidade léxicas. Um token

é o elemento ou cadeia do programa fonte, exemplo, os

identificadores, os operadores, etc.

1.6.2. Analizador Sintático: O analizador sintático ou Parser operar sobre

a lista de tokens que recebe do scanner esses erros podem ser:

duplicidade de variáveis, colocar letras em variáveis numéricas. Estas

mensagens são chamadas Warnings.

1.6.3. Gerador de código intermediário: traduz o resultado da análise

no caso de não haver erros, para um código intermediário, visando a portabilidade

1.6.4. Otimizador de Código: Adapta as características do código

intermediário a cada característica do processador.

1.6.5. Gerador de Código Final: Traduzir do código objeto para o código

final. Linguagem executável.

Módulo de Tratamento de Erros do Compilador

Erros Léxicos

Tokens não reconhecíveis, detectados pelo scanner. Variáveis não definidas.

Erros sintáticos

São aqueles que não cumprem as regras de sintaxe da linguagem, detectados pela parser, erro de escrita.

Erros Semânticos

Detectados em alguma fase da compilação, são aqueles que não interrompem o processo. Chamados Warnings.

Erros Lógicos

Não detectado pelo compilador, são erros de construção do algoritmo, detectados na fase de teste.

Erros de Execução

Erros de OverFlow, estouro de divisão, Loops infinitos, divisão por zero, número negativo

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

4

2) LINGUAGEM DE PROGRAMAÇÃO: PASCAL

2.1. Operadores:

*

Multiplicação

/

Divisão de números reais

+

Adição

-

Subtração

div

Divisão inteira arredondada

mod

Resto da divisão

2.2. Operadores Lógicos:

=

Igual

: =

Atribuição

 

< Menor que

 

> Maior que

<>

Diferente

<=

Menor ou igual

>=

Maior ou igual

2.3. Funções e Procedimentos:

 

Funções Padrões predefinidas

Abs(A)

Valor absoluto de A (Real, inteiro)

Addr(V)

Endereço da Variável

Addr(SubP)

Endereço do SubPrograma (Pointer)

ArcTang(x)

Arco de Tangente

Bdos(F,P)

Chamada BDOS e volta ao Registrador

Bios(F,P)

Chamada Bios

Chr(i)

Caracter ascii do valor de i

Concat(S, ,S)

Concatenar as string (unir)

Copy(S,P,L)

S=Substring, P=posição, L=quantidade de Letras

Cos(x)

Cos Seno

EOF(f)

Fim do Arquivo teste booleano

EOLn(f)

Fim da linha teste booleano

Exp(x)

Exponencial de x

FilePos(F)

Registro corrente do arquivo f

FileSise(f)

Total de registros do arquivo f

Frac(x)

Porção Fracionária de x

Hi(X)

Byte superior de x

Int(x)

Porção inteira de x (real)

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

5

KeyPressed

Sinalizador de Status do teclado ( booleana)

Length(S)

Tamanho numérico de uma String

Ln(x)

Logaritmo natural de x

Lo(x)

Byte inferior de x

MemAvail

Bytes / parágrafos disponíveis

Pos(P,s)

Posição da String P em S

Ptr(i)

Apontador de endereço

Odd(i)

Teste impar/ par para i

Ord(Sc)

Valor ordinal de variável escalar

Pred(SC)

Predecessor de valor escalar

Random

Valor aleatório de 0 a 0.9999

Random(x)

Valor aleatório de 0 a 1

Round(x)

Valor arredondado do real x

Shl(x)

Deslocamento para a esquerda

ShR(x)

Deslocamento para a direita

Sin(x)

Seno de x (real)

SizeOf(x)

Tamanho de bytes da variável

Sqr(x)

Quadrado de x (inteiro, real)

Sqrt(x)

Extrai raiz quadrada de X ( inteiro, real)

Succ(x)

Sucessor escalar de x

Swap(i)

Troca de byte superior ou inferior

Trunc (x)

Valor truncado de x

UpCase(x)

Converte em maiúsculas uma string (caixa alta)

 

Procedimentos Predefinidos

Assign(F,N)

Associar arquivo F cujo nome é N

BlockRead(F,D,N)

Ler N blocos, para D de arquivo F

BlockWrite(F,D,N)

Escrever N blocos, para D do arquivo F

Chain( f )

Encadear o arquivo f

Close( F )

Fechar o arquivo F

ClrEol

Limpar a tela até onde o cursor está

ClrScr

Limpar a tela

Delay(milis)

Retarda em milisegundos

Delete(S,P,L)

Deleta parte da String

DelLine

Apaga a linha em que o cursor está posicionado

Dispose(p)

Recupera a memória usado por p

Erase(F)

Apaga o arquivo F do diretório

Execute(f)

Executar o arquivo f

GoToXY(x,y)

Mover o cursor para a coluna x, linha y

Halt

Parar o programa e retornar ao sistema

HighVideo

Alta intensidade no vídeo

InsLine

Inserir uma linha na tela

LongSeek(F,P)

Uma rotina de busca para o MS-DOS

LowVideo

Baixa intensidade no vídeo

NormVideo

Vídeo normal

Randomize

Iniciar uma semente aleatória

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

6

Read(x)

Ler itens a partir do teclado

ReadLn(x)

Ler itens a partir do teclado numa nova linha

Rename (F)

Renomear um arquivo

Reset(F)

Abrir o arquivo para ler

Rewrite(F)

Abrir o arquivo F para gravar

Seek(f,p)

Mudar para p do arquivo f

Str(N,S)

Converte o número N para string S

Val(S,N,P)

Converte em número a string S, erro em P

Write(x)

Escreve itens na tela

WriteLn(x)

Escreve itens na tela e muda a linha

2.4.

 

Operadores Booleanos:

Or

=

Ou

And

=

e

Not

= não

 

2.5. Concatenação (+)

Efetua a junção de duas Strings com uma variável entre eles Var NumTit : integer; Begin Read(NumTit); Writeln ('o Grêmio é ' + NumTit + ' Campeão da Libertadores ';

2.6. Operadores de Ponteiros

Endereço

@

Referência

^

Estrutura de um Programa Pascal

Nome do Programa (Identificação)

Área de definições de variáveis

Início

Desenvolvimento (Procedimentos e Funções)

Fim

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

7

2.7. Áreas de um programa em Pascal:

1. Área de definição de Rótulos

2. Área de definição de constantes

3. Área de definição de tipos

4. Área de definição de variáveis

5. Área de procedimentos e funções

6. Área de comandos

Program Procura (input, output) Label

99; ; Const

Zero=0;

Ultimo=10;

Procura (input, output) Label 99; ; Const Zero=0; Ultimo=10; Cabeçalho, rótulo, constante Type Indice= 1 tam;

Cabeçalho, rótulo, constante

Type

Indice= 1

tam;

Tabela=array [indice] of integer;

Tipos

Var Tab:Tabela; I: integer; Achou: Boolean;

Variáveis s

Begin

.

.

end.

Corpo de Comandos e funçõesI: integer; Achou: Boolean; Variávei s Begin . . end. 2.8. VARIÁVEIS: 2.8.1. Armazenamento na memória

2.8. VARIÁVEIS:

2.8.1. Armazenamento na memória do tipo Literal (String):

De maneira bem simplificada, a memória de um computador pode ser vista com um conjunto ordenado de células, sempre identificada por um número inteiro distinto conhecido por endereço. Cada célula de memória é mais conhecida como byte. Um byte é um agrupamento de 8 bits numerado em ordem decrescente de 7 à 0. Cada bit é capaz de guardar uma informação que pode ser 0 ou 1 (binária). Com esses dois estados (falso ou verdadeiro) temos 2 8 = 256 estados possíveis. Apesar do byte poder ser subdivido em bits só podemos acessar a memória byte a byte. Para escrever ou ler qualquer informação o meio será sempre acessado por um byte. Essa arquitetura resultou num conjunto com um número de elementos menor que

256, surgiu uma tabela com 256 caracteres onde cada estado do byte representa um caracter e esse estado representa-se por um número. Exemplo o caracter: A =

65 já o caracter: a = 97. Essa tabela padronizada chama-se ASCII (American

Standart Code for Information Interchange).

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO Exemplo: banana

8

Endereço

Informação

Código ASCII

0

b

98

1

a

97

2

n

110

3

a

97

4

n

110

5

a

97

Palavras acentuadas:

ë

137

í

161

Á

160

é

130

É

144

Ç

128

ã

132

Á

181

ç

135

â

133

õ

228

Ú

163

ê

136

Ã

142

Ó

162

Ó

224

Ë

211

Ê

210

2.8.2. Armazenamento na memória do tipo Literal (String):

De maneira bem simplificada, a memória de um computador pode ser vista com um conjunto ordenado de células, sempre identificada por um número inteiro distinto conhecido por endereço. Cada célula de memória é mais conhecida como byte. Um byte é um agrupamento de 8 bits numerado em ordem decrescente de 7

à 0. Cada bit é capaz de guardar uma informação que pode ser 0 ou 1 (binária). Com esses dois estados (falso ou verdadeiro) temos 2 8 = 256 estados possíveis. Apesar do byte poder ser subdivido em bits só podemos acessar a memória byte a byte. Para escrever ou ler qualquer informação o meio será sempre acessado por um byte. Essa arquitetura resultou num conjunto com um número de elementos menor que 256, surgiu uma tabela com 256 caracteres onde cada estado do byte representa um caracter e esse estado representa-se por um número. Exemplo o caracter: A =

65 já o caracter: a = 97. Essa tabela padronizada chama-se ASCII (American

Standart Code for Information Interchange).

2.8.3.

Tabela ASCII

 

32

[space]

64

@

96

`

33

!

65

A

97

a

34

"

66

B

98

b

35

#

67

C

99

c

36

$

68

D

100

d

37

%

69

E

101

e

38

&

70

F

102

f

39

'

71

G

103

g

40

(

72

H

104

h

41

)

73

I

105

i

42

*

74

J

106

j

43

+

75

K

107

k

44

,

76

L

108

l

45

-

77

M

109

m

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

46

.

78

N

110

n

47

/

79

O

111

o

48

0

80

P

112

p

49

1

81

Q

113

q

50

2

82

R

114

r

51

3

83

S

115

s

52

4

84

T

116

t

53

5

85

U

117

u

54

6

86

V

118

v

55

7

87

W

119

w

56

8

88

X

120

x

57

9

89

Y

121

y

58

:

90

Z

122

z

59

;

91

[

123

{

60

<

92

\

124

|

61

=

93

]

125

}

62

>

94

^

126

~

63

?

95

127

·

 

_

160

[space]

192

À

224

à

161

¡

193

Á

225

á

162

¢

194

Â

226

â

163

£

195

Ã

227

ã

164

¤

196

Ä

228

ä

165

¥

197

Å

229

å

166

¦

198

Æ

230

æ

167

§

199

Ç

231

ç

168

¨

200

È

232

è

169

©

201

É

233

é

170

ª

202

Ê

234

ê

171

«

203

Ë

235

ë

172

¬

204

Ì

236

ì

173

-

205

Í

237

í

174

®

206

Î

238

î

175

¯

207

Ï

239

ï

176

°

208

Ð

240

ð

177

±

209

Ñ

241

ñ

178

²

210

Ò

242

ò

179

³

211

Ó

243

ó

180

´

212

Ô

244

ô

181

µ

213

Õ

245

õ

182

214

Ö

246

ö

183

·

215

×

247

÷

184

216

Ø

248

ø

185

¸

¹

217

Ù

249

ù

186

º

218

Ú

250

ú

187

»

219

Û

251

û

188

¼

220

Ü

252

ü

9

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

189 ½

221

Ý

253

ý

190 ¾

222

Þ

254

þ

191 ¿

223

ß

255

ÿ

10

· obs: These characters aren't supported by Microsoft Windows.

2.8.4. Armazenamento do Tipo Integer (inteiro):

Um byte (256 estados) é impossível para armazenar os dados do tipo inteiro. Utiliza-se dois bytes para armazenar um número inteiro:

28 x 28 = 216

Algumas linguagens de Programação fornecem mecanismo para trabalhar

números inteiros longos (estendidos) com quatro bytes. (-2.147.483.648 até 2.147.483.647).

com quatro bytes. (-2.147.483.648 até 2.147.483.647). 65.536 possibilidades (-32.768 até 32.767). 2.8.5.

65.536 possibilidades (-32.768 até 32.767).

2.8.5. Armazenamento do Tipo Real :

Contém um número infinito de elementos pela mesma razão precisa ser limitado. Por essa razão utiliza-se 4 bytes e no REAL ESTENDIDO para aplicações científicas utiliza-se 8 bytes.

2.8.6. Conceito e utilidade das Variáveis:

As informações são guardadas na memória do computador, para acessar individualmente a cada uma dessas informações. Utiliza-se uma variável.

A variável possui três atributos:

Nome Tipo Informação Toda a variável possui um nome, para diferenciá-la das demais, deve sempre
Nome
Tipo
Informação
Toda a variável possui um nome, para diferenciá-la das demais, deve sempre
começar por um caracter que seja Letra, não deve conter símbolos com exceção
do sublinhado ( _ ).

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

11

Categorias de Variáveis: Tipo Escalar

Integer

Números inteiros

Real

Números reais com vírgulas

Boolean

Valores lógicos TRUE e FALSE

Char

Tabelas ASCII

Tipo Estruturado

String

Cadeia de Caracteres

Array

Conjunto de elementos do mesmo tipo

Record

Conjunto de elementos de tipos diferentes

Set

Conjunto de elementos

File

Arquivo de registros

Text

Arquivo de texto

Tipo Apontador

Pointer

Referência para uma variável dinâmica

2.8.7. TIPOS DE DADOS ESCALARES:

2.8.7.1. INTEGER

Tipo

Faixa de Valores

 

Shortint

- 128 até 127

 

Integer

-32.768 até 32.767

LongInt

-2.147.483.648 até 2.147.483.647

Byte

0

até 255

Word

0

até 65.535

2.8.7.2. REAL

Tipo

Faixa de Valores

Real

2.9e -39 até 1.7e38

Single

1.5e -45 até 3.4e 38

Double

5.0e -324 até 1.7e 308

Extended

3.4e -4932 até 1.1e 4932

Comp

-9.2e 18 até 9.2e 18

2.8.7.3. BOOLEAN

Tipo BOOLEAN representa os valores lógicos TRUE e FALSE.

2.8.7.4. CHAR

Representa um único Caractere pertencente à tabela ASCII.

2.8.7.5. TIPO ENUMERATED

O tipo escalar enumerado é um escalar ordenado onde os valores que as variáveis deste tipo podem assumir são descritas através de uma lista de valores. Ex:

Var Dias: (Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado);

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

12

2.8.7.6. TIPO SUBINTERVALO (SUBRANGE)

É um subconjnto de valores com a seguinte sintaxe:

Var

NumDiasMes : 1 31;

Letras: ' A' Ano : 1900 2.9. CONSTANTES:

Uma constante é um valor que não pode ser alterado durante a execução do programa e podem ser: Integer, real, string, array e Record. Sintaxe:

Const

'z';

2020;

Dias = 7 ;

{Tipo integer}

Esporte = 'Futebol';

{tipo String}

2.9.1. Constantes Tipadas:

Neste caso predefinimos o tipo exemplo:

Const

Dias : Integer = 7; Esporte: String[7] = 'Futebol';

2.10. TYPE (DECLARAÇÃO DE TIPOS)

Uma declaração de tipo , permite que se associe um identificador à descrição de um tipo. Exemplo:

Program Uso_Tipo; Type TDias = (Dom, Seg, Ter, Quar, Quin, Sex, Sab); TMes = (Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez);

Var Dias : TDias; Mês : TMes; Begin

End;

2.11.

TIPOS DE ESTRUTURA DE UM PROGRAMA:

Tipos de Estruturas

Procedimento

 

Seqüencial

Inicia e vai até o fim sem interrupções

 

Condicional

Inicia e tem decisões sobre dois ou mais caminhos a seguir (uso do IF ou do CASE.

 

(decisão)

Repetição (Laços)

Inicia e retorna quantas vezes for necessário ( uso de

 

laço finito : For /Next ou laço infinitos : Repeat

Until

ou

While

end)

Mista

Junção de duas ou mais estruturas acima.

 

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

13

2.12. COMANDOS DE ENTRADA E SAÍDA:

Write e writeln: Comandos de saída do Pascal , o acréscimo do LN no final é

apenas para o compilador executar e trocar de linha. Write (' Olá esta linha sairá na tela do computador ');

Read e Readln: comandos de entrada do pascal, o acréscimo do LN no final é para aexecutar e trocar de linha.

2.13. COMANDO ESTRUTURADOS (COMPOSTOS)

São comandos que são colocados em conjunto. No pascal para cada Begin existe um End. Exemplo:

Begin

Begin

Begin

End;

End;

End.

2.14.

COMANDOS CONDICIONAIS

2.14.1. IF - THEN - ELSE

Esse comando permite efetuarmos um desvio bidirecional na lógica do

programa, segundo uma determinada condição booleana Exemplo:

If a = b then Begin C:= a; End; Ou If a = b then Begin C:= a; End Else C:=b; End;

2.14.2. CASE

OF

ELSE

END;

Esse comando permite efetuarmos um desvio Multidirecional na lógica do programa, segundo uma determinada condição booleana Consiste de uma lista de declarações que satisfaz a condição de um seletor de expressões, se nenhuma parte da lista satisfizer ao seletor executa os comandos do sub-comando else. Para o seletor serão válidos os tipos definidos, tipo Inteiros ou LongInt. A sintaxe do comando é: CASE {seletor} OF {Expressão 1}: {comando da expressão 1}; {Expressão 2}: {comando da

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

14

APOSTILA DE TECNICAS DE PROGRAMAÇÃO expressão 2}; {Expressão n}: {comando da expressão n} ELSE {comando}; end;. Ex.:

begin

{ comandos iniciais case x of

}

1: {

Bloco para x = 1

}

2, 3: {

Bloco para x = 2 ou X = 3

 

}

4

6:

{

Bloco para 4 <= x <= 6

}

else

{

end;

end;

Bloco para

x < 1 ou x > 6

};

2.15. COMANDO DE REPETIÇÃO:

2.15.1. repeat

until;

Repete

um

determinado

bloco

de

declarações

até

a

condição

booleana

do

subcomando until ser satisfeita. A sintaxe do comando é: REPEAT {comandos}; until

{condição};. Ex.:

begin

comandos iniciais x := 0; repeat x := x + 1 until (x = 2); end;

{

}

2.15.2. for

to (downto)

do

;

Incrementa em 1 uma determinada variável inteira, repetindo um bloco de comandos, até que esta atinja o valor final do intervalo, o subcomando downto realiza o incremento reverso. A sintaxe do comando é: FOR {variável} := {valor inicial} to (downto) {valor final} do {bloco de comandos};. Ex.:

{ comandos iniciais

}

for i := 1 to 10 do begin { Executa o [comandos A] para i = 1,2,3,4,5,6,7,8,9 e 10

{ Comandos A

}

end; for s := 10 downto 1 do begin

{ Comandos B

end;

}

{Executa s [comandos B] para s= 10, 9, 8,7,6,5,4,3,2 e 1}

2.15.3. while

do

;

Repete um bloco de comandos enquanto que determinada condição booleana seja

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

15

satisfeita. A sintaxe do comando é: WHILE {condição} DO {bloco de comandos};. Ex.:

begin

{

while i := 1 do begin

comandos iniciais

}

{

Bloco de comandos

end;

{ Repete o [Bloco de comandos] enquanto i = 1

}

2.15.4. Comando Continue e Break

Continue: Desvia para onde está o comando, esse comando só funciona dentro de um laço. Break: Causa saída incondicional de um laço. (Não fazem parte dos comandos básicos e padrão do Pascal tradicional).

2.16. Comando HALT:

Termina a execução de um programa feito no Pascal.

3) ARRAYS (VETORES E MATRIZES)

Definição : Um array é um tipo de dado estruturado consistindo de um número fixo

de componentes.

são divididas em duas categorias. Unidimensionais : Vetores. Multidimensionais:

Matrizes. No pascal a sintáxe é: (Criando Tipos) Type

É um tipo de variável chamada de compostas homogêneas,

Tvetor = array [1

10]

of integer;

{Vetor}

TMatriz = array [1 Var Vetor: Tvetor;

10,1

10]

integer; {Matriz}

Matriz_1, Matriz_2: TMatriz; Criando diretamente nas variáveis:

Var

Vetor: array [1

10

] of integer;

Matriz: array [ 1

10, 1

10 ] of real;

Vetor2, vetor3 : [1 Vetor:

10]

of integer;

1

2

3

4

5

6

7

8

9

10

Matriz:

 

1,1

 

1,2

1,3

1,4

 

2,1

2,2

2,3

2,4

3,1

3,2

3,3

3,4

4,1

4,2

4,3

4,4

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

16

4) MANIPULAÇÃO DE REGISTROS (RECORD)

É um tipo de variável chamada de compostas heterogêneas. São

semelhantes aos índices de uma Array. Eles permitem acessar individualmente cada informação. Exemplo:

Sintaxe:

Type Reg_Aluno = Record; Nome: string(40); Matricula: Integer;

Notas: array [ 1

End;

3 ] of real;

Var Aluno1: Reg_Aluno; Aluno2: Reg_Aluno; A : Integer; Begin

preenche nome e matrícula Preenchendo as notas:

For a := 1 to 3 do

begin

Writeln(aluno1.Nome);

Readln(Aluno1.Notas[a]);

End;

End.

4.1. Comando With:

With Aluno1 do

For a := 1 to 3 do Writeln(Nome);

begin

Readln(Notas[a]);

End;

End;

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO

17

5) PROCEDIMENTOS (PROCEDURES)

São Subprogramas que funcionam dentro de outro programa, é uma estrutura autônoma. Exemplo:

Program Encontro; uses Crt; var

Nome:String[40];

Procedure Elogio; begin clrscr; writeln('Bom dia ' + nome + ' seja bem vindo!'); end;

{Programa Principal} Begin write( ' informe o seu nome: ' ); readln(nome); Elogio; readkey; end.

6) FUNÇÕES (FUNCTION)

A diferença de uma function para uma procedure, é que a function retorna parâmetros, sempre ela devolve um valor, existe um retorno, também deve-se explicitar o tipo de dado que está sendo manipulado. Exemplo de um Programa:

Sintaxe:

program Calc_Maior; uses crt; var

va,a1,b1,c1:integer;

{************** function **************} function calcula(a,b,c:integer):integer; var maior:integer; begin maior:=a; if b > maior then maior:=b; if c > maior then maior:=c; calcula:=maior; end;

PROFESSOR BERALDO LOPES FIGUEIREDO

UUr rrc cca aam mmp pp SSã

U

ãão

S

oo GGa

bbr rri iie eel ll -- CCu

G

aab

- C

uur rrs sso oo dde

d

ee IIn

nnf ffo oor rrm mmá áát tti iic cca aa

I

APOSTILA DE TECNICAS DE PROGRAMAÇÃO {**************************************} {******** Programa Principal **********} begin clrscr; write ('entre com os valor 1: ');readln(a1); write ('entre com os valor 2: ');readln(b1); write ('entre com os valor 3: ');readln(c1);

va:=calcula(a1,b1,c1);

writeln(va);

readkey;

end.

18

7) PROGRAMAS EXEMPLOS:

7.1. Program CalcMedia; Uses Crt; { Usa plataforma Carater} Var Num_aluno:Integer; Nota1, Nota2, Media:Real;

Begin

clrscr;

write(' Informe o numero de alunos: ' ); {write= Escreva}

Readln(Num_aluno); writeln (' Informe a nota 1:');

readln(Nota1);

writeln (' Informe a nota 2:');

readln(Nota1);

{ClearScrean = Limpa a tela do monitor}

{ReadLn=Leia e avance uma linha}

Media:=(nota1+nota2)/2 ; writeln(' Media é : ',Media:2:2); readkey; end.

{2:2 = numero de casas antes e depois do ponto}

{Leia uma tecla}

7.2. Programa que conta a(s) letra(s) A de um nome digitado program aula1; uses crt; var a,ct:integer;

n:string[40];

begin

clrscr;

gotoxy(2,2);

{ GoToxy(coluna,linha)->Posiciona o cursor }

write('Digite:'); readln(n); for a:=1 to length(n) do begin

PROFESSOR BERALDO LOPES FIGUEIREDO