Buscar

Apostila de Introdução a Ciencia dos Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
PSA - Material de Apoio 
 
 
 
APOSTILA DE INTRODUÇÃO À 
CIÊNCIA DOS COMPUTADORES 
 
 Versão 1.0 
 
 
José Francisco de Magalhães Netto jnetto@dcc.fua.br 
Raimundo da Silva Barreto barreto@dcc.fua.br 
 
 
 
 
 
 
 
 
Última Atualização 26/01/99 por Ruiter Braga Caldas - ruiter@dcc.fua.br 
 2 
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 
 
 3 
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. 
 
 4 
1. NOÇÕES DE COMPUTADORES1.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 
von Leibnitz 
Máquina de multiplicar totalmente mecânica 
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 
 
 5 
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 1a Circuitos eletromecânicos e válvulas (ENIAC, EDVAC, UNIVAC). 
1950 2a Transistores (Bell Telephone Laboratories, 1948), dispositivos 
menores com menor consumo de potência, mais robustos e confiáveis. 
1960 3a Circuitos integrados – integração de vários transistores em uma única 
embalagem (chip) com aproximadamente as mesmas dimensões de 
um transistor. 
1970 4a 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 
 
 
 6 
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). 
 7 
 
 
 
 
 
 
 
 
 
 
 
 
 
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. 
 
Memória 
Unidade 
de 
Entrada 
Unidade 
de 
Controle 
Unidade 
de 
Saída 
Unidade 
Lógica e 
Aritmética 
Unidade Central de Processamento 
 8 
 
 1 Kilobyte = 210 bytes = 1024 bytes 
 1 Megabyte = 1024 kilobytes = 1048576 bytes 
 1 Gigabyte = 1024 Megabytes = 1048576 kilobytes = 1073741824 bytes 
 1 Terabyte = 1024 Gigabytes 
 
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) 
 
 9 
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. 
 10 
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 23 + 1 X 22 + 0 X 21 + 0 X 20 
 
 
= 1 X 8 + 1 x 4 + 0 X 2 + 0 X 1 
 
 = 8 + 4 
 
 = (12)10 
 11 
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ÚMEROSFRACIONÁ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 + 0 X 2-2 + 1 X 2-3 
 
= 1 + 0 + 1 
 21 22 23 
 = 0.5 + 0.125 
 = (0.625)10 
 
 
 12 
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. 
 
 13 
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. 
 14 
 
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 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”. 
 
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: 
 
 15 
1) Trazer o cesto com batatasdo 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 
 16 
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. 
 
 17 
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). 
 
 18 
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 nome-do-tipo 
 
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. 
 
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; 
 19 
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) ≠ (diferente) > (maior do que) 
< (menor do que) ≥ (maior ou igual) ≤ (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 
 
 20 
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 numérico 
 leia A, B, C 
 C ← (A + B) x C 
 escreva A, B, C 
fim-algoritmo 
 
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. 
 21 
 
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 
 22 
 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 
 
 23 
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 comando Program define o 
título: 
 
 PROGRAM PesoIdeal; 
 Program Somar; 
 PROGRAM Soma_Dois_Números; 
 
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çõesconté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: 
 24 
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 
 25 
• Operadores Aritméticos 
 
Operador Operação Tipo de 
Operando 
Tipo do 
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 
 7 + 8 
 12.6 - 12 
 -(5 + 2) 
 +(5 - 7) 
17 
15 
0.6 
-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. 
 
 26 
• 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 
45 <> 50 
60 > 60 
60 >= 60 
Falso 
Verdade 
Falso 
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 
(Conjunção) 
A AND B V 
V 
F 
F 
V 
F 
V 
F 
V 
F 
F 
F 
OR OU lógico 
(Disjunção) 
A OR B V 
V 
F 
F 
V 
F 
V 
F 
V 
V 
V 
F 
XOR OU Exclusivo 
lógico 
A XOR B V 
V 
F 
F 
V 
F 
V 
F 
F 
V 
V 
F 
 
Exemplo: 
Expressão Resultado 
NOT (45 = 50) 
(4 < 5) AND (10 > 7) 
Verdade OR Falso 
Falso XOR Verdade 
Verdade 
Verdade 
Verdade 
Verdade 
 
 27 
 
 
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!’); 
 
 
 
 
 
 28 
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>; 
 29 
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 := Alunos_Lidos + 1; 
 Writeln(Codigo, Nome, Media_Final, Freq) 
 If ((Media_Final >= 5.0) and (Freq >= 45)) 
 then 
 Aprovados := Aprovados + 1 
 else 
 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>. 
 
 
 30 
Exemplo: Soma dos inteiros de 1 até 10 
 
 Program SomarInteiro; 
 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. 
 
3.1.10 REGRAS DE SINTAXE 
 
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) { 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 } 
 
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`}; { (;) antes de End é legal } 
 end; 
 31 
 
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; { Errado } 
 X := 1; 
 Repeat 
 X := X + 1; 
 writeln(X*X); { (;) legal } 
 Until X <> 11; 
 
e) Um ponto-e-vírgula não é usado após Then e antes de Else; 
 If X <> 5 then Y := Y + X; { Errado } 
 else Y := Y + X; 
 
 32 
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 
 
Início 
Escreva (Digite um numero) 
Leia(N) 
Se N<0 
 Então 
 Escreva('Nao existe fatorial de numero negativo!) 
 Senão 
 Início 
 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) 
Program Fatorial; 
 
Uses Crt; 
 
Var f,n,x,i :Integer; 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 33 
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? 
 
 34 
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 quandoda 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. 
 
 35 
B.Conversão de Números Decimais em Binários e Vice-Versa 
 
1. Converta os seguintes números decimais em números binários: 
a) 8 b) 17 c) 32 d) 64 e) 81 f) 93 
 
2. Converta os seguintes números inteiros binários em números decimais: 
a) 10 b) 101 c) 1100 d) 11111 e) 101110 f) 1010101 
 
3. 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 
 
4. 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 
 
5.
. 
Faça as transformações de base pedidas: 
a) (21.1)10 = ( )2 
b) (10011.011)2 = ( )10 
c) (19.1)10 = ( )2 
d) (10111,011) 2 = ( )10 
 
6. 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 
2n. Justifique esta afirmativa. 
 
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. 
 
 
 
 
 36 
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? 
 37 
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. 
 
 38 
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ãoas 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. 
 
 39 
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 
e escreva: (a) a maior e a menor altura do grupo; (b) a média de altura das 
mulheres; ( c) o número de homens. 
 
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 = xi – xi
2
 - a 
 2xi 
Sendo dado o valor inicial x0, 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. 
 40 
 
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 552 = 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 
 
 41 
 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 ex para um determinado valor usando a série 
 ex = 1 + x + x2 + x3 + x4 + x5 - ... 
 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 – x3 + x5 – x7 + x9 - ... 
 3! 5! 7! 9! 
 
61 Calcule o valor do cosseno de um ângulo usando a série 
 cos x = 1 – x2 + x4 – x6 + x8 - ... 
 2! 4! 6! 8! 
 
62 Calcule e escreva o valor de pi, com precisão de 0.01, dado pela série: 
 pi = 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. 
 42 
 
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 ∑ ai bi, 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. 
 
 43 
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

Outros materiais