Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução às Operações Básicas em Linguagens de Programação I, Notas de estudo de Engenharia Mecânica

Conceitos básicos sobre operações de entrada e saída, variáveis, estruturas de repetição e controle, e matrizes em linguagens de programação i. Além disso, é discutido sobre a existência de quatro operações básicas que qualquer computador pode executar: operações de entrada e saída, aritméticas, lógicas e de controle.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 09/02/2008

gabriel-de-sa-9
gabriel-de-sa-9 🇧🇷

4.3

(4)

3 documentos

1 / 38

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Federal da Paraíba
ALGORÍTIMOS
E
PASCAL
Prof: Gilberto Farias de Sousa Filho
JOAO PESSOA/PB
MARCO DE 2005
Capítulo 1
ALGORITMOS
1.1. CONCEITO
A palavra algoritmo, à primeira vista, parece-nos estranha. Embora possua designação desconhecida,
fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma
banho é um algoritmo. Outros algoritmos freqüentemente encontrados são:
instruções para se utilizar um aparelho eletrodoméstico;
uma receita para preparo de algum prato;
guia de preenchimento para declaração do imposto de renda;
a regra para determinação de máximos e mínimos de funções por derivadas sucessivas;
a maneira como as contas de água, luz e telefone são calculadas mensalmente; etc.
São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui:
“Um conjunto finito de regras que provê uma seqüência de operações para resolver um
tipo de problema específico”
PAGE 2
Linguagens e Técnicas de Programação I
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26

Pré-visualização parcial do texto

Baixe Introdução às Operações Básicas em Linguagens de Programação I e outras Notas de estudo em PDF para Engenharia Mecânica, somente na Docsity!

Universidade Federal da Paraíba

ALGORÍTIMOS

E

PASCAL

Prof: Gilberto Farias de Sousa Filho

JOAO PESSOA/PB

MARCO DE 2005

Capítulo 1

ALGORITMOS

1.1. CONCEITO

A palavra algoritmo , à primeira vista, parece-nos estranha. Embora possua designação desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo. Outros algoritmos freqüentemente encontrados são:

  • instruções para se utilizar um aparelho eletrodoméstico;
  • uma receita para preparo de algum prato;
  • guia de preenchimento para declaração do imposto de renda;
  • a regra para determinação de máximos e mínimos de funções por derivadas sucessivas;
  • a maneira como as contas de água, luz e telefone são calculadas mensalmente; etc.

São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui:

“Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico”

Linguagens e Técnicas de Programação I

[KNUTH]

“Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY]

“Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO]

1.2. 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 - Professor da Universidade de Stanford, autor da coleção “The art of computer programming”]

“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 especificar 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ífica e até mesmo do próprio computador.

1.3. CARACTERÍSTICAS

Todo algoritmo deve apresentar algumas características básicas:

  • ter fim;
  • não dar margem à dupla interpretação (não ambíguo);
  • capacidade de receber dado(s) de entrada do mundo exterior;
  • poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo;
  • ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito).

Linguagens e Técnicas de Programação I

Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos.

EXEMPLO: Algoritmo CALCULA_DOBRO início Leia NUM DOBRO F 0 D F 2 * NUM Escreva DOBRO fim

VANTAGENS:
  • Independência física da solução (solução lógica apenas);
  • Usa o português como base;
  • (^) Pode-se definir quais e como os dados vão estar estruturados;
  • Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

DESVANTAGENS:

  • (^) Exige a definição de uma linguagem não real para trabalho;
  • Não padronizado.

1.5. UM AMBIENTE PARA ESCREVER ALGORITMOS

Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O nosso computador hipotético apresentará a seguinte organização:

Linguagens e Técnicas de Programação I

Convenção: trajeto de dados

trajeto de sinais de controle

Cada uma das partes constituintes da figura acima tem os seguintes significados:

(1) Dispositivo de entrada (o teclado): É o meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos em nosso computador hipotético;

(2) Unidade Lógica e Aritmética (ULA): Parte responsável pelas operações matemáticas e avaliações lógicas;

(3) Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. É uma verdadeira gerente que distribui tarefas às outras unidades;

(4) Memória: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na memória;

(5) Dispositivo de Saída (vídeo e impressora): É o meio que se dispõe para apresentação dos resultados obtidos. 1.5.1. FUNCIONAMENTO DO NOSSO COMPUTADOR

Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos casos especiais).

Linguagens e Técnicas de Programação I

3.1.3. A LINGUAGEM PASCAL

A linguagem de programação PASCAL foi criada para ser uma ferramenta educacional, isto no início da década de 70 pelo Prof. Niklaus Wirth da Universidade de Zurique. Foi batizada pelo seu idealizador em homenagem ao grande matemático Blaise Pascal, inventor de uma das primeiras máquinas lógicas conhecidas. Foi baseada em algumas linguagens estruturadas existentes na época, ALGOL e PLI.

Apesar de seu propósito inicial, o PASCAL começou a ser utilizado por programadores de outras linguagens, tornando-se, para surpresa do próprio Niklaus, um produto comercial. Contudo, somente ao final de 1983 foi que a empresa americana Borland International lançou o TURBO PASCAL.

O TURBO PASCAL é um programa que contém, além do compilador PASCAL, um ambiente completo de programação, com editor de programa, depurador de erros, sistema de ajuda, etc.

Estudaremos, a seguir, os itens fundamentais que compõe a linguagem PASCAL.

3.2. ELEMENTOS BÁSICOS

3.2.1. IDENTIFICADORES

São nomes escolhidos para representar constantes, variáveis, tipos, funções, procedimentos, unidades, programas e campos de um registro. Para definirmos um identificador, devemos observar o seguinte:

pode ter qualquer comprimento, mas apenas os sessenta e três primeiros caracteres são significativos;

deve ter como primeiro caracter uma letra;

após a primeira letra só pode conter letras, dígitos ou sublinha ( _ );

não pode conter espaços;

letras maiúsculas e minúsculas são indiferentes;

não podem haver identificadores repetidos;

não pode ser uma palavra reservada.

3.2.2. PALAVRAS RESERVADAS

São palavras que têm um sentido predeterminado na linguagem e não podem ser usadas como identificadores.

ABSOLUTE END INLINE PROCEDURE TYPE
AND EXTERNAL INTERFACE PROGRAM UNIT
ARRAY FILE INTERRUPT RECORD UNTIL
BEGIN FOR LABEL REPEAT USES
CASE FORWARD MOD SET VAR
CONST FUNCTION NIL SHL WHILE
DIV GOTO NOT SHR WITH
DO IF OF STRING XOR
DOWNTO IMPLEMENTATION OR THEN
ELSE IN PACKED TO

Linguagens e Técnicas de Programação I

3.3. TIPOS DE DADOS

3.3.1. SIMPLES

INTEGER - Envolve os números inteiros. Na versão 5.0 do Turbo Pascal, existem também outros tipos de números inteiros: SHORTINT, BYTE, WORD e LONGINT.

Tipo Valor mínimo Valor máximo Bytes ocupados SHORTINT -128 127 1 BYTE 0 255 1 INTEGER -32768 32767 2 WORD 0 65535 2 LONGINT -2147483648 2147483647 4

Exemplos: -45, 1, 138, 0, -

REAL - abrange os números reais. Na versão 5.0, existem também outros tipos de números reais: SINGLE, DOUBLE, EXTENDED e COMP.

Tipo Valor mínimo

Valor máximo

Bytes ocupados

Dígitos Significativos REAL 2.9 x 10 -39^ 1.7 x 10^38 6 11- SINGLE (^) 1.5 x 10 -45^ 3.4 x 10^38 4 7- DOUBLE 5.0 x 10 -324^ 1.7 x 10^308 8 15- EXTENDED 3.4 x 10-4932^ 1.1 x 10^4932 10 19- COMP (^) -2 63 + 1 2 63 - 1 8 19-

Exemplos: 4.5, -32.0, .5, 7.8E3, 21E+3, -315E-

CHAR - representa um único caracter, escrito entre apóstrofos ( ‘ ). A maioria dos computadores utilizam a tabela de códigos ASCII para representar todos os caracteres disponíveis. Exemplos:

'A', 'B', 'a', '1', '@', ' '

BOOLEAN - representa um valor lógico. Utiliza apenas duas constantes lógicas: TRUE (verdadeiro) e FALSE (falso).

3.3.2. ESTRUTURADOS

STRING - formado por um conjunto de elementos do tipo CHAR. O tamanho máximo é de 255 caracteres. Exemplos:

'ASPER', 'Processamento de Dados', '123’

Discutiremos com mais detalhes o tipo string em um capítulo especialmente dedicado a este fim.

Os outros tipos de dados estruturados são: ARRAY , RECORD , FILE , SET e TEXT e serão apresentados no decorrer da apostila.

3.3.3. DEFINIDOS PELO USUÁRIO

A linguagem Pascal permite que os programadores, além de usar os tipos predefinidos na linguagem, também possam criar novos tipos de dados. Isto torna-se bastante útil quando lidamos com estruturas de dados complexas, como também ajuda a tornar o programa mais legível. Este assunto, pela sua complexidade, será abordado mais adiante.

Linguagens e Técnicas de Programação I

EXP(X) (^) Exponencial Real Real

Linguagens e Técnicas de Programação I

Como não existe em Pascal um operador nem uma função específica para a operação de Potenciação,

Linguagens e Técnicas de Programação I

and (^) e (conjunção) or (^) ou (disjunção)

A tabela verdade (abaixo) apresenta o resultado de cada operador lógico, com os valores dados para as expressões lógicas A e B:

A B A and B A or B not A not B TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE

3.5.3. PRIORIDADE

Em uma expressão lógica, a ordem de avaliação dos operadores segue a tabela abaixo:

Prioridade Operadores 1ª NOT 2ª AND 3ª OR 4ª =^ >^ <^ >=^ <=^ <>

Como a ordem de precedência dos operadores lógicos é maior que a dos operadores relacionais, devem sempre ser usados parênteses quando se escrever uma expressão lógica complexa. Por exemplo:

( A > B ) OR ( B = C )

EXERCÍCIOS PROPOSTOS

P3.13. Qual o resultado das expressões aritméticas abaixo, sabendo-se que os valores de X, Y e Z são, respectivamente, 1, 2 e 5?

a) Z mod Y div Y b) X + Y + Z / 3 c) FRAC( X / Z) + ROUND(Z / y) * TRUNC(Z / Y) d) SQRT( Z div Y + X * Y) e) Z - ABS(X - SQR(Y))

P3.14. O que são Funções Predefinidas?

P3.15. Escreva o resultado das seguintes funções:

a) ABS(-4) b) ABS(5.2) c) FRAC(23.0) d) FRAC(-3.1) e) TRUNC(1.8) f) TRUNC(2.2) g) ROUND(1.8) h) ROUND(2.2) i) SQR(1.0) j) SQR(10) k) SQRT(25) l) SQRT(9.0)

P3.16. Escreva a expressão para se calcular o valor de 2^5.

P3.17. Preencha a Tabela Verdade abaixo:

A B A and B A or B not A not B TRUE TRUE TRUE FALSE

Linguagens e Técnicas de Programação I

FALSE TRUE
FALSE FALSE

Linguagens e Técnicas de Programação I

CONST BRANCO = ' ' ; PI = 3.1416 ; MAX = 10 ; OK = TRUE;
3.6.3. DECLARAÇÃO DE TIPOS

Serve para definirmos novos tipos e estruturas de dados. Não detalharemos esse tópico agora por ser assunto dos próximos capítulos..

3.6.4. DECLARAÇÃO DE VARIÁVEIS

Serve para associarmos tipos às variáveis utilizadas no programa. Possui o seguinte formato:

VAR <lista-de-identificadores> : ; ... <lista-de-identificadores> : ;

Onde:

<lista-de-identificadores> é uma lista de nomes de variáveis de um mesmo tipo, separadas por vírgula. é o nome de um dos tipos predefinidos na linguagem ou criado pelo programador.

EXEMPLO:

VAR X,Y,Z : REAL; I,J : INTEGER; ACHOU : BOOLEAN; LETRA : CHAR; PALAVRA,FRASE : STRING;

3.6.5. DECLARAÇÃO DE PROCEDIMENTOS E FUNÇÕES

Nesta área são definidos os procedimentos e funções utilizados pelo programa. Também é um assunto que será detalhado mais adiante.

3.6.6. ÁREA DE COMANDOS

É nesta área onde é inserido o algoritmo do programa. Os comandos são separados entre si pelo delimitador ponto-e-vírgula. A forma geral é:

BEGIN ; ... ; END

Linguagens e Técnicas de Programação I

3.7. COMENTÁRIOS

Um comentário é usado para aumentar a clareza de um programa, embora não seja analisado pelo computador. Deve ser escrito entre chaves:

{ comentário }

EXEMPLO:

Program REAJUSTE_SALARIO; {Finalidade: Calc. o reajuste de um salario em 20%}

Uses Crt;

Const IND = 0.20; {indice do reajuste}

Var SAL_ATUAL {salario atual}, SAL_NOVO {novo salario}, AUMENTO {valor do aumento} : Real;

Begin

clrscr; {limpa a tela}

{leitura do salario atual} write('Digite o salario atual: '); readln(SAL_ATUAL);

{calculo do reajuste} AUMENTO := SAL_ATUAL * IND; SAL_NOVO := SAL_ATUAL + AUMENTO;

{exibicao do resultado} writeln('Novo Salario = ',SAL_NOVO:10:2);

readkey;

End.

EXERCÍCIOS PROPOSTOS

P3.20. Qual o formato básico de um programa Pascal?

P3.21. Quais as áreas que podem existir em um bloco do Pascal? Qual delas é obrigatória?

P3.22. Qual a finalidade das seguintes áreas:

a) Declaração de Uso de Unidades b) Declaração de Constantes c) Declaração de Tipos d) Declaração de Variáveis e) Declaração de Procedimentos e Funções f) Área de Comandos

P3.23. Dê um exemplo para cada uma das áreas abaixo:

a) Declaração de Uso de Unidades b) Declaração de Constantes c) Declaração de Variáveis

P3.24. Qual a finalidade de um comentário dentro de um programa? Como deve ser escrito?

Capítulo 4

Linguagens e Técnicas de Programação I

readln (SALÁRIO); ...

4.3. SAÏDA

Um comando de saída serve para que o programa mostre ao usuário os resultados desejados. A unidade de saída padrão é o monitor de vídeo, podendo ser também a impressora ou uma memória auxiliar como o disco.

Considerando a unidade de saída padrão, o monitor de vídeo, o comando seria:

WRITE (<expressão-1>,...,<expressão-n>) ... ou ... WRITELN (<expressão-1>,...,<expressão-n>)

Com WRITE o cursor permanece na mesma linha após a execução do comando; com WRITELN o cursor muda para a próxima linha.

EXEMPLO: A:=1; B:=2;

writeln ('Soma de ',A,' e ',B,' = ',A+B);

No caso de variáveis do tipo REAL os valores são mostrados na notação exponencial, num campo de 16 posições, a menos que uma formatação seja especificada.

EXEMPLO: MEDIA := (8.0 + 2.0) / 2 writeln (MEDIA); {saída F 0 B EF 0 A E 5.0000000000E+00} writeln (MEDIA:5:2); {saída F 0 B EF 0 A E 5.00}

Na formatação, se a variável for real especificamos o total de posições ocupadas e a quantidade de casas decimais. Se inteira , só o total de posições.

Se desejarmos que a saída seja através da impressora e não do monitor de vídeo, devemos especificar no começo da lista da saída o parâmetro LST e a unidade PRINTER com o USES.

EXEMPLO: Uses PRINTER; ::: writeln (LST, 'Media = ', MEDIA:5:2);

No instante da solicitação de dados, podemos usar junto com o READ ou READLN um comando de saída com a finalidade de emitir mensagens que orientem o usuário na digitação dos dados.

EXEMPLOS: writeln('Digite o Nome:'); readln(NOME);

writeln('Digite as 3 Notas:'); readln(NOTA1,NOTA2,NOTA3);

writeln('Digite o salário do funcionário:'); readln(SALARIO);

Linguagens e Técnicas de Programação I

EXERCÍCIOS PROPOSTOS

P4.01. Exemplifique o uso do comando de Atribuição.

P4.02. Qual a finalidade de um comando de entrada? Dê exemplos.

P4.03. Qual a diferença entre os comandos READ e READLN?

P4.04. Qual a finalidade de um comando de saída? Dê exemplos.

P4.05. Qual a diferença entre os comandos WRITE e WRITELN?

P4.06 Como podemos direcionar a saída de um programa para a impressora? Dê exemplos.

P4.07. Como podemos orientar o usuário na digitação dos dados? Exemplifique.

P4.08. Escreva os comandos necessários para:

a) ler o nome de uma pessoa

b) ler as 3 notas de um aluno

c) ler o peso e altura de uma pessoa

P4.09. Escreva um programa em Pascal para calcular e exibir o valor de x y^ , sendo dados a base (x) e o expoente (y).

P4.10. Escreva um programa para ler o nome e o sobrenome de uma pessoa e escrevê-los na seguinte forma: sobrenome seguido por uma vírgula e pelo nome.

Exemplo:

entrada: "Antonio","Soares" saída: Soares, Antonio

4.4. COMANDOS DE DECISÃO

As estruturas de decisão (condicionais) são utilizadas para tomar uma decisão baseada no resultado da avaliação de uma condição de controle e seleciona uma ou mais ações possíveis (comandos) para serem executados pelo computador.

No Pascal, existe três tipos de estrutura de decisão: O comando IF, que pode ser utilizado de duas formas: simples ou composto; e o comando CASE, que é utilizado para uma decisão seletiva.

4.4.1. DECISÃO SIMPLES ( IF-THEN )

Utilizado quando se deseja executar uma ação (um comando ou uma seqüência de comandos) caso uma determinada condição seja verdadeira. A estrutura de decisão simples do Pascal é o IF , e deve ser utilizada da seguinte forma:

IF <condição> THEN

Neste caso, o só será executado se a <condição> resultar no valor TRUE.

A <condição> deve ser uma expressão lógica. O pode ser um comando simples ou um comando composto. Um comando composto é formado por dois ou mais comandos, separados por ponto-e-vírgula e delimitados por BEGIN e END.

EXEMPLO:

Program EXEMPLO_DE_DECISAO_SIMPLES; {Ler um número inteiro e exibí-lo se for positivo}

Var N : integer;

Begin

Linguagens e Técnicas de Programação I