Escolar Documentos
Profissional Documentos
Cultura Documentos
APOSTILA DE INTRODUÇÃO À
CIÊNCIA DOS COMPUTADORES
Versão 1.0
1
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
2
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.
3
1. NOÇÕES DE COMPUTADORES
A Tabela 1 mostra um histórico sucinto da maneira como o Homem calcula e dos meios
que utilizou para facilitar este processo.
4
1.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.
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 Mais poderosos que os microcomputadores. Rodam o sistema
(Workstation) 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.
5
1.4 ESTRUTURA BÁSICA DE UM COMPUTADOR
6
Memória
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 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.
7
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.
Binário Decimal
A 01000001 65
a 01100001 97
8
1.5 SISTEMA OPERACIONAL
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 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.
9
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.
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
1100
= 8+4
= (12) 10
10
1.5.3. CONVERSÃO DE NÚMEROS FRACIONÁRIOS DECIMAIS EM NÚMEROS
BINÁRIOS
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 X2 = 0.500
0.500 X2 = 1.000 1.000 = 1 Verdadeiro
0.101
11
2. ALGORITMOS
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:
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.
12
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:
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.
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.
Como um observador relataria uma dona de casa descascando batatas para o jantar.
Solução:
13
Dependendo do observador, o relato poderia ser de várias formas possíveis. Por exemplo:
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 n2, 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”.
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:
14
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
Se algum destes comandos não for do entendimento do destinatário, este comando precisa
ser refinado.
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.
15
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.
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
16
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.
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).
17
2.8. VARIÁVEIS
2.9. COMENTÁRIOS
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.
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.
18
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:
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.
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
19
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.
Exemplo:
Algoritmo
declare A, B, C numérico
leia A, B, C
C (A + B) x C
escreva A, B, C
fim-algoritmo
20
estrutura pode se apresentar de duas formas: (a) estrutura condicional simples e; (b)
estrutura condicional composta.
se <condição>
então <seqüência de comandos>
fim-se
se <condição>
então <seqüência A de comandos>
senão <seqüência B de comandos>
fim-se
repita
se condição
então interrompa
fim-se
<seqüencia de comandos>
fim-repita
repita
<seqüencia A de comandos>
se condição
então interrompa
fim-se
<seqüencia B de comandos>
fim-repita
repita
21
<seqüencia A de comandos>
se condição
então interrompa
fim-se
fim-repita
22
3. CODIFICAÇÃO PASCAL
PROGRAM PesoIdeal;
Program Somar;
PROGRAM Soma_Dois_Números;
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
23
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
24
Operadores Aritméticos
Exemplo:
Expressão Resultado
12 + 5 17
7+8 15
12.6 - 12 0.6
-(5 + 2) -7
+(5 - 7) -2
30 DIV 25 = 1
30 MOD 25 = 5
25
Operadores Relacionais
Exemplo:
Expressão Resultado
45 = 50 Falso
45 <> 50 Verdade
60 > 60 Falso
60 >= 60 Verdade
Exemplo:
Expressão Resultado
NOT (45 = 50) Verdade
(4 < 5) AND (10 > 7) Verdade
Verdade OR Falso Verdade
Falso XOR Verdade Verdade
26
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;
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!’);
27
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;
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;
28
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;
While <condição> do
begin
<corpo do loop>;
End;
Exemplo:
Se a <condição> é Falsa logo no início o corpo do While não será executado nunca.
Program SomarInteiro;
29
Var
I , Soma : integer;
Begin
Soma := 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
Soma := I * 2;
Write(Soma);
I := I + 2; { Erro : troca ilegal da variável de loop }
end.
X := A + B;;; { Correto }
write(X) { Errado }
X := X + 1;
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 }
Begin; { Errado }
Begin
Writeln(`Alo`}; { (;) antes de End é legal }
end;
30
While True do; { Errado }
X := 1;
Repeat
X := X + 1;
writeln(X*X); { (;) legal }
Until X <> 11;
31
3.1.11 EXEMPLO DE CODIFICAÇÃO DE UM ALGORITMO EM PORTUGOL NA
LINGUAGEM PASCAL
4. LISTA DE EXERCÍCIOS
32
A. Noções de Computadores
6. O que é RAM? O que é ROM? Aponte quais as diferenças entre elas e defina as
siglas.
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?
12. Um bit tem dois estados (0 – ligado e 1 – desligado). Quantos estados pode ter
um byte?
33
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?
34
B.Conversão de Números Decimais em Binários e Vice-Versa
7. 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.
8. Mostre que qualquer fração binária é também uma fração finita, se transformada
em uma fração decimal.
35
C. Introdução aos Algoritmos
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?
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?
36
D. Algoritmos
10 Lidas três notas de um aluno nota1, nota2 e nota3, calcule a média do aluno.
Imprima a média.
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".
37
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.
29 Imprima 100 vezes a mensagem "As coisas boas na vida são as coisas simples".
38
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.
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.
x = xi – xi2 - a
i+1
2x i
Sendo dado o valor inicial x0, calcule a raiz quadrada de 2.
39 Calcular a soma dos números pares desde 100 até 200, inclusive.
39
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.
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.
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.
48 Calcule o fatorial de n.
53 Lidos dois números inteiros positivos P e Q, calcule o mdc desses dois números.
40
55 Calcule a soma dos n primeiros termos da série
41
números.
75 O produto interno entre dois vetores A e B é o escalar obtido por ai bi, onde n
é o tamanho dos dois vetores.
42
89 Lidas duas matrizes verifique se uma é inversa da outra.
43
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.
Solução 1:
Algoritmo
Declare X, Y, Z numérico
Leia X, Y, Z
Escreva X, Y, Z
Fim-Algoritmo
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.
44
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
Fim-se
Fim-Algoritmo
45
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
Solução 1:
46
Algoritmo
Declare N, X numérico
Leia N
Se N < 0
então escreva "O número ", N," é negativo"
senão
X N/2
Se Trunca(X) x 2 = N
então escreva "O número ", N," é par"
senão escreva "O número ", N," é ímpar"
Fim-se
Fim-se
Fim-Algoritmo
Solução 2:
Algoritmo
Declare N, X numérico
Leia N
Se N < 0
então escreva "O número ", N," é negativo"
senão
X N/2
Se Trunca(X) = X
então escreva "O número ", N," é par"
senão escreva "O número ", N," é ímpar"
Fim-se
Fim-se
Fim-Algoritmo
A terceira solução parece mais simples pois usa o fato de que para verificar se um número
é par, basta dividí-lo por 2 e verificar se o resto é zero ou não.
Solução 3:
Algoritmo
Declare N numérico
Leia N
Se N < 0
então escreva "O número ", N, " é negativo"
senão
Se Resto (N,2) = 0
então escreva "O número ", N," é negativo"
senão escreva "O número ", N," é ímpar"
47
Fim-se
Fim-se
Fim-Algoritmo
Solução 1:
Algoritmo
Declare N, Contador, Contador_Par, Contador_Impar numérico
Contador 0
Contador_Par 0
Contador_Impar 0
Repita
Se Contador = 40
então interrompa
Fim-se
Leia N
Contador Contador + 1
Se N 0
então Se Resto(N,2) = 0
então Contador_Par Contador_Par + 1
senão Contador_Impar Contador_Impar + 1
Fim-se
Fim-se
Fim-Repita
Fim-Algoritmo
48
A segunda solução requer uso de um flag, não sendo necessário ler o total de alunos da
sala..
Solução 2:
Algoritmo
Declare N, Contador_Par, Contador_Impar numérico
Contador_Par 0
Contador_Impar 0
Repita
Leia N
Se N = -99 { Teste de parada com o flag -99 }
então interrompa
Fim-se
Se N 0
então Se Resto(N,2) = 0
então Contador_Par Contador_Par + 1
senão Contador_Impar Contador_Impar + 1
Fim-se
Fim-se
Fim-Repita
Fim-Algoritmo
Solução 1:
a.Análise do Problema
O termo inicial é 1, cada termo subseqüente é igual em módulo ao termo anterior somando-
se e alternando o sinal.
b.Solução:
Algoritmo
49
Solução 2:
ai = (-1)i+1 (2i - 1)
S = ai = (-1)i+1 (2i - 1)
i =1 i =1
b.Solução:
Algoritmo
Declare N, A, Soma, I numérico
Leia N
Se N < 0
então escreva "Número incorreto ",N
senão
I 1
Soma 0
Repita
Se I > N
então interrompa
Fim-se
A (-1) I+1 * (2 * I - 1)
I I+1
Soma Soma + A
Fim-Repita
Escreva N, Soma
Fim-se
Fim-Algoritmo
50
Exercícios
Solução:
Algoritmo
Leitura_do_Array_A
Procura_Maior
Imprime Maior
Fim-Algoritmo
Algoritmo
Declare A array[1..100] numérico
Declare I, N, Maior numérico
{ Leitura do Array A }
Leia N
I 1
Repita
Se I = N + 1
então interrompa
Fim-se
Leia A[I]
I I+1
Fim-Repita
{ Procura do Maior }
Maior A[1]
I 2
Repita
Se I = N + 1
então interrompa
Fim-se
Se A[I] > Maior
então Maior A[I]
Fim-se
I I+1
Fim-Repita
51
{ Impressão do Maior }
Escreva Maior
Fim-Algoritmo
52
2.a) Lidos um número k, verifique se êle pertence ou não a um array lido A, de tamanho n.
Algoritmo
Leitura_do_Valor_k
Leitura_do_Array_A
Verifica_Presença
Fim-Algoritmo
Algoritmo
Declare A array[1..100] numérico
Declare i, k numérico
{ Leitura do Valor k }
Leia k
{ Leitura do Array A }
Leia N
I 1
Repita
Se I = N + 1
então interrompa
Fim-se
Leia A[I]
I I+1
Fim-Repita
{ Verifica Presença }
I 1
Repita
Se I = N + 1
então interrompa
Fim-se
Se A[I] = k
então Escreva "k pertence ao array A"
Fim-se
I I+1
Fim-Repita
Fim-Algoritmo
53
Ao simularmos a execução do algoritmo para um conjunto de dados como os apresentados
abaixo:
k = 1.25
n=5
1 2 3 4 5
verificamos que a mensagem "k pertence ao array A" será impressa duas vêzes quando
apenas uma vez seria suficiente.
Por outro lado se simularmos a execução do algoritmo para um conjunto de dados como os
apresentados abaixo:
k = 0.88
n=5
1 2 3 4 5
verificamos que a nenhuma mensagem será impressa, quando poderíamos declarar que o
número k não pertence ao array A.
Solução 2:
Algoritmo
Declare A array[1..100] numérico
Declare i, k numérico
Declare Achei lógico
{ Leitura do Valor k }
Leia k
{ Leitura do Array A }
Leia N
I 1
Repita
Se I = N + 1
então interrompa
Fim-se
Leia A[I]
I I+1
Fim-Repita
{ Verifica Presença }
Achei Falso
I 1
54
Repita
Se I = N + 1 ou Achei = Verdadeiro
então interrompa
Fim-se
Se A[I] = k
então Achei Verdadeiro
Fim-se
I I+1
Fim-Repita
Se Achei = Verdadeiro
então Escreva "k pertence ao array A"
senão Escreva "k não pertence ao array A"
Fim-se
Fim-Algoritmo
55