apontamentos_tlp_10_ano

Upload: jonas-silva

Post on 10-Jul-2015

128 views

Category:

Documents


9 download

TRANSCRIPT

ESCOLA SECUNDRIA DE EMDIO NAVARRO

TCNICAS DE LINGUAGENSDE PROGRAMAO10 ANO

2000 - Prof. Carlos Almeida 1 Verso

ANO LECTIVO 2000/2001

_______________________________________________________________ Notas do Professor

Nota IntrodutriaO objectivo destes apontamentos no substituir as aulas, como tal, a exposio de qualquer matria no realizada de modo detalhado. Ser necessrio consultar entre outra bibliografia a bibliografia geral da disciplina e alguns manuais de aplicao. O aluno tambm deve procurar uma actualizao permanente, criando o hbito de consultar publicaes tcnicas, investigar novos conceitos e discutir sobre eles.

A disciplina Tcnicas de Linguagens de Programao insere-se no curriculum do Curso Tecnolgico de Informtica no 10 e 11 anos, com a carga horria de 4 tempos lectivos, distribudos, por duas aulas de 2 tempos cada. A disciplina Tcnicas de Linguagens de Programao do 10 Ano pretende desenvolver no aluno um raciocnio lgico, que lhe possibilite a escrita de programas informticos estruturados, documentados, modulares e eficientes. O aluno no deve ficar limitado pelas caractersticas ou potencialidades de uma linguagem de programao. Facto pelo qual se enfatiza, numa primeira fase, a resoluo de problemas baseado na escrita de algoritmos com passos rigorosos e sistemticos. A aprendizagem da linguagem de programao Pascal, vem completar esta formao, pelo que se deve executar programas de processamento variado, dando assim a possibilidade a que os alunos, nos anos posteriores, estejam aptos a resolver situaes complexas que exigem maior abstraco e para as quais se estabelecem exigncias de qualidade total. fundamental, a aprendizagem correcta da construo de algoritmos e o domnio da tcnica TOP-DOWN, em detrimento dos fluxogramas, como ferramenta de anlise de um enunciado e sua converso em forma de algoritmos. Pretende-se que o fluxograma no seja usado como forma de raciocnio, mas como documentao do programa ou algoritmo, sendo, portanto, uma explicao complementar da soluo encontrada.

Prof. Carlos Almeida

ii

_______________________________________________________________ Notas do Professor

Sistema de AvaliaoA avaliao da disciplina contnua. Para cada Unidade Temtica indicam-se critrios e tcnicas de avaliao concretas, e que variam entre a realizao de testes escritos, trabalhos de grupo e provas prticas individuais realizadas no computador.

O professor da disciplina de Tcnicas de Linguagens de Programao do 10 Ano, Carlos Almeida, estabeleceu os seguintes critrios de avaliao para o ano lectivo de 2000/2001:COMPONENTE PRTICA 30% Trabalhos de grupo Provas prticas Individuais realizadas no computador COMPONENTE TERICA 40% Testes escritos Fichas de trabalho ATITUDES DO ALUNO 30% Destreza com o equipamento Capacidade de organizao e metodologia de trabalho Concentrao e qualidade no trabalho Relacionamento em grupo Assiduidade e pontualidade 5% 5% 5% 10% 5% 30% 10% 20% 10%

Prof. Carlos Almeida

iii

_______________________________________________________________ Notas do Professor

Elenco TemticoNesta disciplina deve ser dada uma grande nfase construo de algoritmos, usando as metodologias top-down, pseudocdigo e fluxogramas. A linguagem de programao Pascal , a indicada para se usar na iniciao programao. O Pascal deve manter-se como ponto de partida no estudo de algoritmia. Pretende-se desenvolver no aluno um raciocnio lgico, que lhe possibilite a escrita de programas estruturados.UNIDADE 1 Lgica de Programao 1.1. Anlise e desenho de um algoritmo. 1.2. Tipos de dados. 1.3. Operaes elementares. 1.4. Prioridade de operadores. 1.5. Variveis e expresses. 1.6. Traagem de algoritmos. 1.7. Fluxogramas. 1.8. Pseudocdigo. UNIDADE 2 Estrutura de deciso 1.1. Estrutura Sequencial. 1.2. Estrutura Condicional. 1.3. Estrutura de Repetio. 1.4. Algoritmos de aplicao. UNIDADE 3. Estrutura de Dados 1.1. Vectores. 1.2. Matrizes. 1.3. Cadeia de caracteres. 1.4. Ficheiros. 1.5. Algoritmos de aplicao. UNIDADE 4. Subalgoritmos 1.1. Estruturao de programas. 1.2. Funes. 1.3. Procedimentos.

Prof. Carlos Almeida

iv

_______________________________________________________________ Notas do Professor

UNIDADE 5.

Programao em Pascal 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. Ambiente de trabalho. Caractersticas da linguagem Pascal. Estrutura do programa e comentrios. Compilao para a memria e disco. Estruturas de controlo. Estruturas de dados.

1.10. Funes e Procedimentos. 1.11. Debugger. 1.12. Caractersticas grficas. 1.13. Uso de ficheiros em Pascal. 1.14. Programas de aplicao. 1.15. Programas em memria residente.

Prof. Carlos Almeida

v

______________________________________________________________________ Bibliografia

BibliografiaApontamentos do professor. AZUL, Artur Augusto (1998) - Tcnicas e Linguagens de Programao 10 Ano, Porto Editora (Livro adoptado pela disciplina). LIMA, Jorge Reis (1991) - Programao de Computadores, Porto Editora. LOPES, Jorge (1989) - Tcnicas da Programao, Editorial O Livro Manual fornecido com o software (PASCAL). O'BRIEN, Stephen K. - Turbo Pascal 6: The Complete Reference, Borland, Osborne/McGraw-Hill. Pascal, Tcnicas de Programao, Lidel. TREMBLAY, Jean-Paul; BUNT, Richard B. (1981) - Cincia dos computadores uma abordagem algortmica, McGraw-Hill. Turbo Pascal 5.0/5.5, Lidel.

Prof. Carlos Almeida

vi

__________________________________________________________________ Agradecimentos

Apoios e agradecimentos Paulo Srgio de Moraes (2000) Osmar de Oliveira Braz Jnior (1998) Alexandre Alcobia (1998)

Prof. Carlos Almeida

vii

___________________________________________________________________________ndice

ndiceNOTA INTRODUTRIA SISTEMA DE AVALIAO ELENCO TEMTICO BIBLIOGRAFIA APOIOS E AGRADECIMENTOS NDICE LGICA DE PROGRAMAO 1. LGICA 2. SEQUNCIA LGICA 3. INSTRUES 4. ALGORITMO REGRAS PARA CONSTRUO DO ALGORITMO FASES DE UM ALGORITMO TESTE DO ALGORITMO 5. PROGRAMAS EXERCCIOS 6. ABORDAGEM ESTRUTURADA E CONCEPO TOP-DOWN ABORDAGEM ESTRUTURADA CONCEPO TOP-DOWN 7. PSEUDOCDIGO ATRIBUIO LEITURA E ESCRITA DE DADOS CABEALHO DECLARAES CORPO DO ALGORITMO COMENTRIOS 8. FLUXOGRAMAS SIMBOLOGIAII III IV VI VII VIII

1 1 1 1 2 3 4 5 5 7 8 8 8 8 10 10 11 11 11 11 12 12

Prof. Carlos Almeida

viii

_______________________________________________________________ Notas do Professor

9. CONSTANTES, VARIVEIS E TIPOS DE DADOS IDENTIFICADORES CONSTANTES VARIVEIS TIPOS DE DADOS EXERCCIOS 10. OPERADORES OPERADORES ARITMTICOS HIERARQUIA DAS OPERAES ARITMTICAS OPERADORES DE COMPARAO OU RELACIONAIS OPERADORES LGICOS 11. INSTRUES SIMPLES INSTRUES DE ESCRITA INSTRUES DE LEITURA INSTRUES DE ATRIBUIO EXERCCIOS ESTRUTURAS DE DECISO 1. ESTRUTURAS FUNDAMENTAIS DE PROGRAMAO 2. ESTRUTURA DE DECISO CONDICIONAL - "SE" EXEMPLO PRTICO EXERCCIOS 3. ESTRUTURA DE DECISO DE ESCOLHA MLTIPLA - "CASO" EXEMPLO PRTICO EXERCCIOS 4. ESTRUTURAS DE REPETIO OU CICLOS 5. ESTRUTURA DE REPETIO - "PARA... FAZER" 6. ESTRUTURA DE REPETIO - "ENQUANTO... FAZER" EXERCCIOS 7. ESTRUTURA DE REPETIO - "REPETIR ... AT" 8. EXEMPLO PRTICO NMERO PRIMO ANLISE DO ALGORITMO

14 15 16 16 17 19 21 21 22 22 23 24 24 25 25 26 28 28 28 31 32 33 34 36 36 37 38 39 39 41 42

Prof. Carlos Almeida

ix

_______________________________________________________________ Notas do Professor

MELHORIA DO ALGORITMO 9. EXERCCIOS ESTRUTURA DE DADOS 1. ESTRUTURA DE DADOS 2. VECTORES EXERCCIOS SOBRE VECTORES 3. ORDENAO DE UM VECTOR 4. MATRIZES EXERCCIOS SOBRE MATRIZES 5. REGISTOS EXERCCIOS SOBRES REGISTOS 6. FICHEIROS FICHEIROS DO TIPO TEXTO FICHEIROS DO TIPO BINRIO SUPORTES FSICOS DE FICHEIROS OPERAES COM FICHEIROS 7. MANIPULAO DE FICHEIROS EM PASCAL FICHEIROS FILE TRATAMENTO DE FICHEIROS FILE FICHEIROS TEXT TRATAMENTO DE FICHEIROS TEXT EXERCCIOS SOBRE FICHEIROS

45 48 49 49 51 52 53 55 56 57 59 60 61 61 62 63 63 64 65 72 72 77

Prof. Carlos Almeida

x

1LGICA DE PROGRAMAO

1.16. Objectivos Iniciar o aluno nos conceitos da programao estruturada. Decompor um problema nas suas partes elementares atravs da tcnica TOP-DOWN. Traduzir expresses matemticas para computao e vice-versa. Realizar algoritmos simples. Verificar a eficincia dos algoritmos atravs da tcnica de traagem.

1.

Lgica

A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequncia lgica para o desenvolvimento.

Lgica de programao a tcnica de encadear pensamentos para atingir determinado objectivo.

2.

Sequncia Lgica

Estes pensamentos, podem ser descritos como uma sequncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa.

Sequncia Lgica so passos executados at atingir um objectivo ou soluo de um problema.

3.

Instrues

Na linguagem comum, entende-se por instrues um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo a informao que indica a um computador uma aco elementar a executar.

Prof. Carlos Almeida

1

____________________________________________________________Lgica de Programao

Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem sequencial lgica. Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma srie de instrues: descascar as batatas, bater os ovos, fritar as batatas, etc. evidente que essas instrues tem que ser executadas em uma ordem adequada no se pode descascar as batatas depois de frit-las. Dessa maneira, uma instruo tomada em separado no tem muito sentido; para obtermos o resultado, precisamos colocar em prtica o conjunto de todas as instrues, na ordem correcta.

Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, o que indica a um computador uma aco elementar a executar.

4.

Algoritmo

Antes de utilizarmos uma linguagem de computador, necessrio organizar as aces a serem tomadas pela mquina de forma organizada e lgica, sem nos atermos as regras rgidas da sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais aces, conhecida como algoritmo.

Algoritmo consiste em um conjunto lgico e finito de aces (instrues) que resolvem um determinado problema. Algoritmo uma sequncia lgica de instrues que podem ser executadas.

Um algoritmo formalmente uma sequncia finita de instrues que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequncia de instrues que do cabo de uma meta especfica. Estas tarefas no podem ser redundantes nem subjectivas na sua definio, devem ser claras e precisas. Como exemplos de algoritmos podemos citar os algoritmos das operaes bsicas (adio, multiplicao, diviso e subtraco) de nmeros reais decimais.

Prof. Carlos Almeida

2

____________________________________________________________Lgica de Programao

Outros exemplos seriam os manuais de aparelhos electrnicos, como um vdeo, que explicam passo-a-passo como, por exemplo, gravar um filme. At mesmo as coisas mais simples, podem ser descritas por sequncias lgicas. Por exemplo:Chupar um rebuado: 1. Pegar no rebuado 2. Retirar o papel 3. Chupar o rebuado 4. Deitar o papel no lixo

Somar dois nmeros: 1. Escrever o primeiro nmero 2. Escrever o segundo nmero 3. Somar o primeiro nmero com o segundo nmero 4. Devolver o resultado

Se analisarmos os diversos algoritmos, verificamos que contm caractersticas comuns. So elas: descrio sequencial (ordenada), cada passo corresponde a uma aco elementar clara, no devendo ocasionar ambiguidade na sua interpretao; tem um nmero finito de passos.

Algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria um nico algoritmo. Algoritmo um caminho para a soluo de um problema, e em geral, os caminhos que levam a uma soluo so muitas.

Aprender algoritmos no se consegue a no ser atravs de muitos exerccios. Algoritmos no se aprende: Copiando Algoritmos Estudando Algoritmos Algoritmos s se aprendem: Construindo Algoritmos Testando Algoritmos

Regras para construo do Algoritmo Para escrever um algoritmo precisamos descrever a sequncia de instrues, de maneira simples e objectiva. Para isso utilizaremos algumas tcnicas: usar somente um verbo por frase;

Prof. Carlos Almeida

3

____________________________________________________________Lgica de Programao

imaginar que se est a desenvolver um algoritmo para pessoas que no trabalham com informtica; usar frases curtas e simples; ser objectivo; procurar usar palavras que no tenham sentido duvidoso.

Fases de um Algoritmo importante ressaltar que qualquer tarefa que siga determinado padro pode ser descrita por um algoritmo, como por exemplo como fazer arroz doce ou ento calcular o saldo financeiro de um stock. Entretanto ao construir um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais: ENTRADA: So os dados de entrada do algoritmo. PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final. SADA: So os dados j processados.

ENTRADA

PROCESSAMENTO

SADA

Imagine o seguinte problema: Calcular a mdia final dos alunos. Os alunos realizaro 3 provas: P1, P2 e P3. Onde:

MdiaFinal =

P1 + P 2 + P3 3

Para montar o algoritmo proposto, faremos trs perguntas: a) Quais so os dados de entrada? R: Os dados de entrada so P1, P2 e P3 b) Qual ser o processamento a ser utilizado? R: O procedimento ser somar todos os dados de entrada e dividi-los por 3: (P1+P2+P3)/3 c) Quais sero os dados de sada? R: O dado de sada ser a mdia final

Prof. Carlos Almeida

4

____________________________________________________________Lgica de Programao

O algoritmo seria: Algoritmo Calcular Mdia do aluno 1. Receber a nota da prova1 2. Receber a nota de prova2 3. Receber a nota de prova3 4. Somar todas as notas e dividir o resultado por 3 5. Mostrar o resultado da diviso

Teste do Algoritmo Aps desenvolver um algoritmo ele dever sempre ser testado. Deve-se seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correcto ou no. No exemplo do algoritmo anterior, para calcular a mdia final do aluno, podia-se utilizar a seguinte tabela para o teste: P1 P2 P3 MdiaFinal

Explique o que entende por algoritmo.

5.

Programas

Programar consiste em elaborar um conjunto finito de instrues, reconhecidas pela mquina, de forma que o computador execute estas instrues. Estas instrues possuem regras e uma sintaxe prpria, como uma linguagem tipo portugus ou ingls, sendo isto chamadas de linguagem de programao. No mundo computacional existe uma grande variedade de linguagens: Pascal, C, C++, Visual Basic, Cobol, Fortran, etc. Ns iremos enfocar uma delas, o Pascal.

Os programas de computadores nada mais so do que algoritmos escritos numa linguagem de programao (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que so interpretados e executados por uma mquina, no caso um computador. Notem que dada esta interpretao rigorosa, um programa por natureza muito especfico e rgido em relao aos algoritmos da vida real.

Prof. Carlos Almeida

5

____________________________________________________________Lgica de Programao

Para fazer um programa devemos ter claro o algoritmo do nosso problema. Portanto, primeiro h que estudar o problema e elaborar o seu algoritmo. Uma vez estabelecido o seu algoritmo podemos, ento, passar para a sua implementao numa linguagem de programao e assim testar o programa no computador. Concluindo, a construo de um programa comporta duas fases fundamentais:

fase de resoluo do problema - consiste na formulao do algoritmo eficaz para a resoluo do problema posto; fase de implementao - consiste na traduo do algoritmo para a linguagem de programao escolhida.

Como exemplo, apresentado o algoritmo e sua traduo em linguagem Pascal, do clculo do mltiplo de um nmero.Algoritmo do clculo dos mltiplos de um nmero: 1. Anotar o limite dos mltiplos (limite) 2. Anotar o nmero do qual se quer saber os mltiplos (nmero) 3. O primeiro mltiplo o prprio nmero (mltiplo = nmero) 4. Enquanto o mltiplo for menor que o limite indicado fazer: 4.1. Anotar o mltiplo 4.2. O novo mltiplo ser igual ao mltiplo anterior mais o nmero (mltiplo = mltiplo + nmero) 5. Fim do algoritmo.

program Multiplos (input, output); {Este programa est escrito na linguagem PASCAL}; uses Crt; var Limite : integer; Numero : integer; Multiplo : integer; begin clrscr; write (Qual o valor de que se quer achar os mltiplos? ); readln (Numero); write (Qual o limite da sequncia? ); readln (Limite); writeln (Os mltiplos de ,Numero, so: ); Multiplo := Numero;

Prof. Carlos Almeida

6

____________________________________________________________Lgica de Programao

while Multiplo < Limite do begin writeln (Multiplo); Multiplo := Multiplo + Numero; end; end.

ExercciosConstrua o algoritmo para calcular a rea de um rectngulo.Algoritmo rea do rectngulo 1. Entrar pelo teclado o valor do lado1 2. Entrar pelo teclado o valor do lado2 3. Calcular a rea A = lado1 x lado2 4. Apresentar no ecr o valor da rea

Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro nmero.

Crie uma sequncia lgica para tomar banho.

Descreva com detalhes a sequncia lgica para trocar um pneu de um carro.

Faa um algoritmo detalhado para trocar uma lmpada.

Algoritmo do calculo da hipotenusa de um tringulo rectngulo.Temos que saber a frmula: hipot

= cateto12 + cateto2 2

Alm da frmula, temos que dar ao computador os valores dos catetos do tringulo.

Construa um algoritmo que transforme os valores da temperatura em graus Fahrenheit para graus Clsius.Tente resolver este problema, sabendo que a frmula a aplicar ser:

celsius =

5 ( fahr 32) 9

Prof. Carlos Almeida

7

____________________________________________________________Lgica de Programao

Identifique os dados de entrada, processamento e sada no algoritmo seguinte:1. Receber cdigo da pea 2. Receber valor da pea 3. Receber Quantidade de peas 4. Calcular o valor total da pea (Quantidade * Valor da pea) 5. Mostrar o cdigo da pea e seu valor total

Faa um algoritmo para Calcular o stock mdio de uma pea, sabendo que STOCK_MDIO = (QUANTIDADE_MNIMA + QUANTIDADE_MXIMA) /2

Teste o algoritmo anterior com dados sua escolha.

6.

Abordagem Estruturada e Concepo Top-Down

Abordagem Estruturada Numa linguagem estruturada como por ex. o Pascal distingue-se a parte onde so declarados os dados e o corpo com as instrues do programa parte declarativa e parte operativa.

Abordagem estruturada uma abordagem sistemtica da construo de software que usa princpios como a separao das definies de dados e de programa, concepo descendente (designado por abordagem top-down) e refinamento progressivo.

Concepo Top-Down A abordagem top-down procura identificar os pontos essenciais da questo; parte-se dos pontos mais gerais para os seus componentes mais particulares, em nveis sucessivos mais concretos, at ao nvel de pormenor desejado.

7.

Pseudocdigo

Por pseudocdigo entende-se um cdigo de escrita em que se utilizam representaes simblicas para indicar as instrues do algoritmo. Essas

Prof. Carlos Almeida

8

____________________________________________________________Lgica de Programao

representaes simblicas so, usualmente, um misto de palavras da nossa linguagem natural com termos e notaes tpicas de uma linguagem de programao. O uso da escrita em pseudocdigo presta-se a uma aproximao sucessiva verso do algoritmo na linguagem utilizada, ou seja, pode-se ir progredindo por fases, revendo o pseudocdigo e substituindo-o progressivamente por terminologia prpria da linguagem de programao. No demais relembrar que, depois de efectuar o algoritmo, deve-se verificar se est escrito sem falhas do ponto de vista dos objectivos que se pretendiam alcanar, por imprecises, deficiente formulao algortmica, vcios de raciocnio, etc.

O pseudocdigo pode ser visto como a tentativa de fundir a expressividade da linguagem natural e o rigor lgico de esquemas como o fluxograma. O pseudocdigo permite a descrio do algoritmo de uma forma linear, fcil de ler e fcil de compreender.

Os algoritmos tero a seguinte estrutura:Algoritmo Incio Fim

Por curiosidade, em Pascal ficaria da seguinte forma:PROGRAM ; ; BEGIN ; END.

O algoritmo, em pseudocdigo, deve estar enquadrado entre dois indicadores que possibilitem determinar onde o algoritmo comea e acaba. Assim, aparecem as instrues Incio e Fim.

Prof. Carlos Almeida

9

____________________________________________________________Lgica de Programao

Atribuio Esta operao tem por objectivo atribuir um valor a uma varivel. A varivel funciona como um recipiente em que vo ser colocados dados. Temos de criar tantas variveis (recipientes) quantas as forem necessrias para o correcto funcionamento do algoritmo. A operao de atribuio coloca o dado na varivel. Exemplo: X B/A (na varivel X colocado o valor de B/A)

Leitura e Escrita de Dados A instruo Escrever utilizada para apresentar os dados ao utilizador. Exemplo: Escrever(O valor da rea : , rea)

A instruo Ler utilizada para introduzir dados no computador atravs do operador. Estes dados so afectados a variveis. Exemplo: Ler(A, B)

Vejamos um exemplo em pseudocdigo do algoritmo da circunferncia e vamos descrever a sua apresentao:Algoritmo circunferncia [Este algoritmo d as caractersticas de uma circunferncia] Dados RAIO: Inteiro REA, PERMETRO: Reais PI Incio Ler (RAIO) REA PI x RAIO2 2 x PI x RAIO 3,14159

PERMETRO

Escrever (REA, PERMETRO) Fim

Num algoritmo, podemos definir trs seces:

Cabealho Declaraes Corpo do algoritmo

Prof. Carlos Almeida

10

____________________________________________________________Lgica de Programao

Cabealho O cabealho a seco onde dado o nome ao algoritmo. Comea com a palavra Algoritmo.

Declaraes Nesta, apresentada a descrio das variveis e constantes usadas.

Corpo do algoritmo Esta seco contm a sequncia das instrues (aces) do algoritmo. Inicia-se com a palavra Incio e termina com a palavra Fim.

Comentrios Existe um tipo de objecto de grande importncia na clarificao de um algoritmo. So os comentrios que ajudam muito sua compreenso. Cada passo do algoritmo pode iniciar com um comentrio entre dois parnteses rectos. Estes comentrios do uma breve descrio da instruo ou de um conjunto de instrues seguintes.

Os comentrios so uma parte importante do algoritmo. Eles servem para tornar a leitura, do algoritmo, mais fcil e clara.

Prof. Carlos Almeida

11

____________________________________________________________Lgica de Programao

8.

Fluxogramas

O fluxograma uma forma padronizada e eficaz para representar as instrues lgicas de um determinado processamento. Com o fluxograma podemos definir uma sequncia de smbolos, com significado bem definido, portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento. Actualmente, a sua utilizao restringe-se a um apoio complementar na documentao do algoritmo, valendo pela vantagem grfica da apresentao das interligaes.

Simbologia Existem diversos smbolos num fluxograma. Vamos apresentar os mais utilizados.

Vejamos de seguida alguns dos smbolos que iremos utilizar:

Processamento em geral (ex. soma de dois nmeros) Leitura/Escrita de dados (ex. escrever a nota da prova escrita) Incio/Fim de processamento (ex. inicio do algoritmo) Conector de fluxos (ex. Ligao entre partes do fluxograma)

Deciso condicional

Escolha mltipla

Subprograma

Linha de fluxo

Dentro de cada smbolo ter sempre algo escrito, pois caso contrrio no nos dizem nada. Vejamos o seguinte exemplo, na linguagem pseudocdigo e respectivo fluxograma, que faz a comparao de dois nmeros:

Prof. Carlos Almeida

12

____________________________________________________________Lgica de Programao

PseudocdigoAlgoritmo Comparar Dados VALOR1, VALOR2: Inteiros FRASE: Caracteres Incio Ler (VALOR1, VALOR2) Se VALOR1 > VALOR2 ento FRASE Seno Se VALOR1 < VALOR2 ento FRASE Seno FRASE Valores iguais Valor2 maior Valor1 maior

Fluxograma

Fim se Fim se Escrever (FRASE) Chamar Rotina Adeus

Inicio

Fim

Ler valor1

Ler valor2

Valor1>Valor2

No

Valor2>Valor2

No

Sim Escrever "Valor1 maior"

Sim Escrever "Valor2 maior" Escrever "Valores iguais"

Rotina Adeus

Fim

Prof. Carlos Almeida

13

____________________________________________________________Lgica de Programao

9.

Constantes, Variveis e Tipos de Dados

Considere a frmula simples de matemtica do calculo do volume de uma

4 esfera: V = R 2 . Nesta formula pode-se encontrar: 31. Valores que podem ser classificados como: a. valores constantes, invariantes em todas as aplicaes da frmula, no caso dos valores 4, 3 e ; b. valores a serem substitudos na frmula, em cada aplicao; a representao destes valores, usualmente feita atravs de letras, que recebem o nome de variveis e tornam a frmula genrica, possvel de ser aplicada para resolver uma certa classe de problemas e no apenas um problema especfico. 2. Operaes a serem feitas sobre determinados operandos (valores), para a obteno da soluo do problema.

O computador possui uma rea de armazenamento conhecida como memria. Todas as informaes existentes no computador esto ou na memria primria (memria RAM), ou na memria secundria (disco duro, disquete, CD-ROM etc.). A memria do computador pode ser entendida como uma sequncia finita de caixas ou gavetas de um armrio, que num dado momento, guardam algum tipo de informao, como nmero, uma letra, uma palavra, uma frase etc.. O computador, para poder trabalhar como alguma destas informaes, precisa saber onde, na memria, a informao est localizada. Fisicamente, cada caixa, ou cada posio de memria, possui um endereo, ou seja, um nmero, que indica onde cada informao est localizada. este nmero representado atravs da notao hexadecimal, tendo o tamanho de quatro, ou mais bytes.

Variveis e constantes so os elementos bsicos que um programa manipula. Muitos dos dados com que se opera num algoritmo so variveis. Uma varivel um espao reservado na memria do computador para armazenar um tipo de dado determinado.

Prof. Carlos Almeida

14

____________________________________________________________Lgica de Programao

Identificadores As variveis e constantes num algoritmo so designadas por meio de identificadores. Um identificador um nome normalmente atribudo a um elemento com que se pretende trabalhar dentro de um algoritmo. Um identificador formado por uma letra ou ento por uma letra seguida de letras ou dgitos. No permitido o uso de espaos em branco ou de qualquer outro caracter, que no seja letra ou dgito. Se utilizar mais do que uma palavra para compor o nome da varivel utilize o _ underline para separar as palavras. Por conveno, vamos escrever o nome dos identificadores em letras maisculas, para maior legibilidade do algoritmo.

A formao do identificador deve ser um nome significativo, para que se possa ter ideia do seu contedo.

Exemplos, apresentados numa tabela com possveis entidades e os correspondentes identificadores das variveis:ENTIDADES Nome do cliente Morada dos clientes Data em que foi feita a encomenda IDENTIFICADORES NOME_CLIENTE MORADA DATA

Quando se trata de variveis, um identificador vai traduzir-se em termos de compilao, num endereo de memria, o qual corresponde a um determinado espao nessa mesma memria, onde se vai armazenar um dado - o valor que a dita varivel assume em cada momento. Isto leva-nos a considerar, em programao, que um identificador um endereo simblico, pois que se preferimos, um candidato a endereo de memria.

Um identificador um nome normalmente atribudo pelo algoritmo ou utilizador a um elemento com que se pretende trabalhar dentro de um algoritmo. Em programao, um identificador um endereo simblico, um candidato a endereo de memria.

Prof. Carlos Almeida

15

____________________________________________________________Lgica de Programao

Constantes Constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um programa. Conforme o seu tipo, a constante classificada como sendo numrica, lgica e alfanumricas.

Constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um programa.

Exemplo de declaraes de constantes, em pseudocdigo:Constantes PI 3,14 30 Sem nome

MAXIMO

POR_DEFEITO

Variveis Varivel a representao simblica dos elementos de um certo conjunto. Cada varivel corresponde a uma posio de memria, cujo contedo pode se alterado ao longo do tempo durante a execuo de um programa. As variveis podem assumir:

um carcter global, quando so declaradas para uso em todo o algoritmo; um carcter local, quando so declaradas apenas para uso dentro do subalgoritmo.

Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. As variveis s podem armazenar valores de um mesmo tipo, de maneira que tambm so classificadas como sendo numricas, lgicas e alfanumricas.

Uma varivel uma posio de memria, representada por um Identificador, a qual contm, num dado instante, uma informao.

Exemplos de declaraes de variveis em pseudocdigo:

Prof. Carlos Almeida

16

____________________________________________________________Lgica de Programao

Variveis MAXIMO, NUM: Inteiro NOME: Caracteres SAIR: Lgico

Outros exemplos:

Variveis

TOTAL

PRODUTO * QUANTIDADE Varivel Contedo da Varivel

NOME TOTAL

Carlos Almeida 30

Tipos de Dados As variveis e as constantes podem ser basicamente de trs tipos: Numricas (Inteiro ou real), alfanumricas (caracter ou cadeia de caracteres) ou lgicas.

Numricas: Especficas para armazenamento de nmeros, que posteriormente podero ser utilizados para clculos. Podem ser ainda classificadas como Inteiras ou Reais. As variveis do tipo inteiro so para armazenamento de nmeros inteiros e as Reais so para o armazenamento de nmeros que podem ter partes decimais.

Alfanumricas: Existem actualmente vrios cdigos susceptveis de ser utilizados pelos computadores digitais. Alguns desses cdigos permitem representar, no apenas grandezas numricas, mas tambm caracteres literais e sinais de pontuao. exemplo o cdigo ASCII ("American Standard Code for Information Interchange" leia-se "squi"), usado na transferncia de informao entre um computador e os seus dispositivos perifricos. Trata-se de um cdigo que utiliza combinaes de oito bits (28 = 256) para representar os dez algarismos decimais (0, 1, 2, ..., 9), os caracteres do alfabeto (a, b, ..., z, A, B, ..., Z), sinais de pontuao, parntesis, sinais das operaes aritmticas e de igualdade, e mais uma srie de caracteres de controlo, entre outros smbolos, num total de 256 smbolos.

Prof. Carlos Almeida

17

____________________________________________________________Lgica de Programao

Os cdigos que se destinam a traduzir, no s informao numrica, mas tambm caracteres do alfabeto e sinais convencionais so denominados cdigos alfanumricos. O cdigo ASCII, referido acima, representa o cdigo alfanumrico universalmente aceite. Os dados do tipo caracter (Char em Pascal) correspondem a caracteres individuais. Os caracteres disponveis so geralmente os caracteres da Tabela ASCII. Este tipo de dado pode assumir qualquer caracter da referida Tabela ASCII, mas apenas um de cada vez. Por curiosidade, existe rotinas para converter um dado nmero inteiro para o correspondente caracter na Tabela ASCII. Por exemplo, a funo CHR, em Pascal. Por sua vez, existe rotinas que d o ordinal de um dado caracter, por exemplo a funo ORD em Pascal. Para facilitar a manipulao de palavras ou mensagens, dentro de um programa, existe outro tipo de dados: Cadeia de caracteres (tambm deignado por: Cadeia Alfanumrica, texto, ou simplesmente caracteres). Estes tipos de dados so mais adequados ao manuseamento de texto, nas instrues de leitura, escrita e atribuio. Em Pascal este tipo de dados representado pelo tipo de varivel: String. Numa atribuio de um valor a uma varivel do tipo CHAR (Caracter) ou STRING (Cadeia de caracteres), temos que ter o cuidado de colocar o valor (dado) entre aspas (), pois esta a forma de informar que a informao caracter ou cadeia de caracteres.

Lgicas: Os dados do tipo lgico, so dados que podem assumir apenas dois valores possveis: verdadeiro e falso. A sua utilidade reside, fundamentalmente, ao nvel do seu emprego em estruturas de controlo.

As variveis do tipo inteiro so para armazenamento de nmeros inteiros e as Reais so para o armazenamento de nmeros que podem ter partes decimais. Os dados do tipo caracter correspondem a caracteres individuais. Os caracteres disponveis so geralmente os caracteres da Tabela ASCII. Existe tipos de dados mais adequados ao manuseamento de texto, nas instrues de leitura, escrita e atribuio. Este tipo de dados representado pelo tipo de varivel: Caracteres. Os dados do tipo lgico, so dados que podem assumir apenas dois valores possveis: verdadeiro e falso.

Prof. Carlos Almeida

18

____________________________________________________________Lgica de Programao

O que uma constante? D dois exemplos. O que uma varivel? D dois exemplos.

O Pascal exige que no momento da declarao das variveis, se define o tipo de informao que uma varivel pode conter, isto , se uma dada posio de memria armazenar um nmero ou uma letra etc. Para isto, a linguagem Pascal possui definido alguns tipos de dados para a declarao de variveis. Alguns destes tipos de dados 0so representados na seguinte tabela:

Pseudocdigo Inteiro Real Caracter Caracteres Lgico

Pascal Integer Real Char String Bolean Word Byte Shor Int LongInt Single Double

Descrio Representa nmeros entre -32768 at +32767. ocupa 2 bytes na memria. Representa os nmeros entre 2.9 x 10-39 at 1.7 x 1038. Ocupa 6 bytes na memria. Representa um dos caracteres, da tabela ASCII. Ocupa 1 byte na memria. Conjunto de caracteres (Char). Ocupa de 1 a 255 bytes na memria. Valor lgico. Assuma somente dois valores: TRUE (Verdade) ou FALSE (Falso). ocupa 1 byte na memria. Nmeros de 0 at 65535. Ocupa 2 bytes na memria. Nmeros de 0 at 255. Ocupa 1 byte na memria. Representa os nmeros entre -128 at 128. Ocupa 1 bytes na memria. Representa os nmeros entre -2147483648 at 2147483648. Ocupa 4 bytes na memria. Representa os nmeros entre 1.5 x 10-45 at 3.4 x 1038. Ocupa 4 bytes na memria. Representa os nmeros entre 5 x 10-324 at 1.7 x 10308. Ocupa 8 bytes na memria.

Exerccios1. Explicite a diferena entre uma constante e uma varivel, no contexto de um programa.

Descreva resumidamente o que se passa ao nvel dos identificadores de variveis, quando um programa entra em execuo e esses identificadores so tratados internamente pelo computador.

Prof. Carlos Almeida

19

____________________________________________________________Lgica de Programao

Identifica o tipo de cada uma das constantes a) 613 b) R c) 1 d) 613,0 e) -613 f) 613 g) -3,012 * 1015 h) Falso i) 17 * 1012 j) -28,3 * 10-23 k) Fim de Questo

Elabore um Algoritmo para atribuir a variveis as seguintes informaes: l) 12345 m) 123456 n) -1122 o) 10,45 p) VERDADE q) c r) Amor

Qual a diferena existente nas seguintes atribuies? s) Letra Nome t) Letra Nome A Joo A Joo

correcto definir uma varivel como sendo Carcter e atribuirmos a ela o valor: PEDRO? E se a varivel fosse definida como Caracteres (cadeia de caracteres), a mesma poderia receber um valor do tipo Caracter?

Prof. Carlos Almeida

20

____________________________________________________________Lgica de Programao

No seguinte Algoritmo existe algum erro? Onde?Algoritmo Teste Variveis MARIA: Caracteres IDADE: Inteiro LETRA: Caracter MARIA: Real

Inicio IDADE IDADE IDADE LETRA LETRA LETRA LETRA IDADE Fim 23 678 LETRA 300 abc A 22 IDADE_ALUNO

10. OperadoresOs operadores so meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos trs tipos de operadores:

Operadores Aritmticos Operadores Relacionais Operadores Lgicos

Operadores Aritmticos Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da adio, subtraco, multiplicao e diviso, podem utilizar tambm o operador para exponenciao. Os operadores aritmticos utilizam-se normalmente com dois operandos. No entanto, os operadores + e - tambm podem ser usados com um s operando, caso em que significam: o sinal positivo ou o sinal negativo atribudo ao operando.

Prof. Carlos Almeida

21

____________________________________________________________Lgica de Programao

Os smbolos para os operadores aritmticos so:OPERADORES ARITMTICOS DESIGNAO OPERADOR + Adio Subtraco * Multiplicao / Diviso MOD Resto da diviso (Resto) DIV Diviso inteira (Quociente) ^ potenciao

Hierarquia das Operaes Aritmticas A hierarquia das operaes aritmticas so: 1. ( ) parnteses 2. ^ exponenciao 3. * ou / multiplicao ou diviso (o que aparecer primeiro) 4. + ou soma ou subtraco (o que aparecer primeiro)

Exemplo:1 + 7 * 2 ^ 2 1 = 28 3 * (1 2) + 4 * 2 = 5

Operadores de Comparao ou Relacionais Os operandos empregues com os operadores de comparao devem ser de tipos compatveis entre si. Os resultados que devolvem so sempre do tipo valor lgico, ou seja, verdadeiro ou falso. Estes operadores podem ser usados com quaisquer tipos de ordinais, com reais e alfanumricos. Para estabelecer prioridades no que diz respeito a qual operao executar primeiro, utiliza-se os parnteses.

Os operadores relacionais so:Operadores de Comparao Designao Operador = igual a diferente de ou > maior que < menor que maior ou igual a ou >= menor ou igual a ou B A < B A >= B A C AB OR BB AC A>=B OR B=C NOT A