deathseeker25 Posted June 28, 2005 at 06:07 PM Report #1460 Posted June 28, 2005 at 06:07 PM Boas utilizadores do Portugal-a-Programar, É com gosto que sou administrador de um forum desta categoria e é com gosto que elaboro este pequeno tutorial com as bases da programação em Pascal. Todos os utilizadores que nada sabem de Pascal podem consultar este tutorial porque será feito para esse públio em especial.Não é que eu mesmo seja um grande programador em Pascal ouq eu saiba muito de programação, mas penso que já tenho um contributo a dar a este mundo, nomeadamente áqueles que, como eu, pretendem seguir isto como futuro. Neste tutorial irei focar os seguintes pontos da programação em Pascal: 1 - As bases das bases 1.1-Estrutura da programação 1.2 - Noções de algoritmia 2- Linguagens de Programação 2.1-Preparação e execução de um programa 2.2-Estrutura de um programa em Pascal 3- Conceitos fundamentais de Pascal 3.1.Identificadores 3.1.1.Identificadores Padrão 3.1.2.Identificadores definidos pelo utilizador 3.1.3 Regras de formação de identificadores 3.2.Palavras reservadas 3.3.Tipos de dados 3.3.1.Integer 3.3.2.Real 3.3.3.Boolean 3.3.4.Char 3.3.5.String 3.4.Constantes 3.5 Variáveis 3.6. Expressões 3.7. Instruções 3.8.Subprogramas 4- Tipos de dados elementares 5- Entrada e saída de dados 6-Estruturas de controlo 6.1 - Estruturas de selecção 6.2 - Estruturas de repetição 7- Subprogramação 7.1 - Procedimentos 7.2 - Funções 8- Dados definidos pelo programador 8.1 - Dados do tipo enumerado 8.2 - Dados do tipo subintervalo 9- Dados estruturados 9.1 - Matrizes ou arrays 9.2 Registos ou Records 9.3 - Ficheiros ou Files Espero que gostem e que tirem proveito deste tutorial.... -------------------------------------------//---------------------------------------- Fase 0-As bases das bases 1.1-Estrutura da programação Análise do enunciado do problema Dados de entrada; Dados de saída; Relações de transformação; Desenvolvimento do algoritmo Codificação na linguagem de programação (neste caso irá ser Pascal, mas isto aplica-se a todas as outras linguagens de programação) Execução e testes. Dados de entrada: dados que é necessário fornecer para poderem ser calculados os dados de saída. Dados de saída: resultados a obter. Relações de transformação: relações matemáticas ou de qualquer outra espécie que permitam transformar os dados de entrada nos dados de saída. Algoritmo: escrita, numa linguagem normalizada, da sequencia de operações que definem o problema. 1.2 - Noções de algoritmia Para resolver os problemas em Programação recorreremos á utilização de Algoritmos. E o que é um algoritmo Um algoritmo é, nada mais nada menos, do que a sequencia de passos a utilizar de modo a que possamos chegar á solução para um determinado tipo de problema. A utilização de algoritmos apenas visa tornar mais fácil a programação, visto que, ao elaborarmos um algoritmo, subdividimos o problema sistematicamente em partes mais pequenas e menos complexas chegando a um ponto em que compreendemos claramente cada uma das partes. Assim podemos indicar sem ambiguidade os passos(algoritmo) para a resolução de problemas: Analisar o problema Conhecer o problema: ouvir o problema, entendê-lo, perceber qual o objectivo. Descrever o problema: subdividir o problema(esquematizar), detalhar. Resolver o problema: escrever passo-a-passo o raciocínio da solução do problema; verificar se não existe ambiguidade. Implementar: esta fase acontece apenas após o problema estar resolvido e consiste em implementar o algoritmo numa linguagem de programação. 2-Linguagens de programação Para que um computador produza resultados úteis é necessário indicar as ordens a que ele deve obedecer. Essas ordens serão uma série de instruções binárias - as únicas instruções que o computador entende, tambem designadas por código máquina. Apesar de ser possível escrever um programa directamente em código máquina, dar ordens em números binários é fastidioso, lento e sujeito a erros, pelo que se desenvolveram linguagens de programação de baixo e alto nível, consoante estejam mais próximas do código máquina ou da linguagem humana, respectivamente. É nessas linguagens que são escritos os programas com que os computadores funcionam e que se designam por programas fonte. Assim, uma linguagem de programação é constituída por um conjunto de palavras(ou símbolos) que, colocados segundo determinadas regras, significam operações a realizar pelo computador - programa fonte. As linguagens de programação têm, portanto, como função descrever todas as operações a serem efectuadas por um computador, necessárias a resolver um determinado problema. Desta forma, uma linguagem de programação deve apresentar as seguintes facilidades: Um vocabulário limitado; Regras gramaticais simples; Ser clara e concisa; De aprendizagem simples. Existe uma grande variedade de linguagens de programação: Linguagens de baixo nível: ---->Linguagem máquina e linguagens Assembly ---->Vocabulário elementar; ---->Processamento de execução rápida; ---->Formulação dos problemas extremamente complicada e sujeita a erros. Linguagens de alto nível: ---->BASIC,Fortran,Cobol,C,Pascal,Java, etc; ---->vocabulário adequado á expressão de grande complexidade; ---->processamento de execução morosa; ---->facilitam a tarefa do programador. Actualmente programa-se com linguagens de alto nível, como o Pascal, salvo situações em que a velocidade de execução seja crítica. O Pascal é uma das mais utilizadas, não apenas devido ao seu poder intrínseco mas também devido a ser particularmente adequada ao ensino dos conceitos básicos da programação estruturada. Preparação e execução de um programa Introduz-se o texto do programa no computador através de um programa Editor e o ficheiro fonte fica guardado em memória secundária. Tradução do Ficheiro fonte para linguagem máquina, utilizando um Compilador para testar se há erros sintáticos. Se os houver são indicados ao utilizador, recorre-se ao editor para introdução de correcções, compila-se novamente o ficheiro fonte corrigido. Se não houver é produzido o ficheiro objecto com a versão traduzida. Execução do programa: --->O ficheiro objecto é colocado em memória pelo Loader --->A unidade de controlo examina cada instrução do programa residente e gera os comandos necessários á sua execução. Normalmente, o programador serve-se de um ambiente de desenvolvimento que integra todas as ferramentas necessárias á preparação de um programa (IDE): Editor,Compilador, Loader; 2.2 - Estrutura de um programa em Pascal Um programa em Pascal é composto por um cabeçalho e por um corpo de programa que inclui a zona de declarações e a zona de instruções: Cabeçalho do programa; Zona de declarações Declaração de constantes; Declaração de tipos; Declaração de variáveis; Declaração de subprograma. Parte de execução Exemplo(exemplo de um dos meus programitas em Pascal): {aqui fica o cabeçalho do programa que explicarei a seguir} Program Conversão(input,output); {Este programa lê uma distancia em milhas e imprime o seu valor em Quilómetros} {aqui fica então a zona de declaração do programa} USES CRT; CONST KLMILHA=1.6; VAR KILOMETROS, MILHAS: real; {aqui está a parte de execução do programa} BEGIN writeln('Escreva uma distancia em milhas'); readln(MILHAS); KILOMETROS:=KLMILHA*MILHA; writeln('A distância é de ',KILOMETROS, 'Quilómetros'); END. Passando a explicar a estrutura de um programa em Pascal: Cabeçalho do Programa: Program NomeProg(input,output); >>>O nome do programa é indicado por NOMEPROG; >>>(input,output) nomes associados aos dispositivos de entrada e saída utilizados; >>>Os dados de entrada são lidos do ficheiro input; >>>Os dados de saída são lidos do ficheiro output; >>>Em Turbo Pascal é opcional a indicação desses ficheiros. USES Crt (ou WinCrt); >>>Instrução para o compilador; >>>Faz a ligação da biblioteca que permite escrever em janelas do Windows. >>>Apenas necessário quando se utiliza o Turbo Pascal para o Windows. Declaração de constantes {Estrutura da declaração de constantes} const= NOMECONST=valor; >>> O valor é associado ao identificador NOMECONST >>>O valor associado ao NOMECONST não pode ser alterado (é constante a longo de todo o programa). Declaração de variáveis {declaração de uma variável} var nome_da_variável: tipo; >>>A cada variável é atribuída uma célula na memória; >>>O tipo de dados a armazenar é especificado pelo tipo; >>>A dimensão da célula reservada é determinada pelo tipo; >>>Os identificadores de variáveis são separados por << , >>. Parte de execução BEGIN sequencia de instruções; END. >>>Sequencia de instruções a serem executadas pelo computador aquando a execução do programa. 3. Conceitos fundamentais do Pascal 3.1.Identificadores Palavras cuja função é a de servir de nome aos diversos objectos descritos na linguagem (constantes,variáveis,programar,subprogramar...) 3.1.1.Identificadores Padrão Nomes de objectos predefinidos na linguagem Pascal; Podem ser redefinidos pelo utilizador (mas não devem) Exemplos: input, real, cos, char, writeln.... 3.1.2. Identificadores definidos pelo utilizador Nomes que identificam os objectos criados pelo utilizador; exemplos:x,N,n1,Nomes,temperatura.... 3.1.3.Regras de formação de identificadores Utilizam-se conjuntos de: letras de A a Z (maiúsculas e minúsculas); dígitos de 0 a 9; o símbolo underscore(_). --->O primeiro caractere é obrigatoriamente uma letra ou underscore; --->Podem ter um comprimento arbitrário; --->O compilador apenas reconhece um determinado numero de caracteres (8 no Pascal Standard, 63 no Turbo Pascal); ---> As letras maiúsculas e minúsculas não são distinguíveis pelo compilador. 3.2. Palavras reservadas São palavras que têm um significado bem definido dentro da especificaçao da linguagem: São usadas apenas para o fim a que foram destinadas Não podem ser redefinidas pelo utilizador Exemplos: program, begin, end, const, var, for..... 3.3.Tipos de dados A informação é armazenada na memória do computador de maneiras distintas: Tipos de Dados. Os tipos de dados podem ser predefinidos ou definidos pelo utilizador. Tipos de dados predefinidos: quantidades numéricas: integer, real; valores lógicos ou booleanos: boolean; valores que representam caracteres gráficos: char; cadeias de caracteres: string; 3.3.1. Integer representação exacta de números inteiros até um certo limite, em módulo dado por MAXINT(=32767): exemplo: -45, 0, 1, +23. 3.3.2.Real Representação, normalmente não exacta de números: com parte fraccionária; extremamente grandes ou extremamente pequenos. Exemplos: -6,35, 1.23E18, 1.2E-10. 3.3.3. Boolean Representação dos valores lógicos "verdadeiro" e "falso"; Exemplos: true, false. 3.3.4.Char Representação de caracteres gráficos. Exemplos: 'A', 'a', '?', '+', '5'.... 3.3.5.String Representação de cadeias de caracteres; Strings constantes devem ser colocadas entre plicas ''; Existe um numero máximo de caracteres permitidos por string (255 ou maior, na maioria das versões de Pascal) Exemplos: 'Rita', 'lhidasdseret585???', aula n.1',.... 3.4.Constantes São representações do conteudo da memória do computador onde ser armazenam valores que não são alterados durante a execução do programa. possuem um identificador e um valor; são definidas na zona declarativa na forma: const identificador=valor; o tipo de constante encontra-se explicito no valor. 3.5.Variáveis São representações do conteúdo da memória do computador onde se armazenam valores que podem ser alterados durante a execução do programa. possuem um identificador, um valor e um tipo; são declaradas na zona declarativa da forma: var identificador: tipo; o valor é atribuído á variável apenas durante a execução do programa; o tipo de variável é explicitamente indicado através do tipo. 3.6. Expressões Uma expressão é um grupo de operandos agrupados por operadores, constituindo formas algébricas que representam um valor. As expressões numéricas: representam um valor numérico real ou inteiro; exemplo: (A*B-2*C)/3 em que A,B e C representam variáveis ou constantes numéricas. As expressões booleanas: representam um valor lógico: true ou false. exemplo: 2*X>Y/5 (X e Y representam constantes numéricas) 3.7.Instruções Uma instrução é uma ordem que obriga o computador a executar determinadas acções. Existem as instruções simples: instruções de atribuição; instruções de entrada e saída de dados; instruções de controle de sequenciação; invocações de subprogramas. Instruções compostas: begin sequencia de instruções; end; Dentro das instruções compostas existem a instrução atribuição: variavel:=expressao; é atribuído á variável o valor da expressão; o resultado da expressão tem de ser de um tipo compatível com o da variável. existe a entrada de dados: readln(lista de variaveis); lê para a memória a informação a partir do teclado; o utilizador tecla um alor por cada variável da lista; a ordem e entrada de dados tem de corresponder á ordem das variáveis na lista; todos os dados devem ser teclados na mesma linha; os dados numéricos devem ser separados por espaços; existe ainda a visualização de dados: writeln(lista de valores); visualiza no monitor de cada variável, expressão ou constante pela ordem em que figuram na lista; após a impressão de toda a informação contida na lista, o cursor muda para a linha seguinte; write(): o mesmo que writeln, mas sem mudar de linha. (write()--->nao muda de linha; writeln--->muda de linha) 3.8.Subprogramas A linguagem Pascal, sendo uma linguagem Modular, permite subdividir um programa em subprogramas ou módulos. Subprogramas são elementos de programação autónomos: a linguagem Pascal admite dois tipos de Subprogramas: procedimentos e funções [*] podem ser acedidos de qualquer ponto dentro de um programa ou de outro subprograma; [*] quando o Subprograma é acedido, é lhe fornecido normalmente informação para ser por si processada; [*] quando gerada informação, é devolvida ao ponto de onde o Subprograma foi acedido; [*] o Pascal admite procedimentos e funções predefinidos, e definidos pelo programador; [*] os subprogramas predefinidos encontram-se incluídos na biblioteca de Pascal;
deathseeker25 Posted June 28, 2005 at 08:08 PM Author Report #1470 Posted June 28, 2005 at 08:08 PM 4-Tipos de Dados Elementares Um tipo de dados define o conjunto de valores que uma variável ou constante pode assumir. 4.1-Dados de tipo elementar: Podem ser: Inteiros(INTEGER); Reais(REAL); Caracteres(CHAR); Lógicos(BOOLEAN). 4.2-Dados de tipo ordinal: existem quando os elementos que compreendem o tipo de dados formam um conjunto ordenado e finito. ? o caso dos: Inteiros Caracteres Booleanos Dados de tipos definidos pelo programador 4.1.1-Dados inteiros O tipo integer permite a utilização de valores inteiros entre -MAXINT e MAXINT. Cada dado do tipo integer ocupa dois bytes em memória. Os operadores válidos para numeros inteiros são a adição(+),subtracção(-),multiplicação(*),divisão inteira(/) e resto da divisão inteira (MOD). DIV-Permite obter o quociente inteiro da divisão de dois números inteiros. MOD-Permite obter o resto da divisão de dois numeros inteiros. Exemplo: 17 DIV 5=3 e 17 MOD 5=2 4.1.2-Dados Reais Os dados do tipo real representam quantidades numéricas reais: Permite utilizar valores de +-2.9E-39 a +-1.7E38 com uma precisão de 12 dígitos. Cada dado do tipo real ocupa 6 bytes de memória. Os operadores válidos para os valores reais são os operadores aritméticos usuais: +,-,*,/. Em Pascal, um valor inteiro pode surgir onde for esperado um valor real, visto que o conjunto de inteiros está contido no conjunto dos reais. 4.3-Funções padrão para valores numéricos 4.3.1-Funções reais Estas funções apresentam sempre um resultado real, mas recebem um argumento que pode ser real ou inteiro. ARCTAN(X)-Calcula o valor do ângulo, em radianos, cuja tangente é X; COS(X)-Calcula o co-seno de C, expresso em radianos. EXP(X)-Calcula a exponencial neperiana de C(e^X) LN(X)-Calcula o logaritmo neperiano de X SIN(X)-Calcula o seno de X SQRT(X)-Calcula a raíz quadrada de X. 4.3.2-Funções inteiras Estas funções representam um resultado inteiro, mas recebem um argumento real. ROUND(X)-Arredonda o valor de X de forma a convertê-lo no inteiro mais próximo. TRUNC(X)-Trunca o valor de X, eliminando a sua parte decimal. 4.3.3-Funções do tipo argumento Estas funções apresentam um resultado do mesmo tipo do argumento. ABS(X)-Calcula o valor absoluto do argumento X (|X|) SQR(X)-Calcula o quadrado do argumento X(X^2) 4.4-Dados do tipo caracter Os dados do tipo char representam caracteres individuais. O conjunto completo de caracteres que pode ser usado com dados do tipo char forma o conjunto ordenado de caracteres ASCII. O conjunto ASCII é formado por 128 caracteres. Os caracteres estão ordenados e codificados num ordinal de 0 a 127. Tabela do código ASCII Cada caracter ASCII está associado ao seu numero de ordem no conjunto ASCII. Os caracteres podem ser comparados entre si, com base na sua ordem relativa no conjunto ASCII. As letras ordenadas segundo a sua ordem alfabética Os dígitos de (0 a 9) estão ordenados na sua sequencia numérica própria. Uma constante caracter é expressa atrav+es da sua inclusão entre plicas ' ' Cada dado do tipo caracter ocupa 1 byte de memória. 4.4.1-Funções padrão usadas em dados do tipo caracter ORD(X)-Apresenta como resultado o ordinal associado ao caracter X no conjunto ASCII. CHR(X)-Apresenta como resultado o caracter ASCII correspondente ao numero inteiro ordinal X 4.4.2-Funções utilizadas em dados do tipo ordinal (INTEGER; BOOLEAN; CHAR) SUCC(X)-Apresenta como resultado o sucessor de X PRED(X)-Fornece o predecessor de X. 4.5-Dados booleanos Um tipo de dado booleano pode assumir um valor lógico entre dois possíveis: TRUE ou FALSE. Os operadores lógicos são: Conjunção--->AND Disjunção---->OR Disjunção exclusiva--->XOR Negação------>NOT (to be continued...este é o capítulo na minha opinião mais chato do Pascal...aind anão actuelizei o indice, actualizo apenas quando acabar o capítulo...comentem)
Zen Posted June 28, 2005 at 09:47 PM Report #1483 Posted June 28, 2005 at 09:47 PM nao eh pa kriticar nem nada, mas axo k um tuturial num forum nao fika muito bem, num site eh sempre outra koisa, pois as koisas estao muito mais organizadas, tens espaço pa por mais cenas e nao deixa d poder haver comentarios. tens uma boa iniciativa e estas de parabens por isso. fikou o comentario [[]]
deathseeker25 Posted June 30, 2005 at 07:39 PM Author Report #1532 Posted June 30, 2005 at 07:39 PM Tutorial actualizado... 😄
20COMER Posted July 1, 2005 at 09:58 PM Report #1546 Posted July 1, 2005 at 09:58 PM Olha.. eu cá acho que tá mto bacano. Pelo menos á primeira vista.. para mim que nunca toquei em programação dá pa ter uma ideia da estrutura e de como funciona Pascal. Só começando a por as mãos nisso é que dá para ver se ha alguma lacuna no tutorial mas para já cumpre bem a sua função pq pelo menos a mim suscita-me uma enorme vontade de começar.. 😄 Cumps. 20COMER
David Pintassilgo Posted July 2, 2005 at 10:13 PM Report #1559 Posted July 2, 2005 at 10:13 PM http://informaticaesruc.no.sapo.pt/tecnicasprogramacao.zip deixo aqui um .zip com umas coisas sobre o assunto tb! 😄 cool stuffs to check. http://blog.zxcoders.com//
deathseeker25 Posted August 1, 2005 at 08:47 PM Author Report #2545 Posted August 1, 2005 at 08:47 PM Pequeno update no tuturial....amanha acabo ou capítulo... Cumps
saramgsilva Posted August 15, 2005 at 02:24 PM Report #2962 Posted August 15, 2005 at 02:24 PM Muito bem...muita paciencia... ;) Existe um livro muito fixe, que aconcelho, que se chama Introdução a programação usando pascal, j. Pavão. www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
ptsnooper Posted February 12, 2006 at 10:40 PM Report #13868 Posted February 12, 2006 at 10:40 PM gande tutorial! parabens.. quando o acabas? dava ca um jeitaço..
David Pintassilgo Posted February 13, 2006 at 08:06 AM Report #13883 Posted February 13, 2006 at 08:06 AM Bem vindo á comunidade ptsnooper! 😉 É possivel que o Administrador deathseeker25 vá demorar a responder pq neste momento se encontra incapacitado de vir ao forum regularmente por problemas informaticos. cool stuffs to check. http://blog.zxcoders.com//
deathseeker25 Posted February 13, 2006 at 06:49 PM Author Report #13916 Posted February 13, 2006 at 06:49 PM gande tutorial! parabens.. quando o acabas? dava ca um jeitaço.. Boas ptsnooper e bem-vindo ao forum. Espero acabar o tutorial nas férias de Carnaval ou algo do género. Já o estou para acabar há uns tempos, mas entretanto tenho tido outras prioridades a nível pessoal e comunitário. Seja como for, cá fica a promessa de o acabar brevemente. Entretanto, como o d_pintassilgo referiu, nos próximos dias a minha presença online vai estar um pouco condicionada,visto que não tenho PC (estou a teclar no portátil da minha mãe). Cumps
UnKnowN Posted February 19, 2006 at 07:08 PM Report #14651 Posted February 19, 2006 at 07:08 PM gande tutorial! parabens.. quando o acabas? dava ca um jeitaço.. MesMo ! Keep Going
vbtipo Posted March 7, 2006 at 08:27 PM Report #17271 Posted March 7, 2006 at 08:27 PM Olha deathseeker25, isso que estás a faze,r se fosse eu agarrava nisso e punha no próximo número da nossa página dedicada à programação. Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.
deathseeker25 Posted March 7, 2006 at 10:03 PM Author Report #17299 Posted March 7, 2006 at 10:03 PM Olha deathseeker25, isso que estás a faze,r se fosse eu agarrava nisso e punha no próximo número da nossa página dedicada à programação. Na próxima edição vai saír mais um capítulo do tutorial, podem ter a certeza. 🙂
bscardoso Posted April 29, 2006 at 07:39 PM Report #24871 Posted April 29, 2006 at 07:39 PM sim senhor, ta mt bom este tutorial. Obrigado pelo trabalho 😛
deathseeker25 Posted April 30, 2006 at 12:12 AM Author Report #24911 Posted April 30, 2006 at 12:12 AM sim senhor, ta mt bom este tutorial. Obrigado pelo trabalho 🙂 Ainda não o terminei infelizmente. Não tenho tido tempo nenhum mesmo... 🙂
Triton Posted May 20, 2006 at 01:16 PM Report #28453 Posted May 20, 2006 at 01:16 PM Good work! 😉 <3 life
ReXatoZ Posted May 24, 2006 at 07:39 PM Report #29357 Posted May 24, 2006 at 07:39 PM Bom tutorial 👍 Ainda só tive a ver isso por alto, mas já reparei numas funções k ainda não conhecia. Continua com o trabalho...
Hipnoted Posted August 18, 2006 at 02:45 PM Report #45023 Posted August 18, 2006 at 02:45 PM Está um tutorial muito bacano, com algumas explicações extra-Pascal pelo meio muito boas... Mas continuo a preferir a linguagem C, não estou a ver nenhuma vantagem em aprender Pascal... "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Guest Marine Posted October 26, 2006 at 08:03 PM Report #60280 Posted October 26, 2006 at 08:03 PM Está um tutorial muito bacano, com algumas explicações extra-Pascal pelo meio muito boas... Mas continuo a preferir a linguagem C, não estou a ver nenhuma vantagem em eprender Pascal... Dahhh, o pascal é só para quem se inicia nestas andanças, para aprender como funcionam estas coisas. C é muito mais completo sem dúvida.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now