




























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Informática sobre a Linguagem de Programação Pascal, Fundamentos de programação, O que são algoritmos, Por que precisamos de algoritmos, Método para construir um algoritmo, Tipos de informação, Tipos inteiros, Tipos reais, Tipos lógicos.
Tipologia: Notas de estudo
1 / 36
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais variados problemas.
Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos.
Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas grácas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.
Algoritmos não se aprende:
À especicação da seqüência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Embora esta denição de algoritmo seja correta, podemos denir algoritmo, de maneira informal e completa como:
Algoritmos é um conjunto de regras, bem denidas, para a solução de um problema em um tempo nito e com um número nto de passos.
Algoritmo pode ser denido também como um conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e satisfazer a propriedade da efetividade, isto é, todas as operações especicadas no algoritmo devem ser sucientemente básicas para que possam ser executadas de maneira exata e num tempo nito.
Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema proposto e o faz exatamente.
Para se ter um algoritmo, é necessário:
i. Que se tenha um número nito de passos;
ii. Que cada passo esteja precisamente denido, sem possíveis ambigüidades;
iii. Que existam zero ou mais entradas tomadas de conjuntos bem denidos;
iv. Que existam uma ou mais saídas;
v. Que exista uma condição de m sempre atingida para quaisquer entradas e num tempo nito.
Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador.
1.1.1 POR QUE PRECISAMOS DE ALGORITMOS?
Vejamos o que algumas pessoas importantes, para a Ciência da Computação, disseram a respeito de algoritmo: A noção de algoritmo é básica para toda a programação de computadores. [KNUTH
O conceito central da programação e da ciência da computação é o conceito de algoritmo. [WIRTH - Professor da Universidade de Zurique, autor de diversos livros na área e responsável pela criação de linguagens de programação como ALGOL, PASCAL e MODULA-2].
A importância do algoritmo está no fato de termos que especicar uma seqüência de passos lógicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si só não tem vontade própria, faz apenas o que mandamos. Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem especíca e até mesmo do próprio computador.
1.1.2 MÉTODO PARA CONSTRUIR UM ALGORITMO
Utilizando os conceitos já desenvolvidos, esquematizaremos um método para construir um algoritmo logicamente correto:
i. Ler atentamente o enunciado: Deve-se reler o enunciado de um exercício quantas vezes for necessário, até compreendê-lo completamente. A maior parte da resolução de um exercício consiste na compreensão completa do enunciado.
ii. Retirar a relação das entradas de dados do enunciado Através do enunciado, descobrimos quais são os dados que devem ser fornecidos ao programa, via teclado, a partir dos quais são desenvolvidos os cálculos. Obs. Pode haver algum algoritmo que não necessite da entrada de dados (pouco comum).
iii. Retirar do enunciado as informações de saída Através do enunciado podemos descobrir quais são as informações que devem ser mostradas para compor o resultado nal, objetivo do algoritmo.
São caracterizados como tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (). Este tipo de dado também é conhecido como string, alfanumérico, string, literal ou cadeia. Como exemplo deste tipo de dado, tem-se os valores: Programação, Rua Alfa, 52 Apto 1, Fone 574-9988, 04387-030, , 7 entre outros.
1.2.4 TIPOS LÓGICOS
São caracterizados como tipos lógicos os dados com valor verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo booleano, devido à contribuição do lósofo e matemático inglês George Boole na área da lógica matemática.
1.3 VARIÁVEIS
Na programação, uma variável é um objeto (uma posição, freqüentemente localizada na memória) capaz de reter e representar um valor ou expressão. Enquanto as variáveis só existem em tempo de execução, elas são associadas a nomes, chamados identicadores, durante o tempo de desenvolvimento.
1.3.1 ARMAZENAMENTO DE DADOS NA MEMÓRIA
Para armazenar os dados na memória, imagine que a memória de um computador é um grande arquivo com várias gavetas, onde cada gaveta pode armazenar apenas um único valor (seja ele numérico, caractere ou lógico). Se é um grande arquivo com várias gavetas, é necessário identicar com um nome a gaveta que se pretende utilizar. Desta forma o valor armazenado pode ser utilizado a qualquer momento.
1.3.2 CONCEITO E UTILIDADE DE VARIÁVEIS
Têm-se como denição de variável tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. E quando se fala de computadores, temos que ter em mente que o volume de informações a serem tratadas é grande e diversicado. Desta forma, os dados a serem processados serão bastante variáveis. Como visto anteriormente, informações correspondentes a diversos tipos de dados são armazenadas nas memórias dos computadores. Para acessar individualmente cada uma destas informações, em princípio, seria necessário saber o tipo de dado desta informação (ou seja, o número de bytes de memória por ela ocupados) e a posição inicial deste conjunto de bytes na memória.
Percebe-se que esta sistemática de acesso a informações na memória é bastante ilegível e difícil de se trabalhar. Para contornar esta situação criou-se o conceito de variável, que é uma entidade destinada a guardar uma informação.
Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma e a informação por ela guardada. Toda variável possui um nome que tem a função de diferenciá-la das demais.
Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. Adotaremos para os algoritmos, as seguintes regras:
i. um nome de variável deve necessariamente começar com uma letra;
ii. um nome de variável não deve conter nenhum símbolo especial, exceto a sublinha ( _ ) e nenhum espaço em branco;
iii. Um nome de variável não poderá ser uma palavra reservada a uma instrução de programa.
Exemplos de nomes de variáveis:
Obviamente é interessante adotar nomes de variáveis relacionados às funções que serão exercidas pela mesmas dentro de um programa. Outro atributo característico de uma variável é o tipo de dado que ela pode armazenar. Este atributo dene a natureza das informações contidas na variável. Por último há o atributo informação, que nada mais é do que a informação útil contida na variável.
Uma vez denidos, os atributos nome e tipo de dado de uma variável não podem ser alterados e assim permanecem durante toda a sua existência, desde que o programa que a utiliza não seja modicado. Por outro lado, o atributo informação está constantemente sujeito a mudanças de acordo com o uxo de execução do programa. Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória.
Exemplo: Suponha que fosse atribuído os seguintes valores às seguintes variáveis: A = mesa, B = 0, C = 2, D = -5.4, E = João e E = 5.656.
A gura 1.2 mostra como estas variáveis cam armazendas na memória.
Figura 1.2: Armazenamento de variáveis na Memória
Como o próprio nome diz, instruções primitivas são os comandos básicos que efetuam tarefas essenciais para a operação dos computadores, como entrada e saída de dados (comunicação com o usuário e com dispositivos periféricos), e movimentação dos mesmos na memória. Estes tipos de instrução estão presentes na absoluta maioria das linguagens de programação.
Antes de passar à descrição das instruções primitiva, é necessária a denição de alguns termos que serão utilizados:
Figura 1.3: Simbologia dos Fluxogramas
português para passar-lhe as instruções necessárias à execução de cada atividade. Escreva os passos necessários para o nosso robô executar:
6 a^ Questão) É comum ouvirmos programadores experimentados armarem: algoritmos ... aprendi e nunca usei na prática ... não vejo necessidade.... Discuta esse tipo de armativa.
1.6 INTRODUÇÃO A LINGUAGEM PASCAL
A linguagem Pascal se destina à programação de computadores. Foi desenvolvida no nal dos anos 60 na Suíça e seu nome é uma homenagem ao criador da primeira calculadora mecânica, o matemático francês do século XVII Blaise Pascal.
Figura 1.4: Fluxograma Cálcula Média
Um dos principais fatores que motivaram o surgimento da linguagem foi a obtenção de uma linguagem simples, capaz de incentivar a edição de programas claros e facilmente legíveis, favorecendo a utilização das boas técnicas de programação.
Assim como as outras linguagens de programação, o Pascal possui várias versões. Cada fabricante cria sua própria versão com suas particularidades. As versões mais famosas são o Turbo Pascal, da Borland International, e o MS-Pascal, da Microsoft. Existem versões de Pascal para todos os tipos de computadores, desde MSX e CP-500 a computadores de grande porte como o IBM 4381.
À medida que o tempo passa, cada fabricante costuma atualizar e melhorar as versões de seus programas. O mesmo acontece com as linguagens de programação. Em 1983, a Borland criou o Turbo Pascal, versão 1. Essa versão inicial passou por sucessivas atualizações até que em 1991 tínhamos o Turbo Pascal, versão 6. Neste texto, onde nos referirmos simplesmente à linguagem Pascal, estamos nos referindo à versão 5 do Turbo Pascal, lançada em 1988.
1.6.1 PROGRAMAS FONTE, OBJETO E EXECUTÁVEL
Normalmente, quando pensamos em elaborar um programa, estamos pensando em fazer um texto com palavras do tipo "read", "write", "function", "end", etc. Neste texto, cada palavra escrita obedece a uma gramática rigorosa ditada pela linguagem de programação. Queremos que o computador execute cada comando associado a cada palavra que escrevemos. Este texto a que estamos nos referindo é chamado programa fonte.
Internamente, todo computador só entende uma linguagem chamada linguagem de máquina, formada exclusivamente por números binários, cujos únicos algarismos são 0 e 1. Logo, o programa fonte deve passar por algum processo de tradução para que o computador possa entendê-lo. Essa tradução é chamada compilação. O programa fonte, após a compilação, recebe o nome de programa objeto.
Apesar do programa objeto estar na linguagem do computador, ele ainda não pode ser executado pois, sob um certo aspecto, está ainda incompleto. Faltam instruções nele que ensinem o computador a
COM ---> Programa executável OBJ ---> Programa objeto SYS ---> Arquivo usado pelo sistema operacional DOC ---> Texto TXT ---> Texto TPU ---> Unidade do Turbo Pascal
Por exemplo, para um programa que trate da resolução de sistemas lineares, um nome natural poderia ser SISTEMA.PAS. No entanto, o usuário poderia chamá-lo de @##!.)$$ se quisesse. Ambos são nomes válidos para o Pascal, aliás, para o DOS. Se no disco aparecer também um SISTEMA.BAK e um SISTEMA.EXE, então é muito provável que o SISTEMA.BAK seja apenas uma cópia do SISTEMA.PAS e o SISTEMA.EXE seja sua versão executável. Outras versões de Pascal, bem como outras linguagens de programação, costumam criar arquivos OBJ no disco, correspondentes aos programas objeto, mas não é esse o caso do Turbo Pascal. Logo, o programa objeto correspondente a SISTEMA.PAS será mantido apenas na memória e você não terá em disco um SISTEMA.OBJ.
Um programa em Pascal é um conjunto de palavras e símbolos especiais (comandos, variáveis, funções, algarismos, parênteses, ...) escritos segundo as regras de uma sintaxe pré-xada e possui a seguinte estrutura:
O cabeçalho é usado para dar nome ao programa e possui a forma:
PROGRAM Nome_do_programa;
O cabeçalho é identicado pela palavra chave PROGRAM, seguida de um nome que identicará o programa, e encerra-se com um ponto-e-vírgula. Ele serve apenas para orientação do usuário. Exemplo:
PROGRAM Teste;
Uma linha como essa, atribui o nome Teste a um programa. A especicação das unidades usadas é feita com um comando USES, seguido dos nomes das unidades a serem usadas separadas por vírgula, com um ponto-e-vírgula no nal da linha:
USES unidade1, unidade2, ... ;
Em Pascal, diversos comandos podem ser agrupados em conjuntos denominados unidades (units). Temos assim uma unidade para vídeo, outra para manipulação de arquivos em disco, outra com os comandos grácos, etc. Exemplo:
USES Crt, Graph;
Esta declaração permite que sejam usados no programa comandos, funções, constantes, ... das unidades CRT e GRAPH.
A seção principal do programa inicia-se com a palavra chave BEGIN, seguida de linhas de comandos, e encerra-se com a palavra chave END seguida de um ponto:
Existem, ainda, alguns identicadores que, apesar de terem um signicado pré-denido para o Pascal, não são palavras reservadas, como por exemplo: REAL, INTEGER, READ, WRITE, PI, SIN, COS. O signicado ou a função desses identicadores podem ser redenidos e alterados pelo usuário.
2.1.2 TIPOS DEFINIDOS DO PASCAL
O diagrama a seguir, classica os tipos pré- denidos do Pascal que serão mais utilizandos no curso.
| Array +-----------------------+ | | | string ordinal real | | +---------------+ +------------+ | | | | boolean char inteiro +-----+ | | | real +----+ | integer
Vale ressaltar que a linguagem não possui apenas os tipos abaixo, mas estes é que aparecerão em 99% dos problemas. Em resumo vamos trabalhar com o seguintes tipos:
O tipo inteiro formado pelo subconjunto de inteiros, de acordo com a seguinte tabela:
O tipo boolean é formado pelas constantes TRUE (verdadeiro) e FALSE (falso) e é usado para se avaliar expressões lógicas. É um dos tipos mais usados do Pascal.
2.1.2.3 TIPO CHAR
O tipo caracter (char) é formado pelo conjunto dos 256 caracteres ASCII (letras, algarismos e símbolos especiais como +, =, %, $, #, <, etc.). As constantes deste tipo são escritas entre apóstrofos: 'A', 'B', '3', etc.
2.1.2.4 TIPO REAL
O tipo real possui o seguinte domínio e tamanho:
Em Pascal, as potências de 10 são indicadas com um E. Por exemplo, 2E07 é o mesmo que 2 vezes 10 elevado a 7; 3.28E-11 é o mesmo que 3,28 multiplicado por 10 à -11.
Os domínios anteriores referem-se aos valores absolutos das constantes. Com isso, temos que o tipo real da tabela acima corresponde aos números que estão na união dos intervalos [2.9E-39, 1.7E38] e [-1.7E38, -2.9E-39]. Está sendo indicada também a quantidade de dígitos signicativos de cada tipo.
2.1.2.5 TIPO STRING
O tipo string é uma seqüência de caracteres de comprimento variando de 0 a 255. Escrevendo string[N], estamos denindo N como tamanho máximo da seqüência (neste caso N deve ser menor ou igual a 255). As constantes do tipo string devem estar entre apóstrofos.
Exemplo: TYPE Nome = string[40];
Pi = 3.1415926; NumeroMaximoDeLinhas = 1024 + 253 + 5; Mensagem: string[20] = 'Hello world!'; X: integer = 7;
As constantes que são declaradas sem a especicação de tipo não podem ser alteradas durante a execução do programa. Aquelas cujas declarações contiverem o tipo base, chamadas constantes tipadas, desempenham um papel parecido com o das variáveis e podem ser alteradas durante a execução do programa. A diferença entre uma variável e uma constante tipada é que a variável não pode ter nenhum "valor inicial"na sua declaração.
2.1.5 COMANDO DE ATRIBUIÇÃO
A atribuição de um valor ou de uma expressão a um identicador é feita através do operador de atribuição :=. A sintaxe de uma operação de atribuição é:
Identificador := expressão;
Neste tipo de operação, a expressão e o identicador devem ser do mesmo tipo, exceto no caso em que o identicador for do tipo real e a expressão do tipo inteiro (pois, neste caso, o valor inteiro da expressão será automaticamente transformado em real). Exemplo: Considere a seguinte declaracão de variáveis:
a, b, c: integer; x, y: real; teste: boolean; data: string;
Neste caso, são válidas as atribuições:
a := -17; x := y + 3.14; teste := false; data := '5/12/1991'
Mas não são válidas as atribuições:
teste := a + b + 1; c := 6.02E23;
Em caso de várias atribuições a um mesmo identicador, será considerada apenas a última atribuição efetuada.
Comentários são usados para aumentar a clareza de um programa. Todos os comentários são desprezados na hora da compilação, logo, eles não têm inuência no desempenho e nem no tamanho do programa objeto. Um comentário é colocado entre chaves ou entre (* e *).
{ Este é um exemplo de comentário... }
(* e este também é um comentário! *)
Para o Pascal, as declarações VAR abaixo serão consideradas equivalentes. Para o usuário, o segundo bloco de declarações VAR oferece mais clareza.
VAR mat, nota, cod: string;
mat, { matrícula } nota, { nota final } cod: { codigo do curso } string;
As operações aritméticas pré-denidas do Pascal são:
9/2 = 4.5 -3*7 = - 9 DIV 2 = 4 9 MOD 2 = 1 10 DIV 2 = 5 10 MOD 2 = 0
Estas operações podem ser utilizadas com operandos reais ou inteiros, exceto DIV e MOD que exigem operandos inteiros. A prioridade entre as operações é a mesma da Matemática:
i. Primeiramente, são efetuadas as multiplicações e divisões (/, DIV e MOD);
ii. por último, são efetuadas as adições e subtrações. Temos então dois níveis de prioridades. Dentro de um mesmo nível, são efetuadas as operações da esquerda para a direita.
Exemplo: Na expressão 5 - 2/3*7 + 1 as operaçoes são efetuadas na seguinte ordem: divisão, multiplicação, subtração e adição.
Se uma expressão contiver parênteses, então será executado primeiramente o que estiver entre parênteses. Exemplo: