Outras Linguagens Programacao

Embed Size (px)

Citation preview

  • Linguagem Pascal

    . 1

    Introduo a Linguagem Pascal

    Autor: Silvestre Santos

  • Linguagem Pascal

    . 2

    Introduo a Introduo a Introduo a Introduo a

    linguagem Pascallinguagem Pascallinguagem Pascallinguagem Pascal

  • Linguagem Pascal

    . 3

    Captulo 1 Captulo 1 Captulo 1 Captulo 1 ---- Conceitos bsicos de programao Conceitos bsicos de programao Conceitos bsicos de programao Conceitos bsicos de programao

    1.1 O programa de computador1.1 O programa de computador1.1 O programa de computador1.1 O programa de computador Conforme j vimos, um computador, para realizar uma tarefa especfica, como, por exemplo, somar 10 nmeros em seqncia, requer que seja instrudo, passo a passo para efetivamente realizar a tarefa. Necessita, pois, que seja projetado com a capacidade de realizar (interpretar e executar) um determinado conjunto de operaes, cada uma sendo constituda de uma instruo especfica (instruo de mquina). O conjunto de instrues ou comandos organizados em uma certa seqncia, para obter o resultado da soma dos 10 nmeros, compe o que denominamos programa de computador.

    1.2 Linguagens de programao1.2 Linguagens de programao1.2 Linguagens de programao1.2 Linguagens de programao

    Uma linguagem de programao uma linguagem criada para instruir um computador a realizar suas tarefas. Um programa completo, escrito em uma linguagem de programao, freqentemente denominado de cdigo.

    Uma linguagem de programao um conjunto de ferramentas, regras de sintaxe e smbolos ou cdigos que nos permitem escrever programas de computador, destinados a instruir o computador para a realizao de suas tarefas.

    1.2.1 Linguagem de mquina

    O tipo mais primitivo de linguagem de programao a linguagem que o computador entende diretamente, isto , as instrues que podem ser diretamente executadas pelo hadware, isto , pela CPU. a linguagem de mquina, que foi utilizada pela primeira gerao de programadores. A nica verdadeira linguagem de programao a linguagem de mquina, mas, para a maioria das pessoas, a linguagem de mquina ininteligvel. Um programa em linguagem de mquina uma longa seqncia de nmeros, alguns dos quais representam instrues e outros, os dados a serem manipulados pelas instrues. A figura abaixo mostra um exemplo de um trecho de um programa em linguagem de mquina, na sua forma binria e hexadecimal.

    Programa em linguagem binria

    Programa em haxadecimal

    0010 0100 1001 0001 2491 0100 0100 1001 1111 449F 0100 0100 1001 0011 4493 0001 0100 1001 0010 1492 1000 0100 1001 1000 8498

    Para escrever um programa em linguagem de mquina, o programador deve conhecer todas as

    instrues disponveis para aquela mquina e seus respectivos cdigos de operao e formatos, assim como os registradores da CPU disponveis e os endereos das clulas de memria onde sero armazenadas as instrues e os dados. Um programa real em linguagem de mquina, pode conter milhares de instrues, o que uma tarefa extremamente tediosa e difcil, pelos detalhes que precisam ser observados pelo programador.

    Em um programa escrito em linguagem de mquina, cada instruo escrita pelo programador ser individualmente executada, isto , a cada instruo do programa corresponder uma ao do computador. A relao portanto 1 para 1 - uma instruo do programa corresponde a uma operao do computador.

    Cada famlia de computadores possui sua prpria linguagem de mquina. Um programa em linguagem de mquina dependente do computador ou seja, tendo sido escrito para um determinado computador, somente poder ser executado em computadores da mesma famlia, que lhe sejam 100% compatveis.

  • Linguagem Pascal

    . 4

    1.2.2 Linguagem Assembly1.2.2 Linguagem Assembly1.2.2 Linguagem Assembly1.2.2 Linguagem Assembly Para os cientistas que desenvolveram o primeiro programa para traduzir instrues em cdigo de mquina, qualquer linguagem mais fcil de compreender do que a linguagem de mquina teria sido considerada uma linguagem de alto nvel.

    Para tentar minimizar esta ineficincia (dificuldade de entendimento do significado dos nmeros, todos semelhantes), foi desenvolvida, ainda para a primeira gerao de computadores, uma linguagem que representasse as instrues por smbolos e no por nmeros. A linguagem assenbly est mais prxima da linguagem humana, mas tambm no apresenta legibilidade nem portabilidade.

    Esta linguagem simblica foi denominada Linguagem de Montagem (Assembly Language). Veja abaixo um trecho de um programa em linguagem assembly.

    DOSSEG .MODEL SMALL EXTRN _IntDivide:PROC .CODE PUBLIC _Average ...

    Segundo os padres dos dias de hoje, a linguagem assembly uma linguagem de nvel muito baixo,

    porque seus comandos correspondem, um a um, ao conjunto de instrues de uma CPU. Na verdade no existe apenas uma linguagem assembly. Cada tipo de CPU que tem um conjunto de instrues exclusivo tem sua prpria linguagem assembly. Para usar-se linguagem de montagem em um computador, necessrio que haja um meio de converter os smbolos alfabticos utilizados no programa em cdigo de mquina, de modo a poder ser compreendido pela CPU. O processo de converso (tambm denominado traduo) chamado de montagem e realizado por um programa chamado Montador (Assembler). O montador l cada instruo em linguagem de montagem e cria uma instruo equivalente em linguagem de mquina. A linguagem assembly continua, apesar de ser de uso tedioso e complexo, a ser importante, porque d aos programadores total controle sobre a CPU do computador. Alm disso produz-se um cdigo compacto, rpido e eficiente.

    Vantagens: Os programas escritos apresentam grande velocidade de execuo; Os programas gerados so mais compactos, portanto ocupam menos espao em memria; programador tem sua disposio todos os recursos da mquina, sem limitaes da linguagem. Desvantagens: Os programadores devem ter altssimo nvel tcnico; Os programas levam muito tempo para serem desenvolvidos e apresentam grande dificuldade para

    alteraes futuras; Os programas so muito especficos para cada microprocessador (no so portveis).

    1.2.3 Linguagem de alto nvel1.2.3 Linguagem de alto nvel1.2.3 Linguagem de alto nvel1.2.3 Linguagem de alto nvel A linguagem de alto nvel uma linguagem de fcil aprendizado, apresenta uma melhor legibilidade,

    alm de ser independente da mquina, isto , apresenta portabilidade. Da mesma forma que os programas com instrues de mquina, os programas feitos em uma linguagem de alto nvel, tambm requerem uma converso para instrues de mquinas. Este processo denominado compilao. Normalmente, a converso de um simples comando Cobol ou C, redunda em dezenas de instrues de mquina, diferentemente de um programa em linguagem de montagem, no qual cada instruo implica uma nica instruo de mquina. Veja abaixo um trecho de um programa em linguagem C (linguagem de alto nvel).

  • Linguagem Pascal

    . 5

    Detail_procedure()

    { int file_status, current_line, id_num; char *name;

    float current_sales, ytd_sales, total_sales; ...

    Vantagens:

    programador no se preocupa com aspectos muito tcnicos, permitindo que ele se preocupe com o

    problema a ser resolvido; Permitem rpido desenvolvimento de novos sistemas; Permitem que os programadores aprendam mais rapidamente, programem com mais eficincia e

    faam alteraes mais facilmente em programas anteriormente escritos; Maior portabilidade, ou seja, facilidade de transferncia de programas para mquinas diferentes.

    Desvantagens:

    Os programas (cdigo) ocupam mais espao de memria; A estrutura da linguagem tira parte da liberdade do programador e pode dificultar a implementao

    de instrues mais tcnicas, aproveitando menos os recursos da mquina. A velocidade de execuo dos programas tende a ser mais lenta.

    Foram desenvolvidas diversas linguagens de programao, buscando afastar-se do modelo centrado

    no computador. Essas linguagens foram estruturadas buscando refletir melhor os processos humanos de soluo de problemas. Essas linguagens orientadas a problema so tambm chamadas linguagens de alto nvel, por serem afastadas do nvel de mquina.

    As primeiras linguagens foram FORTRAN (1957), usada basicamente para manipulao de frmulas; ALGOL (1958), para manipulao de algoritmos; COBOL (1959), para processamento comercial e ainda hoje bastante usada, especialmente em computadores de grande porte (mainframes) em bancos.

    Nas dcadas de 60 e 70, podemos citar Pascal, a primeira linguagem de alto nvel estruturada; BASIC, linguagem criada para facilitar a programao por no-profissionais; e ADA, linguagem para processamento em tempo real criada sob encomenda do DoD (Department of Defense norte-americano) e ainda hoje a nica linguagem aceita para programas escritos sob encomenda do DoD.

    Na dcada de 80, surgiu o C e depois o C++ (com suporte a objetos), que esto entre as linguagens mais utilizadas hoje.

    Cada nova linguagem criada visa atingir nveis de abstrao mais altos, isto , afastam cada vez mais o programador do nvel de mquina. Se por um lado essas novas linguagens facilitam muito o trabalho do programadores (e reduzem sua necessidade de conhecer o hardware da mquina), elas cobram um alto preo em termos de desempenho (isto , so cada vez mais lentas, ao consumir cada vez mais ciclos de mquina e espao em memria). Esse aumento de exigncia ao poder de processamento dos computadores compensado (e desta forma se faz menos notado) pelo aumento acelerado do poder de processamento dos novos chips (exemplificado pela chamada Lei de Moore, que afirma que o poder de processamento dos chips dobra a cada 18 meses) e pelos avanos na arquitetura dos computadores.

    Dentre as importantes tendncias atuais, citamos as linguagens de manipulao de bancos de dados (como dBase, Clipper, FoxPro, Paradox, Access, etc) e as linguagens visuais, como o Visual Basic, Visual C e Delphi.

  • Linguagem Pascal

    . 6

    1.3 O processo de traduo1.3 O processo de traduo1.3 O processo de traduo1.3 O processo de traduo

    Um programa escrito por um programador (chamado cdigo fonte) em uma linguagem de alto nvel um conjunto de instrues que clara para programadores, mas no para computadores. Ou seja, os computadores entendem nica e exclusivamente suas linguagens nativas, as linguagens de mquina.

    Programas em linguagem de alto nvel, a exemplo dos programas escritos em linguagem de Montagem, tambm precisam ser traduzidos para linguagem de mquina para poderem ser submetidos ao computador e processados.

    O processo de traduo do programa escrito em uma linguagem simblica pelo programador, chamado cdigo fonte (source code) para a linguagem de mquina do computador chamada cdigo objeto (object code), chamado compilao e realizado por um programa chamado Compilador (Compiler).

    Vimos que programas de computador no so escritos na linguagem que o computador entende (linguagem de mquina), mas sim em outras formas simblicas de representar as instrues que o programador deseja que sejam realizadas. No entanto, verificamos que as mquinas continuam entendendo somente em binrio e, por isso, sempre h a necessidade da converso ou traduo de um programa em linguagem simblica para outro, equivalente em linguagem numrica binria.

    1.3.1 Montagem1.3.1 Montagem1.3.1 Montagem1.3.1 Montagem o tipo de traduo mais rpido e simples que existe e realizada por um programa denominado montador (assembler). Como o nome j explica, a montagem realizada para traduzir um programa em linguagem de montagem para seu equivalente em linguagem binria, executvel. Cada ordem do programador convertida diretamente em uma nica ordem de mquina. Neste processo o programa escrito em linguagem de montagem, chamado de cdigo fonte, examinado, instruo por instruo, e, em seguida, convertido (traduzido) para um outro programa em linguagem binria de mquina, denominado cdigo objeto.

    Cdigo Fonte

    Cdigo Objeto

    Montagem

    Programa escrito pelo programad

    Programa resultante, em linguagem

  • Linguagem Pascal

    . 7

    1.3.2 Compilao1.3.2 Compilao1.3.2 Compilao1.3.2 Compilao Quando se deseja converter para linguagem de mquina um programa escrito em linguagem de mais

    alto nvel que o da linguagem de montagem, ento o mtodo utilizado se chama compilao. Nas linguagens de alto nvel, todo programa escrito em uma determinada linguagem de programao (chamado de cdigo fonte ou programa fonte) convertido em sua verso em linguagem de mquina (cdigo objeto ou programa objeto), sendo esta traduo feita antes de qualquer tentativa de execuo.

    No processo de montagem, h uma relao de 1:1, ou seja, cada instruo do cdigo fonte resulta em uma instruo de mquina, enquanto na compilao a relao mltipla, cada instruo do cdigo fonte gerando vrias instrues de mquina.

    1.3.2.1 Bibliotecas1.3.2.1 Bibliotecas1.3.2.1 Bibliotecas1.3.2.1 Bibliotecas O desenvolvimento de um programa certamente utilizar diversas operaes que so comuns a muitos

    outros programas. Por exemplo, a execuo de uma instruo de entrada e sada, a classificao dos dados de um arquivo, o clculo de funes matemticas, etc. Uma linguagem de alto nvel geralmente incorpora diversas rotinas prontas (que fazem parte da linguagem) e que compem bibliotecas (librarys) de funes pr-programadas que podero ser utilizadas pelo programador, poupando tempo, aumentando a eficincia e evitando erros. Dessa forma, um programa em alto nvel possivelmente conter diversas chamadas de biblioteca (library calls).

    Essas funes no devem ser confundidas com as instrues da linguagem - na realidade, so pequenos programas externos que so chamados atravs de instrues especiais de chamada de biblioteca.

    Para serem executadas, essas rotinas precisam ser incorporadas ao cdigo do programador, isto , a chamada de biblioteca precisa ser substituda pelo cdigo propriamente dito, incluindo os parmetros necessrios.

    1.3.2.2 Ligao1.3.2.2 Ligao1.3.2.2 Ligao1.3.2.2 Ligao

    Assim, o cdigo objeto preparado pelo compilador em geral no imediatamente executvel, pois ainda existe cdigo (as rotinas de biblioteca) a ser incorporado ao programa. A cada chamada de biblioteca encontrada no cdigo fonte, o compilador precisar incluir uma chamada para a rotina e o endereo dos dados que devam ser passados para a rotina.

    A tarefa de examinar o cdigo objeto, procurar as referncias a rotinas de biblioteca (que constituem referncias externas no resolvidas), buscar a rotina da biblioteca, substituir a chamada pelo cdigo ("resolver as

    Cdigo Fonte

    Cdigo Objeto

    Compilao

    Programa escrito pelo programador em linguagem

    Programa resultante, em linguagem

    Open file_entrada Read A,B,C While not eof (file_entrada) do

    Programa compilad

    or

    1011 0011 0000 0011 1010 0000 0000

    0100

  • Linguagem Pascal

    . 8

    referncias externas") e obter os parmetros para inclu-los no cdigo objeto executada por um programa chamado Ligador (LinkEditor). O resultado da execuo do Ligador o cdigo final pronto para ser executado pelo computador, chamado mdulo de carga ou cdigo executvel.

    Uma biblioteca uma coleo de cdigos objeto, um para cada rotina especfica, e indexada pelo nome da rotina. Quando um programa de aplicao deseja usar uma dessas rotinas, ele insere uma chamada de biblioteca no seu cdigo (library call).

    O mdulo de carga, aps testado e depurado (isto , depois de resolvidos todos os erros, tambm

    chamados "bugs") armazenado em memria de massa para ser executado quando necessrio. O processo de compilao e ligao executado apenas pelo programador na fase de desenvolvimento e no mais precisar ser executado pelo usurio, quando da execuo do programa.

    1.3.3 Interpretao1.3.3 Interpretao1.3.3 Interpretao1.3.3 Interpretao

    Com o processo de execuo de um programa em fases distintas (compilao / ligao / execuo) apresentado, um programa para ser executado precisa primeiro ter sido convertido para cdigo objeto pelo compilador e depois ter passado pelo ligador. Esse processo o mais largamente utilizado, porm no o nico.

    O mtodo alternativo chama-se de interpretao e, a partir do programa fonte, realiza as trs fases (compilao, ligao e execuo), comando por comando, em tempo de execuo. No existem fases distintas nem se produzem cdigos intermedirios. Todo o processo de converso efetuado em tempo de execuo e imediatamente executado. Ou seja, cada comando lido, verificado, convertido em cdigo executvel e imediatamente executado, antes que o comando seguinte seja sequer lido.

    Linguagens como C, Pascal, COBOL, etc, so linguagens tipicamente compiladas, enquanto o BASIC foi desenvolvido como linguagem interpretada (hoje tambm existem linguagens BASIC compiladas e o programador pode optar).

    As linguagens de programao tipicamente de usurio, tais como das planilhas Excel, o Word Basic (linguagem de construo de Macros do Word), o Access, etc, so todas linguagens interpretadas.

    1.3.4 Compilao e Interpretao 1.3.4 Compilao e Interpretao 1.3.4 Compilao e Interpretao 1.3.4 Compilao e Interpretao ---- comparao comparao comparao comparao

    Sempre que houver duas opes, haver vantagens e desvantagens para cada uma delas (pois se assim no fosse, a que apresentasse sempre desvantagem seria abandonada). Vamos comparar os mtodos:

    Compilao

    Programa escrito pelo programador em linguagem

    Cdigo Fonte

    Programa compilad

    or

    Cdigo Executvel

    Cdigo Objeto Programa resultante, em linguagem

    Programa resultante, em linguagem

    Ligao Ligador

    Biblioteca A

    Biblioteca B

    Biblioteca C

  • Linguagem Pascal

    . 9

    1.3.4.1 Tempo de execuo1.3.4.1 Tempo de execuo1.3.4.1 Tempo de execuo1.3.4.1 Tempo de execuo

    No mtodo de interpretao, cada vez que o programa for executado, haver compilao, ligao e execuo de cada um dos comandos. No mtodo de Compilao, o tempo de execuo do programa reduzido, porque todos os passos preliminares (compilao e ligao) foram previamente cumpridos.

    1.3.4.2 Consumo de memria1.3.4.2 Consumo de memria1.3.4.2 Consumo de memria1.3.4.2 Consumo de memria

    No mtodo de interpretao, o interpretador um programa geralmente grande e que precisa permanecer na memria durante todo o tempo que durar a execuo do programa, pois um programa necessita do interpretador para ter traduzidos cada um dos seus comandos, um a um, at o trmino de sua execuo (o interpretador somente descarregado depois do trmino da execuo do programa).

    No mtodo de compilao, o compilador carregado e fica na memria apenas durante o tempo de compilao, depois descarregado; o ligador carregado e fica na memria apenas durante o tempo de ligao, depois descarregado. Essas so funes realizadas pelo programador e executadas apenas durante o desenvolvimento do programa. Quando o usurio for executar o programa, apenas o mdulo de carga (cdigo executvel) carregado e fica na memria durante a execuo.

    Desta forma, vemos que o mtodo de interpretao acarreta um consumo de memria muito mais elevado durante a execuo do programa.

    1.3.4.3 Repetio de interpretao1.3.4.3 Repetio de interpretao1.3.4.3 Repetio de interpretao1.3.4.3 Repetio de interpretao

    No mtodo de compilao, um programa compilado e ligado apenas uma vez, e na hora da execuo carregado apenas o mdulo de carga, que diretamente executvel. No mtodo de interpretao, cada programa ter que ser interpretado toda vez que for ser executado.

    Outro aspecto que, em programas contendo loops, no mtodo de interpretao as partes de cdigo pertencentes ao loop sero vrias vezes repetidas e tero que ser interpretadas tantas vezes quantas o loop tiver que ser percorrido. No mtodo de compilao, a traduo do cdigo do loop se faz uma nica vez, em tempo de compilao e ligao.

    Estas caractersticas levam a um maior consumo de tempo no mtodo de interpretao, que portanto mais lento.

    1.3.4.4 Desenvolvimento de programas e depurao de erros1.3.4.4 Desenvolvimento de programas e depurao de erros1.3.4.4 Desenvolvimento de programas e depurao de erros1.3.4.4 Desenvolvimento de programas e depurao de erros

    No mtodo de compilao, a identificao de erros durante a fase de execuo fica sempre difcil, pois no h mais relao entre comandos do cdigo fonte e instrues do executvel.

    No mtodo de interpretao, cada comando interpretado e executado individualmente, a relao entre cdigo fonte e executvel mais direta e o efeito da execuo (certa ou errada) direta e imediatamente sentido. Quando a execuo de um comando acarreta erro, quase sempre o erro pode ser encontrado no comando que acabou de ser executado. Assim, o interpretador pode informar o erro, indicando o comando ou varivel causador do problema.

    Essa caracterstica, que a rigor a maior vantagem do mtodo de interpretao sob o ponto de vista do usurio, faz com que esse mtodo seja escolhido sempre que se pretende adotar uma linguagem que v ser usada por no-profissionais ou para a programao mais expedita. Por exemplo, o mtodo de interpretao usado pela maioria dos Basic (uma linguagem projetada para ser usada por iniciantes), e por todas as linguagens tpicas de usurio como dBase, Access, Excel, etc.

  • Linguagem Pascal

    . 10

    1.3.5 Fluxograma Compilao x Interpretao1.3.5 Fluxograma Compilao x Interpretao1.3.5 Fluxograma Compilao x Interpretao1.3.5 Fluxograma Compilao x Interpretao A figura abaixo ilustra o fluxograma do processo de desenvolvimento e depurao de programas,

    utilizando os mtodos de compilao e interpretao.

  • Linguagem Pascal

    . 11

    Captulo 2 Captulo 2 Captulo 2 Captulo 2 Fundamentos de Pascal Fundamentos de Pascal Fundamentos de Pascal Fundamentos de Pascal

    2.1 Introduo a linguagem Pascal2.1 Introduo a linguagem Pascal2.1 Introduo a linguagem Pascal2.1 Introduo a linguagem Pascal

    A programao deve ser entendida como uma arte ou tcnica de se construir algoritmos, sendo que estes so mtodos ou receitas para se resolver problemas.

    O Pascal uma linguagem de programao de alto nvel e de fins genricos, que foi desenvolvida a partir do Algol-60. As suas instrues so formadas por expresses do tipo algbrico e certas palavras inglesas, tais como BEGIN, END, read, write, IF, THEN, REPEAT, WHILE, DO. Neste aspecto, o Pascal assemelha-se a muitas outras linguagens de alto nvel. Contudo, o Pascal contm ainda alguns aspectos nicos, que foram especificamente projetados para estimular o uso da programao estruturada o mtodo ordenado e disciplinado de programao que tem como resultado programas claros, eficientes e livres de erros.

    Por esta razo, muitos educadores e programadores profissionais preferem utilizar o Pascal em vez de outras linguagens de fins genricos.

    2.12.12.12.1.1 A histria.1 A histria.1 A histria.1 A histria

    A linguagem de programao Pascal foi criada para ser uma ferramenta educacional isto no incio da dcada de 70 pelo Professor Niklaus Wirth do Techinical University em Zurique, Sua. Foi batizada pelo seu idealizador de PASCAL, em homenagem Blaise Pascal, brilhante cientista e matemtico francs que entre outros feitos inventou a primeira calculadora mecnica do mundo. O pascal ganhou popularidade quando foi adotado pela Universidade da Califrnia, San Diego, em 1973. No msmo perodo, em seus cursos, tambm foram feitas implementaes para minis e microcomputadores. Nas suas primeira implementaes, no era muito amigvel ao programador, pois eram necessrios vrios passos para se obter um programa executvel. Primeiro devia se escrever o programa em um editor de texto, depois compila-lo, linc-lo e mont-lo. Quando era feita uma manuteno no mesmo, todos estes passos deviam ser refeitos. Isto de certa forma desistimulava os programadores a usar a linguagem Pascal. Apesar de todas as dificuldades iniciais, de seu propsito educacional e a facilidade de programao, o Pascal comeou a ser utilizado por programadores de outras linguagens, tornando-se para surpresa do prprio Nicklaus, um produto comercial. Em 1983, a soft-house americana Borland International, lanou o Turbo Pascal para microcomputadores, aliado ao lanamento no mercado de microcomputadores. O Turbo Pacal consegue em um nico ambiente, colocar um editor de textos, bastante parecido com o Wordstar e SideKick, um cdigo fonte ligado a um sistema de deteco de erros, um compilador de 1 passo, o que o torna bastante veloz, com a desvantagem de que apenas um erro localizado por vez, e tambm um linkador que permite a ligao do programa Pascal com objetos, mesmos os gerados por outras linguagens. Hoje o Pascal amplamente usado numa grande variedade de aplicaes, quer como linguagem de ensino quer como uma poderosa linguagem de fins genricos.

    2.1.2 Por que Turbo Pascal?2.1.2 Por que Turbo Pascal?2.1.2 Por que Turbo Pascal?2.1.2 Por que Turbo Pascal? Como j vimos, um compudor no pode entender nem to pouco executar instrues em linguagens de alto nvel. Ele s entende linguagem de mquina. Desta forma, os programas em linguagens de alto nvel devem ser traduzidos antes de serem executados pelo computador. Quem faz essa traduo so os programas tradutores. Existem basicamente 2 tipos de programa tradutor: o interpretador e o compilador. Os dois aceitam como entrada um programa em linguagem de alto nvel (programa fonte) e produzem como sada um programa em linguagem de mquina (programa objeto). A diferena entre eles est na forma de executar a tarefa de traduo. O interpretador traduz para a linguagem de mquina e roda uma linha por vez, at, que todo programa seja executado. J o compilador traduz para a linguagem de mquina todo o programa fonte e s ento ele executado.

  • Linguagem Pascal

    . 12

    Assim, existem linguagens de programao interpretadas e compiladas. O Cobol compilado, o Basic pode ser tanto compilado como interpretado e assim por diante. A linguagem Pascal, tradicionalmente compilada. Por outro lado, o processo de compilao, de certa forma pode se tornar moroso, pois deve seguir as seguintes etapas:

    1. Devemos utilizar um editor de textos para escrever e armazenar em disco o nosso programa fonte. 2. Utilizar um compilador para traduzir o programa fonte para um programa em linguagem de

    mquina. 3. Finalmente, devemos juntar ao programa compilado as diversas rotinas necessrias que,

    normalmente, ficam armazenadas numa biblioteca. Aps estes passos, suponha que voc chegue a concluso de queo programa tenha que sofrer modificaes, pois bem, voc ter que repetir os trs passos descritos, e assim sucessivamente at que o programa fique ao seu gosto. O compilador Turbo Pascal facilita todo esse processo, pois ele possui numa forma integrada, um editor de textos compatvel com o Wordstar, um compilador e um linkeditor. O processo de compilao pode ser feito tanto em disco como em memria, o que faz com que ele seja muito rpido. Alm disso, o Turbo Pascal atende aos padres da linguagem Pascal definidos por Niklaus Wirth, o pai da linguagem. Na realidade, o Turbo Pascal vai muito alm, pois ele possui inmeras procedures e funes a mais do que as existentes no padro da linguagem Pascal.

    2.2 Estrutura de um programa em Pascal 2.2 Estrutura de um programa em Pascal 2.2 Estrutura de um programa em Pascal 2.2 Estrutura de um programa em Pascal

    Todo programa em Pascal subdividido em 3 reas: 1-Cabealho do Programa, 2-rea de Declaraes e o 3-Corpo do Programa.

    Este o layout geral de um programa Turbo Pascal: program ... ; { Cabecalho do programa } uses ... ; { clusula Uses} label ... ; { declarao de Labels } const ... ; { declarao de Constantes } type ... ; { declarao de Tipos } var ... ; { declarao de Variveis} procedure ... ; { declarao de Procedures } function ... ; { declarao de Funes} begin statement; { Instrues } ... end.

    2.2.1 Cabealho do programa2.2.1 Cabealho do programa2.2.1 Cabealho do programa2.2.1 Cabealho do programa Esta rea utilizada para se fazer a identificao do programa com um nome, sendo que este deve

    seguir as mesmas regras de formao utilizadas para nomear as variveis. Sintaxe: Program ;

    1 -Cabealho do Programa

    2-rea de Declaraes

    3-Corpo do Programa

  • Linguagem Pascal

    . 13

    Exemplo: PROGRAM circulo; (*O Cabealho do programa*) ...

    Observaes: A primeira linha contm o nome do programa (crculo). Este o cabealho do programa. Esta parte do programa tem s uma linha e no obrigatria. No poder existir nenhuma varivel no programa com o mesmo nome do cabealho do programa.

    2.2.2 rea de declaraes2.2.2 rea de declaraes2.2.2 rea de declaraes2.2.2 rea de declaraes

    Esta rea utilizada para definir o uso de qualquer tipo de identificador que no seja os predefinidos, estando esta subdvidida em sete subreas, a saber:

    Uses, label, const, type, var, procedure e function. Exemplo: PROGRAM circulo;

    (*Incio da rea de Declaraes*)

    Uses WinCrt; Var area, raio : Real;

    (*Fim da rea de Declaraes*)

    Begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); End.

    Observaes: Deve ser salientado que os componentes da seco rea de declaraes no tem a obrigatoriedade

    de existir, todos, em cada programa em Pascal. S so obrigatrias caso ns estejamos precisando.

    As declaraes de label, constantes, variveis, procedures e de funes podem ser listadas em qualquer ordem e repetidos um nmero de vezes qualquer.

    2.2.3 O corpo do programa2.2.3 O corpo do programa2.2.3 O corpo do programa2.2.3 O corpo do programa

    O Corpo do programa contm as instrues que fazem com que se efetuem as aes do programa propriamente dito. Esta rea tem incio com a instruo begin e finalizada pela instruo end seguida do smbolo (.) ponto final .

    Sintaxe: ... begin ; ;

  • Linguagem Pascal

    . 14

    ... ; end. Um programa exemplo: Eis um programa em Pascal elementar chamado crculo, que uma vez fornecido o raio de um crculo

    calcula a sua rea, e escreve em seguida o raio e rea calculada. PROGRAM circulo;

    Uses WinCrt; Var area, raio : Real;

    (*Incio do Corpo do Programa*)

    Begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); End.

    (*Fim do Corpo do Programa*)

    Observaes:

    As trs linhas que esto em evidncia entre Begin e End so as instrues do programa. Elas fazem com que o valor do raio seja introduzido no computador, o valor da rea seja calculado e os valores do raio e da rea seja escritos para o exterior.

    Finalmente, note-se a pontuao no fim de cada linha. A maioria das linhas acaba por ponto e vrgula; algumas no tm pontuao e a ltima linha acaba com um ponto final. Isto faz parte da sintaxe do Pascal.

    2.3 O conjunto de caracteres do Pascal2.3 O conjunto de caracteres do Pascal2.3 O conjunto de caracteres do Pascal2.3 O conjunto de caracteres do Pascal

    Os caracteres que podem ser utilizados no Turbo Pascal so divididos em: letras, nmeros e os caracteres especiais.

    Letras: de A at Z e de a at z. Nmeros: os dgitos de 0 a 9. Caracteres especiais: + - * / = < > [ ] , ( ) : ; ^ . @ { } $ # Alguns caracteres especiais so construdos por dois caracteres distintos e consecutivos:

    = := .. (* *) (. .)

  • Linguagem Pascal

    . 15

    Observaes:

    Turbo pascal no faz distino entre letras maisculas e minsculas.

    2.4 Palavras reservadas2.4 Palavras reservadas2.4 Palavras reservadas2.4 Palavras reservadas

    As palavras reservadas do Turbo Pascal so palavras que fazem parte da sua estrutura e tm significados pr-determinados. Elas no podem ser redefinidas e no podem ser utilizadas como identificadores de variveis, procedures, functions etc. As palavras reservadas do Pascal so:

    and asm array begin case const constructor destructor div do dowton else end exports file for function goto if implementation in Inline interface label library mod nil not object of or packed procedure program record repeat set shl shr string then to type unit until uses var while with xor

    2.5 Identificadores2.5 Identificadores2.5 Identificadores2.5 Identificadores

    Um identificador um nome que dado a um elemento do programa, tal como uma constante, campos de registro, tipo, varivel, units, procedimento, programa, etc.. Os identificadores so compostos de letras ou dgitos, em qualquer ordem, desde que o primeiro caracter seja uma letra. permitido usar maisculas ou minsculas, que so consideradas da mesma forma.

    Regras para formao de identificadores: 1. Um identificador pode ter qualquer tamanho, entretanto, apenas os primeiros 63 caracteres so

    significativos. 2. O primeiro caracter do identificador deve ser obrigatoriamente uma letra ou um trao de sublinhar (

    _ ), tambm chamado de undescore. 3. Os demais caracteres podem ser letras, dgitos ou undescores e no espaos. 4. Um identificador no pode ser palavra reservada. 5. Como regra, um identificador deve conter caracteres suficientes para indicar claramente o seu

    significado. Tambm como regra, dever ser evitado o nmero excessivo de caracteres. 6. No se pode utilizar os caracteres especiais do Turbo Pascal na formao de identificadores. O Turbo Pascal possui inmeros identificadores pr-definidos, que no fazem parte da definio padro

    da linguagem Pascal. Esses identificadores consistem em Procedures e Funes, que podem ser utilizados normalmente na construo de programas. Exemplos: ClrScr (limpa a tela de vdeo) e DelLine (deleta a linha em que est o cursor).

    Exemplos de identificadores vlidos: Meu_Nome MEU_NOME _Variavel01 Exemplo01

    Exemplos de identificadores invlidos: Valor=Valor_Anterior 2teste Exemplo 23

  • Linguagem Pascal

    . 16

    Exemplo: PROGRAM circulo; (*CABEALHO DO PROGRAMA*) { Este programa tem como objetivo o clculo da rea de um crculo a partir da entrada do valor do raio deste crculo }

    Uses WinCrt; Var area, raio : Real;

    begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); end.

    2.6 Comentrios2.6 Comentrios2.6 Comentrios2.6 Comentrios

    Comentrios so textos que introduzimos no meio do programa fonte com a inteno de torn-lo mais claro. uma boa prtica em programao inserir comentrios no meio dos nossos programs. No Turbo Pascal, tudo que estiver entre os smbolos (* e *) ou { e } ser considerado como comentrio. Os comentrios so ignorados pelo compilador.

    Exemplo: PROGRAM circulo; (*CABEALHO DO PROGRAMA*) { Este programa tem como objetivo o clculo da rea de um crculo a partir da entrada do valor do raio deste crculo }

    Uses WinCrt; Var area, raio : Real;

    begin Read(raio); Area := 3.14159*Sqr(raio); Write(raio,area); end.

    2.7 Instrues no Pascal2.7 Instrues no Pascal2.7 Instrues no Pascal2.7 Instrues no Pascal

    Uma Instruo no Pascal uma ordem, ou um conjunto de ordens, que obriga o computador a executar certas aes. Existem dois tipos bsicos de instrues em Pascal: simples e compostas.

    As instrues simples so essencialmente instrues nicas e incondicionais que executam uma ou mais tarefas, como por exemplo a declarao de uma varivel, a atribuio de um valor a uma varivel ou uma chamada a uma funo ou procedimento do Pascal.

    Exemplos: a) taxa := 0.14*bruto; b) clrscr; A linguagem Pascal reconhece inmeros tipos de instrues compostas, tambm chamadas de

    instrues estruturadas. As instrues compostas incluem:

  • Linguagem Pascal

    . 17

    a) instrues compostas, que consistem numa seqncia de duas ou mais instrues consecutivas. Neste caso as instrues simples que formam o bloco de instrues compostas devem estar entre as palavras reservadas begin e end.

    b) Instrues repetitivas, que envolvem a execuo de forma repetida de vrias instrues simples. c) Instrues condicionais, em que uma ou mais instrues simples so executadas apenas se uma

    expresso lgica especificada for atendida.

    Observaes: O ponto e vrgula da ltima instruo do bloco de instrues compostas tpica opcional. O conjunto de instrues consecutivas delimitadas entre as palavras reservadas begin e end

    podem ser tratadas como uma nica instruo simples. Exemplo 1: Abaixo voc pode ver um exemplo de instruo composta tpica. begin X:= 1.5; Y:= 2.5; end; Exemplo 2: Abaixo voc pode ver um exemplo de instruo composta repetitiva. For i := to 100 Do writeln(i); Esta instruo ser executa 100 vezes. Cada vez que a instruo for executada o valor atual da varivel

    i ser visualizado na tela. Assim a instruo far com que os valores 1, 2, 3, e respectivamente at o valor 100 sejam apresentados no monitor.

    Exemplo 3: Abaixo voc pode ver um exemplo de instruo composta condicional. If (salario < 2000.0) Then writeln(Salrio Baixo!) Else writeln(Salrio Bom!);

    Esta instruo faz com que a mensagem Salrio Baixo! seja mostrada caso a varivel salrio seja menor do que 2000.0. Se a varivel salrio tiver um valor armazenado maior ou igual a 2000.0 ento a mensagem mostrada ser Salrio Bom!.

  • Linguagem Pascal

    . 18

    Exemplo 4: Program exemplo; ...

    begin writeln('Digite o valor de A: '); instruo simples read (A); writeln('Digite o valor de B: '); read (B); if A = B then begin X:= 1.5; Y:= 2.5 end else begin X:= -1.5; Bloco de instrues compostas Y:= -2.5

    end; writeln ('O valor de X :', X:4:1); writeln ('O valor de Y :', Y:4:1); end.

    Captulo 3 Captulo 3 Captulo 3 Captulo 3 Tipos de dados e instrues primitivas Tipos de dados e instrues primitivas Tipos de dados e instrues primitivas Tipos de dados e instrues primitivas

    3.1 Tipos de dados predefinidos3.1 Tipos de dados predefinidos3.1 Tipos de dados predefinidos3.1 Tipos de dados predefinidos

    Uma das mais interessantes caractersticas do Pascal a sua capacidade de tratar muitos tipos diferentes de dados. Estes incluem dados de tipo simples e dados de tipo estrututado.

    Dados de tipo simples (padro) Char (caracteres) Boolean (booleanos) Integer (inteiros) Real (reais) Dados de tipo estruturado (padro) String (cadeia de caracteres) Array (matriz) Record (registro) File (arquivos) Set (conjuntos) Text (texto) Os dados de tipo simples so elementos individuais (nmeros, caracteres, etc.) que esto associados

    com identificadores simples um a um. Os dados de tipo estruturado compe-se de mltiplos elementos relacionados entre si de forma

    especificada. Cada grupo de elementos de informao est associado a um nico identificador. Os elementos de informao individuais, dentro de cada grupo, podem tambm estar associados com os correspondentes identificadores individuais. Inicialmente iremos estudar os dados de tipo simples e o tipo String pela sua utilizao prtica incial. Os demais tipos estruturados sero vistos mais para a frente.

  • Linguagem Pascal

    . 19

    3.2 Formando nmeros no Pascal3.2 Formando nmeros no Pascal3.2 Formando nmeros no Pascal3.2 Formando nmeros no Pascal

    Os nmeros podem ser escritos em Pascal de vrias formas diferentes. Em particular um nmero pode incluir um sinal, um ponto decimal e um expoente caso se deseje. As regras seguintes aplicam-se a todos os nmeros:

    1. Vrgulas e espaos no se podem incluir dentro de um nmero. 2. O nmero pode ser precedido por um sinal positivo (+) ou negativo (-), caso se deseje. Se no

    existir sinal o nmero considerado positivo. 3. Os nmeros no podem exceder seus valores mximos e mnimos especificados. Estes valores

    dependem do tipo de nmero, do computador e do compilador (verso) especfico que voc esteja utilizando.

    3.3 Nmeros inteiros3.3 Nmeros inteiros3.3 Nmeros inteiros3.3 Nmeros inteiros Um nmero inteiro no contm um ponto decimal nem um expoente. Um nmero inteiro simplesmente uma seqncia de dgitos, precedida (opcionalmente) por um sinal.

    Nmeros inteiros permitidos: 25 0 1 +1 -315

    Nmeros inteiros no permitidos: 123,456 36.50 -10 20 34

    O Turbo Pascal fornece cinco tipos pr-definidos de nmeros inteiros. Veja a tabela abaixo.

    Tipo Faixa Formato Shortint -128..127 Sinalizado 8-bit Integer -32768..32767 Sinalizado 16-bit Longint -2147483648..2147483647 Sinalizado 32-bit Byte 0..255 No Sinalizado 8-bit Word 0..65535 No Sinalizado 16-bit

    3.4 Nmeros reais3.4 Nmeros reais3.4 Nmeros reais3.4 Nmeros reais Um nmero real deve conter um ponto decimal ou um expoente (ou ambos). Se existir um ponto decimal, este deve aparecer entre dois dgitos. Um nmero real no pode ento comear ou acabar com um ponto decimal.

    Nmeros reais permitidos: 0.0 1.0 -0.2 827.602 3.0E+10 (3.0x1010) 5.026E-17 (5.026x10-17)

    Nmeros reais no permitidos: 1. 1,000.0 .3333

  • Linguagem Pascal

    . 20

    O Turbo Pascal fornece cinco tipos pr-definidos de nmeros reais. Veja a tabela abaixo.

    Tipo Faixa Dgitos Bytes

    Real 2.9e-39..1.7e38 11-12 6 Single 1.5e-45..3.4e38 7-8 4 Double 5.0e-324..1.7e308 15-16 8 Extended 3.4e4932..1.1e4932 19-20 10 Comp -9.2e18..9.2e18 19-20 8

    Observao: Uma varivel do tipo real pode armazenar um valor inteiro, mas no o contrrio.

    3.5 Tipos de dados caracteres 3.5 Tipos de dados caracteres 3.5 Tipos de dados caracteres 3.5 Tipos de dados caracteres

    So caracterizados tipo caracteres as seqncias contendo os caracteres de A a Z (mausculo e minsculo), os dgitos de 0 a 9, o espao em branco e os caracteres especiais. Uma strings de caracteres so um conjunto de caracteres entre aspas (apstrofos) simples. No Pascal este tipo de dado referenciado pelo identificador string, podendo armazenar de 1 at 255 caracteres.

    Existe ainda o tipo char, utilizado da mesma forma que o tipo string, porm com uma pequena diferena: utilizado para strings com apenas um caracter de tamanho.

    Cadeias de caracteres permitidas: Exemplo de cadeia de caracteres R$19,95 Please dont go! 217 - 32 Abc Observaes: Se uma cadeia de caracteres incluir uma aspas, esta (a aspas) deve ser escrita duas vezes. Neste

    caso s aparecer uma das aspas quando a cadeia for impressa ou visualizada. Uma string de caracteres de tamanho 0 (zero) chamado de string nula e s compatvel com o

    tipo string. Uma string de caracteres de tamanho 1 (um) compatvel com o tipo char e tambm o tipo string.

    3.6 Dados booleanos (ou lgicos)3.6 Dados booleanos (ou lgicos)3.6 Dados booleanos (ou lgicos)3.6 Dados booleanos (ou lgicos) So caracterizados tipos booleanos (lgicos) os dados que podem assumir os valores true (verdadeiro) e false (falso), sendo que este tipo de dado somente poder representar um dos dois valores. Esta categoria inclui as constantes do tipo booleano, as variveis, funes e expresses.

    As expresses do tipo booleano so formadas combinando operandos do mesmo tipo com operadores relacionais.

    Dados booleanos: true (1) false (0)

  • Linguagem Pascal

    . 21

    3.7 Operadores aritmticos3.7 Operadores aritmticos3.7 Operadores aritmticos3.7 Operadores aritmticos Operador Operao Tipos de Operandos Tipo de Resultado

    + Adio Inteiro (integer) Real (real)

    Inteiro (integer) Real (real)

    - Subtrao Inteiro (integer) Real (real)

    Inteiro (integer) Real (real)

    * Multiplicao Inteiro (integer) Real (real)

    Inteiro (integer) Real (real)

    / Diviso Inteiro (integer) Real (real)

    Real (real) Real (real)

    div Diviso de inteiros Inteiro (integer) Inteiro (integer) mod Resto de diviso Inteiro (integer) Inteiro (integer)

    As expresses aritmticas so escritas linearmente, usando-se a notao matemtica. Voc pode observar que toda expresso aritmtica, ao ser avaliada produz um valor que se constitui no

    resultado da expresso. Esse valor possui um tipo, que pode ser inteiro ou real, conforme a natureza dos operados e operandos envolvidos.

    Exemplos de expresses aritmticas em Pascal: a) X+Y b) Total/N c) X-Y d) SqRt(P) e) 11 div 4 f) Soma*Soma g) 2*Nota h) 11 mod 4 i) Sqrt(F1+G*G)-H Observaes: No pascal no existe sinal para potenciao e radiciao, devendo-se indic-las com combinaes

    de produtos ou funes predefinidas. div e mod so operadores que s podem ser aplicados com operandos inteiros dando,

    respectivamente, o quociente inteiro e o resto inteiro da diviso entre operandos. Uma expresso que s tenha operandos inteiros e operadores *, mod, div, + e ter como

    resultado um valor inteiro. Se, pelo menos, um dos operandos for real e se os operadores forem *,/,+ ou -, o resultado da expresso ser real.

    O operador / sempre conduz a um resultado do tipo real, mesmo que os dois operandos sejam inteiros.

    Programa exemplo: Program Operadores_aritmeticos; Uses CRT; Var x,y,z : integer; r1,r2 : real; Begin ClrScr; (* limpa a tela *) x:=10; y:=20; z:=x+y; writeln(z); (* escreve o valor de z na tela de video *) x:= 20 DIV 3; y:= 20 MOD 3; writeln(x); (* escreve 6 na tela *) writeln(y); (* escreve 2 na tela *) r1:=3.24; r2:=r1/2.3; writeln(r2); end.

  • Linguagem Pascal

    . 22

    Este programa resultaria na seguinte tela:

    ---------------------------------------------------------

    30 6 2 1.4086956522E+00

    ---------------------------------------------------------

    3.7.1 Prioridades nas expresses aritmticas3.7.1 Prioridades nas expresses aritmticas3.7.1 Prioridades nas expresses aritmticas3.7.1 Prioridades nas expresses aritmticas

    A expresso 5 mod 2 + 5 div 2 demonstra uma possvel fonte de confuso: se houver vrios operadores, qual operao ser executada primeiro? Para evitar isso, e da mesma forma que na matemtica, podemos usar parnteses ou a precedncia dos operadores, que indicam a seqncia em que devem ser efetuadas as operaes:

    Prioridade Operadores 1a. - (unrio) 2a. * / div mod 3a. + -

    A ordem de precedncia acima indica que primeiro so aplicados os - unrios, depois as potenciaes, em seguida so efetuadas todas as operaes de multiplicao, diviso, resto de diviso inteiro, e s aps estas so efetuadas as adies e subtraes.

    Exemplo: ...

    begin writeln(51 div 16 + 48 8 mod 5); {resultado: 3+48-3=48}

    writeln( (51 div 16) + (48 8) mod 5); {resultado: 3+0=3} writeln( -3*(43/(52 div 3) )); {resultado: -3*(43/17) = -7.588} writeln( 6/3*2 ); {resultado: 4 (real)} ...

    Observaes: 1) Um operando entre dois operadores de diferentes prioridade relacionado ao operador de maior

    prioridade. 2) Um operando entre dois operadores de igual prioridade relacionado ao primeiro operador sua

    esquerda. 3) Operaes com operadores de igual prioridade so normalmente executadas (avaliadas) da

    esquerda para a direita. 4) Se a expresso tem parnteses , estes tm precedncia superior a todos os operadores, isto ,

    qualquer expresso entre parnteses executada primeiro. Dica: use parnteses sempre que puder!.

    3.8 Operadores relacionais3.8 Operadores relacionais3.8 Operadores relacionais3.8 Operadores relacionais O Turbo Pascal possui ao todo 7 operadores relacionais que so muito utilizados nas tomadas de decises. Uma expresso relacional uma comparao realizada entre valores do mesmo tipo. Estes valores so representados na relao por constantes, variveis ou expresses do tipo correspondente. So eles:

  • Linguagem Pascal

    . 23

    Operadores Operao Tipo de resultado

    = Igual Booleano Diferente Booleano > Maior Booleano < Menor Booleano >= Maior ou igual que Booleano (y+6) ); end.

    Este programa resultaria na seguinte tela: ---------------------------------------------------------

    FALSE TRUE TRUE TRUE FALSE TRUE FALSE

    ---------------------------------------------------------

    3.9 Opera3.9 Opera3.9 Opera3.9 Operadores lgicosdores lgicosdores lgicosdores lgicos No Pascal, assim com em qualquer outra linguagem, existiram ocasies em que se far necessrio trabalhar com o relacionamento de duas ou mais condies ao mesmo tempo em uma instruo, efetuando desta forma testes mltiplos. Para esses casos necessrio ento trabalhar com a utilizao dos operadores lgicos, tambm conhecidos por operadores boleanos. So trs os operadores lgicos: and, or e not. Veja a tabela abaixo.

    Operadores Operao Operadores Tipo de resultado AND E lgico Booleano Booleano OR OU lgico Booleano Booleano NOT NO lgico (unrio) Booleano Booleano

  • Linguagem Pascal

    . 24

    3.9.1 Operador lgico AND3.9.1 Operador lgico AND3.9.1 Operador lgico AND3.9.1 Operador lgico AND

    O operador and faz com que uma determinada operao seja executada, se e somente se as expresses avaliadas resultarem simultaneamente um valoro lgico verdadeiro. Veja a tabela verdade para este operador:

    Expresso 1 Expresso 2 Resultado Falso Falso Falso

    Verdadeiro Falso Falso Falso Verdadeiro Falso

    Verdadeiro Verdadeiro Verdadeiro

    Sejam as variveis lgicas P, Q, R, S contendo, respectivamente, os valores true, false, false e true.

    Exemplo: O valor lgico das expresses:

    a) P and S c) Q and S b) P and R d) Q and R

    ser:

    a) true c) false b) false d) false

    3.9.2 Operador lgico OR3.9.2 Operador lgico OR3.9.2 Operador lgico OR3.9.2 Operador lgico OR

    O operador or faz com que uma determinada operao seja executada, se pelo menos uma das expresses avaliadas resultarem um valor lgico verdadeiro. Veja a tabela verdade para este operador:

    Expresso 1 Expresso 2 Resultado Falso Falso Falso

    Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro

    Verdadeiro Verdadeiro Verdadeiro

    Exemplo: O valor lgico das expresses: a) P or S c) Q or S b) P or R d) Q or R ser: a) true c) true b) true d) false

    3.9.3 Operador lgico NOT3.9.3 Operador lgico NOT3.9.3 Operador lgico NOT3.9.3 Operador lgico NOT

    O operador not faz com que uma determinada operao seja executada, invertendo o resultado lgico da expresso avaliada. Veja a tabela verdade para este operador:

  • Linguagem Pascal

    . 25

    Expresso 1 Resultado Verdadeiro Falso

    Falso Verdadeiro

    Exemplo: O valor lgico das expresses: a) not P b) not R ser: a) false b) true

    Observaes: Estes operadores s aceitam como operandos, valores lgicos, ou seja : TRUE e FALSE. Com o operador AND a expresso resulta verdadeiro (TRUE) unicamente se ambos os operandos

    forem verdadeiros (TRUE). Com o operador OR a expresso resulta verdadeiro (TRUE) se qualquer um dos operandos for

    verdadeiro, ou se ambos forem verdadeiros. O operador NOT utilizado para negar (isto , para inverter) o valor de um operando booleano. Veja abaixo um pequeno programa que utiliza operador lgico AND: Program testa_logica_and;

    Uses WinCrt; var numero := integer;

    begin write(Digite um nmero inteiro: ); readln (numero); if (numero >=20) and (numero

  • Linguagem Pascal

    . 26

    Prioridade Operadores

    1a. not 2a. *, /, div, mod, and 3a. +, -, or 4a. =, , , in

    Exemplo1: program Exemplo;

    uses WinCrt; var A, B, C, K: integer;

    begin A:= 2; B:= 3; C:= 10; K:= 1; writeln ((A=1) and ((B+C0) or (K=2) and (AB)) or Teste ...

    3.10 Concatenao3.10 Concatenao3.10 Concatenao3.10 Concatenao O Turbo Pascal permite que voc use o operador + para concatenar dois operandos do tipo string. O resultado da concatenao compatvel com o tipo string.

    Operador Operao Tipos de operandos Tipo do resultado

    + Concatenao String ou Char String Observao: Se o resultado da concatenao for maior do que 255 caracteres, a strig resultante ser truncada aps o caracter 255.

    Exemplo: program exemplo;

    Uses WinCrt;

    var caracter1, caracter2 :char; string1, string2, string3 :string;

    begin

  • Linguagem Pascal

    . 27

    caracter1:= 'A'; caracter2:= ''; string1 := 'linguagem Pascal'; string2 := 'legal'; string3 := caracter1+' '+string1+' '+caracter2+' '+string2+'!'; write (string3); end. Este programa resultaria na seguinte tela:

    ---------------------------------------------------------

    A linguagem Pascal legal! ---------------------------------------------------------

    CCCCaptulo 4 aptulo 4 aptulo 4 aptulo 4 Declaraes no Pascal Declaraes no Pascal Declaraes no Pascal Declaraes no Pascal

    4.1 Declarao de variveis4.1 Declarao de variveis4.1 Declarao de variveis4.1 Declarao de variveis Varivel pode ser definido, no sentido de programao, como uma regio de memria de um computador, previamente identificada e que tem por finalidade armazenar as informaes (dados) de um programa temporariamente. Uma varivel armazena apenas um valor por vez.

    Uma varivel um identificador cujo valor pode variar durante a execuo do programa. Todas as variveis dever ser individualmente declaradas (isto , definidas) antes de poderem aparecer numa instruo do programa.

    4.1.1 A declarao Var4.1.1 A declarao Var4.1.1 A declarao Var4.1.1 A declarao Var Esta a sub-rea onde devemos declarar todas as variveis que iremos utilizar em nosso programa.

    A sua sintaxe geral :

    Var : ; ...

    : ;

    onde:

    Var uma palavra-chave (palavra reservada) que inicia uma parte do programa para a definio de variveis;

    lista-de-identificadores so os identificadores que representam os nomes individuais das variveis. Existindo mais de um identificador na declarao, estes tero de ser separados por vrgula.

    tipo o tipo das variveis, ou seja, define o conjunto ordenado de valores que podem ser atribudos a estas variveis.

    Exemplo: Program Exemplo; Uses WinCrt;

    Var idade, numero_de_filhos : byte; altura : real; sexo : char; nome : string [30];

  • Linguagem Pascal

    . 28

    sim_ou_no : boolean; quantidade : integer; Begin idade:= 34; numero_de_filhos:=2; sexo := M; nome := Jos; sim_ou_nao :=TRUE; quantidade := 3245; End.

    4.1.2 Atribuindo valores as variveis 4.1.2 Atribuindo valores as variveis 4.1.2 Atribuindo valores as variveis 4.1.2 Atribuindo valores as variveis Uma instruo de atribuio uma instruo simples que usada para atribuir um valor de uma expresso a uma varivel. Esta instruo escrita na forma: Varivel := expresso; onde:

    varivel qualquer identificador previamente declarado na sub-seo Var da rea de declaraes.

    Expresso pode ser um elemento nico por exemplo, uma constante, outra varivel, uma referncia de funo ou pode ser uma expresso (aritmtica ou lgica por exemplo).

    Observao:

    O resultado da expresso deve ter o mesmo tipo da varivel. Existe uma exceo a esta regra: um

    valor inteiro pode ser atribudo a uma varivel do tipo real.

    Exemplo1: X := Y + Z;

    conta := conta+1; area := 3.14159*sqr(raio); Exemplo2: X := (I >= 1) and (I < 100);

    Suponha que X uma varivel booleana, e I seja uma varivel inteira. Ento a instruo faz com que X seja atribudo o valor verdadeiro (TRUE) ou falso (FALSE), conforme determinado pela expresso booleana.

    4.1.3 Incrementando uma varivel 4.1.3 Incrementando uma varivel 4.1.3 Incrementando uma varivel 4.1.3 Incrementando uma varivel ---- A procedure Inc A procedure Inc A procedure Inc A procedure Inc

    Esta procedure incrementa uma varivel do tipo ordinal. Esta uma procedure da unit System.

    Sintaxe: Inc(identificador, incremento); Onde:

    identificador o nome da varivel. Um identificador vlido do pascal. incremento um nmero inteiro que define em quanto a varivel ser incrementada. Caso

    este valor seja omitido assume-se que o incremento ser de 1 em 1.

  • Linguagem Pascal

    . 29

    Exemplo: Var numero: integer; ...

    {Incrementa varivel numero em 1. o mesmo que numero := numero+1; } Inc(numero);

    {Incrementa varivel numero em 3. o mesmo que numero := numero+3; } Inc(numero,3); ...

    Observaes: O valor de incremento poder ser precedido pelo sinal de menos (-). Desta forma a procedure ir

    decrementar o valor da varivel. O incremento um valor do tipo longint e conseqntemente no poder ultrapassar a faixa deste

    tipo.

    4.2 Declarao de constantes 4.2 Declarao de constantes 4.2 Declarao de constantes 4.2 Declarao de constantes

    Tem-se como definio de constante tudo aquilo que fixo ou estvel. Quando estivermos programando em Pascal, existiro vrios momentos em que este conceito dever ser aplicado.

    Identificadores podem ser usados, dentro de um bloco, como sinnimos de constantes, desde que tenham sido previamente definidos como tal. Na sub-rea Const, podemos definir quantas constantes forem necessrias.

    4.2.1 A declarao const 4.2.1 A declarao const 4.2.1 A declarao const 4.2.1 A declarao const

    A sua sintaxe geral :

    const = ; ...

    = ;

    Onde:

    const uma palavra reservada que inicia uma parte do programa para a definio de constantes; identificador qualquer identificador permitido pela linguagem Pascal; expresso um nmero (com ou sem sinal), valor lgico, literal ou identificador de constante j

    definido. Exemplo: ...

    const Pi = 3.1416; cor_preferida = verde; numero_maximo = 24345; ...

    Observaes: Toda vez que nos referirmos s constantes dentro do programa, o Turbo Pascal substituir-las

    pelos seus respectivos valores declarados. Aps declaradas as constantes, estas no podem receber atribuies posteriormente.

  • Linguagem Pascal

    . 30

    4.2.2 Constantes tipadas4.2.2 Constantes tipadas4.2.2 Constantes tipadas4.2.2 Constantes tipadas A declarao de variveis na sub-rea Var, apenas reserva espao de memria para elas, mas no as inicializa, ou seja, at que se atribua valores a elas, seus valores sero desconhecidos. Sob certas circunstncias, seria interessante que pudssemos ao mesmo tempo em que declaramos a varivel, dar seu valor inicial. Isto possvel com o conceito de constante tipada. Diferente da constante no tipada a declarao de uma constante tipada especifica o tipo e o valor desta constante.

    Sintaxe: ...

    const : = ; ...

    : = ; Onde:

    Const uma palavra reservada que inicia uma parte do programa para a definio de

    constantes; identificador qualquer identificador permitido pela linguagem Pascal; tipo o tipo das variveis, ou seja, define o conjunto ordenado de valores que podem ser

    atribudos a estas variveis. valor pode ser um nmero (com ou sem sinal), valor lgico, literal, uma expresso ou

    identificador de constante j definido. Observaes: Constantes tipadas podem ser usadas exatamente como variveis do mesmo tipo, podendo

    inclusive receber atribuies posteriormente.

    Exemplo: ...

    const Minimo: Integer = 0; Maximo: Integer = 9999; Contador: Integer = 100; C : char = A; ...

    4.3 Constantes predefinidas4.3 Constantes predefinidas4.3 Constantes predefinidas4.3 Constantes predefinidas

    O Turbo Pascal for Windows inclui ainda dois idenficadores predefinidos padro que representam constantes. So eles: maxint, maxlongint.

    - maxint a constante maxint especifica o maior valor que pode ser atribudo a uma quantidade do tipo inteiro (integer). Este valor 32.767.

    - maxlongint a constante maxlongint especifica o maior valor que pode ser atribudo a uma quantidade do tipo inteiro longo (longint) . Este valor 2.147.483.647.

  • Linguagem Pascal

    . 31

    4.3 A declarao de tipos 4.3 A declarao de tipos 4.3 A declarao de tipos 4.3 A declarao de tipos

    Alm dos tipos de dados predefinidos no Turbo Pascal , podemos tambm definir novos tipos atravs da declarao Type. Um novo tipo criado atravs de um definio de tipo que determina um conjunto de valores e associa um identificador a este conjunto.

    Uma vez definido o tipo passa a ser referenciado pelo seu identificador. como se a cada nova definio fosse acrescentando um novo tipo ao conjunto que, inicialmente, constitui-se dos tipos predefinidos.

    4.3.1 Dados do tipo enumerado4.3.1 Dados do tipo enumerado4.3.1 Dados do tipo enumerado4.3.1 Dados do tipo enumerado

    Um dado do tipo enumerado consite numa sequncia ordenada de identificadores, em que cada um destes interpretado como um elemento individual. Estes elementos esto coletivamente associados a um nome particular que serve para identificar o tipo de informao.

    A associao entre o nome do tipo de informao e os seus elementos individuais estabelecida pelas definies de tipo (type).

    A sua sintaxe geral :

    Type identificador= (elemento1,elemento2,...,elementoN); ...

    identificador= (elemento1,elemento2,...,elementoN);

    Onde: Type uma palavra reservada que inicia uma parte do programa contendo definies de tipo; identificador qualquer identificador permitido pela linguagem, que passar a identificar o novo

    tipo. O identificador segue as regras dadas anteriormente; o nome do novo tipo. elementoN um identificador que passar a representar um elemento do conjunto. Exemplo:

    ...

    Type cor = (azul,vermelho,branco,verde,amarelo); dia_util = (segunda,tera,quarta,quinta,sexta); sexo = (masculino,feminino);

    ...

    Observaes:

    Note que os elementos do novo tipo devem ser separados por vrgulas. Deve ser entendido que estes elementos so os nicos valores que podem estar associados com o

    tipo definido. Uma vez que os dados do tipo enumerado esto definidos numa sequncia ordenada, os

    operadores relacionais podem ser aplicados de modo a formar uma expresso booleana. As funes preexistentes Succ(X), Pred(X) e Ord(X) tambm podem ser utilizadas.

    Considerando os conceitos introduzidos at aqui, a definio do tipo boolean seria, ento: Type boolean = (false, true);

    Exemplo: Vamos considerar a definio do tipo: Type dias = (domingo, segunda, tera, quarta, quinta, sexta, sabado);

    domingo < tera - retorna true.

  • Linguagem Pascal

    . 32

    quinta >= sbado - retorna false. segunda sexta retorna true. Succ(segunda) = tera retorna true. Ord(quinta) = 4 o nmero inteiro 4 indica a ordem do valor quinta no conjunto (a enumerao

    comea de zero, contando da esquerda para a direita).

    Program exemplo; uses WinCrt;

    type Cores = (VERMELHO,AZUL,VERDE); begin Writeln(O AZUL tem um nmero ordinal = ,Ord(BLUE)); Writeln('C em cdigo ASCII ',Ord('c'), ' decimal'); end.

    4.3.2 Dados do tipo gama de valores4.3.2 Dados do tipo gama de valores4.3.2 Dados do tipo gama de valores4.3.2 Dados do tipo gama de valores

    Uma gama de valores refere-se a uma parte do intervalo original de um tipo de dados simples e ordenados. O tipo original de dados referido como o tipo suporte. Cada elemento que esteja dentro da gama de valores considerado tambm como pertencendo ao tipo suporte.

    O conceito gama de valores pode ser aplicado a qualquer conjunto de dados ordenados e simples. Sintaxe:

    Type identificador= primeiro elemento..ltimo elemento; ...

    identificador= primeiro elemento..ltimo elemento;

    Onde: Type uma palavra reservada que inicia uma parte do programa contendo definies de tipo; identificador qualquer identificador permitido pela linguagem, que passar a identificar o novo

    tipo. O identificador segue as regras dadas anteriormente; o nome do novo tipo. primeiro elemento o primeiro dos elementos ordenados dentro da gama de valores; ltimo elemento o ltimo dos elementos ordenados, dentro da gama de valores; Exemplo:

    ...

    Type dias = (domingo,segunda,tera,quarta,quinta,sexta,sabado); Dias_da_semana = segunda..sexta; ms = 1..31; maiuscula = A..Z;

    ...

    Observaes:

    Os dados do tipo inteiro, caracter e booleanos podem ser usados para definir uma gama de

    valores. Os dados do tipo real no podem ser usados para definir uma gama de valores. Note que dois pontos consecutivos devem separar o primeiro e o ltimo elementos da gama de

    valores.

  • Linguagem Pascal

    . 33

    Captulo 5 Captulo 5 Captulo 5 Captulo 5 ---- Entrada e sada de dados Entrada e sada de dados Entrada e sada de dados Entrada e sada de dados

    5.1 Write e Writeln5.1 Write e Writeln5.1 Write e Writeln5.1 Write e Writeln

    Estas so as principais procedures destinadas a exibir todos os tipos de dados no vdeo. A diferena entre write e writeln reside no fato de que a procedure write escreve o parmetro, e mantm o cursor na mesma linha em que foi escrito, enquanto que writeln passa o cursor para a prxima linha.

    A sua sintaxe geral : Write () Writeln ()

    onde: write e writeln so identificadores com significado predefinido em PASCAL. lista de identificadores so os nomes de variveis do tipo string, char, integer, real ou boolean,

    cujos valores sero enviados unidade de sada. constantes e/ou expresses de mesmo tipo das variveis tambm podem aparecer nos

    comandos de sada. Observao: A instruo Write e Writeln aceita mltiplos parmetros. Estes parmetros devem ser separados

    por vrgula. Exemplo:

    Program Exemplo; Uses CRT; Var i : integer; r : real; c : char; s : string[20]; Begin ClrScr; Writeln('Exemplos de aplicacao de writeln e write'); writeln; i:=100; r:=3.14; c:='Muito'; s:='interessante!'; writeln('Valor de i e igual a ',i); write('valor de r = '); writeln(r); writeln(c,'',s); end. Este programa resultaria na seguinte tela: ---------------------------------------------------------

    Exemplos de aplicacao de writeln e write

    Valor de i e igual a 100 valor de r = 3.1400000000E+00 Muito interessante!

    ---------------------------------------------------------

  • Linguagem Pascal

    . 34

    5.2 Sadas formatadas5.2 Sadas formatadas5.2 Sadas formatadas5.2 Sadas formatadas

    A informao de sada pode normalmente ser tornada mais legvel alterando as dimenses de campos associados com os dados numricos e booleanos. Isto pode ser conseguido facilmente adicionando algumas especificaes de formatao nas instrues write ou writeln.

    A sua sintaxe geral :

    write(p1,...,pn); writeLn(p1,...,pn);

    onde:

    p1 um parmetro com uma das formas: e

    e:e1 e:e1:e2 ,

    sendo e, e1, e2 expresses. e representa o valor a ser escrito e pode ser do tipo integer, real, char, string e boolean, podendo

    inclusive ser uma constante ou uma expresso. e1 representa um valor inteiro positivo e indica o nmero mnimo de caracteres a ser escrito. Se

    e1 for insuficiente para representar o valor a ser escrito, ento ser alocado mais espao. Se e1 for excessivo, o espao excedente ser preenchido com brancos.

    e2 s se aplica se e for do tipo real; neste caso, e2 um valor inteiro positivo e especifica o nmero de dgitos que devem ser escritos aps o ponto decimal. Caso e2 no seja fornecido o valor real ser escrito no formato exponencial.

    Exemplo: program Exemplo;

    uses WinCrt;

    var A, B: real; K, L: char;

    begin A:= 3.2; B:= 5.81; K:= 'x'; L:= 'y'; writeln (A:4:2); writeln (K:2); writeln (B:5:2); writeln (A+B:6:3); writeln (A:4:2, K:2, ' +', B:5:2, L:2,' =', A+B:6:3); end.

    Este programa resultaria na seguinte tela:

    ---------------------------------------------------------

    3.20 x

    5.81 9.010

    3.20 x + 5.81 y = 9.010 ---------------------------------------------------------

  • Linguagem Pascal

    . 35

    5.3 Read e Readln5.3 Read e Readln5.3 Read e Readln5.3 Read e Readln

    O comando read usado para ler dados via teclado e atribu-los variveis do tipo inteiro, real ou do tipo caracter (char ou string). A procedure Read l dados do teclado at que se pressione a tecla ENTER, sendo que cada tecla pressionada ecoada para o vdeo. Aps pressionarmos ENTER, o cursor permanecer no mesma posio no vdeo.

    A sua sintaxe geral : read(variveis de entrada); onde: read e readln so identificadores predefinidos em Pascal; variveis de entrada so os nomes das variveis do tipo string, char, integer ou real, cujos

    valores sero lidos na unidade de entrada. Observao: As variveis de entrada devem estar separadas por vrgulas. Note que as variveis do tipo

    booleano no podem ser includas na lista de variveis de entrada. A diferena entre as instrues read e readln que a instruo readln obriga a prxima instruo

    read ou readln a comear a ler em uma nova linha de dados. J a instruo read permite que a prxima instruo read ou readln comece na mesma linha.

    Os dados numricos devem ser separados uns dos outros por espaos ou por indicaes de fim de linha (ENTER).

    Qualquer nmero pode ser precedido por um sinal de mais ou menos, desde que no haja um espao entre o sinal e o nmero.

    O dado do tipo caracter no deve ser colocado entre aspas.

    Exemplo: Program teste;

    Uses WinCrt;

    Var i : integer; r : real; c : char; s : string[10];

    Begin ClrScr; Write('Digite um numero inteiro ------> '); Readln(i); Write('Digite um numero real ---------> '); Readln(r); Write('Digite um caractere -----------> '); Readln(c); Write('Digite uma string -------------> '); Readln(s); Writeln;Writeln; (* pula duas linhas *) Writeln(i); Writeln(r); Writeln(c); Writeln(s); End.

  • Linguagem Pascal

    . 36

    Este programa resultaria na seguinte tela: ---------------------------------------------------------

    Digite um numero inteiro ------> 10 Digite um numero real ---------> 10.5 Digite um caractere -----------> a Digite uma string -------------> abc

    10 1.0500000000E+01 a

    abc ---------------------------------------------------------

    Captulo 6 Captulo 6 Captulo 6 Captulo 6 ---- Funes padro predefinidas Funes padro predefinidas Funes padro predefinidas Funes padro predefinidas

    6.1 Funes matemticas6.1 Funes matemticas6.1 Funes matemticas6.1 Funes matemticas

    No pascal esto disponveis funes predefinidas para o clculo de vrias operaes matemticas.

    Funo Descrio Tipo de entrada Tipo de valor retornado Abs(Num) Valor absoluto Inteiro ou Real Inteiro ou Real (o mesmo que

    Num) ArcTan(Num) Arco tangente Inteiro ou Real Real Cos(Num) Co-seno Inteiro ou Real Real Exp(Num) Exponencial (ex)

    e=2.71882818... Inteiro ou Real Real

    Frac(Num) Parte fracionria Real Real Int(Num) Parte inteira Real Real Ln(Num) Logaritmo natual (base

    e) (Num > 0)

    Inteiro ou Real Real

    Round(Num) Arrendondamento ao inteiro mais prximo

    Real Inteiro

    Sin(Num) Seno Inteiro ou Real Real Sqr(Num) Quadrado Inteiro ou Real Inteiro ou Real (o mesmo que

    Num) SqRt(Num) Raiz quadrada

    (Num > 0) Inteiro ou Real Real

    Trunc(Num) Extrao da parte inteira, ou seja perde a parte decimal

    Real Inteiro

    Exemplo: ... begin Writeln(2*Sin(3.14)); End. ... A chamada da funo precede as demais operaes; se uma funo um operando de uma

    expresso, ela deve ser calculada antes que as demais operaes possam ser efetuadas. Observe a seqncia de execuo da instruo acima:

  • Linguagem Pascal

    . 37

    1o) calculado o seno; 2o) o resultado deste clculo multiplicado ento por 2; 3o) e por fim mostrado na tela o resultado. Observaes: Como parmetros de funes voc pode usar expresses e at outras funes.

    6.2 6.2 6.2 6.2 Funes literaisFunes literaisFunes literaisFunes literais

    O tipo predefinido char formado pelos caracteres existentes na configurao considerada. Operaes neste tipo so definidas no Turbo Pascal. As expresses do tipo char so formadas por uma constante, ou uma varivel ou a ativao de uma funo do tipo char. Existem, porm funes predefinidas, tais como:

    Nome Descrio Tipo de

    entrada Tipo de valor retornado

    Ord (X) Retorna um nmero decimal que indica a ordem X no conjunto de caracteres ASCII.

    Char Integer

    Chr(EA) Retorna o caracter que corresponde ordem, dada pelo valor da expresso aritmtica EA, se existir, no conjunto de caracteres ASCII.

    Integer Char

    Succ(X) Retorna o sucessor de X no conjunto de caracteres ASCII, se existir.

    Integer ou Char Integer ou Char

    Pred(X) Retorna o predecessor de X no conjunto de caracteres ASCII, se existir.

    Integer ou Char Integer ou Char

    Observao: As funes Ord(X), Succ(X), Pred(X) aplicam-se no apenas s variveis ou constantes do tipo

    char, mas de qualquer tipo predefinido, exceto o tipo real. Exemplo: a) Succ(A) B; Pred(D) C; b) Succ(1) 2; Pred(100) 99; c) Ord(C) 67; Chr(65) A no cdigo ASCII.

  • Linguagem Pascal

    . 38

    Captulo 7 Captulo 7 Captulo 7 Captulo 7 ---- As sub As sub As sub As sub----rotinas do Pascal rotinas do Pascal rotinas do Pascal rotinas do Pascal

    7.1 Utilizando as sub7.1 Utilizando as sub7.1 Utilizando as sub7.1 Utilizando as sub----rotinasrotinasrotinasrotinas No geral, problemas complexos exigem algoritmos complexos, mas sempre possvel dividir um

    problema grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples, e este trecho menor que chamado de sub-rotina. Quando uma sub-rotina chamada por um programa principal, ela executada e ao seu trmino o controle de processamento do programa retorna automaticamente para a primeira linha de instruo aps a linha que efetuou a sua chamada.

    7.2 Tipos de sub7.2 Tipos de sub7.2 Tipos de sub7.2 Tipos de sub----rotinasrotinasrotinasrotinas

    A linguagem Pascal permite a utilizao de dois tipos de rotinas definidas pelo programador: Procedure (procedimento) e Function (funo). Uma procedure ou function , na verdade, um bloco de programas contendo incio e fim, identificado por um nome, atravs do qual ser referenciado em qualquer parte do programa principal ou do programa chamador da rotina. A diferena entre os dois tipo de sub-rotina est no fato de uma procedure poder ou no retornar um valor aps seu processamento, enquanto uma function sempre ir retornar um valor aps seu processamento. Alm das rotinas definidas pelo programador, existe no Turbo Pascal um conjunto de rotinas embutidas predefinidas, ou seja, fornecidas pela Borland. Este tipo de rotina embutida conhecido pelo nome de unidade, em ingls Unit, que ser apresentada a seguir.

    7.3 Unidades predefinidas 7.3 Unidades predefinidas 7.3 Unidades predefinidas 7.3 Unidades predefinidas As Units As Units As Units As Units As Units so um conjunto de rotinas prontas para serem usadas pelo programador. As Units so rotinas compiladas separadamente do programa principal. Uma unit na realidade uma biblioteca de funes e procedures predefinidas. Neste momento o que nos interessa o conhecimento das Units j disponveis no Pascal. O conceito de Units foi incorporado no Pascal na sua verso 4. As units padro do Turbo Pascal so:

    Strings System WinCrt WinDOS WinProcs WinTypes

    As units mais importantes para o nosso estudo so a System e a WinCrt.

    Antes de utilizarmos algumas das rotinas predefinidas do Pascal devemos antes declarar as Units na rea de Declaraes do programa Pascal. A declarao uses indica ao compilador onde buscar as definies (cdigo objeto) de certas instrues.

    Sintaxe da declarao uses: Uses , ... ; Onde: Uses uma palavra reservada do Pascal. Identificador o nome de uma das unidades padro do Pascal.

  • Linguagem Pascal

    . 39

    7.3.1 A7.3.1 A7.3.1 A7.3.1 A unit System unit System unit System unit System

    A Unit System a nica que pode ser utilizada sem ser citada num programa Pascal, ou seja, no necessrio a sua declarao na rea de declaraes do Pascal. Nela est contida a maior parte das rotinas padres do Pascal.

    Algumas procedures e funes da unit System:

    Read, Readln, Write e Writeln, Chr, Eof. Lenght.

    7.3.1.1 Convertendo de caixa baixa para caixa alta (UpCase)7.3.1.1 Convertendo de caixa baixa para caixa alta (UpCase)7.3.1.1 Convertendo de caixa baixa para caixa alta (UpCase)7.3.1.1 Convertendo de caixa baixa para caixa alta (UpCase)

    Esta funo converte um caracter para o seu correspondente em caixa alta. uma funo da Unit System.

    Sintaxe: UpCase(expresso caracter); Onde: expresso caracter um nico caracter ou uma expresso do tipo caracter (Char). Um programa exemplo: ...

    Writeln(Digite um caracter qualquer............> ); Readln(c); Writeln(O caracter ,,c,, em caixa alta fica assim: ,UpCase(c)); ...

    Este programa resultaria na seguinte tela: Considerando que o caracter digitado pelo usurio o caracter a o programa resulta na seguinte tela: ---------------------------------------------------------------

    O caracter a em caixa alta fica assim: A ---------------------------------------------------------------

    7.3.1.2 Verificando o tamanho de uma string (Lenght)7.3.1.2 Verificando o tamanho de uma string (Lenght)7.3.1.2 Verificando o tamanho de uma string (Lenght)7.3.1.2 Verificando o tamanho de uma string (Lenght)

    Esta funo retorna o tamanho de uma string. uma funo da Unit System.

    Sintaxe: Lenght(expresso caracter); Onde: expresso caracter uma string de caracteres, uma varivel ou uma expresso do tipo string de

    caracteres (String). Um programa exemplo:

  • Linguagem Pascal

    . 40

    Program exemplo; Uses WinCrt; Var x:string; y:integer; begin Write('Digite uma string qualquer...: '); readln(x); y := Length(x); Write('Esta string tem ',y,' carateres.');

    end. Este programa resultaria na seguinte tela: Considerando que a string digitada pelo usurio foi Pascal o programa resulta na seguinte tela: ---------------------------------------------------------------

    Digite uma string qualquer...:Pascal Esta string tem 6 carateres. ---------------------------------------------------------------

    7.3.2 A unit WinCrt7.3.2 A unit WinCrt7.3.2 A unit WinCrt7.3.2 A unit WinCrt Esta a unit mais utilizada na programao do Turbo Pascal. Por esta razo, ela possui a maior parte das rotinas e variveis de gerao de som, controle de vdeo e teclado, por exemplo. Por exemplo, para fazer uso do recurso de limpar e posicionar mensagens na tela do computador, ser usada a principal e mais utilizada unidade do Turbo Pascal: a WinCrt.

    Algumas procedures e funes da unit WinCrt: ClrScr, GotoXY, KeyPressed, etc.

    7.3.2.1 Limpando a tela (ClrScr)7.3.2.1 Limpando a tela (ClrScr)7.3.2.1 Limpando a tela (ClrScr)7.3.2.1 Limpando a tela (ClrScr)

    ClrScr um comando, e significa limpe a tela e coloque o cursor no canto superior esquerdo (linha 1, coluna 1 do monitor). O ponto e vrgula aps o ClrScr importante: ele indica ao compilador que terminou uma instruo. Este comando uma procedure da unit WinCrt.

    Exemplo:

    Program exemplo; Uses WinCrt;

    begin ClrScr; Writeln(O primeiro programa a gente nunca esquece!); Readkey; ClrScr; Writeln(O segundo a gente tambm nunca esquece!); Readkey; end. Observao: O comando ClrScr limpar a tela e posicionar o cursor no canto superior esquerdo da tela.

  • Linguagem Pascal

    . 41

    7.3.2.27.3.2.27.3.2.27.3.2.2 Determinando o pressionar de uma tecla (KeyPressed)Determinando o pressionar de uma tecla (KeyPressed)Determinando o pressionar de uma tecla (KeyPressed)Determinando o pressionar de uma tecla (KeyPressed)

    KeyPressed um comando que determina se uma tecla qualquer foi pressionada ou no atravs do teclado. Usamos este comando para fazer com que o programa pare de ser executado e fique aguardando que alguma tecla seja pressionada; enquanto isso no ocorre, a execuo do programa fica parada. Diferentemente da funo ReadKey, que retorna o valor da tecla pressionada, KeyPressed simplesmente retorna true ou false; false enquanto nenhuma tecla for pressionada e true quando uma tecla qualquer for pressionada.

    Este comando tambm uma funo da unit WinCrt . Exemplo: Program exemplo; uses WinCrt; var C: Char;

    begin repeat Writeln(Por favor pressione uma tecla qualquer!'); until KeyPressed; Writeln(Uma tecla qualquer foi pressionada!'); end. Este programa resultaria na seguinte tela: Obs.: O programa escrever na tela a frase Por favor pressione uma tecla qualquer! um nmero

    indefinido de vezes, at que uma tecla qualquer seja pressionada. Neste momento o programa encerra a estrutura de repetio Repeat-Until e executa a instruo Writeln(Uma tecla qualquer foi pressionada!'); e finaliza.

    ---------------------------------------------------------

    Por favor pressione uma tecla qualquer! Por favor pressione uma tecla qualquer! Por favor pressione uma tecla qualquer! ...

    Por favor pressione uma tecla qualquer! Voc pressionou uma tecla qualquer!

    ---------------------------------------------------------

    7.3.2.3 Aguardando pressionar uma tecla (ReadKey)7.3.2.3 Aguardando pressionar uma tecla (ReadKey)7.3.2.3 Aguardando pressionar uma tecla (ReadKey)7.3.2.3 Aguardando pressionar uma tecla (ReadKey)

    ReadKey um comando que l um caracter atravs do teclado, sem contudo, eco-lo para a tela do computador. Usamos este comando para fazer com que o programa pare de ser executado e fique aguardando que alguma tecla seja pressionada; enquanto isso no ocorre, a execuo do programa fica parada. Este comando tambm uma funo da unit WinCrt e h ainda outros usos para ela.

    Exemplo: Program exemplo; uses WinCrt; var C: Char;

    begin Writeln(Por favor pressione uma tecla qualquer !'); C := Readkey;

  • Linguagem Pascal

    . 42

    Writeln('Voc pressionou a tecla ', C, '. Seu valor em ASCII ', Ord(C), '.'); end. Este programa resultaria na seguinte tela: Obs.: Vamos supor que voc tenha pressionado a tecla A (caixa alta).

    ---------------------------------------------------------

    Por favor pressione uma tecla qualquer ! Voc pressionou a tecla A. Seu valor em ASCII 65.

    ---------------------------------------------------------

    7.3.2.3 Posicionando o 7.3.2.3 Posicionando o 7.3.2.3 Posicionando o 7.3.2.3 Posicionando o cursor na tela (GotoXY)cursor na tela (GotoXY)cursor na tela (GotoXY)cursor na tela (GotoXY)

    Este procedimento permite posicionar o cursor em um determinado ponto da tela. Este comando um procedimento da unit WinCrt.

    Sintaxe: GotoXY(parmetroX,parmetroY); Para utiliz-lo necessrio informar dois parmetros: o primeiro representa o valor da coluna que

    dever ser um valor numrico do tipo inteiro positivo entre 1 e 80 e o segundo parmetro representa o nmero da linha que dever ser um valor numrico tambm do tipo inteiro positivo entre 1 e 25.

    Exemplo: Program exemplo;

    uses WinCrt;

    var C: char;

    begin GotoXY(10,10); Writeln('Ol!'); end.

    Este programa resultaria na seguinte tela: O comando GotoXY posicionar o cursor na linha 10, coluna 10 da tela do computador. A mensagem

    Ol! ser mostrada ento a partir desta coordenada.

    ---------------------------------------------------------

    Ol! ---------------------------------------------------------

  • Linguagem Pascal

    . 43

    Captulo 8 Captulo 8 Captulo 8 Captulo 8 A tomada de decises A tomada de decises A tomada de decises A tomada de decises

    8.1 A estrutura de deciso IF8.1 A estrutura de deciso IF8.1 A estrutura de deciso IF8.1 A estrutura de deciso IF

    A estrutura de deciso IF pode se apresentar de duas formas: a estrutura de deciso simples (IF-THEN) e a estrutura de deciso composta (IF-THEN-ELSE). Esta estrutura de deciso permite que uma ao se realize, se e somente se uma condio lgica for atendida.

    8.1.1 A estrutura d8.1.1 A estrutura d8.1.1 A estrutura d8.1.1 A estrutura de deciso simples (IFe deciso simples (IFe deciso simples (IFe deciso simples (IF----THEN)THEN)THEN)THEN)

    Sintaxe: If Then ; Onde:

    If Then so palavras reservadas do Pascal. condio a expresso booleana que ser avaliada no comando If-Then. Esta expresso

    retorna verdadeiro (true) ou falso (false). bloco de comando um nico comando (bloco de instruo simples) ou um conjunto de

    comandos (bloco de instruo composta) que sero executados, caso a expresso booleana avaliada retorne verdadeiro (true).

    Exemplo:

    Program exemplo; Uses WinCrt; var A, B, C: real;

    begin read (A, B, C); if A+B < C then write (A soma de A com B menor que C!) end.

    ou ...

    begin read (A, B, C); if A+B < C then write (A soma de A com B menor que C!) end. ...

    Neste exemplo, aps as variveis A, B e C serem declaradas reais, os valores de A, B e C sero lidos;

    em seguida, o comando If-Then ir avaliar a expresso booleana (A+B

  • Linguagem Pascal

    . 44

    8.1.2 A estrutura de deciso composta (IF8.1.2 A estrutura de deciso composta (IF8.1.2 A estrutura de deciso composta (IF8.1.2 A estrutura de deciso composta (IF----THENTHENTHENTHEN----ELSE)ELSE)ELSE)ELSE)

    Sintaxe: If Then Else ; Onde: If Then-Else so palavras reservadas do Pascal.

    condio a expresso booleana que ser ser avaliada no comando If-Then-Else. Esta expresso retorna verdadeiro (true) ou falso (false).

    bloco de comando1 um nico comando (bloco de instruo simples) ou um conjunto de comandos (bloco de instruo composta) que sero executados, caso a expresso booleana (condio) avaliada retorne verdadeiro (true).

    bloco de comando2 um nico comando (bloco de instruo simples) ou um conjunto de comandos (bloco de instruo composta) que sero executados, caso a expresso booleana (condio) avaliada retorne falso (false).

    Exemplo1:

    Program exemplo1;

    Uses WinCrt; var A, B, C: real;

    begin read (A, B, C); if A+B < C then write (A soma de A com B menor que C!) else write (A soma de A com B maior que C!); end.

    Neste exemplo, aps as variveis A, B e C serem declaradas reais, os valores de A, B e C sero lidos; em seguida o comando if-then-else ir avaliar a expresso booleana (A+B

  • Linguagem Pascal

    . 45

    Y:= 2.5 end else begin X:= -1.5; Y:= -2.5

    end; writeln ('O valor de X :', X:4:1); writeln ('O valor de Y :', Y:4:1); end.

    Observaes: Caso a instruo, a ser executada aps a avaliao da expresso booleana, seja uma instruo

    composta, ou seja, com mais de um comando, deve-se delimitar o bloco de comandos por begin e end.

    O sinal de ponto e vrgula no deve aparecer numa estrutura If-Then-Else, exceto como separador dentro de um bloco de instruo composta (entre o begin e o end). Colocar um ponto e vrgula antes da palavra reservada Else resultar num erro de compilao.

    8.2 Estrutura de deciso com mltipla escolha 8.2 Estrutura de deciso com mltipla escolha 8.2 Estrutura de deciso com mltipla escolha 8.2 Estrutura de deciso com mltipla escolha ---- CASE CASE CASE CASE

    A estrutura CASE uma estrutura de co