Você está na página 1de 65

Ciência da Computação – 2º Período

Disciplina:
Programação I

Profa. Rossana de Paula Junqueira


Almeida

1 Profª. Rossana Junqueira Programação I


Capítulo 1: Introdução

2 Profª. Rossana Junqueira Programação I


Introdução
 Pascal
 Computador entende linguagem de máquina (0 e 1).
 Linguagens de alto nível devem ser traduzidos (passar para
linguagem de máquina) antes de serem executados pelo
computador.
 Existem dois tipos de tradutores: Interpretador e Compilador.
 O interpretador traduz e roda linha por linha do algoritmo até que
ele todo seja executado.
 O Compilador traduz todo o algoritmo e, se não apresentar nenhum
erro, é executado.

3 Profª. Rossana Junqueira Programação I


Introdução
 Pascal
 Pascal é uma linguagem compilada e de alto nível (fácil
entendimento para programador / difícil entendimento para o
computador).
 O criador da linguagem Pascal foi o Professor Niklaus Wirth, da
Universidade de Zurique, Suíça, em 1971.
 Homenagem ao filósofo e matemático francês, do século XVII,
Blaise Pascal.
 Sintaxe baseada na língua inglesa.

4 Profª. Rossana Junqueira Programação I


Introdução
 Estrutura Básica
 Todo algoritmo em Pascal é dividido em 3 partes:
• Cabeçalho
• Área de Declaração
• Corpo do Algoritmo

 O cabeçalho é formado pela seguinte sintaxe:

PROGRAM ‘NomeDoPrograma’;

5 Profª. Rossana Junqueira Programação I


Introdução
 Estrutura Básica
 A estrutura básica de um algoritmo em Pascal com as áreas
adotadas na disciplina é:

PROGRAM ‘NomeDoPrograma’;

VAR
{Definição das variáveis}
BEGIN
{Corpo}
END.

6 Profª. Rossana Junqueira Programação I


Introdução
 Tipos de Dados
Tipos de Dados Descrição
Integer Representa valores inteiros.
Real Representa valores reais (com ponto
separador da parte decimal).
Char Dado formado por apenas um caractere.

String Dado formado por um conjunto de


caracteres.
Boolean Lógico.
7 Profª. Rossana Junqueira Programação I
Introdução
 Ponto e Vírgula
 É ele que finaliza cada comando.

 Constante
 Representa um valor fixo, que não sofre alterações, durante o
processamento do algoritmo.

8 Profª. Rossana Junqueira Programação I


Introdução
 Variáveis
 São informações que podem sofrer alterações.
 Regras para dar nomes às variáveis:
• Devem começar por um caractere alfabético.
• Podem ser seguidos por mais caracteres alfabéticos e/ou
numéricos.
 Não é permitido o uso de caracteres especiais.

9 Profª. Rossana Junqueira Programação I


Introdução
 Comentários
 Todo texto que estiver entre as chaves, estará sendo
desconsiderado pelo compilador, servindo apenas de registro de
informações para o programador.

 Comando de Atribuição
 Permite pegar informações e armazenar em uma variável.

Variável := valor;

10 Profª. Rossana Junqueira Programação I


Introdução
 Comandos de entrada e saída

READ (variáveis separadas por vírgula);


READLN (variáveis separadas por vírgula);

WRITE (variáveis separadas por vírgula);


WRITELN (variáveis separadas por vírgula);

11 Profª. Rossana Junqueira Programação I


Introdução
Operadores Aritméticos Pascal

Adição +
Subtração -
Multiplicação *
Divisão /
Exponenciação EXP(A * ln(B))
Onde: A = Expoente B = Base
Exemplo:
23 = EXP(3 * ln(2))
Raiz quadrada SQRT
Resto da divisão MOD
Quociente da divisão inteira DIV
Introdução
 Operadores Relacionais

Operadores Relacionais Pascal

Maior >

Menor <

Maior ou Igual >=

Menor ou Igual <=

Igual =

Diferente <>

13 Profª. Rossana Junqueira Programação I


Introdução
 Operadores Lógicos

Operadores Lógicos Pascal Significado

E AND Resulta VERDADEIRO se ambas


as partes forem verdadeiras

Ou OR Resulta VERDADEIRO se uma das


partes é verdadeira

Negação NOT Nega uma afirmação

14 Profª. Rossana Junqueira Programação I


Capítulo 2: Estruturas

15 Profª. Rossana Junqueira Programação I


Estrutura seqüencial
 A Estrutura seqüencial corresponde ao conjunto de ações que
serão executadas de forma linear de cima para baixo e da
esquerda para a direita, conforme foi escrita. Cada ação deverá
ser finalizada com um ponto-e-vírgula (";"), que tem a função de
delimitador.

16 Profª. Rossana Junqueira Programação I


Estrutura seqüêncial
Exemplo 1:
Enunciado: Faça um programa que leia dois valores numéricos, e calcule e exiba a
sua média aritmética.

Program Exemplo1 ;
var
x, y, media: real;
Begin
write('Digite o primeiro número: ');
read(x);
write('Digite o segundo número: ');
read(y);
media := ((x + y) / 2);
write('A média dos dois números é: ', media);
End.
3

Estrutura seqüêncial 1 1 1
 
a b c

Exemplo 2:
Enunciado: Algoritmo que lê o nome de um aluno, as notas de suas três provas e
calcule e exibe a média harmônica das provas.
Program Exemplo2 ;
var
nome: string;
nota1, nota2, nota3, MH: real;
Begin
write('Informe o nome do aluno: ');
read(nome);
write('Informe a primeira nota: ');
read(nota1);
write('Informe a segunda nota: ');
read(nota2);
write('Informe a terceira nota: ');
read(nota3);
MH := (3 / ((1/nota1) + (1/nota2) + (1/nota3)));
write('A média harmônica do aluno ', nome, ' é: ', MH);
End.
Estrutura seqüêncial
Exemplo 3:
Enunciado: Um algoritmo que lê o valor do raio e calcule a área do círculo
correspondente.
Program Exemplo3 ;
var
raio, area: real;
Begin
write('Informe o valor do raio: ');
read(raio);
area := (3.14 * exp(2* ln(raio)));
write('A área do círculo é: ', area);
End.

19 Profª. Rossana Junqueira Programação I


Estrutura condicional
 Associada a uma condição, existirá uma alternativa possível de
ações.
 Em um algoritmo, toda condição tem que ser uma expressão
lógica, algo que possa-se pensar como “isto é VERDADEIRO”
ou “Isto é FALSO”.
 Estrutura:
if <condição> then
<ações (uma ou mais) a serem realizadas se a condição for verdadeira>

if <condição> then
else

20 Profª. Rossana Junqueira Programação I


Estrutura condicional
Exemplo 4:
Enunciado: Faça um algoritmo para calcular a área de um círculo, fornecido o valor
do raio, que deve ser positivo.
Program Exemplo4 ;
var
raio, area: real;
Begin
write('Informe o valor do raio: ');
read(raio);
if (raio > 0) then
begin
area := (3.14 * (exp(2 * ln(raio))));
write('A área do círculo é: ', area);
end
else
write('Valor do raio não pode ser menor ou igual a zero');
End.
21 Profª. Rossana Junqueira Programação I
Estrutura condicional
Exemplo 5:
Enunciado: Algoritmo que peça ao usuário a quantia em dinheiro que tem sobrando
e sugira, caso ele tenha 10 ou mais reais, que vá ao cinema, e se não tiver, fique em
casa vendo TV.

Program Exemplo5 ;
var
quantia: real;
Begin
write('Informe a quantidade de dinheiro que vc tem sobrando: ');
read(quantia);
if (quantia > 10) then
write('Você tem dinheiro sobrando, aproveite para ir ao cinema.')
else
write('Infelizmente você não tem dinheiro sobrando, fique em
casa assistindo TV.');
End.
22 Profª. Rossana Junqueira Programação I
Estrutura de repetição
 Conjunto de estruturas sintáticas que permitem que um trecho
de um algoritmo seja repetido um determinado número de vezes,
sem que o código correspondente tenha que ser escrito mais de
uma vez.

 Estrutura:
While ... Do

Repeat ... Until

For

23 Profª. Rossana Junqueira Programação I


Estrutura de repetição
 While ... Do

 Corresponde a estrutura de controle que permite executar várias


vezes um mesmo conjunto de comandos de um algoritmo, mas
verifica antes de cada execução se pode repetir o mesmo conjunto.
 A estrutura WHILE ... DO corresponde à estrutura de repetição com
teste no início. Esta estrutura permite que um comando ou um
bloco seja repetido enquanto uma <Condição> for verdadeira. Caso
a <Condição> for falsa, mesmo que seja de primeira, os comandos
não são executados.

24 Profª. Rossana Junqueira Programação I


Estrutura de repetição
Exemplo 6:
Enunciado: Escrever um algoritmo que leia o nome do aluno, e as duas notas,
calcule e escreva o nome e a média de cada um dos 3 alunos.
Program Exemplo6 ;
var
nome: string;
N1, N2, Media: real;
alunos: integer;
Begin
alunos := 1;
while (alunos <= 3) do
begin
write('Informe o nome do aluno: ');
read(nome);
write('Informe a primeira nota: ');
read(N1);
write('Informe a segunda nota: ');
read(N2);
Media := (N1 + N2) / 2;
writeln('Aluno: ', nome, ' Média: ', Media);
alunos := alunos + 1;
end;
End.
Estrutura de repetição
 Repeat ... Until

 Esta estrutura de controle também permite executar várias vezes


um mesmo conjunto de comandos de um algoritmo.
 A diferença entre a estrutura WHILE...DO e a estrutura
REPEAT...UNTIL é que a primeira só é executada quando a
<Condição> for verdadeira, já a segunda, só continua executando
os comandos dentro da estrutura quando a <Condição> for falsa.
 Corresponde à estrutura de repetição com teste no final.
 Esta estrutura permite que um comando ou um bloco só será
repetido até que <Condição> seja verdadeira. Quando ela for
verdadeira, a estrutura de controle de repetição será encerrada.

26 Profª. Rossana Junqueira Programação I


Estrutura de repetição
Exemplo 7:
Enunciado: Algoritmo que escreve os números de 1 a 10.

Program Exemplo7 ;
var
numero:integer;
Begin
numero := 1;
repeat
write(numero, ' ');
numero := numero + 1;
until numero > 10;
End.

27 Profª. Rossana Junqueira Programação I


Estrutura de repetição
Exemplo 8:
Enunciado: Algoritmo que lê os nomes dos alunos de uma turma de três alunos e
as notas de suas três provas; o algoritmo calcula e exibe as médias de cada aluno.

28 Profª. Rossana Junqueira Programação I


Estrutura de repetição
Program Exemplo8 ;
var
nome: string;
nota1, nota2, nota3, media: real;
aluno: integer;
Begin
aluno := 1;
repeat
write('Informe o nome do aluno: ');
read(nome);
write('Informe a primeira nota: ');
read(nota1);
write('Informe a segunda nota: ');
read(nota2);
write('Informe a terceira nota: ');
read(nota3);
media := ((nota1 + nota2 + nota3) / 3);
writeln('A média do aluno ', nome, ' é ', media);
aluno := aluno + 1;
until aluno > 3;
End.
Estrutura de repetição
Exemplo 9:
Enunciado: Algoritmo que escreve os números pares de 10 a 2.

Program Exemplo9;
var
par: integer;
Begin
par := 10;
repeat
write(par, ' ');
par := (par - 2);
until par < 2;
End.

30 Profª. Rossana Junqueira Programação I


Estrutura de repetição
Exemplo 10:
Enunciado: Algoritmo que escreve os números pares de 2 a 10.

Program Exemplo10;
var
par: integer;
Begin
par := 2;
repeat
write(par, ' ');
par := (par + 2);
until par > 10;
End.

31 Profª. Rossana Junqueira Programação I


Estrutura de repetição
 For

 VAR é a variável de controle.


 · VI é o valor que a variável VAR inicia.
 · VF é o valor que a variável VAR finaliza.
 A estrutura FOR tem uma característica que a destaca entre as
outras estruturas: tem um contador próprio.
Estrutura de repetição
Exemplo 11:
Enunciado: Escrever um algoritmo que leia o nome do aluno, e as duas notas,
calcule e escreva o nome e a média de cada um dos 30 alunos.

Program Exemplo11 ;
var
nome: string;
N1, N2, Media: real;
alunos: integer;
Begin
for alunos := 1 to 30 do
begin
write('Informe o nome do aluno: ');
read(nome);
write('Informe a primeira nota: ');
read(N1);
write('Informe a segunda nota: ');
read(N2);
Media := (N1 + N2) / 2;
writeln('Aluno: ', nome, ' Média: ', Media);
end;
End.
Capítulo 3: Vetores

34 Profª. Rossana Junqueira Programação I


Vetores
 A maioria dos algoritmos necessitam de um número grande de
variáveis, fazendo com que ele fique muito grande.
 A solução para isso seriamos criar tipos construídos, que
permitam um número indeterminado de informações a partir de
um tipo primitivo.

 Nesse momento veremos variáveis compostas unidimensionais,


conhecidas com Vetores.
35 Profª. Rossana Junqueira Programação I
Vetores
 Comparando um vetor a um prédio, um prédio corresponde a
um vetor e cada um dos apartamentos seriam um elemento
deste vetor.
 Declaração:
VAR

<VARIAVEL>: ARRAY[VI..VF] OF <tipo>;

 Onde:
 VI  Elemento inicial do vetor;
 VF  Elemento final do veotr;
 <tipo)  Tipo primitivo que foi declarado;
 <Variavel>  Corresponde a(s) variável(s) que terão o mesmo tipo.
36 Profª. Rossana Junqueira Programação I
Vetores
Exemplo 12:
Usando um cenário de um prédio com 10 andares:

Var
Predio: array [1..10] of integer;

Exemplo 13:
Usando um cenário de uma fila de cinema com 50 pessoas:

Var
Fila: array [1..50] of string;

37 Profª. Rossana Junqueira Programação I


Vetores
 Manipulação:
 Primeiro devemos saber o nome do vetor para depois identificar o
elemento deste que queremos acessar.
 Ex: Predio[2] (Vetor Predio, segundo elemento)

 Para uma melhor percepção do conceito de vetor, iremos elaborar um


algoritmo que leia o nome e duas notas de um aluno, calcule a sua
média, repetindo este processo com cinco alunos. No final, imprima os
nomes dos alunos e suas médias.

38 Profª. Rossana Junqueira Programação I


Vetores
Exemplo 14:
Enunciado: Escrever um algoritmo que leia o nome do aluno, e as duas notas,
calcule e escreva o nome e a média de cada um dos 5 alunos.

Program Exemplo14;
var
nome: string;
N1, N2, Media: real;
alunos: integer;
Begin
for alunos := 1 to 5 do
begin
write('Informe o nome do aluno: ');
read(nome);
write('Informe a primeira nota: ');
read(N1);
write('Informe a segunda nota: ');
read(N2);
Media := (N1 + N2) / 2;
writeln('Aluno: ', nome, ' Média: ', Media);
end;
End.
Vetores
 Este algoritmo calcula a média dos 5 alunos mas não consegue
imprimir consecutivamente os valores, uma vez que o valor
seguinte sempre substitui o valor anterior.

 Uma solução é implementarmos esse mesmo algoritmo


utilizando o conceito de vetores.

40 Profª. Rossana Junqueira Programação I


Vetores
Exemplo 15:

PROGRAM Exemplo15;
VAR
NOME: ARRAY[1..5] OF STRING;
N1, N2, MEDIA: ARRAY[1..5] OF REAL;
I: INTEGER; {CONTADOR}
BEGIN
FOR I := 1 TO 5 DO
BEGIN
WRITE('Digite o nome do ',I,'º aluno: ');
READLN(NOME[I]);
WRITE('Digite a sua 1ª nota: ');
READLN(N1[I]);
WRITE('Digite a sua 2ª nota: ');
READLN(N2[I]);
MEDIA[I] := (N1[I] + N2[I]) / 2;
WRITELN;
END;
FOR I := 1 to 5 DO
BEGIN
WRITELN(NOME[I],' teve média igual a ',MEDIA[I]:1:2);
WRITELN;
END;
end.
Vetores
 Não é possível:
 Não se pode ler todo um vetor diretamente com um comando read. Não se
pode escrever: read(v) , é necessário ler casa a casa, diretamente, ou
com um laço de repetição.

 Não se pode escrever todos os elementos de um vetor com um único


comando write. Não é permitido escrever: write(v). Também nesse caso
cada elemento deve ser tratado como uma variável independente, por
exemplo:

for i:= 1 to 6 do

write(v[i]);
Vetores
 Não é possível:
 Não é possível copiar os valores dos elementos de um vetor para outro
com um único comando de atribuição. Ou seja, dados dois vetores v e w,
ambos do mesmo tamanho e do mesmo tipo, não é permitido fazer: w:= v;
Também aqui é necessário trabalhar elemento a elemento, e o comando
for mais uma vez é indicado:

for i:= 1 to 6 do

w[i]:= v[i];
Vetores
 Não é possível:
 Não existe comandos ou funções que dão o tamanho (número de
elementos) de um vetor.

 Não é permitido tentar acessar uma posição fora do intervalo de posições


definido para o vetor. A tentativa causará um erro em tempo de execução
e o programa abortará. No caso do vetor v acima, por exemplo, não é
permitido escrever: v[8]:= 20, read(v[8]) ou write (v[8]) porque a faixa
de valores das posições vai de 1 a 5 apenas.

44 Profª. Rossana Junqueira Programação I


Capítulo 4: Matrizes

45 Profª. Rossana Junqueira Programação I


Matrizes
 Vetor é uma variável composta homogênea unidimensional
porque tem somente uma dimensão, ou seja, cresce
somente em um sentido.
 Uma matriz corresponde a uma variável composta
homogênea multidimensional, pois ela pode crescer em
vários sentidos.
Matrizes
 Iremos utilizar novamente o cenário de um prédio, só que,
agora, cada andar terá vários apartamentos.
 Digamos que um prédio tenha três apartamentos por
andar, sendo quatro andares.
 Neste caso, o prédio corresponde a uma matriz com quatro
linhas e três colunas, conforme a figura abaixo.

47 Profª. Rossana Junqueira Programação I


Matrizes
 Declaração:

VAR

<VARIAVEL>: ARRAY [VI1..VF1,VI2..VF2, ... ,VIn..VFn] OF <tipo>;

 Onde:
 VI1..VF1,VI2..VF2, ... ,VIn..VFn  Onde i varia de 1 a n, cada
intervalo VIi..VFi corresponde ao intervalo entre o elemento
inicial e final de cada dimensão da matriz.
 <tipo>  Corresponde a qualquer tipo primitivo.
 <Variável>  Corresponde a uma ou inúmeras variáveis,
separadas por vírgulas.

48 Profª. Rossana Junqueira Programação I


Matrizes
Exemplo 16:
Usando o cenário do edifício de quatro andares e três apartamentos
por andar:

Var
Predio: ARRAY [1..4,1..3] of INTEGER;

Exemplo 17:
Utilizando o cenário de um ônibus de primeiro andar, sendo que em
cada andar contém quatro fileiras de seis cadeiras:

Var
ONIBUS = ARRAY [1..2,1..4,1..6] of STRING;
Matrizes
 Manipulação:
 Voltando ao cenário do prédio, para identificarmos um morador,
além de sabermos o nome do prédio, é preciso saber o andar e o
apartamento, ou seja, tendo o nome da matriz, a combinação entre
linha e coluna chega-se a elemento desejado.
 O apartamento tem uma identificação, como por exemplo, prédio
Mariana, 4ª andar, 3ª apartamento, o elemento da matriz também
tem a sua identificação: MARIANA[4,3].
 Depois de isolarmos o elemento, podemos manipulá-lo através de
qualquer operação de entrada, saída ou atribuição, semelhante a
uma variável do tipo primitivo.

50 Profª. Rossana Junqueira Programação I


Matrizes
Exemplo 18:
Elaborar um algoritmo que leia uma matriz de 3 linhas e 4 colunas de números
inteiros. No final, imprima primeiro todos os números, depois somente os números
pares.

Solução(1) ...

Solução(2)...
Matrizes
Exemplo 19:
A partir da tabela fornecida abaixo, lerá os nomes dos moradores, depois lerá o
número do andar e do apartamento e imprimirá o nome do morador. Deverá tratar
números inválidos. Finalizar o algoritmo quando digitar 0 (zero) em andar.

Solução ...
Capítulo 5: Registros

53 Profª. Rossana Junqueira Programação I


Registros
 Quando sistemas são desenvolvidos, as informações
trabalhadas são de tipos diferentes como nome, cpf,
identidade, endereço, telefone, etc. Por isso, é necessário
ter uma estrutura que consiga unir estas informações.
 Registros são variáveis compostas heterogêneas, ou seja,
estruturas de armazenamento de informações de tipos
diferentes.
Registros
Exemplo 20: Elabore um algoritmo que leia os dados de quatro pessoas (código,
nome, sexo, idade e altura), sendo que a primeira seja um funcionário e as três
últimas sejam associadas. No final, imprima o funcionário e, na ordem inversa,
imprima as associadas, ou seja, os associados do sexo feminino.

Solução ...

55 Profª. Rossana Junqueira Programação I


Capítulo 6: Sub-Rotinas

56 Profª. Rossana Junqueira Programação I


Sub-Rotinas
 Também chamadas de subprogramas, são blocos de
instruções que realizam tarefas específicas.
 O código de uma sub-rotina é carregado uma vez e pode
ser executado quantas vezes forem necessárias.
 Como o problema pode ser subdividido em pequenas
tarefas, os programas tendem a ficar menores e mais
organizados.
 Em PASCAL há a possibilidade de modularização por meio
de procedures e functions.

57 Profª. Rossana Junqueira Programação I


Procedures sem passagem
de parâmetros
 São rotinas chamadas pelo programa principal para
executar alguma operação específica.
 Não retornam valor para quem as chamou.
 Sintaxe: PROCEDURE nome da procedure;
declaração de variáveis locais;
BEGIN
comandos;
END.

 Quando um programa encontra uma linha contendo o


nome da procedure, o fluxo da execução é desviado para
as linhas contidas dentro dela.
 Esta execução só retornará ao fluxo normal quando a
execução da procedure chegar ao fim.
Procedures sem passagem
de parâmetros
 A seguir é apresentado um exemplo de procedure sem
parâmetros.
Exemplo 21: Programa que irá exibir a quantidade de números pares e ímpares
dentro do intervalo de 1 até um número digitado pelo usuário.

Solução ...

59 Profª. Rossana Junqueira Programação I


Procedures com passagem
de parâmetros
 No momento em que a execução da procedure é
solicitada, alguns valores lhe são fornecidos.
 Sintaxe: PROCEDURE nome da procedure (x,y: tipo de dados);
declaração de variáveis locais;
BEGIN
comandos;
END.

60 Profª. Rossana Junqueira Programação I


Procedures com passagem
de parâmetros
 A seguir é apresentado um exemplo de procedure com
parâmetros.
Exemplo 22: Programa receberá um único valor representando segundos. O
procedimento deverá convertê-lo para horas e minutos. Os segundos devem ser
passados por parâmetro.

Solução ...

61 Profª. Rossana Junqueira Programação I


Function sem passagem de
parâmetros
 Mesma função de uma procedure, ou seja, desviar a
execução do programa principal para realizar uma tarefa
específica.
 Única diferença: uma function sempre retorna um valor.
 Sintaxe:
FUNCTIONnome da function: tipo de dado do valor retornado;
declaração de variáveis locais;
BEGIN
comandos;
END.

62 Profª. Rossana Junqueira Programação I


Function sem passagem de
parâmetros
 Para que ocorra o retorno de algum valor para quem
chamou a function, deve-se atribuir tal valor a uma variável
cujo nome seja igual ao nome dado à function.
 A chamada à function acontece atribuindo seu nome a
uma variável, que receberá o retorno produzido.
 A seguir é apresentado um exemplo de function sem
parâmetros.
Exemplo 23: Programa que calcula a raiz quadrada de um número.

Solução ...

63 Profª. Rossana Junqueira Programação I


Function com passagem de
parâmetros
 Uma function pode receber parâmetros no momento em
que é chamada.
 Os valores informados são copiados, seqüencialmente, em
variáveis descritas em seu cabeçalho.
 Sintaxe:
FUNCTION nome da function: (x,y tipo dos dados) : tipo de dado do valor retornado);
declaração de variáveis locais;
BEGIN
comandos;
END.

64 Profª. Rossana Junqueira Programação I


Function sem passagem de
parâmetros
 A chamada a uma function acontece atribuindo seu nome
a uma variável, que receberá o retorno ao término de sua
execução.
 No momento da chamada, são informados também os
parâmetros que deverão ser levados para a function.

Exemplo 24: Programa que calcula a raiz quadrada de um número.

Solução ...

65 Profª. Rossana Junqueira Programação I

Você também pode gostar