You are on page 1of 58

UNIVERSIDADE DO OESTE DE SANTA CATARINA – UNOESC

APOSTILA DE PROGRAMAÇÃO PASCAL PARA INICIANTES

Videira – SC, 2013

Apostila de Programação Pascal

Conceitos A linguagem pascal foi desenvolvida em em 1968, por Niklaus Wirth, natural da Suíça, e foi destinado principalmente para á programação científica, mas sua grande evolução permitiu que ela fosse utilizada para qualquer fim. Existem vários ambientes integrados de desenvolvimentos (IDE - Integrated Development Environment) como o FreePascal, Pascalzim, DevPascal, entre outros. A IDE que vamos utilizar nesta apostila, é o Dev-Pascal. O Dev-Pascal é uma das IDE’s mais poderosas para a linguagem pascal na atualidade, possui um visual mais limpo do que outros ambientes de desenvolvimento como o freepascal, por exemplo.

IDE DevPascal

IDE Free Pascal

O link para download do Dev Pascal http://www.bloodshed.net/dev/devpas192.exe. O Dev Pascal possui na sua aplicação um editor de código fonte, compilador, link editor, depurador.

Os Principais atalhos para o Dev Pascal são: Compilar Executar Compilar e executar Debugar CTRL + F9 F9 CTRL + F10 F8

Estrutura de um programa em Pascal A estrutura de um programa em pascal é subdivido em três partes, sendo elas: O cabeçalho do programa, área de declarações e o corpo do programa. Cabeçalho do programa É onde definimos o nome do nosso programa. Para definirmos o nome do nosso programa usamos o comando “program”, apos o comando definimos o nome. O nome do programa deve ser único não pode ser utilizado o nome do programa como uma variável por exemplo, pois pode ocorrer erro quando for chamar ou usar uma variável declarada e ao final do nome devemos finalizar com ponto e virgula (;). O nome do programa não pode conter espaço entre duas palavras caso o nome contenha mais que uma palavra devemos substituir os espaços por underline (_); Podemos citar um exemplo para ficar mais claro a explicação de como dar o nome do seu programa. Exemplo: program HELLO_WORD; Conforme o exemplo acima, observamos que foi substituído o espaço pelo underline e finalizamos com ponto e virgula. Esta é a forma correta de se dar o nome ao seu programa. Área de declarações

A área de declarações pode ser subdividida em seta sub áreas, sendo elas: uses, label, const, type, var, procedure, function. As declarações são utilizadas para validar qualquer tipo de identificador que não seja predefinido. Vamos inicialmente utilizar a na área de declarações a variável var que será utilizado durante a execução do nosso programa. As declarações das variáveis são atribuídas dentro da seção var. Esta sessão deve ficar abaixo da declaração do nome do programa Após isso é utilizado os dois pontos (:) seguido do tipo de dado que a variável ira receber e finalizando com o ponto e virgula. Para ficar mais claro vamos citar um exemplo de como ficaria uma declaração de uma variável. Exemplo: var NOME: string; IDADE: integer; SEXO: char; ALTURA: real; Este exemplo definiu somente a seção de declaração de quatro variáveis, ou seja, a variável nome seguido pelo tipo string, idade do tipo inteiro, sexo do tipo char, e altura do tipo real. Notamos “que ao final destas declarações são inseridas o caractere “ ;” (ponto e virgula) que nada mais é que a responsável por sinalizar o fim do comando. Se não existisse este terminador o compilador iria interpretar como apenas um comando sendo assim gerando um erro de compilação. VARIÁVEIS E CONSTANTES Identificadores Identificadores são nomes que são atribuídos a variáveis, funções, procedimentos e constantes. Existem algumas regras e sugestões que devemos seguir quando vamos nomear uma variável, função entre outros. O identificador deve começar com uma letra entre a - z, ou um underline. Após de ter dado um nome para a variável, é necessário atribui qual tipo de variável ela deve ser. Na linguagem pascal esta é a ordem que devemos obecer para declarar uma variável. Exemplo: nome : string; idade : integer; sexo : char;

altura : real; Corpo do Programa O corpo do programa é aonde propriamente dito desenvolvemos e inserimos o código que compõe o programa. No pascal o corpo do programa está dentro do bloco begin e end. Exemplo: Program teste; Begin {Instruções do programa} End. Comentários Um recurso muito utilizado pelos programadores é o uso dos comentários dentro do código do programa. Os comentário servem para explicar, exemplificar ou até mesmo alertar sobre um determinado trecho do código. Existem dois tipos de comentários, o comentário de uma linha apenas, que é representada por duas barras “ // ” e os comentários que seguem por várias linhas, que são representadas por duas chaves “ { } ”.

Exemplo de um programa Pascal Para botarmos em pratica todos os conceitos vistos, imaginamos a seguinte situação. Fazer um programa que efetue a leitura de duas variáveis, somar o valor das duas variáveis e mostrar o resultado da operação.

O resultado deste programa é o seguinte código:

ESTRUTURAS CONDICIONAIS As estruturas condicionais servem para verificar se a condição apresentada é verdadeira ou falsa para executar certo bloco de comandos. Existem dois tipos de estruturas condicionais, as estruturas condicionais simples, e estruturas condicionais compostas. Estruturas condicionais simples São estruturas que somente executaram certos comandos se a condição proposta for verdadeira.

No exemplo abaixo a frase somente será mostrada se o resto da divisão do número digitado pelo usuário for 0.

Resultado do programa acima

Caso a condição não for verdadeira

Estruturas condicionais composta As estruturas condicionais compostas seguem a mesma lógica mas contendo mais de uma condição.

Exemplo :

Sendo que se o resto da divisão do número digitado pelo usuário não for 0, consequentemente ele é um número ímpar. Resultado quando o número for par.

Resultado quando o número for ímpar.

ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição é necessária quando certo trecho de código tem a necessidade de ser repetir até que uma determinada condição seja alcançada. Estes tipos de repetição podem ser controlados através de um número de repetições fixas ou estarem atribuídas a uma condição. Estrutura de repetição FOR A estrutura for é utilizada quando sabemos a quantidade de vezes que o código irá repetir. No trecho de código a seguir vamos declarar duas variáveis sendo que num1 será atribuída o valor 0 e num2 o valor 10. Desta forma a repetição será feita do valor da variável num1 até num2 ou seja de 0 à 10.

O resultado será o seguinte.

Estrutura de repetição WHILE A estrutura de repetição while é necessária quando o número de repetições não e fixo, mas também pode ser utilizada quando se tem conhecimento do número de vezes que será necessário a repetição. Nesta estrutura é necessário a utilização de uma estrutura condicional, pois é através dela que será determinado quando as repetições vão encerar. Exemplo:

A saída deste software é o seguinte resultado.

Um dos cuidados que devemos ter quando estamos trabalhando com estruturas de repetição, são os chamados “loops infinitos”, ou simplesmente uma repetição infinita. Isto acontece quando a condição nunca vai ser verdadeira. Como exemplo no programa acima, se não tivéssemos incrementado a variável “x” para que em todas as passassem fosse somado ao seu valor, o software ficaria eternamente rodando até que fosse forçado a fechar pelo usuário. Exemplo de um loop infinito

Estrutura de repetição REPEAT Da mesma forma que o comando while, o comando repeat pode é utilizado quando não sabemos exatamente qual vai ser o número que vezes que a repetição vai acontecer, mas também pode ser utilizado quando o mesmo tiver um número fixo de repetições. O repeat utiliza o sistema de repetição até que a condição proposta seja verdadeira, porém ao contrario do while a condição é validada no final. Sendo assim obrigatoriamente nesta condição ele irá repetir pelo menos uma vez.

O resultado deste programa.

Vetores Vetores também são chamados de variáveis compostas unidimensionais, ou seja, são um conjunto de variáveis do mesmo tipo, e que possuem o mesmo nome e são alocadas sequencialmente na memória. Já que este conjunto de variáveis tem o mesmo nome, cada valor alocado é distinto por um índice de sua localização na memória. Um vetor é declarado da seguinte maneira: vetor1 : array[1..10] of integer;

No exemplo acima declaramos uma variável com o nome vetor1, do tipo array, definimos quantas posições este vetor irá possuir sendo que o exemplo vai ter 10 posições e por fim definimos qual tipo de dado é atribuído, que neste caso vai ser do tipo integer. Exemplo: Vetor1 2 1 9 2 3 3 8 4 4 5 7 6 5 7 6 8 3 9 1 10

A figura acima mostra como ficaria visualmente um vetor se ele fosse esticado em linha reta. Outra forma de representar os valores do vetor1 seria

Indice do vetor Vetor1[1] Vetor1[2] Vetor1[3] Vetor1[4] Vetor1[5] Vetor1[6] Vetor1[7] Vetor1[8] Vetor1[9] Vetor1[10]

Valo r 2 9 3 8 4 7 5 6 3 1

Para atribuir um valor em uma posição basicamente é da mesma forma que a atribuição a outra variável, sendo que no caso do vetor deve ser informado em qual posição do vetor ficará armazenado. Vetor1[9] := 15; No exemplo acima atribuímos ao vetor1 na posição 9 o valor 15. Em um programa necessitamos que o preenchimento do vetor seja feito de forma automática. Nestes casos utilizamos uma estrutura de repetição para podermos preencher em todas as posições do vetor. FOR i:= 1 to 10 do

Begin Readln(vetor1[i]); End; Quando é preenchido o vetor, utilizamos o valor do contador da estrutura de repetição. Uma vez preenchido o vetor, necessitamos mostrar o seu conteúdo. Para ler o valor que o vetor possui na posição, utilizamos o mesmo método para a sua atribuição. FOR i:= 1 to 10 do Begin Writeln(vetor1[i]); End;

Matriz As matrizes, são variáveis compostas homogenias multidimensionais, e possuem um mesmo nome, do mesmo tipo e identificadas e alocadas sequencialmente na memoria. A distinção é feita através de índices que dão referencia de sua localização. Obrigatoriamente a matriz precisa de um índice para cada dimensão. As matrizes são declaradas de uma forma parecida dos vetores, porem com uma dimensão a mais. matriz : array [1..5,1..5] of integer; No exemplo acima, declaramos a uma variável com o nome matriz, do tipo array, e definimos as dimensões que esta matriz irá possuir. As dimensões da matriz são separadas por vírgulas. E por fim declaramos de que tipo os dados a matriz vai receber. 1 2 3 4 5 Matriz 1 1,1 1,2 1,3 1,4 1,5 2 2,1 2,2 2,3 2,4 2,5 Na figura acima o conteúdo dentro das cédulas são o índice referente a posição da memória, ou seja para acessar a primeira coluna da primeira linha, o índice para pegar o valor deve ser 1,1. Para atribuir um valor a matriz, basicamente temos que apenas informa o nome da matriz e os seus índices. O resto segue o padrão de atribuição de valores a variáveis. matriz[1,2]:= 10;

Em um programa, para atribuir valores as matrizes são utilizados duas estruturas de repetição, aninhadas, ou seja, uma estrutura de repetição dentro de outra. FOR i:= 1 to 5 do Begin FOR j:= 1 to 5 do Begin Readln(matriz[i,j]); End; End; Para recuperar o valor das matrizes, utilizamos o mesmo método de gravação. A utilização de duas estruturas de repetição. FOR i:= 1 to 5 do Begin FOR j:= 1 to 5 do Begin Writeln(matriz[i,j]); End; End;

Exercícios IF THEN 1) Escreva um programa que leia o código de origem de um produto e imprima na tela a região de sua procedência conforme a tabela abaixo: Código 1 : Sul Código 5 ou 6 : Nordeste

Código 2 : Norte Código 7, 8 ou 9 : Sudeste Código 3 : Leste Código 10 : Centro-Oeste Código 4 : Oeste Código 11 : Noroeste Considere que qualquer outro número seja classificado como importado.

2) Escreva um programa para ler as notas das duas avaliações de um aluno no semestre, calcular e escrever a média semestral e a seguinte mensagem: PARABÉNS! Você foi aprovado! somente se o aluno foi aprovado (considere 7.0 a média mínima para aprovação), e a mensagem Você foi REPROVADO ! Estude mais... caso a média calculada seja menor que 7.0.

3) Escreva um programa para ler um valor e escrever se é positivo ou negativo. Considere o valor zero como positivo.

4) Escreva um programa para ler 2 valores (considere que não serão informados valores iguais) e escrever o maior deles.

5) Escreva um programa para ler um número inteiros e escrever se é par ou ímpar.

6) Escreva um programa para ler o número de gols marcados pelo Grêmio e o número de gols marcados pelo Inter em um GRENAL. Escrever o nome do vencedor. Caso não haja vencedor deverá ser impressa a palavra EMPATE.

7) Escreva um programa para ler 2 valores inteiros e uma das seguintes operações a serem executadas (codificada da seguinte forma: 1.Adição, 2.Subtração, 3.Divisão, 4.Multiplicação). Calcular e escrever o resultado dessa operação sobre os dois valores lidos.

8) Escreva um programa que leia as medidas dos lados de um triângulo e escreva se ele é Equilátero, Isósceles ou Escaleno. Sendo que: - Triângulo Equilátero: possui os 3 lados iguais. - Triângulo Isósceles: possui 2 lados iguais. - Triângulo Escaleno: possui 3 lados diferentes.

9 ) Escreva um programa que verifique a validade de uma senha fornecida pelo usuário. A senha válida é o número 1234. Devem ser impressas as seguintes mensagens: ACESSO PERMITIDO caso a senha seja válida. ACESSO NEGADO caso a senha seja inválida.

10) Faça um programa que receba a idade de um nadador e mostre em qual categoria ele esta inserido. CATEGORIA IDADE INFANTIL 5A7 JUVENIL 8 A 10 ADOLESCENTE 11 A 15 ADULTO 16 A 30 SENIOR ACIMA DE 30

Exercícios WHILE DO

11) Faça um programa que imprima na tela os números de um a 10 utilizando a estrutura de repetição while.

12) Faça um programa que imprima na tela os números de 10 a 1 utilizando a estrutura while.

13) Construir um programa em Pascal que calcule a média de vários valores inteiros positivos, lidos externamente. O final da leitura acontecerá quando for lido um valor negativo.

14 ) Escrever um programa que leia uma quantidade desconhecida de números e conte quantos deles estão nos seguintes intervalos: (0 a 25), (26 a 50), (51 a 75), (76 a 100). A entrada de dados deve terminar quando for lido um número negativo.

15) Escrever um programa que leia um número N que indica quantos valores devem ser lidos a seguir. Para cada número lido mostre, como resultado, o valor lido e o fatorial deste valor.

16) Escreva um programa que lê dois números N1 e N2. Como resultado, calcule quantos números ímpares existem entre N1 e N2. Supor que N1 e N2 não entram no cálculo.

17) João tem 1,50 metros e cresce 2 cm por ano, enquanto José tem 1,10 metros e cresce 3 cm por ano. Construa um programa que calcule e imprima quantos anos serão necessários para que José seja maior que João.

18) Faça um programa que some 2 números e que ao final peça para o usuário se ele que ou não continuar a somar.

19) Faça um programa que receba a idade de um nadador e mostre em qual categoria ele esta inserido. Ao final deve perguntar se o usuário quer continuar ou não no programa. CATEGORIA IDADE INFANTIL 5A7 JUVENIL 8 A 10 ADOLESCENTE 11 A 15 ADULTO 16 A 30 SENIOR ACIMA DE 30

20) Faça através da estrutura de repetição while que receba um numero do usuário e imprima todos os números pares de 0 até o numero digitado. Ao final do programa perguntar se o usuário deseja continuar.

Exercícios REPEAT UNTIL 21) Faça um programa para ler e escrever o nome de 20 pessoas. Utilize a estrutura de repetição repeat.

22) Leia 20 valores reais e escreva o seu somatório.

23) Faça um programa que receba a nota de 2 alunos e calcule a media. Ao final, mostre todos os alunos que foram aprovados, ou seja, a sua media for maior que 7. Ao final pedir ao usuário se ele deseja continuar.

24) Faça um programa que receba 10 números e some separadamente os números pares dos ímpares.

25) Faça um programa que receba a idade a altura e o peso de 10 pessoas e mostre: a) a quantidade de pessoas acima de 50 anos. b) a media da altura das pessoas entre 10 e 20 anos. c) a porcentagem das pessoas com menos de 40 kg.

26) Faça um programa que receba 2 numeros e apresente o seguinte menu: 1 - Média ponderada 2 – Média aritmetica 3 – Sair.

27) Faça um programa que receba a altura de pessoas e ao final mostre a media da altura destas pessoas. O programa deve encerrar quando a altura for menor ou igual a 0.

28) Escrever um programa em Pascal que lê 50 valores, um de cada vez, e encontra e escreve o maior deles.

29) Escrever um programa em Pascal que gera os números de 1000 a 1999 e escreve aqueles que divididos por 11 dão um resto igual a 5.

30) Escrever um programa que leia uma quantidade desconhecida de números e conte quantos deles estão nos seguintes intervalos: (0 a 25), (26 a 50), (51 a 75), (76 a 100). A entrada de dados deve terminar quando for lido um número negativo.

Exercícios FOR DO 31) Faça um programa que calcule a tabuada com a estrutura de repetição for.

32) Escreva um programa que solicite ao usuário um número, e depois imprima na tela o caractere ‘*’ a quantidade de vezes digitado pelo usuário.

33) Escreva um programa que imprima os números de 1 a 50 na tela, mostrando 10

números por linha.

34) Utilizando laços aninhados, escreva um programa que escreva vinte vezes o caractere ‘$’, por dez linhas consecutivas.

35) Suponha que você receba dez centavos no dia 1, e no dia 2 você receba duas vezes esta quantia. Se a cada dia você receber o dobro do dia anterior, quanto dinheiro você receberá no dia 15? Escreva um programa para encontrar a solução.

36) Escreva um programa que receba um numero e imprima em cada linha o número de asteriscos correspondente ao número da linha que está sendo impressa, como no exemplo abaixo: * ** *** ****

37) Escreva um programa que solicite ao usuário um número inteiro, e mostre na tela a

tabuada deste número.

38) 9. Construa um programa que leia o conjunto de 20 números inteiros e mostre qual foi o maior e o menor valor fornecido.

39) Faça um programa que calcule os numero que são divididos por 7 e o resto da divisão seja 3 entre os números 10 e 1000.

40) Faça um programa que calcule o quadrado dos números de 1 a 10.

Exercícios VETORES

41) Faça um programa o qual alimente um vetor de 5 posições e após imprima na tela o valor dos mesmos.

42) Faça um programa que carregue um vetor de nove elementos numéricos inteiros, calcule e mostre o quadrado do numero armazenado e suas respectivas posições.

43) Faça um programa que alimente 2 vetores de cinco posições cada e ao final multiplique os valores dos vetores do mesmo índice.

44) Faça um programa que alimente 2 vetores de cinco posições e ao final some os valore dos 2 vetores do mesmo índice.

45) Faça um programa que carregue um vetor com oito números inteiros, calcule e mostre dois vetores resultantes. O primeiro vetor resultante deve conter os números positivos. O segundo vetor resultante deve conter os números negativos. Cada vetor resultante vai ter no máximo 8 posições, sendo que nem todas devem obrigatoriamente ser utilizadas.

46) Faça um programa que carregue um vetor de 20 posições e imprima o valor do vetor na ordem inversa.

47) Faça um programa que alimente 2 vetores. No primeiro vetor guardar o nome da ferramenta, e no segundo vetor, o preço desta ferramenta. Ao final mostrar as ferramentas com os seus respectivos preços.

48) Faça um programa que alimente um vetor de 10 posições e imprima no final o maior numero.

49) Faça um algoritmos que guarde em um vetor de 20 posições, o nome dos empregados de uma empresa com seus respectivos salários.

50) Faça um programa que alimente um vetor de 20 posições e calcule a media dos valores do vetor.

Exercícios MATRIZES 51) Gerar uma matriz 5 x 5, onde a diagonal principal deve ser com 1 e os demais elementos devem ser com 0. No final mostre a matriz obtida.

52) Fazer um programa que alimente uma matriz 2X3 e depois somar os valores.

53) Fazer um programa que lê 16 valores e armazene numa matriz. O programa deve mostrar esses números em ordem, levando primeiro em consideração a coluna e depois a linha. Logo, deve-se mostrar primeiro toda a primeira coluna e depois a segunda coluna. O programa não deve exibir os números que estão na diagonal principal da matriz.

54) Faça um programa que alimente uma matriz 3x3 e some apenas os valores da diagonal principal.

55) Faça uma programa onde utilizando uma matriz 3X3 guarde o nome do alunos na primeira coluna, e nas duas seguintes suas notas.

56) Faça um programa que alimente uma matriz 5X3 que receba 5 funcionários e que guarde os seus nomes com os seus respectivos salários.

57) Fazer um programa que alimente duas matrizes A e B, e gerar uma terceira matriz com a soma das duas primeiras.

58) Fazer um programa que alimente duas matrizes e gerar uma terceira matriz resultante da multiplicação das duas primeiras.

59) Criar um algoritmo que leia os elementos de uma matriz 5 X 5 e mostre a multiplicação dos elementos da diagonal principal.

60) Faça um programa que possa armazenar o nome de 5 atletas, e que nesta matriz possam ser armazenados o nome do atleta e a competição que ele irá participar.