Você está na página 1de 55

PSA - Material de Apoio

APOSTILA DE INTRODUÇÃO À CIÊNCIA DOS COMPUTADORES

José Francisco de Magalhães Netto Raimundo da Silva Barreto

Versão 1.0

jnetto@dcc.fua.br

barreto@dcc.fua.br

Última Atualização 26/01/99 por Ruiter Braga Caldas - ruiter@dcc.fua.br

SUMÁRIO

INTRODUÇÃO

3

1.

NOÇÕES DE COMPUTADORES

4

 

1.1 EVOLUÇÃO HISTÓRICA DA COMPUTAÇÃO

4

1.2 GERAÇÕES DE COMPUTADORES

5

1.3 ESTRUTURA BÁSICA DE UM COMPUTADOR

6

1.4 SISTEMA OPERACIONAL E TRADUTORES

9

1.5 CONVERSÃO DE NÚMEROS DECIMAIS EM BINÁRIOS E VICE-VERSA

10

 

1.5.1. CONVERSÃO DE NÚMEROS INTEIROS DECIMAIS EM NÚMEROS BINÁRIOS

10

1.5.2. CONVERSÃO DE NÚMEROS INTEIROS BINÁRIOS EM NÚMEROS DECIMAIS

10

1.5.3. CONVERSÃO DE NÚMEROS FRACIONÁRIOS DECIMAIS EM NÚMEROS BINÁRIOS

11

1.5.4. CONVERSÃO DE NÚMEROS FRACIONÁRIOS BINÁRIOS EM NÚMEROS DECIMAIS

11

2.

ALGORITMOS

12

2.1. CONSTRUÇÃO DE ALGORITMOS

12

2.2. DEFINIÇÃO DE ALGORITMOS

14

2.3. REFINAMENTOS SUCESSIVOS

15

2.4. ALGORITMOS ESTRUTURADOS

15

2.5. O PORTUGOL

17

2.6. IDENTIFICADORES

17

2.7. CONSTANTES

17

2.8. VARIÁVEIS

18

2.9. COMENTÁRIOS

18

2.10. EXPRESSÕES ARITMÉTICAS

18

2.11. EXPRESSÕES LÓGICAS

19

2.12. EXPRESSÕES LITERAIS

19

2.13. COMANDO DE ATRIBUIÇÃO

19

2.14. COMANDOS DE ENTRADA E SAÍDA

20

2.15. ESTRUTURA SEQÜENCIAL

20

2.16. ESTRUTURA CONDICIONAL

21

2.17. ESTRUTURA DE REPETIÇÃO

21

3.

CODIFICAÇÃO PASCAL

23

3.1

ESTRUTURA DE PROGRAMAS PASCAL

23

 

3.1.1 IDENTIFICADORES

23

3.1.2 CONSTANTES

23

3.1.3 VARIÁVEIS

24

3.1.4 COMENTÁRIOS

24

3.1.5 EXPRESSÕES

24

3.1.6 COMANDO DE ATRIBUIÇÃO

27

3.1.7 COMANDOS DE ENTRADA E SAÍDA

27

3.1.8 ESTRUTURA CONDICIONAL

27

3.1.9 ESTRUTURA DE REPETIÇÃO

28

3.1.10 REGRAS DE SINTAXE

30

3.1.11 EXEMPLO DE CODIFICAÇÃO DE UM ALGORITMO EM PORTUGOL NA LINGUAGEM PASCAL

32

4.

LISTA DE EXERCÍCIOS

33

A.

Noções de Computadores

33

B.Conversão de Números Decimais em Binários e Vice-Versa

35

C. Introdução aos Algoritmos

36

D. Algoritmos

37

6

. EXERCÍCIOS RESOLVIDOS

44

INTRODUÇÃO

O computador está cada vez mais presente no dia a dia de todos nós. Cada vez mais áreas

são abrangidas pela sua atuação, mudando a forma com que as pessoas trabalham e também a maneira como as pessoas se relacionam entre si através da ampla disseminação das redes

de computadores.

Este texto é apenas uma pequena introdução neste vasto mundo da Informática. No âmbito da Universidade do Amazonas as disciplinas Introdução à Ciência dos Computadores- IEC081 e Introdução ao Processamento de Dados-IEC981, oferecidas pelo Departamento de Ciência da Computação da Universidade do Amazonas-DCC/UA, visam dar aos alunos provenientes de diversos cursos um primeiro contato com o computador.

Este texto pretende servir de auxílio para atingir o objetivo de mostrar conceitos básicos sobre computadores.

1.

NOÇÕES DE COMPUTADORES

1.1 EVOLUÇÃO HISTÓRICA DA COMPUTAÇÃO

A Tabela 1 mostra um histórico sucinto da maneira como o Homem calcula e dos meios que utilizou para facilitar este processo.

Dedos (origem do sistema decimal) Seixos Ábaco

1617

John Napier Ossos de Napier. Régua de cálculo.

1633

Wilhelm Schickard Primeira calculadora mecânica

1642

Blaise Pascal Calculadora mecânica de rodas dentadas de 10 posições

1694

Gottfried Wilhelm

Máquina de multiplicar totalmente mecânica

von Leibnitz

1728

Basile Bouchon Tear com desenhos programados por folha giratória de

 

papel perfurado

1859

Charles Babbage

Máquina para computar tabelas matemáticas

1875

Frank Baldwin Máquina para somar, subtrair, multiplicar e dividir a

 

partir de móveis acionados no painel.

1887

Dorr Feld Computômetro – máquina dirigida por chaves

1890

W. Burroughs Primeira máquina de somar e imprimir

1890

Herman Holerith

Perfuradora de cartões – registrava e classificava números através de furos em cartões; a leitura era feita através de pinos que se encaixavam em localizações específicas. Criada para utilização no censo americano. Empresa

 

origem da IBM (1924)

1920

Caixas registradoras elétricas e máquinas com teclado

1946

ENIAC (Eletronic Integrator and Calculator), primeiro computador digital eletrônico: 18000 válvulas, 1500 relés, resistores, capacitores, indutores, 200 kW de potência. Memória para até 20 números de 10 dígitos cada um. Programação através de fios e pinos (painel de telefonista). Apenas dados armazenados na memória.

1948

EDVAC (Electronic Discrete Variable Automatic Computer), baseado na proposta de J. Von Neumann de uma máquina que armazenava na memória dados e instruções.

1949

UNIVAC, primeiro computador em escala comercial, utilizado com sucesso no censo dos EUA em 1951.

Tabela 1: Breve Histórico da Computação

1.2

GERAÇÕES DE COMPUTADORES

É comum referenciar-se aos computadores com relação ao seu grau de evolução tecnológica em função de gerações. A Tabela 2 dá um resumo das gerações de computadores.

Década

Geração

Características

1940

1 a Circuitos eletromecânicos e válvulas (ENIAC, EDVAC, UNIVAC).

1950

2 a Transistores (Bell Telephone Laboratories, 1948), dispositivos menores com menor consumo de potência, mais robustos e confiáveis.

1960

3 a Circuitos integrados – integração de vários transistores em uma única embalagem (chip) com aproximadamente as mesmas dimensões de um transistor.

1970

4 a Milhares de transistores em uma única pastilha VLSI (Very Large Scale Integration).

Tabela 2: Gerações de Computadores

A evolução tecnológica gera computadores cada vez mais baratos, potentes e rápidos. Com

isso cada vez mais coisas podem ser realizadas pelos computadores.

1.3 FORMAS EM QUE SE APRESENTAM OS COMPUTADORES

Os computadores apresentam-se em diversas formas e estão em evolução contínua.

A Tabela 3 dá um breve resumo destas formas.

Forma

Características

Supercomputador Mais potentes, em geral utilizam multiprocessadores. Usado para

simulações científicas complexas (Ex.: previsão de clima). Fabricante:

IBM, Cray. Mainframe Grandes de computadores com alta capacidade de processamento. Em geral são usados para aplicações comerciais e industriais. Fabricante:

IBM. Minicomputador Intermediário entre mainframes e microcomputadores. Fabricantes:

IBM, DEC, HP.

Estação de Trabalho (Workstation)

Mais poderosos que os microcomputadores. Rodam o sistema operacional Unix ou uma variação. Em geral usam a tecnologia RISC

(Reduced Instruction Set Computer). Fabricantes: Sun, SiliconGraphics. Microcomputador Pequenos computadores com múltiplas finalidades. Fabricantes: IBM, Apple.

Tabela 3: Formas dos Computadores

1.4 ESTRUTURA BÁSICA DE UM COMPUTADOR

O computador é uma máquina programável capaz de processar informações com grande

rapidez. A Figura 1 mostra a estrutura básica de um computador: unidades de entrada, unidade central de processamento, memória e unidades de saída.

As unidades de entrada permitem ao computador acessar informações do mundo externo. As informações são traduzidas em códigos que possam ser entendidos pela Unidade Central de Processamento. Exemplos de dispositivos de entrada são: teclado, mouse, tela touchscreen, leitora de cartão magnético, joystick, caneta ótica, scanner de imagens, scanner de código de barras, driver de disquete, driver de CD-ROM (Compact Data - Read Only Memory), disco rígido (hard disk ou HD), leitora de fita magnética, leitora de cartão perfurado, câmera fotográfica digital, câmera de video, sensores, etc.

As unidades de saída convertem impulsos elétricos, permitindo a saída de informações para

meios externos e possibilitando sua visualização e armazenamento por diferentes periféricos ou, ainda, a utilização de dados por outro computador. Exemplos de dispositivos

de saída são: impressora, plotadora, monitor ou vídeo, driver de disquete (31/2 e 51/4 pol),

disco rígido (hard disk ou HD), gravadora de fita magnética, emissor de som, controladores,

etc.

A Unidade Central de Processamento (UCP) é formada pela Unidade de Controle e

Unidade Lógico-Aritmética (ULA). A Unidade de Controle gerencia todos os recursos do computador e contém as instruções da UCP para executar comandos. A Unidade Lógico- Aritmética realiza operações aritméticas (adição, subtração, multiplicação, divisão) e operações lógicas (conjunção, disjunção e negação). A Unidade Central de Processamento também é conhecida pela sigla inglesa CPU (Central Processor Unit).

A memória principal do computador é conhecida por RAM (Random Access Memory). Na

memória principal estão as instruções que estão sendo executadas e os dados necessários a sua execução. A memória principal também chamada de memória de trabalho ou memória temporária, é uma memória de leitura e escrita (read/write). Suas características são: rápido acesso (da ordem de nanosegundos em computadores mais modernos), acesso aleatório (para acessar uma posição de memória o computador vai diretamente a esta posição através do endereço) e volatilidade (em caso de falta de energia elétrica ou desligamento do computador há perda de informações).

Memória Unidade Unidade Unidade de de de Entrada Controle Saída Unidade Lógica e Aritmética
Memória
Unidade
Unidade
Unidade
de
de
de
Entrada
Controle
Saída
Unidade
Lógica e
Aritmética

Unidade Central de Processamento

Figura 1: Estrutura básica de um computador

O computador possui também uma memória chamada ROM (Read Only Memory) onde são

guardadas informações para inicializar o computador, verificando a memória principal (seu tamanho e integridade) e os periféricos e, também, ativando o sistema operacional. Esta memória é não volátil (isto é, não se perde quando o computador é desligado ou há uma variação de tensão), e em geral é gravada pelo fabricante e com pequena capacidade de armazenamento. Depois de gravada a ROM não pode ser mais alterada pelo usuário.

A memória secundária ou memória auxiliar é usada para armazenar grandes quantidades de

informações. Um exemplo comum de memória secundária é o disco rígido.

O hardware de um computador consiste dos componentes físicos, tais como a UCP

(Unidade Central de Processamento), memória e os dispositivos de entrada/saída

(comumente chamados de periféricos) que formam o sistema.

O software refere-se aos programas usados para controlar a operação do hardware para

solucionar problemas.

A unidade básica de informação é o bit (binary digit). O bit pode ter valor 0 (zero -

desligado) ou 1 (um - ligado). Esta representação não é usual para seres humanos por envolver grandes seqüências de dígitos binários para representar números decimais. Entretanto esta representação pode ser usada convenientemente por computadores usando circuitos eletrônicos pois os dois valores básicos (0 e 1) são representados de modo confiável e eficiente, pela presença ou ausência de correntes elétricas, cargas elétricas ou campos magnéticos nos circuitos.

Chama-se byte um conjunto de 8 bits. Bytes são usados para representar informações tais como caracter, número e outros tipos de dados. É comum se referir aos seus múltiplos:

kilobyte, megabyte, gigabyte e terabyte.

1 Kilobyte

= 2 10 bytes

= 1024 bytes

1 Megabyte

= 1024 kilobytes

= 1048576 bytes

1 = 1024 Megabytes = 1048576 kilobytes = 1073741824 bytes

Gigabyte

1 = 1024 Gigabytes

Terabyte

O ASCII (American Standard Code for Information Interchange), Figura 2, é o código

normalmente usado para representar caracteres em computadores. Ele é constituído de 95 caracteres de impressão (gráficos) e 33 caracteres de controle, que são usados

principalmente em transmissão de dados e para controle de equipamentos de impressão. Por exemplo os caracteres a maiúsculo e minúsculo são representados em ASCII pelas

seqüência

Binário

Decimal

A 01000001

65

a 01100001

97

A memória do computador está subdividida em palavras, que é a menor quantidade de

informação endereçável. Uma palavra de computador é um conjunto de bytes. O tamanho

da palavra do computador é uma escolha de arquitetura, variando de máquina para máquina.

Por exemplo no microprocessador Pentium a palavra é de 32 bits (ou 4 bytes).

   

BIT menos significativo

 
 

BIT mais

0

1

2

3

4

5

6

7

significativo

OOOO

OOO1

OO1O

OO11

O1OO

O1O1

O11O

O111

0 OOOO

NUL

DLE

SP

 

0 @

P

`

p

1 OOO1

SOH

DC1

!

1 A

Q

a

q

2 OO1O

STX

DC2

"

2 B

R

b

r

3 OO11

ETX

DC3

#

3 C

S

c

s

4 O1OO

EOT

DC4

$

4 D

T

d

t

5 O1O1

ENQ

NAK

%

5 E

U

e

u

6 O11O

ACK

SYN

&

6 F

V

f

v

7 O111

BEL

ETB

'

7 G

W

g

w

8 1OOO

BS

CAN

(

8 H

X

h

x

9 1OO1

HT

EM

)

9 I

Y

i

y

A 1O1O

LF

SUB

*

: J

Z

j

z

B 1O11

VT

ESC

+

; K

[

k

{

C 11OO

FF

FS

,

< L

\

l

|

D 11O1

CR

GS

-

= M

]

m

}

E 111O

SOH

RS

.

> N

^

n

~

F

1111

SI

US

/

? O

o

DEL

           

_

   

Figura 2: Código Padrão Americano para Intercâmbio de Informações (ASCII)

1.5

SISTEMA OPERACIONAL

O sistema operacional (SO) gerencia os recursos (hardware e software) do computador, disponibilizando-os de maneira amigável ao usuário. O SO tem como objetivo colocar uma camada de software sobre o hardware para gerenciar todas as partes do sistema e apresentá- las ao usuário como uma interface, uma abstração, uma máquina mais fácil de entender e programar.

Ex.: DOS, UNIX, Linux, Windows95, VM, VSE, etc.

As funções do sistema operacional são: gerenciamento de memória, gerenciamento de processos, gerenciamento de E/S (entrada/saida) e gerenciamento de arquivos.

1.6 PROGRAMAS DE COMPUTADORES E TRADUTORES

Um programa de computador é uma coleção de instruções que, quando executadas pela CPU de um computador, cumpre uma tarefa ou função específica.

Nos primeiros computadores a programação era feita diretamente por iniciação direta de comandos ligando e desligando interruptores e por meio de ligação direta de fios em circuitos. Este processo oneroso e lento é atualmente substituido pela introdução dos tradutores.

Os computadores trabalham internamente com instruções em linguagem de máquina. Estas linguagens são chamadas de baixo nível por serem entendidas facilmente apenas pelas máquinas. Tipicamente linguagens de máquinas são compostas de 50 a 300 instruções que fazem basicamente mover dados pela máquina e realizam comparações e operações aritméticas. Ex.: ADD A, B

Os tradutores permitem que um programa escrito em uma linguagem de alto nível (Pascal, C, Fortran, etc) seja entendido e executado pelo computador. As linguagens são consideradas de alto nível quando apresentam algumas fortes semelhanças com a maneira pela qual o Homem se expressa. Os tradutores dividem-se em interpretadores e compiladores.

No programa interpretador uma instrução é decodificada e executada, através de um ciclo repetitivo. A desvantagem é que isso leva um tempo de execução maior. No programa compilador o programa fonte é compilado através de diversas fases:

Faz-se uma análise léxica do programa-fonte; depois uma análise sintática; gera-se um código intermediário; procura-se otimizar o código; finalmente é gerado o código objeto, que é chamado programa-objeto. O programa objeto está pronto para ser executado quando for carregado na memória principal e ativado pelo sistema operacional.

1.7 CONVERSÃO DE NÚMEROS DECIMAIS EM BINÁRIOS E VICE- VERSA

O computador é uma máquina binária pois internamente trabalha com números na base 2

(base binária), reconhecendo apenas os dígitos 0 e 1, conhecidos como bits. O Homem comumente utiliza o sistema de numeração decimal, ou seja números formados por 10 dígitos que são o 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Nas seções subseqüentes aprenderemos a transformar números decimais em binários e vice- versa.

1.5.1. CONVERSÃO DE NÚMEROS INTEIROS DECIMAIS EM NÚMEROS BINÁRIOS

O método utilizado é conhecido como “método das divisões sucessivas”. Tomaremos como

exemplo o número decimal 12 e encontraremos seu equivalente em binário.

Passos:

1.Realizam-se divisões inteiras sucessivas do número decimal original pela base 2 até que o

quociente seja menor do que o divisor 2.

12 |_2_

0 6 |_2_

0 3 |_2_

1 1

1 < 2 Verdadeiro

2.Ao encontrar a condição de parada, o número binário equivalente é dado tomando-se o último quociente e os demais restos na ordem inversa em que foram calculados. Logo o número binário equivalente é

1100

Dizemos então que: (12) 10 = (1100) 2

1.5.2. CONVERSÃO DE NÚMEROS INTEIROS BINÁRIOS EM NÚMEROS DECIMAIS

Tomemos o caso do número inteiro binário 1100. Podemos colocá-lo na forma:

(1100) 2 =

1 X 2 3 + 1 X 2 2 + 0 X 2 1 +

0 X 2 0

=

1 X 8

+ 1 x

4

+ 0 X 2

+

0 X 1

= 8 + 4

= (12) 10

1.5.3. CONVERSÃO DE NÚMEROS FRACIONÁRIOS DECIMAIS EM NÚMEROS BINÁRIOS

O método utilizado é conhecido como “método das multiplicações sucessivas”. Tomaremos como exemplo o número decimal 0.625 e encontraremos seu equivalente em binário. Passos:

1.Realizam-se multiplicações sucessivas do número fracionário decimal original pela base 2 até que o quociente seja igual a 1.

0.625

X 2

=

1.250

2.Ao encontrar um resultado maior que 1, toma-se no próximo cálculo a parte fracionária. Caso contrário prossiga.

0.250

X 2

= 0.500

0.500

X 2

= 1.000

1.000 = 1 Verdadeiro

3. A condição de parada é encontrarmos um produto igual a 1. Os dígitos na ordem em que foram gerados correspondem à parte fracionária do número binário convertido. Logo o número binário equivalente é

0.101

Dizemos então que: (0.625) 10 = (0.101) 2

1.5.4. CONVERSÃO DE NÚMEROS FRACIONÁRIOS BINÁRIOS EM NÚMEROS

DECIMAIS Tomemos o caso do número fracionário binário 0.101, podemos colocá-lo na forma:

(0.101) 2 =

1 X 2 -1 +

1

0 X 2 -2 + 1 X 2 -3

=

+

0

+

1

2 1

2 2

2 3

=

0.5

+ 0.125

=

(0.625) 10

2. ALGORITMOS

O conceito de algoritmo é central tanto na programação de computadores quanto na própria

ciência da computação. Quando se constrói algoritmos, geralmente este será executado por

uma outra pessoa ou por uma máquina. Daí a necessidade de que estes sejam expressos da forma mais clara e objetiva possível a quem vai executá-lo. Niklaus Wirth, o inventor da linguagem de programação Pascal apresenta a programação estruturada como “a arte ou técnica de construir e formular algoritmos de forma sistemática”. A programação pode ser vista como formulações concretas de algoritmos abstratos, em outras palavras, existe uma máquina que pode executar um programa enquanto que algoritmos, no sentido mais amplo da palavra, não.

2.1. CONSTRUÇÃO DE ALGORITMOS

Antes de ser apresentado a definição de algoritmos, é interessante que se resolva alguns exercícios, apresentação de conceitos e a partir destes pode-se construir uma definição.

Exercício 1: A troca de conteúdos entre dois recipientes

Supor a existência de dois recipientes tendo cada um líquido. Se os dois líquidos forem juntados uma explosão ocorrerá. Como transferir o conteúdo de um recipiente para o outro e vice-versa sem que ocorra uma explosão?

Solução:

As restrições deste exercício só apontam para o caso da explosão, caso os dois líquidos sejam juntados, e não fala nada sobre a forma de transferência entre os dois líquidos. Para fazermos esta transferência precisaremos de um terceiro recipiente. Chamaremos cada recipiente de A, B e C. A solução pode ser expressa da seguinte forma:

1) Colocar o conteúdo do recipiente A no recipiente C. 2) Colocar o conteúdo do recipiente B no recipiente A. 3) Colocar o conteúdo do recipiente C no recipiente B.

Repare que a solução foi expressa em termos de uma seqüência de ações. A partir da ação

inicial, cada ação sempre segue uma outra ação, caracterizando uma ordem de execução e,

se esta ordem não for mantida, poderemos não chegar ao resultado esperado.

A definição de uma ação, neste contexto, pode ser a de um acontecimento que ocorre num

período de tempo finito e que produz algum efeito. Note que, nesta definição, só é interessante as ações que terminam em um tempo finito, as outras não interessam. Cada ação produz um efeito. Quando se tem uma seqüência de ações surge o conceito de efeito intermediário, que seria o efeito produzido por cada ação, e efeito total (ou acumulado), que seria a junção de todos os efeitos intermediários.

Exercício 2: O problema do homem e suas três cargas

Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas três cargas, que são: uma onça, uma paca e maço de alface. O que o homem deve fazer para conseguir atravessar o rio com suas três cargas e sem perdê-las?

Solução:

Mais uma vez, antes de começarmos a escrita do algoritmo é interessante analisarmos as restrições do exercício. O homem não deve deixar em uma mesma margem do rio: (a) a onça e a paca (senão a onça devorará a paca) e (b) a paca e o maço de alface (senão a paca devorará a alface). O resto tudo é possível. É importante notar que nada foi falado sobre quantas viagens o homem poderia fazer.

Tendo em vista estas restrições já é possível buscar a solução. Inicialmente simplesmente não podemos levar nem a onça e nem a alface, senão uma restrição seria violada. E daí por diante continuaremos sempre tentado nunca violar as restrições.

A

solução pode ser através de um gráfico e/ou descrição textual. Vamos apresentar em sala

de

aula as duas formas.

É

importante notar que esta solução tem uma segunda alternativa e que também chega ao

resultado final. O desenvolvimento desta alternativa fica como exercício.

Mais uma vez, este algoritmo foi expresso como uma seqüência de ações e, antes que qualquer linha tivesse sido escrita, foi necessário fazer uma análise para identificar as restrições do exercício, ou seja, o que pode e o que não pode ser feito.

Exercício 3: O problema da torre de hanoi

A torre de hanoi consiste de três hastes (a, b e c), uma das quais serve de suporte para três

discos de tamanhos diferentes (1, 2 e 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um disco menor. O objetivo é transferir os três discos para a outra haste.

Solução:

A única restrição é a de que um disco maior não pode ficar sobre um disco maior. A

solução será dada somente de forma gráfica. A descrição textual ficará como exercício.

Exercício 4: Dona de casa descascando batatas

Como um observador relataria uma dona de casa descascando batatas para o jantar.

Solução:

Dependendo do observador, o relato poderia ser de várias formas possíveis. Por exemplo:

1) Traz a cesta com batatas do porão 2) Traz a panela do armário 3) Descasca as batatas 4) Devolve a cesta ao porão

Suponhamos que este seja o relato em um certo dia. No dia seguinte a dona de casa novamante descasca batatas para o jantar e o observador descreve um relato que é idêntico

ao primeiro. Podemos dizer que este relato descreve o mesmo evento? Evidentemente não, pois trata-se de eventos distintos, ocorridos em dias diferentes, com batatas diferentes e até

a mesma dona de casa não é a mesma (está um dia mais velha, por exemplo). Entretanto,

estes dois eventos apresentam o mesmo padrão de comportamento. Considerando um outro

exemplo: nas diferentes execuções de n 2 , para diferentes valores de n, podemos reconhecer

o mesmo padrão de comportamento e o nome que damos a todos estes eventos é “elevar um número ao quadrado”.

2.2. DEFINIÇÃO DE ALGORITMOS

Após estes exercícios de construção de algoritmos já estamos em condições de criarmos uma definição para algoritmos. Existem algumas definições para algoritmos. Pode-se dizer que algoritmo é uma seqüência de ações para chegar a um objetivo bem definido. Ou que, algoritmo é a descrição de um padrão de comportamento, expresso em termos de um repertório bem definido e finito de ações primitivas, das quais damos por certo que elas podem ser executadas. Uma terceira definição diz que, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.

Das definições acima vemos que as ações têm um caráter imperativo e por isso, muitas vezes, são chamadas de comandos.

Para introduzirmos novos conceitos vamos voltar ao exercício da dona de casa descascando batatas. Algumas vezes as donas de casa colocam um avental. Vamos supor que a dona de casa usa um critério racional para saber se deve ou não usar o avental, e que este critério é se ela está usando ou não uma roupa branca. Neste caso podemos escrever um algoritmo que cubra estes dois eventos. Um outro detalhe sobre este algoritmo está no número de batatas a serem descascadas. Ora, em um dia podem ser descascadas cinco batatas, no dia seguinte sete batatas, no terceiro dia quatro batatas e assim sucessivamente, sendo que a cada dia a quantidade de batatas pode variar.

Poderemos suprir estas duas situações se usarmos duas novas estruturas: a estrutura de seleção e a de repetição. O novo algoritmo pode ser modificado para:

1) Trazer o cesto com batatas do porão 2) Trazer a panela do armário 3) Se a roupa é clara então colocar o avental 4) enquanto número de batatas é insuficiente faça 4.1) descasque uma batata 5) devolver a cesta ao porão

A quarta ação poderia ser feita de uma outra forma, como em:

4) repetir até que número de batatas seja suficiente 4.1) descasque uma batata

Acabamos de apresentar as três estruturas que compõem os algoritmos: seqüência, seleção e repetição. Todo e qualquer algoritmo é sempre desenvolvido através do uso de apenas estas três estruturas. Quando descrevemos algoritmos utilizando estas estruturas de controle os mesmos tornam-se mais claros e elegantes, além de serem mais gerais do que a simples descrição de ações.

2.3. REFINAMENTOS SUCESSIVOS

Na vida quotidiana, os algoritmos são encontrados freqüentemente: instruções para se utilizar um aparelho eletrodoméstico, uma receita para o preparo de algum prato, o guia de preenchimento da declaração do imposto de renda, a regra para a determinação dos máximos e mínimos de funções por derivadas sucessivas, dentre várias outras.

Um algoritmo é considerado completo se seus comandos forem do entendimento de seu destinatário. Um comando que não for do entendimento do destinatário tem que ser desdobrado em novos comandos, que constituirão um refinamento do comando original.

Considere como exemplo o algoritmo para calcular a multiplicação de matrizes.

Algoritmo: Multiplicação de Matrizes. Ler as matrizes A e B Calcular C = A x B Mostrar as matrizes

Fim-algortimo

Se algum destes comandos não for do entendimento do destinatário, este comando precisa ser refinado.

2.4. ALGORITMOS ESTRUTURADOS

A flexibilidade da utilização de computadores exige que, para cada problema a ser levado

ao computador, sejam planejadas as operações correspondentes. Este planejamento deve ser feito antes de se utilizar o computador. Desta forma, antes de se usar um computador para resolver problemas é necessário que se construa antes um algoritmo. Este algoritmo tem

que ser, de alguma forma, transmitido ao computador e armazenado em sua memória, para depois ser posto em execução e conduzir o computador para a solução do problema proposto. O algoritmo deve, portanto, prever antecipadamente todas as situações que possam vir a ocorrer quando for posto em execução.

Se um problema for muito simples e pequeno, não há qualquer dificuldade em desenvolver

um algoritmo. Entretanto, com o avanço da tecnologia de hardware, os computadores de hoje em dia têm grande poder de processamento e memória. Com esta evolução, os problemas que estão sendo levados aos computadores são maiores e mais complexos. Por esta razão, surgiram técnicas que permitem sistematizar e ajudar o desenvolvimento de algoritmos para a resolução de grandes e complexos problemas. Estas técnicas são

chamadas de desenvolvimento estruturado de algoritmos.

Os objetivos destas técnicas são:

a. facilitar o desenvolvimento de algoritmos;

b. facilitar o seu entendimento por humanos;

c. antecipar a comprovação de sua correção;

d. facilitar a sua manutenção (corretiva e/ou evolutiva);

e. permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas.

Para atingir estes objetivos o desenvolvimento estruturado preconiza que:

(1) Os algoritmos sejam desenvolvidos por refinamentos sucessivos; (2) Os sucessivos refinamentos são módulos, que possuem poucas funções e são o mais independente possível dos outros módulos; (3) Nos módulos devem ser usados um número limitado de comandos e de estruturas de controle.

O refinamento sucessivo permite que se aborde o problema de forma mais segura e

objetiva. A integração dos módulos é mais perfeita porque o módulo é atacado quando já se estudou claramente o ambiente onde este deve atuar. A divisão por módulos permite contornar a complexidade e, ainda, permite que sejam desenvolvidos de forma independente, inclusive por pessoas diferentes. O uso limitado de diferentes estruturas e comandos, apesar de parecer muito restritiva, são úteis para manter a simplicidade e clareza, sendo estas inestimáveis quando se está fazendo alguma manutenção.

Para se obter uma melhor clareza dos algoritmos, costuma-se desenvolvê-los e ilustrá-los com o auxílio de diagramas de blocos: algumas figuras geométricas e dizeres são usados para representar as várias operações do computador, sendo ligados por setas para indicar a seqüência de execução. Existem dois principais tipos de estruturas de blocos: o fluxograma e o diagrama de Chapin. O grande problema de utilizarmos estes diagramas é que quando o algoritmo é grande há uma confusão no entendimento dos diagramas.

2.5.

O PORTUGOL

A liberdade de expressão é essencial para o desenvolvimento da criatividade em

praticamente todas as atividades humanas. Para tanto, o uso da linguagem natural é o que se tem de melhor para expressar os nossos pensamentos. Entretanto, as linguagens naturais vêm com a problemática das ambigüidades e, algumas vezes, de falta de concisão. Uma linguagem formal evita estes problemas, mas limita o poder de expressão. Estamos, portanto, diante de um impasse. A solução é a escolha de uma linguagem que ofereça estruturas adequadas, bem projetadas, com efeitos bem definidos e que, além disso, não restrinjam a criatividade do programador.

Será utilizada a pseudo-linguagem PORTUGOL (simbiose do PORTUguês com alGOl e pascaL). A idéia é permitir que com um conjunto básico de primitivas seja possível ao projetista pensar no problema e não na máquina que vai executar o algoritmo e, por outro lado, não fique tão distante desta máquina.

Em toda a linguagem, as frases construídas envolvem dois aspectos: a sintaxe e a semântica. A sintaxe tem a ver com a forma e a semântica com o conteúdo. Considerando o português como linguagem, tomemos uma frase sintaticamente correta (tem verbo, sujeito e objeto, e as palavras estão escritas corretamente):

“Aqui vendem-se frangos abatidos”

A semântica correta desta frase é a de que naquele estabelecimento existe uma venda de frangos já mortos, e não frangos deprimidos ou anêmicos.

2.6. IDENTIFICADORES

Os identificadores são nomes dados à variáveis e constantes. Estes nomes devem ser o mais

significativo possível, isto é, devem refletir o que está sendo armazenado naquela variável

ou constante. Um identificador é formado por um ou mais caracteres, sendo que o primeiro

caractere deve, obrigatoriamente, ser uma letra. O restante podem ser letras ou dígitos (não

são permitidos símbolos especiais, exceto o underscore “_”).

2.7. CONSTANTES

Uma constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Com o propósito de deixar mais claro o algoritmo, algumas vezes são dados nomes (ou identificadores) para as constantes. Esta pode ser um número, um valor lógico ou uma seqüência de caracteres (constante literal).

A constante numérica é expressa na notação decimal, com ou sem parte fracionária,

podendo ser positiva ou negativa. A constante lógica só assume dois valores possíveis:

verdadeiro ou falso. As constantes literais englobam qualquer seqüência de caracteres (letras, dígitos ou símbolos especiais). Estas constantes são representadas entre aspas para que não seja confundida com outro item qualquer.

2.8. VARIÁVEIS

Na matemática, sabemos que uma variável é a representação simbólica dos elementos de um certo conjunto. Nos algoritmos uma variável corresponde a uma posição de memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um programa. As variáveis só podem assumir um valor a cada instante. Toda variável é identificada por um identificador.

As variáveis só podem armazenar valores de um mesmo tipo, sendo estes também numéricos, lógicos ou literais. Para indicar o tipo das variáveis é usada a declaração de variáveis e constantes. Uma vez declarada uma variável, qualquer referência a seu identificador implica na referência ao conteúdo do local de memória representado pelo mesmo.

As declarações de variáveis podem ter a seguinte forma:

declare

lista-de-identificadores

2.9. COMENTÁRIOS

nome-do-tipo

Os comentários têm a finalidade de deixar mais claro os algoritmos para as pessoas que o estarão lendo. Ele é um texto, ou simplesmente uma frase que aparece sempre delimitado por chaves. Os comentários podem ser postos em qualquer lugar onde se façam necessários.

2.10. EXPRESSÕES ARITMÉTICAS

Denomina-se expressão aritmética aquela cujos operadores são aritméticos e cujos operandos são constantes e/ou variáveis do tipo numérico. O conjunto de operações básicas adotado é o que se conhece da matemática, que são: adição, subtração, multiplicação, divisão, potenciação e radiciação. Nas expressões aritméticas, tal como na matemática, as operações guardam entre si uma relação de prioridade. Primeiro a potenciação e radiciação, depois a multiplicação e divisão e por último a adição e subtração. Para se alterar essa ordem de prioridade pode-se usar os parênteses.

Além das operações básicas, pode-se utilizar algumas funções muito comuns na matemática. Algumas funções podem ser: LOG(X), logaritmo na base 10 de X; LN(X), logaritmo neperiano de X; EXP(X), o número e (base do logaritmo neperiano) elevado a X; ABS(X), o valor absoluto de X; TRUNCA(X), a parte inteira do número fracionário X;

ARREDONDA(X), transforma por arredondamento um número fracionário em um número inteiro; SINAL(X), devolve o valor -1, +1 ou 0, caso X seja negativo, positivo ou igual a zero, respectivamente; QUOCIENTE(X, Y), devolve o quociente inteiro da divisão de X por Y; RESTO(X, Y), devolve o resto da divisão inteira de X por Y.

2.11. EXPRESSÕES LÓGICAS

É comum nos algoritmos surgirem situações em que a execução de uma ação (ou seqüência

de ações) está sujeita a uma certa condição. Esta condição é representada através de uma expressão lógica.

Uma expressão relacional é uma comparação realizada entre dois valores de mesmo tipo básico. Os operadores relacionais, que são usados na expressão relacional, já são conhecidos da matemática e são:

= (igual)

< (menor do que)

(diferente) (maior ou igual)

> (maior do que) (menor ou igual)

O resultado obtido de uma relação é sempre um valor lógico.

Os operadores lógicos utilizados nas expressões relacionais são: E (para a conjunção), OU (para a disjunção) e NÃO (para a negação).

2.12. EXPRESSÕES LITERAIS

Uma expressão literal é aquela formada por operadores literais e operandos que são

constantes e/ou variáveis do tipo literal. As operações sobre valores literais são bastante diversificadas, e entre elas incluem:

(a)

concatenação de duas literais

(b)

comprimento da literal

(c ) os n primeiros caracteres de uma literal

(d)

os n últimos caracteres de uma literal

(e)

a cópia de uma parte da literal a partir da posição i até a posição j.

2.13. COMANDO DE ATRIBUIÇÃO

Este comando permite que se forneça um valor a uma variável, onde a natureza deste valor tem que ser compatível com o tipo da variável. O comando de atribuição tem a forma a seguir:

identificador expressão

A expressão deve ser primeiramente avaliada e depois atribuída à variável. As constantes e

variáveis são também formas de expressão mais simples.

2.14. COMANDOS DE ENTRADA E SAÍDA

Sabemos que as unidades de entrada e saída são dispositivos que possibilitam a comunicação entre o usuário e o computador. Por exemplo, através do teclado, o usuário consegue dar entrada ao programa e os dados na memória do computador. Por outro lado, o computador pode emitir os resultados e outras mensagens para o usuário através de uma impressora ou do monitor de vídeo. Os comandos de entrada e saída têm a finalidade de fazer esta interação com o usuário.

O

comando de entrada é feito de acordo com a seguinte forma geral:

Leia <lista de identificadores>

Ex.: Leia codigo_aluno, nota

O

comando de saída tem a forma geral:

Escreva <lista de identificadores> e/ou <constantes>

Ex.: Escreva “Código do Aluno: “, codigo_aluno, “Nota: “, nota

2.15. ESTRUTURA SEQÜENCIAL

Em um algoritmo aparecem em primeiro lugar as declarações seguidas por comandos que, se não houver indicação em contrário, deverão ser executados em uma seqüência. Os algoritmos são iniciados com a palavra Algoritmo e terminados com fim-algoritmo.

Exemplo:

Algoritmo declare A, B, C leia A, B, C C (A + B) x C escreva A, B, C fim-algoritmo

numérico

Neste exemplo, após serem definidos os tipos das variáveis A, B e C, os valores de A e B são lidos, o valor de C é calculado e os valores contidos nas variáveis A, B e C serão escritos.

2.16.

ESTRUTURA CONDICIONAL

A estrutura condicional permite a escolha do grupo de ações e estruturas a serem

executados quando determinadas condições, representadas por operações lógicas, são ou não satisfeitas. Esta estrutura é delimitada pelo comando se e pela expressão fim-se. Esta estrutura pode se apresentar de duas formas: (a) estrutura condicional simples e; (b) estrutura condicional composta.

A estrutura condicional simples tem a seguinte forma:

se <condição> então <seqüência de comandos> fim-se

A estrutura condicional composta tem a seguinte forma:

se <condição> então <seqüência A de comandos> senão <seqüência B de comandos> fim-se

2.17. ESTRUTURA DE REPETIÇÃO

A estrutura de repetição permite que uma seqüência de comandos seja executada

repetidamente até que uma determinada condição de interrupção seja satisfeita. A estrutura

será delimitada pelo comando repita e pela expressão fim-repita. A interrupção é feita através do comando interrompa. Esta estrutura pode se dar de três formas: interrupção no início, interrupção no interior e interrupção no fim.

A interrupção no início tem a seguinte forma:

repita se condição então interrompa fim-se <seqüencia de comandos> fim-repita

A interrupção no interior tem a seguinte a forma:

repita <seqüencia A de comandos> se condição então interrompa

fim-se <seqüencia B de comandos> fim-repita

A interrupção no fim tem a seguinte a forma:

repita <seqüencia A de comandos> se condição então interrompa fim-se fim-repita

3. CODIFICAÇÃO PASCAL

A linguagem de programação Pascal foi criada na década de 70 por Niklaus Wirth e é de

propósito geral, baseada em conceitos de programação estruturada. Nas versões mais atuais

o Pascal suporta também o paradigma de Orientação a Objetos. Neste texto daremos uma breve introdução das regras de sintaxe dos principais comandos e exemplificamos traduzindo algoritmos do Portugol para o Turbo Pascal 7.0.

3.1 ESTRUTURA DE PROGRAMAS PASCAL

Um programa Pascal consiste em um título e um corpo. O

título:

PROGRAM PesoIdeal; Program Somar; PROGRAM Soma_Dois_Números;

comando Program define o

O corpo do programa contém a seção de especificação de dados e a seção de operação. A

seção de especificação de dados deve vir primeiro e define todos os dados a serem usados:

ela começa com a palavra reservada Var. A seção de operações contém comandos que lêem dados, executam ações e mostram resultados; ela começa com Begin e termina com End. O programa termina com um ponto final. Ex.:

Program SomaDoisNumeros;

var

A, B, Soma

: real;

begin

 

read(A,B); Soma := A + B; write(Soma);

end.

3.1.1 IDENTIFICADORES

Os identificadores são nomes dados às variáveis e constantes. Estes nomes devem ser o mais significativo possível, Os identificadores são formados de letras, digitos e o caracter underscore (_). Não há distinção entre caracteres maiúsculos e minúsculos. O primeiro caracter de um identificador deve ser ou uma letra ou caracter underscore; o caracter branco não dever ser usado em um identificador. O identificador pode ter qualquer tamanho contudo limitaremos seu tamanho no máximo a 15 caracteres.

3.1.2 CONSTANTES

Os dados em Turbo Pascal podem ser classificados ou como constantes ou como variáveis.

Se os valores não variam são constantes. A palavra reservada Const é usada para definir as constantes.

Ex:

Const

Pi

=

3.14159;

Total_Alunos

=

50;

Distancia

=

152.34;

Meu_Nome

=

'Francisco'

NomeArquivo

=

'Arquivo01.dta';

Passou

=

True;

3.1.3 VARIÁVEIS

As variáveis caracterizam os dados que podem mudar durante a execução do programa. A

palavra reservada Var é usada para definir as variáveis. Ex:

Var

 

MeuPeso

:

integer;

Altura

:

real;

NomeAluno

:

string;

Passou

:

boolean;

3.1.4

COMENTÁRIOS

Os comentários são precedidos de “{“e terminados pelo caracter “}”.

Exemplo:

 

(

 

Programa: Somar_Dois_Números

Objetivo:

Este programa soma dois números reais

Autor:

José Francisco de Magalhães Netto

Data:

98/07/28

Última Alteração:

98/07/29

}

3.1.5

EXPRESSÕES

Constantes e variáveis são usadas em expressões. Uma expresssão controla a ordem das operações de processamento de dados. A expressão consiste de operandos, parênteses e operadores. Constantes, variáveis e chamadas de funções podem também ser operandos. Operadores definem as operações de processamento de operandos.

Exemplo:

(X + Y - 10)

X Y

operandos

+ -

operadores

Operadores Aritméticos

Operador

Operação

Tipo de

Tipo do

 

Operando

Resultado

+

adição

inteiro

inteiro

 

real

real

-

subtração

inteiro

inteiro

 

real

real

*

multiplicação

inteiro

inteiro

 

real

real

/

divisão

inteiro

real

 

real

real

DIV

divisão inteira

inteiro

inteiro

MOD

resto

inteiro

inteiro

Exemplo:

Expressão

Resultado

12 + 5

17

7 + 8

15

12.6 - 12

0.6

-(5 + 2)

-7

+(5 - 7)

-2

A divisão se apresenta de três formas: /, DIV e MOD. Para dividir dois números reais usa-se / : 125.77 / 54.92 = 2.2905 o resultado é um número real. Para dividir números inteiros use DIV ou MOD. O operador DIV retorna o quociente da divisão de operandos:

30 DIV 25

= 1

O operador MOD retorna o resto da divisão dos operandos:

30 MOD 25 = 5

Os resultados da divisão por MOD e DIV é um inteiro.

Operadores Relacionais

Operador

Operação

Expressão

Tipo do Resultado

=

igual

A = B

Verdade, se A é igual a B

<>

não igual

A <> B

Verdade, se A não é igual a B

>

maior que

A > B

Verdade, se A é maior que B

<

menor que

A < B

Verdade, se A é menor que B

>=

maior ou igual que

A >= B

Verdade, se A é maior ou igual a B

<=

menor ou igual que

A <= B

Verdade, se A é menor ou igual a B

Exemplo:

Expressão

Resultado

45

= 50

Falso

45

<> 50

Verdade

60

> 60

Falso

60

>= 60

Verdade

Operadores Lógicos (ou Booleanos)

Operador

Operação

Expressão

A

B

Tipo do

 

Resultado

NOT

Negação lógica

NOT A

V

F

 

F

V

AND

E lógico

A

AND B

V

V

V

(Conjunção)

V

F

F

 

F

V

F

F

F

F

OR

OU lógico

A OR B

V

V

V

(Disjunção)

V

F

V

 

F

V

V

F

F

F

XOR

OU Exclusivo

A

XOR B

V

V

F

lógico

V

F

V

 

F

V

V

F

F

F

Exemplo:

Expressão

Resultado

NOT (45 = 50)

Verdade

(4 < 5) AND (10 > 7)

Verdade

Verdade OR Falso

Verdade

Falso XOR Verdade

Verdade

3.1.6

COMANDO DE ATRIBUIÇÃO

É denotada pelo símbolo :=

atribuindo o resultado de uma expressão a uma variável.

Ex.:

 

Ind

:=

5;

Preco

:=

10 * Quantidade;

Pais

:=

´Brasil´;

Aprovado

:=

True;

3.1.7

COMANDOS DE ENTRADA E SAÍDA

Os comandos de entrada são Read e Readln que efetuam a operação de leitura.

Ex. read(Nota); readln(Codigo, Nome, Nota, Freq);

Os comandos de saída são o Write e o Writeln. Ex.: write(Nota); writeln(Codigo, Nome, Nota, Freq); writeln(`Codigo `, Codigo, `Nome do Aluno `, Nome, ` Media Final `, Media, ` Frequencia `, Freq); writeln;

3.1.8 ESTRUTURA CONDICIONAL

Há dois comandos condicionais em Turbo Pascal: If e Case. O comando If é o comando condicional comum. Ele possui duas formas:

If <condição> then <comando1> else <comando2>;

e

If <condição> then <comando>;

Qualquer expressão relacional ou booleana pode ser usada como uma <condição>. No primeiro caso se a condição é Verdade, então o <comando1> é executado senão o <comando2> é executado.

Exemplos:

If temperatura > 37

then write(‘Gripe é possível`)

else

write(‘Tudo bem!’);

O comando Case possui duas formas:

Case <seletor_de_-expressão> of <lista de constantes 1> : <comando_1>; <lista de constantes 2> : <comando_2>; <lista de constantes 3> : <comando_3>;

<lista de constantes n> : <comando_n>;

end;

Case <seletor_de_-expressão> of <lista de constantes 1> : <comando_1>; <lista de constantes 2> : <comando_2>; <lista de constantes 3> : <comando_3>;

<lista de constantes n> : <comando_n>;

else

<comando>

end;

O seletor pode ser qualquer tipo escalar, exceto real ou string.

Exemplos:

Case i of 1, 3, 5, 7, 9 : writeln(´Número ímpar´); 0, 2, 4, 6, 8 : writeln(´Número par´); end;

Case i of `I´ : writeln(´Inclusão´); ´D´ : writeln(´Deleção´); ´E´ : writeln(´Exclusão´); else writeln(´Código Incorreto. Digite novamente a opção desejada´); end;

3.1.9 ESTRUTURA DE REPETIÇÃO Os comandos de repetição são Repeat, While e For.

O comando Repeat tem a seguinte estrutura:

Repeat

<comando_1>;

<comando_2>;

<comando_n>; Until <condição>;

Exemplo:

Repeat Read(Codigo,Nome,Media_Final,Freq); Writeln(Codigo, Nome, Media_Final, Freq) Alunos_Lidos := Alunos_Lidos + 1; If ((Media_Final >= 5.0) And (Freq >= 45)) then

Aprovados := Aprovados + 1

else

Reprovados := Reprovados + 1; Until Alunos_Lidos = Total_Sala;

O comando While tem a seguinte estrutura:

While <condição> do begin

<corpo do loop>;

End;

Exemplo:

While Alunos_Lidos < Total_Alunos do begin Read(Codigo,Nome,Media_Final,Freq);

Alunos_Lidos

Writeln(Codigo, Nome, Media_Final, Freq) If ((Media_Final >= 5.0) and (Freq >= 45)) then

:= Alunos_Lidos + 1;

else

Aprovados

:= Aprovados + 1

Reprovados := Reprovados + 1

end;

Se a <condição> é Falsa logo no início o corpo do While não será executado nunca.

O

comando For se apresenta das seguintes maneiras:

For <variável de loop> := <S1> to <S2> do <comando>;

ou

For <variável de loop> := <S1> downto <S2> do <comando>;

onde S1 e S2 definem o começo e o fim dos valores da <variável de loop>.

Exemplo: Soma dos inteiros de 1 até 10

Program SomarInteiro; Var

I , Soma Begin Soma

: integer;

:= 0;

For I := 1 to 10 do Soma := Soma + I; Writeln(Soma);

end.

A variável do loop não pode ser mudada no corpo do loop. Caso isto ocorra ocasionará erro.

For I

:= 1 to 10 do

begin

end.

Soma :=

Write(Soma); I := I + 2;

I * 2;

3.1.10 REGRAS DE SINTAXE

{ Erro : troca ilegal da variável de loop }

Há algumas regras de sintaxe que devem ser observadas ao se escrever um programa em Turbo Pascal:

a)

O

ponto-e-vírgula delimita comandos e sua ausência causa erros de compilação.

X

:= A + B;;;

{ Correto

}

write(X) X := X + 1;

{ Errado

}

b) Um ponto-e-vírgula não é usado após as palavras reservadas Unit, Uses, Label, Type, Const e Var.

Uses;

{ Errado

}

Var;

{ Errado

}

b) Um ponto-e-vírgula não é usado após Begin. Um ponto-e-vírgula antes de End é opcional.

Begin;

{ Errado

}

Begin

Writeln(`Alo`};

end;

{ (;) antes de End é legal }

d) Um ponto-e-vírgula não é usado após While, Repeat e Do. Um ponto-e-vírgula antes de Until é opcional.

While True do;

X := 1;

Repeat X := X + 1; writeln(X*X); Until X <> 11;

{ Errado

}

{ (;) legal

}

e) Um ponto-e-vírgula não é usado após Then e antes de Else;

If X <> 5 then Y := Y + X;

else

Y := Y + X;

{ Errado }

3.1.11 EXEMPLO DE CODIFICAÇÃO DE UM ALGORITMO EM PORTUGOL NA LINGUAGEM PASCAL

A figura abaixo na primeira coluna mostra um algoritmo em Portugol e na segunda coluna o programa equivalente em Pascal.

Fatorial

Program Fatorial;

Início Escreva (Digite um numero)

Uses Crt;

Leia(N) Se N<0

Var f,n,x,i :Integer;

Então Escreva('Nao existe fatorial de numero negativo!) Senão Início

Begin ClrScr; Write('Digite um numero :'); Read(n); If n<0 Then Write('Nao existe fatorial de numero negativo!') Else begin f :=n; For i:=(n-1) downto 1 do f :=f*i; Write('O fatorial de ',n,' ‚ ',f); end;{Else} Repeat Until Keypressed; End.

f

<- N;

Para i de (N-1) até 1 faça

f

<- f * i

Escreva (O fatorial de N é, f) Fim (Senão) Fim(Fatorial)

4. LISTA DE EXERCÍCIOS

A. Noções de Computadores

1. Discuta a afirmação abaixo:

O computador é uma máquina inteligente que soluciona novos problemas sem precisar de nenhuma interferência humana.

2. Cite as gerações dos computadores e suas principais características.

3. Explique a organização básica de um computador, comentando e detalhando a função de cada uma de suas partes e exemplificando o hardware envolvido.

4. Defina dispositivos de entrada e dispositivos de saída. Dê 5 (cinco) exemplos para cada uma das definições.

5. Um prefeito deseja instalar um pequeno centro de computação em uma biblioteca que deverá ser ligado via Internet a outros centros, e que possa também gerar relatórios diários para acompanhamento. Especifique o hardware mínimo para que isso se realize.

6. O que é RAM? O que é ROM? Aponte quais as diferenças entre elas e defina as siglas.

7. O código ASCII (American Standard Code for Information Interchange) do caracter g maiúsculo é o número decimal 71. Mostre a transformação em binário gerando o byte correspondente a este caracter.

8. Defina programa-fonte e programa-objeto.

9. Uma nova geração de dispositivos de armazenamento está sendo criada. Um desses equipamentos são as fitas DLT (Digital Linear Tape), que têm alta capacidade e velocidade de acesso. São encontradas no mercado com várias capacidades de memória. Um valor típico é 5 Gigabytes. Para este caso específico, quantas páginas de texto este dispositivo pode armazenar? * Considere uma página de 40 linhas, tendo cada linha 30 caracteres.

10. Considere um livro que possui 200 páginas, sendo que cada página possui, em média, 50 linhas e cada linha, em média 50 caracteres. Quantos livros deste tamanho conseguiríamos armazenar em um dispositivo que contivesse 4 Gigabytes de armazenamento?

11. Seja um computador hipotético com um byte de 6 bits. Quantas informações distintas podem ser armazenadas por esse byte?

12.

Um bit tem dois estados (0 – ligado e 1 – desligado). Quantos estados pode ter um byte?

13. Um computador tem palavras de 16 bits. Quantos estados diferentes podem ser acessados com uma palavra deste tamanho?

14. Um computador utiliza 3 bytes para armazenar números inteiros. O primeiro bit do primeiro byte é convencionado representar o sinal (0 – positivo e 1 – negativo) e os bits restantes do primeiro byte e dos demais bytes são usados para representar o módulo do número inteiro. Qual é, então, o maior número inteiro decimal positivo que pode ser representado nesta arquitetura?

15. Coloque V para verdadeiro e F para falso a assertiva:

(

)

O scanner é um dispositivo que digitaliza imagens e é um dispositivo de saída do computador.

(

)

Os disquetes de 5 ¼ “ tem capacidade de gravação maior do que os de 3 ½ “ pois tem área maior de gravação.

(

)

O mouse é um típico dispositivo de saída de dados.

(

)

O CD-ROM é o dispositivo mais usado para se dar backup diário dos arquivos do computador.

(

)

O modem é um aparelho que possibilita conectar um computador a outro usando a linha telefônica.

16. Conforme a classificação do software, coloque a sigla apropriada:

Software Básico (SB), Aplicação (AP) e Sistema Aplicativo (SA).

(

)

Editor de texto Word 6.0

(

)

Sistema de Automatização de Biblioteca

(

)

Compilador Pascal

(

)

Editor de texto Wordstar

(

)

Sistema Operacional DOS

17. Marque V caso seja verdadeiro e F caso seja falso a assertiva:

(

)

O compilador traduz um programa de linguagem de alto nível para um programa executável.

(

)

O compilador deve estar presente quando da execução do programa.

(

)

O compilador Pascal é igual ao compilador C, mudando apenas a linguagem objeto.

(

)

Para cada linguagem de programação há um único compilador.

(

)

A linguagem de máquina é o conjunto de instruções entendidas pelo hardware.

B.Conversão de Números Decimais em Binários e Vice-Versa

1.

2.

3.

4.

5.

.

6.

7.

8.

Converta os seguintes números decimais em números binários:

a) 8

f) 93

b) 17

c) 32

d) 64

e) 81

Converta os seguintes números inteiros binários em números decimais:

a) 10

b) 101

c) 1100

d) 11111

e) 101110

f) 1010101

Converta os seguintes números fracionários decimais em números binários:

a) 0.5

b) 0.75

c) 0.1

d) 0.3

e) 0.01

f) 9.1

Converta os seguintes números binários em números decimais:

a) 0.111

b) 0.1

c) 0.011

d) 0.1101

e) 1.011

f) 101.1101

Faça as transformações de base pedidas:

a) (21.1) 10

=

(

b) (10011.011) 2

=

(

c) (19.1) 10

=

(

d) (10111,011) 2 = (

)

)

)

)

2

10

2

10

Mover a vírgula decimal em um número binário n casas para a esquerda, ou para

a direita é o mesmo que dividir (ou multiplicar, respectivamente) o número por

2 n . Justifique esta afirmativa.

Mostre que qualquer número da forma 2 -n , onde n é um número inteiro positivo, pode ser escrito como um número decimal com um número finito de algarismos.

Mostre que qualquer fração binária é também uma fração finita, se transformada em uma fração decimal.

C. Introdução aos Algoritmos

1. Suponha que você esteja se dirigindo ao Campus Universitário, conduzindo seu próprio carro e repentinamente o pneu fura. Faça um roteiro para efetuar a troca dos pneus e assim poder continuar o seu trajeto.

2. Resolva o exercício 1 supondo possibilidade de quando você abrir o porta- malas, para retirar o estepe, o mesmo não esteja lá (por exemplo: o estepe foi roubado).

3. Dados dois recipientes A e B, contendo líquidos que explodem quando misturados, como fazer para trocar o conteúdo dos recipientes A e B sem que haja explosão?

4. Você dispõe de um barco para atravessar um rio. O barco tem capacidade para você mais uma de suas três cargas que são: um tigre, uma ovelha e um maço de alface. Como atravessar as três cargas para o outro lado do rio, sabendo-se que a ovelha come a alface e o tigre devora a ovelha mas não come a alface?

5. Nove homens e dois meninos querem atravessar um rio, usando uma pequena canoa com capacidade para levar ou um homem ou os dois meninos. Quantas vezes o barco terá de atravessar o rio para atingir a meta?

6. Três missionários e três canibais encontram-se numa margem de um rio e todos precisam passar para a outra margem. Um barco com a capacidade máxima de dois passageiros está disponível na margem em que se encontram os missionários e os canibais. Os missionários desconfiam dos canibais de tal maneira que evitam em qualquer ponto (margens e na travessia) que o número de canibais seja maior que deles (missionários). Descubra uma estratégia (caso exista) para atravessar todos em segurança para a outra margem.

7. Você recebe dois vasilhames d´água, um de 4 litros e outro de 3 litros . Nenhum deles possui qualquer marcação de medida. Há uma bomba que pode ser utilizada para encher os vasilhames de água. Como você poderá colocar exatamente 2 litros d´água dentro do vasilhame de 4 litros?

8. A torre de Hanoi consiste de três hastes (a, b e c), uma das quais serve de suporte para três discos de tamanhos diferentes (1, 2 e 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um disco menor. O objetivo é transferir os três discos para a outra haste.

9. Qual o padrão de comportamento para gerarmos a seqüência: 1 5 9 13 17 21 25.

10. E para a seqüência: 1 7 13 19 25 31. O padrão de comportamento deste exercício é igual ao do exercício anterior?

D. Algoritmos

1

Imprima a mensagem "As coisas boas na vida são as coisas simples".

2

Leia e imprima um valor numérico.

3

Lidos dois números A e B, imprima a soma desses números.

4

Leia três valores numéricos e imprima o somatório dstes números.

5

Dado o raio de um círculo, calcular sua área e perímetro.

6

Considere um retângulo de lados L1 e L2. Calcular a área e o perímetro desse retângulo, lidos os lados.

7

Dados os dois catetos (A e B) de um triângulo retângulo, calcular a hipotenusa.

8

Leia três valores numéricos e imprima o produto entre estes números.

9

Dados três números X,Y e Z, calcular a média aritmética desses números.

10

Lidas três notas de um aluno nota1, nota2 e nota3, calcule a média do aluno. Imprima a média.

11

Lido um número A, se ele for maior ou igual a 5, então imprima "Aprovado"; se for menor que 5, então imprima "Reprovado".

12

Leia um número, caso este seja maior que 50 imprimir a mensagem “É maior que cinqüenta” caso contrário deve imprimir “É menor que cinqüenta”.

13

Leia o nome do aluno, sua respectiva nota final e o total de presenças. Sabendo- se que a freqüência necessária é de no mínimo 75% e o total de aulas ministradas foi de 60 aulas e que a nota mínima deve ser maior ou igual a cinco. Checar e imprimir se este aluno foi aprovado ou reprovado.

14

Lidas três notas de um aluno nota1, nota2 e nota3, calcule a média do aluno. Imprima a média. Se a média for maior ou igual a 5, então imprima "Aprovado"; se for menor que 5, então imprima "Reprovado".

15

Lidos dois números A e B, se A for maior que B, então imprima a diferença de A menos B; se A for menor ou igual a B, então imprima a diferença de B menos A.

16

Lidas as notas parciais de um aluno (em número de quatro) e sua freqüência, calcule sua média final e decida se o aluno está aprovado ou não.

17

Leia o nome do aluno, sua respectiva nota final, o total de presenças e o número total de aulas ministradas. Sabendo-se que a freqüência necessária é de no mínimo 70% das aulas ministradas e que a nota mínima deve ser maior ou igual a 7.0, checar e imprimir o nome do aluno, nota final, total de presenças e uma mensagem dizendo se este aluno foi aprovado ou reprovado.

18

Dados três valores X, Y e Z, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se é um triângulo equilátero, isósceles ou escaleno. Se eles não formarem um triângulo escrever uma mensagem de erro.

19

Lido um número inteiro n (n 0), verificar se êle é par ou ímpar.

20

Em um colégio ao final do ano o aluno estará aprovado se tiver obtido média final igual ou superior a 7.0 e freqüência superior ou igual a 200. Caso contrário se a média final for igual ou superior a 5.0 e menor que 7.0 estará em recuperação, desde que suas presenças sejam superiores a 150. Nos outros casos o aluno estará reprovado.

21

Leia três valores numéricos e imprima o maior deles.

22

Lidos dois números A e B, imprima o maior deles.

23

Dados dois números imprimí-los em ordem descendente.

24

Dados dois números imprimí-los em ordem ascendente.

25

Leia três valores numéricos e imprima o maior e o menor valor.

26

Lidos três números, imprimir o maior, o menor e a média aritmética.

27

Lidos um conjunto de 5 números, elimine o maior e o menor do conjunto e calcule e escreva média aritmética dos 3 números restantes.

28

Lido um número inteiro positivo entre 0 e 200, escreva-o por extenso.

29

Imprima 100 vezes a mensagem "As coisas boas na vida são as coisas simples".

30

Lido um conjunto de 40 números inteiros positivos, conte os números pares e os ímpares.

31

Leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo. A última linha, que não deverá entrar nos cálculos, contém o valor da idade igual a zero. Calcule e imprima a idade média dos indivíduos.

32

Uma turma tem n alunos. Para cada aluno, calcule a média, lidas as três notas nota1, nota2 e nota3, imprima a média e "Aprovado" se a média for maior ou igual a 5 e "Reprovado" se a média for menor que 5.

33

Foi feita uma pesquisa de audiência de canal de TV em várias casas de uma certa cidade. Para cada casa visitada é fornecido o número do canal (4, 5, 7 e 12) e o número de pessoas que estavam assistindo naquela casa. Ler um número indeterminado de dados (o últimó dado possui canal igual a zero) e calcule e imprima para cada emissora a respectiva porcentagem de audiência.

34

Tem-se um conjunto de dados contendo a altura e o sexo de 50 pessoas. Calcule

escreva: (a) a maior e a menor altura do grupo; (b) a média de altura das mulheres; ( c) o número de homens.

e

35

Num frigorífico existem 90 bois. Cada boi traz preso em seu pescoço um cartão contendo seu número de identificação e seu peso. Escreva o número e o peso do boi mais gordo e do boi mais magro.

36

Pode-se aproximar a raiz quadrada de um número subtraindo-se sucessivamente

números ímpares mais altos do número original até que o número original seja inferior ou igual a zero. O número de subtrações é igual à raiz quadrada aproximada do número original.

Ex.:

23 -

1 = 22

 

22

-

3

= 19

19

-

5

= 14

14

– 7

=

7

raiz quadrada 4

7 – 9

= -2

37

A

raiz quadrada de um número a pode ser calculada através da equação iterativa

 

x i+1 = x i – x i 2 - a

2x i Sendo dado o valor inicial x 0 , calcule a raiz quadrada de 2.

38

Supondo que a população de um país A seja da ordem de 90.000.000 de habitantes com uma taxa anual de crescimento de 3% e que a população de um país B seja, aproximadamente, de 200.000.000 de habitantes com uma taxa de crescimento de 1,5%. Calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas estas taxas de crescimento.

39

Calcular a soma dos números pares desde 100 até 200, inclusive.

40

Calcule e escreva uma tabela de centígrados em função de graus Farenheit, que variam de 50 a 150 de 1 em 1.

41

Calcule e escreva o número de grãos de trigo que se pode colocar num tabuleiro de xadrez, colocando 1 no primeiro quadrado e nos seguintes o dobro do quadrado anterior. O tabuleiro de xadrez é composto de 64 quadrados.

42

O número 3025 possui a seguinte característica:

 
 

30 + 25 = 55

55 2 = 3025

Pesquise e imprima todos os números de quatro algarismos que apresentam tal

característica.

 

43

Números perfeitos são números inteiros para os quais a soma dos seus divisores é igual ao produto dos mesmos.

Ex.:

6 = 1 + 2 + 3 = 1 x 2 x 3.

Verifique quantos números perfeitos existem entre 1 e 10.000.

44

Qual é o menor número inteiro que é igual a uma soma de quadrados e a uma soma de cubos?

.

45

Calcular a soma dos números ímpares entre 0 e um numero inteiro positivo M

qualquer.

 

46

Lidos dois números inteiros positivos M e N, escreva os números pares entre estes números.

47

Lidos dois números inteiros M e N, escreva os números pares entre M e N,

inclusive.

 

48

Calcule o fatorial de n.

 

49

Verifique se um número n (n>0) é primo.

 

50

Lidos dois números inteiros positivos M e N, escreva os números primos entre estes números.

51

Gere os primeiros n números primos.

 

52

Lidos dois números inteiros positivos P e Q,

calcule o mmc desses dois

números.

 

53

Lidos dois números inteiros positivos P e Q, calcule o mdc desses dois números.

54

Calcule a soma dos n primeiros termos da série

 
 

A = 1

-3

5

-7

9

-11

13 -15

55

Calcule a soma dos n primeiros termos da série

H = 1 + ½ + 1/3 + ¼ + 1/5 +

56

A seqüência de Fibonacci se define como tendo o primeiro termo igual a 0 e o segundo termo igual a 1 e cada termo seguinte é igual a soma dos dois termos imediatamente anteriores. Escrever a seqüência de Fibonacci dos termos inferiores a um número inteiro L qualquer.

57

Escrever o termo que corresponda ao n-ésimo termo de uma seqüência de Fibonacci.

58

Aplique a função e x para um determinado valor usando a série

e x

= 1 +

x + x 2 + x 3 + x 4 + x 5 -

 

2!

3!

4!

5!

59

Calcule e escreva o valor de S:

 

S = 1/1 + 3/2 + 5/3 + 7/4 +

+ 99/50

60

Calcule o valor do seno de um ângulo usando a série

sen x

= x – x 3 + x 5 x 7 + x 9 -

 

3!

5!

7!

9!

61

Calcule o valor do cosseno de um ângulo usando a série = 1 – x 2 + x 4 x 6 + x 8 -

cos x

2!

4!

6!

8!

62

Calcule e escreva o valor de π, com precisão de 0.01, dado pela série:

π = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 Sugestão: para obter a precisão desejada, adicionar apenas os termos cujo valor absoluto seja maior ou igual a 0.01

63

Converta um número inteiro decimal em binário.

64

Lido um número inteiro positivo, escreva-o na ordem inversa.

65

Leia e escreva um array numérico de 5 elementos.

66

Leia e escreva um array numérico de n elementos.

67

Leia um array numérico de 5 elementos e calcule a soma destes números.

68

Leia um array numérico de n elementos e calcule a soma destes números.

69

Leia um array numérico de 5 elementos e calcule a média aritmética destes números.

70

Leia um array numérico de n elementos e calcule a média aritmética destes números.

71

Lido um string, escreva-o na ordem inversa (palíndromo).

72

Lidos dois vetores A, de tamanho m e B, de tamanho n, calcule o vetor C, soma de A e B.

73

Lido um string, conte quantas vogais existem.

74

Lido um string, escrever quantas e quais são as vogais.

75

O produto interno entre dois vetores A e B é o escalar obtido por a i b i , onde n é o tamanho dos dois vetores.

76

Lidos dois strings A e B, verifique se o string B está contido em A.

77

Lido um array numérico de n elementos, ache o maior.

78

Lido um conjunto de n elementos, ordená-lo crescentemente.

79

Leia uma matriz de dimensões 3x3.

80

Leia uma matriz de dimensões mxn.

81

Leia uma matriz A e calcule a soma de seus elementos.

82

Leia uma matriz A e calcule a média aritmética de seus elementos.

83

Leia uma matriz A e ache o maior elemento.

84

Lidas duas matrizes A, de dimensões mxn e B, de dimensões pxq, calcule a matriz C, soma de A e B.

85

Lida uma matriz, gere sua matriz transposta.

86

Lidas duas matrizes A, de dimensões mxn e B, de dimensões pxq, calcule a matriz C, produto de A e B.

87

Lida uma matriz quadrada, calcule a somatória dos elementos da diagonal principal.

88

Lida uma matriz, calcule a porcentagem de elementos nulos desta matriz.

89

Lidas duas matrizes verifique se uma é inversa da outra.

90

Lida uma matriz quadrada verifique se ela é triangular superior.

91

Gere o movimento do bispo no jogo de xadrez.

92

Gere o movimento da torre no jogo de xadrez.

93

Lidos dois conjuntos A, de tamanho n, e B, de tamanho m, gere o conjunto C, união de A e B.

94

Lidos dois conjuntos A, de tamanho n, e B, de tamanho m, gere o conjunto C, interseção de A e B.

95

Cálculo da derivada de um polinômio.

6 . EXERCÍCIOS RESOLVIDOS

1. Dados três valores X, Y e Z, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo escrever uma mensagem de erro.

Apresentaremos e discutiremos três soluções.

Solução 1:

Algoritmo Declare X, Y, Z numérico

Leia X, Y, Z Escreva X, Y, Z

Se X < Y + Z então

X = Y

e Y < X + Z

Y = Z

e

Z < X + Y

Se

e então escreva “Triângulo Equilátero” senão

{ Teste de Existência de Triângulo }

Se X

Y

e

X

Z

e

Y

Z

então escreva “Triângulo Escaleno” senão escreva “Triângulo Isósceles” Fim-se Fim-se

senão

escreva “Os segmentos X, Y e Z não podem gerar um triângulo”

Fim-se

Fim-Algoritmo

Na primeira solução usamos o operador lógico E para testar a existência do triângulo. Na segunda solução usaremos o operador lógico OU.

Como vamos usar outro operador lógico, devemos achar uma relação de equivalência que relacione os operadores lógicos E e OU. Esta relação é dada pelo Teorema de De Morgan.

O

Teorema de De Morgan nos diz que

A

e

B = não (não A ou não B)

A ou B = não (não A e não B)

O

teorema de De Morgan é demonstrado facilmente usando tabelas-verdade.

Chamando A = (X < Y + Z) , B = (Y < X + Z)

e

C = (Z < X + Y) , teremos:

A e B e C = não (não A ou não B ou não C) Aplicando este resultado na solução anterior, geraremos a segunda solução:

Solução 2:

Algoritmo Declare X, Y, Z numérico

Leia X, Y, Z Escreva X, Y, Z

Se não (X

então

Y + Z

ou Y

X + Z

ou

Z X + Y ) { Teste de Existência de Triângulo

Se

e então escreva “Triângulo Equilátero” senão

X = Y

Y = Z

Se X

Y

e

X

Z

e

Y

Z

então escreva “Triângulo Escaleno”

senão escreva “Triângulo Isósceles” Fim-se Fim-se

senão

escreva “Os segmentos X, Y e Z não podem gerar um triângulo”

Fim-se

Fim-Algoritmo

}

A terceira solução é obtida retirando-se o Não do teste de existência do triângulo. Solução 3:

Algoritmo Declare X, Y, Z numérico Leia X, Y, Z Escreva X, Y, Z

Se X então senão Se

Y + Z

ou Y

X + Z

ou

Z

X + Y { Teste de Existência de Triângulo}

escreva “Os segmentos X, Y e Z não podem gerar um triângulo”

e então escreva “Triângulo Equilátero” senão

X = Y

Y = Z

e então escreva “Triângulo Escaleno”

senão escreva “Triângulo Isósceles” Fim-se Fim-se

Se X

Y

X

Z

e

Y

Z

senão

escreva “Os segmentos X, Y e Z não podem gerar um triângulo”

Fim-se

Fim-Algoritmo

Observe que com a retirada do Não houve uma inversão entre as condições do Então e do Senão. Compare e analise as diferenças entre as três soluções.

2. Em um colégio ao final do ano o aluno estará aprovado se tiver obtido média final igual ou superior a 7.0 e freqüência superior ou igual a 200. Caso contrário se a média final for igual ou superior a 5.0 e menor que 7.0 estará em recuperação, desde que suas presenças sejam superiores a 150. Nos outros casos o aluno estará reprovado. Elabore um algoritmo que leia as notas parciais de um aluno (em número de quatro) e sua freqüência, calcule sua média final e decida se o aluno está aprovado ou não.

Solução:

Algoritmo Declare Nome

literal

Declare Nota_1, Nota_2, Nota_3, Nota_4, Freq, Média numérico

Leia Nome, Nota_1, Nota_2, Nota_3, Nota_4, Freq Escreva Nome, Nota_1, Nota_2, Nota_3, Nota_4, Freq

Média (Nota_1 + Nota_2 + Nota_3 + Nota_4)/4 Escreva Média

Se Média 7.0 e Freq 200 então escreva "Aprovado" senão Se Média 7.0

{ Não é necessário testar aqui se Freq < 200 }

então escreva "Recuperação" senão Se Média 5.0 e Freq 150 { Não é necessário testar aqui se Média 7.0 } então Escreva "Recuperação" senão Escreva "Reprovado" Fim-se Fim-se Fim-se Fim-Algoritmo

Exercício: Lido um número inteiro n (n 0), verificar se êle é par ou ímpar.

Apresentaremos três soluções.

Solução 1:

Algoritmo Declare N, X numérico

Leia