Vous êtes sur la page 1sur 58

UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC

APOSTILA DE PROGRAMAO PASCAL PARA INICIANTES

Videira SC, 2013

Apostila de Programao Pascal

Conceitos A linguagem pascal foi desenvolvida em em 1968, por Niklaus Wirth, natural da Sua, e foi destinado principalmente para programao cientfica, mas sua grande evoluo permitiu que ela fosse utilizada para qualquer fim. Existem vrios 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 IDEs 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 aplicao um editor de cdigo fonte, compilador, link editor, depurador.

Os Principais atalhos para o Dev Pascal so: 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 trs partes, sendo elas: O cabealho do programa, rea de declaraes e o corpo do programa. Cabealho 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 no pode ser utilizado o nome do programa como uma varivel por exemplo, pois pode ocorrer erro quando for chamar ou usar uma varivel declarada e ao final do nome devemos finalizar com ponto e virgula (;). O nome do programa no pode conter espao entre duas palavras caso o nome contenha mais que uma palavra devemos substituir os espaos por underline (_); Podemos citar um exemplo para ficar mais claro a explicao de como dar o nome do seu programa. Exemplo: program HELLO_WORD; Conforme o exemplo acima, observamos que foi substitudo o espao pelo underline e finalizamos com ponto e virgula. Esta a forma correta de se dar o nome ao seu programa. rea de declaraes

A rea de declaraes pode ser subdividida em seta sub reas, sendo elas: uses, label, const, type, var, procedure, function. As declaraes so utilizadas para validar qualquer tipo de identificador que no seja predefinido. Vamos inicialmente utilizar a na rea de declaraes a varivel var que ser utilizado durante a execuo do nosso programa. As declaraes das variveis so atribudas dentro da seo var. Esta sesso deve ficar abaixo da declarao do nome do programa Aps isso utilizado os dois pontos (:) seguido do tipo de dado que a varivel ira receber e finalizando com o ponto e virgula. Para ficar mais claro vamos citar um exemplo de como ficaria uma declarao de uma varivel. Exemplo: var NOME: string; IDADE: integer; SEXO: char; ALTURA: real; Este exemplo definiu somente a seo de declarao de quatro variveis, ou seja, a varivel nome seguido pelo tipo string, idade do tipo inteiro, sexo do tipo char, e altura do tipo real. Notamos que ao final destas declaraes so inseridas o caractere ; (ponto e virgula) que nada mais que a responsvel por sinalizar o fim do comando. Se no existisse este terminador o compilador iria interpretar como apenas um comando sendo assim gerando um erro de compilao. VARIVEIS E CONSTANTES Identificadores Identificadores so nomes que so atribudos a variveis, funes, procedimentos e constantes. Existem algumas regras e sugestes que devemos seguir quando vamos nomear uma varivel, funo entre outros. O identificador deve comear com uma letra entre a - z, ou um underline. Aps de ter dado um nome para a varivel, necessrio atribui qual tipo de varivel ela deve ser. Na linguagem pascal esta a ordem que devemos obecer para declarar uma varivel. Exemplo: nome : string; idade : integer; sexo : char;

altura : real; Corpo do Programa O corpo do programa aonde propriamente dito desenvolvemos e inserimos o cdigo que compe o programa. No pascal o corpo do programa est dentro do bloco begin e end. Exemplo: Program teste; Begin {Instrues do programa} End. Comentrios Um recurso muito utilizado pelos programadores o uso dos comentrios dentro do cdigo do programa. Os comentrio servem para explicar, exemplificar ou at mesmo alertar sobre um determinado trecho do cdigo. Existem dois tipos de comentrios, o comentrio de uma linha apenas, que representada por duas barras // e os comentrios que seguem por vrias linhas, que so representadas por duas chaves { } .

Exemplo de um programa Pascal Para botarmos em pratica todos os conceitos vistos, imaginamos a seguinte situao. Fazer um programa que efetue a leitura de duas variveis, somar o valor das duas variveis e mostrar o resultado da operao.

O resultado deste programa o seguinte cdigo:

ESTRUTURAS CONDICIONAIS As estruturas condicionais servem para verificar se a condio 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 So estruturas que somente executaram certos comandos se a condio proposta for verdadeira.

No exemplo abaixo a frase somente ser mostrada se o resto da diviso do nmero digitado pelo usurio for 0.

Resultado do programa acima

Caso a condio no for verdadeira

Estruturas condicionais composta As estruturas condicionais compostas seguem a mesma lgica mas contendo mais de uma condio.

Exemplo :

Sendo que se o resto da diviso do nmero digitado pelo usurio no for 0, consequentemente ele um nmero mpar. Resultado quando o nmero for par.

Resultado quando o nmero for mpar.

ESTRUTURAS DE REPETIO Uma estrutura de repetio necessria quando certo trecho de cdigo tem a necessidade de ser repetir at que uma determinada condio seja alcanada. Estes tipos de repetio podem ser controlados atravs de um nmero de repeties fixas ou estarem atribudas a uma condio. Estrutura de repetio FOR A estrutura for utilizada quando sabemos a quantidade de vezes que o cdigo ir repetir. No trecho de cdigo a seguir vamos declarar duas variveis sendo que num1 ser atribuda o valor 0 e num2 o valor 10. Desta forma a repetio ser feita do valor da varivel num1 at num2 ou seja de 0 10.

O resultado ser o seguinte.

Estrutura de repetio WHILE A estrutura de repetio while necessria quando o nmero de repeties no e fixo, mas tambm pode ser utilizada quando se tem conhecimento do nmero de vezes que ser necessrio a repetio. Nesta estrutura necessrio a utilizao de uma estrutura condicional, pois atravs dela que ser determinado quando as repeties vo encerar. Exemplo:

A sada deste software o seguinte resultado.

Um dos cuidados que devemos ter quando estamos trabalhando com estruturas de repetio, so os chamados loops infinitos, ou simplesmente uma repetio infinita. Isto acontece quando a condio nunca vai ser verdadeira. Como exemplo no programa acima, se no tivssemos incrementado a varivel x para que em todas as passassem fosse somado ao seu valor, o software ficaria eternamente rodando at que fosse forado a fechar pelo usurio. Exemplo de um loop infinito

Estrutura de repetio REPEAT Da mesma forma que o comando while, o comando repeat pode utilizado quando no sabemos exatamente qual vai ser o nmero que vezes que a repetio vai acontecer, mas tambm pode ser utilizado quando o mesmo tiver um nmero fixo de repeties. O repeat utiliza o sistema de repetio at que a condio proposta seja verdadeira, porm ao contrario do while a condio validada no final. Sendo assim obrigatoriamente nesta condio ele ir repetir pelo menos uma vez.

O resultado deste programa.

Vetores Vetores tambm so chamados de variveis compostas unidimensionais, ou seja, so um conjunto de variveis do mesmo tipo, e que possuem o mesmo nome e so alocadas sequencialmente na memria. J que este conjunto de variveis tem o mesmo nome, cada valor alocado distinto por um ndice de sua localizao na memria. Um vetor declarado da seguinte maneira: vetor1 : array[1..10] of integer;

No exemplo acima declaramos uma varivel com o nome vetor1, do tipo array, definimos quantas posies este vetor ir possuir sendo que o exemplo vai ter 10 posies e por fim definimos qual tipo de dado atribudo, 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 posio basicamente da mesma forma que a atribuio a outra varivel, sendo que no caso do vetor deve ser informado em qual posio do vetor ficar armazenado. Vetor1[9] := 15; No exemplo acima atribumos ao vetor1 na posio 9 o valor 15. Em um programa necessitamos que o preenchimento do vetor seja feito de forma automtica. Nestes casos utilizamos uma estrutura de repetio para podermos preencher em todas as posies 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 repetio. Uma vez preenchido o vetor, necessitamos mostrar o seu contedo. Para ler o valor que o vetor possui na posio, utilizamos o mesmo mtodo para a sua atribuio. FOR i:= 1 to 10 do Begin Writeln(vetor1[i]); End;

Matriz As matrizes, so variveis compostas homogenias multidimensionais, e possuem um mesmo nome, do mesmo tipo e identificadas e alocadas sequencialmente na memoria. A distino feita atravs de ndices que do referencia de sua localizao. Obrigatoriamente a matriz precisa de um ndice para cada dimenso. As matrizes so declaradas de uma forma parecida dos vetores, porem com uma dimenso a mais. matriz : array [1..5,1..5] of integer; No exemplo acima, declaramos a uma varivel com o nome matriz, do tipo array, e definimos as dimenses que esta matriz ir possuir. As dimenses da matriz so separadas por vrgulas. 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 contedo dentro das cdulas so o ndice referente a posio da memria, 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 padro de atribuio de valores a variveis. matriz[1,2]:= 10;

Em um programa, para atribuir valores as matrizes so utilizados duas estruturas de repetio, aninhadas, ou seja, uma estrutura de repetio 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 mtodo de gravao. A utilizao de duas estruturas de repetio. FOR i:= 1 to 5 do Begin FOR j:= 1 to 5 do Begin Writeln(matriz[i,j]); End; End;

Exerccios IF THEN 1) Escreva um programa que leia o cdigo de origem de um produto e imprima na tela a regio de sua procedncia conforme a tabela abaixo: Cdigo 1 : Sul Cdigo 5 ou 6 : Nordeste

Cdigo 2 : Norte Cdigo 7, 8 ou 9 : Sudeste Cdigo 3 : Leste Cdigo 10 : Centro-Oeste Cdigo 4 : Oeste Cdigo 11 : Noroeste Considere que qualquer outro nmero seja classificado como importado.

2) Escreva um programa para ler as notas das duas avaliaes de um aluno no semestre, calcular e escrever a mdia semestral e a seguinte mensagem: PARABNS! Voc foi aprovado! somente se o aluno foi aprovado (considere 7.0 a mdia mnima para aprovao), e a mensagem Voc foi REPROVADO ! Estude mais... caso a mdia 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 no sero informados valores iguais) e escrever o maior deles.

5) Escreva um programa para ler um nmero inteiros e escrever se par ou mpar.

6) Escreva um programa para ler o nmero de gols marcados pelo Grmio e o nmero de gols marcados pelo Inter em um GRENAL. Escrever o nome do vencedor. Caso no haja vencedor dever ser impressa a palavra EMPATE.

7) Escreva um programa para ler 2 valores inteiros e uma das seguintes operaes a serem executadas (codificada da seguinte forma: 1.Adio, 2.Subtrao, 3.Diviso, 4.Multiplicao). Calcular e escrever o resultado dessa operao sobre os dois valores lidos.

8) Escreva um programa que leia as medidas dos lados de um tringulo e escreva se ele Equiltero, Issceles ou Escaleno. Sendo que: - Tringulo Equiltero: possui os 3 lados iguais. - Tringulo Issceles: possui 2 lados iguais. - Tringulo Escaleno: possui 3 lados diferentes.

9 ) Escreva um programa que verifique a validade de uma senha fornecida pelo usurio. A senha vlida o nmero 1234. Devem ser impressas as seguintes mensagens: ACESSO PERMITIDO caso a senha seja vlida. ACESSO NEGADO caso a senha seja invlida.

10) Faa 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

Exerccios WHILE DO

11) Faa um programa que imprima na tela os nmeros de um a 10 utilizando a estrutura de repetio while.

12) Faa um programa que imprima na tela os nmeros de 10 a 1 utilizando a estrutura while.

13) Construir um programa em Pascal que calcule a mdia de vrios 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 nmeros e conte quantos deles esto 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 nmero negativo.

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

16) Escreva um programa que l dois nmeros N1 e N2. Como resultado, calcule quantos nmeros mpares existem entre N1 e N2. Supor que N1 e N2 no entram no clculo.

17) Joo 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 sero necessrios para que Jos seja maior que Joo.

18) Faa um programa que some 2 nmeros e que ao final pea para o usurio se ele que ou no continuar a somar.

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

20) Faa atravs da estrutura de repetio while que receba um numero do usurio e imprima todos os nmeros pares de 0 at o numero digitado. Ao final do programa perguntar se o usurio deseja continuar.

Exerccios REPEAT UNTIL 21) Faa um programa para ler e escrever o nome de 20 pessoas. Utilize a estrutura de repetio repeat.

22) Leia 20 valores reais e escreva o seu somatrio.

23) Faa 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 usurio se ele deseja continuar.

24) Faa um programa que receba 10 nmeros e some separadamente os nmeros pares dos mpares.

25) Faa 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) Faa um programa que receba 2 numeros e apresente o seguinte menu: 1 - Mdia ponderada 2 Mdia aritmetica 3 Sair.

27) Faa 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 nmeros de 1000 a 1999 e escreve aqueles que divididos por 11 do um resto igual a 5.

30) Escrever um programa que leia uma quantidade desconhecida de nmeros e conte quantos deles esto 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 nmero negativo.

Exerccios FOR DO 31) Faa um programa que calcule a tabuada com a estrutura de repetio for.

32) Escreva um programa que solicite ao usurio um nmero, e depois imprima na tela o caractere * a quantidade de vezes digitado pelo usurio.

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

nmeros por linha.

34) Utilizando laos 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 soluo.

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

37) Escreva um programa que solicite ao usurio um nmero inteiro, e mostre na tela a

tabuada deste nmero.

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

39) Faa um programa que calcule os numero que so divididos por 7 e o resto da diviso seja 3 entre os nmeros 10 e 1000.

40) Faa um programa que calcule o quadrado dos nmeros de 1 a 10.

Exerccios VETORES

41) Faa um programa o qual alimente um vetor de 5 posies e aps imprima na tela o valor dos mesmos.

42) Faa um programa que carregue um vetor de nove elementos numricos inteiros, calcule e mostre o quadrado do numero armazenado e suas respectivas posies.

43) Faa um programa que alimente 2 vetores de cinco posies cada e ao final multiplique os valores dos vetores do mesmo ndice.

44) Faa um programa que alimente 2 vetores de cinco posies e ao final some os valore dos 2 vetores do mesmo ndice.

45) Faa um programa que carregue um vetor com oito nmeros inteiros, calcule e mostre dois vetores resultantes. O primeiro vetor resultante deve conter os nmeros positivos. O segundo vetor resultante deve conter os nmeros negativos. Cada vetor resultante vai ter no mximo 8 posies, sendo que nem todas devem obrigatoriamente ser utilizadas.

46) Faa um programa que carregue um vetor de 20 posies e imprima o valor do vetor na ordem inversa.

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

48) Faa um programa que alimente um vetor de 10 posies e imprima no final o maior numero.

49) Faa um algoritmos que guarde em um vetor de 20 posies, o nome dos empregados de uma empresa com seus respectivos salrios.

50) Faa um programa que alimente um vetor de 20 posies e calcule a media dos valores do vetor.

Exerccios 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 nmeros em ordem, levando primeiro em considerao a coluna e depois a linha. Logo, deve-se mostrar primeiro toda a primeira coluna e depois a segunda coluna. O programa no deve exibir os nmeros que esto na diagonal principal da matriz.

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

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

56) Faa um programa que alimente uma matriz 5X3 que receba 5 funcionrios e que guarde os seus nomes com os seus respectivos salrios.

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 multiplicao das duas primeiras.

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

60) Faa um programa que possa armazenar o nome de 5 atletas, e que nesta matriz possam ser armazenados o nome do atleta e a competio que ele ir participar.

Vous aimerez peut-être aussi