Você está na página 1de 77

INTRODUO A ALGORITMOS E

PROGRAMAO

Sumrio
I

ConceitosPreliminares

10

1 OComputador
11
1.1 HistricodosComputadores ................................................................................................11
1.2 ArquiteturaBsica............................................................................................................................12
1.2.1 Unidade Central deProcessamento(UCP). ...........................................................13
1.2.2 Memria ...............................................................................................................................13
1.2.3 Dispositivos de Entrada e de Sada...................................................................14
2 Algoritmos
15
2.1 ConceitodeAlgortimo..............................................................................................................15
2.2 Partes deUmAlgoritmo ..........................................................................................................16
2.3 Representaes deum Algoritmo.............................................................................................18
2.3.1 Fluxograma .........................................................................................................................18
2.4 Programas de Computador .........................................................................................................18
2.5 Linguagens...................................................................................................................................18
2.5.1 LinguagemNatural....................................................................................................19
2.5.2 Linguagem de Mquina e Assembler...............................................................20
2.5.3 Linguagens de Programao ......................................................................................21
2.5.4 Pseudocdigo.....................................................................................................................22

II

Dados

25

3 RepresentaodeDados
26
3.1 Representao Interna ..................................................................................................................26
3.2 Tipos Primitivos................................................................................................................................28
3.3 Constantes e Variveis......................................................................................................................... 29
3.4 Manipulao de Dados...........................................................................................................30
2

SUMRIO

3.4.1
3.4.2

Identificao .......................................................................................................................30
Definio...............................................................................................................................31

3.4.3

Atribuio ............................................................................................................................32

4 Expresses
34
4.1 ExpressesAritmticas..................................................................................................................34
4.1.1 Precedncia Geral dos Operadores Aritmticos ...............................................34
4.1.2 Escrita de Operaes Aritmticas ............................................................................36
4.1.3 Excees em Expresses Aritmticas.....................................................................36
4.1.4 Simplificao de Expresses Aritmticas......................................................37
4.2 ExpressesLgicas...........................................................................................................................37
4.2.1 Operadores Relacionais ................................................................................................37
4.2.2 Operadores Lgicos ........................................................................................................38
5 Comandos de EntradaeSada
41
5.1 Sada .......................................................................................................................................................41
5.2

III

Entrada..................................................................................................................................................42

EstruturasdeControle

44

6 EstruturasdeCondio
45
6.1 Estrutura de Condio Simples:se-ento.......................................................................................46
6.2 Estrutura de Condio Composta:se-ento-seno..................................................................47
6.3 Estruturas de Condio Encadeadas ......................................................................................49
6.4 Estrutura de Condio casoseja...............................................................................................50
7 EstruturasdeRepetio
53
7.1 Teste no Incio:enquanto-faa ....................................................................................................54
7.2 Teste no Fim:faa-enquanto........................................................................................................54
7.3 Repetio com Controle:faa-para ..........................................................................................55
7.4 ContadoreseAcumuladores .................................................................................................55
7.4.1 Contadores ..........................................................................................................................56
7.4.2 Acumuladores....................................................................................................................56

IV

Estrutura de Dados e Modularizao

59

8 VariveisCompostasHomogneas
60
8.1 Vetores Unidimensionais..............................................................................................................60
8.2 Vetores Bidimensionais.................................................................................................................62
8.3 Vetores Multidimensionais ..........................................................................................................62

SUMRIO

9 Mdulos
63
9.1 Modularizao...................................................................................................................................63
9.2 Retorno de Valores ........................................................................................................................................63
9.3 Escopo de Variveis ......................................................................................................................63
9.4 Passagem de Parmetros .............................................................................................................63
9.4.1 Por Valor..............................................................................................................................................63
9.4.2 Por Referncia ...................................................................................................................63

Apndice

65

A Exerccios
66
A.1 Algoritmos...........................................................................................................................................66
A.1.1 Para os problemas a seguir,defina:..........................................................................66
A.2 Representao de Dados ..............................................................................................................67
A.3 Expresses...........................................................................................................................................69
A.4 Entradae Sada ..................................................................................................................................71
A.5 EstruturasdeCondio ...................................................................................................................72
A.5.1 Estrutura para-faa ..................................................................................................................... 72
A.5.2 Estrutura se-ento-seno aninhada.........................................................................74
A.5.3 Estrutura caso seja.........................................................................................................77
A.6 EstruturasdeRepetio..................................................................................................................78
A.6.1 Utilizando somente a estrutura de repetio para-faa................................78
A.6.2 Utilizando a estrutura de condio se-ento-seno dentro da estrutura
derepetio para-faa ....................................................................................................78
A.6.3 Calculando quantidades de ocorrncias, somatrios e produtos com a
estrutura para-faa
78
A.6.4 Localizando valores dentro de um conjunto com a estruturapara-faa
.................................79
A.6.5 Usando estrutura de repetio para-faa aninhada........................................80

SUMRIO

A.6.6 Estruturas de repetio(enquanto-faa e faa-enquanto)...........................80


A.6.7 Sries......................................................................................................................................80
A.7 Vetores....................................................................................................................................................................82
A.8 Matrizes................................................................................................................................................83
A.9 Modularizao...................................................................................................................................83

Lista de Figuras
1.1 Arquitetura bsica (VonNeumann) .........................................................................................12
2.1
2.2
2.3

Partes bsicas deumalgoritmo........................................................................................... 17


Algoritmo representado em forma deumfluxograma.................................................19
Compilao: o programa em linguagem de programao transformado em instrues em linguagem de mquina (que o processador pode
executar)....................................................................................................................................... 21

6.1 Estutura de um comando se-ento ....................................................................................................... 47


8.1 Vetor idade[8] com seus valores e ndices. ...........................................................................61

Lista de Tabelas
3.1 Equivalncia entre sistemas numricos de representao. Osubscrito
identifica em que base o nmeroestescrito......................................................................27
4.1

Operadores aritmticos bsicos. ..............................................................................................34

4.2
4.3
4.4

Precedncia Geral de Operadores Aritmticos..................................................................35


OperadoresRelacionais .................................................................................................................38
Tabela verdade dos operadores lgicos. P e Q so sentenas lgicas
quaisquer .............................................................................................................................................39

6.1 Tabelade deciso paraa estrutura de condio composta mostrada no


algoritmo11. .......................................................................................................................................50

Lista deAlgoritmos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Troca de pneudocarro. ...................................................................................................................16


Pegarumonibus. ........................................................................................................................17
Calcula rea deumaCircunferncia. ................................................................................18
ExemplodePseudocdigo. ....................................................................................................22
Atribuies de valores aumavarivel. ............................................................................32
Locadora: exemplo de entradadedados. .......................................................................43
Locadora 2: exemplo de aviso para entradade dados. ...........................................43
Condio: maior ou menordeidade. ................................................................................47
Condio: maior ou menor de idadecomse-ento-seno...................................................48
Expresso lgica composta. ........................................................................................................49
Estrutura de condio composta..............................................................................................49
Verifica aprovao dealunos. ......................................................................................................51
Estruturacaso.....................................................................................................................................51
Exemplo de caso mostra o numero. ........................................................................................52
Estrutura de repetio enquanto-faa...................................................................................54
Estrutura de repetio faa-enquanto...................................................................................55
Estrutura de repetio para-faa .............................................................................................55
Exemplo de estrutura de repetio.........................................................................................55
Contadores 1 ......................................................................................................................................56
Contadores 2 ......................................................................................................................................56
Acumuladores 1................................................................................................................................57
Acumuladores 2................................................................................................................................57
Acumuladores 3................................................................................................................................58
Acumuladores 4................................................................................................................................58
Definindo os valores da varivel idade. ......................................................................61
Imprimindo todos os valores da varivel idade[]. .................................................62
Antecessor-sucessor.......................................................................................................................71

LISTADEALGORITMOS
28
29
30
31
32
33

Conversor ............................................................................................................................................71
Numero-de-salarios........................................................................................................................72
Novo-peso....................................................................................................................................72
Problema20 ........................................................................................................................................77
Adivinhacao ................................................................................................................................80
Calculodopi..................................................................................................................................81

Parte I
Conceitos Preliminares

10

Captulo 1
O Computador
Um computador uma mquina que manipula dados a partir de uma lista de
instrues.
Os computadores podem ser mecnicos (computador analgico) ou eletrnicos
(computadores digitais).

1.1

Histrico dosComputadores

>MECNICOS
baco 1000A.C
OssosdeNapier1612
Pascaline, Pascal1642
Tear automtico, Jacquard1801
Mquinadediferenas,Babbage1882
Tabulador eletromecnico, Hollerith1890
>1aGERAO eletro-eletrnicos
Z1, Z2, Z3 (rels), Konrad Zuse 1935
ABC (vlvulas), Atanosoff1936
MARK-1, 1941, 120 m2, 10 multiplicaes em 3 segundos
ENIAC, 1946, 30 toneladas, 18000 vlvulas, 5000 somas/s
>2a GERAO transistores 1947
11

CAPTULO 1. O COMPUTADOR

12

TX-0, 1957
PDP-1, Digital, 1o computadorcomercial
>3aGERAO circuitos integrados 1958
IBM 360, 1965
PDP-11, sucessouniversitrio
>4a GERAO microprocessadores 1970
Intel 4004, 1971, 4 bits
Intel 8008, 1972
Altair 8800, 1974, montado emkits
Apple, 1976, TV+Teclado, BASIC escrito por BillGates
IBM-PC, 1981, computador pessoal, (projeto aberto, processador 8088 Intel,
16 bits, 4.77 MHz, 16 kb RAM, US$ 4400. )

1.2

Arquitetura Bsica

Internamente os computadores modernos podem ser caracterizados por trs partes


distintas, a unidade central de processamento (UCP), a memria (MEM) e os
dispositivos de entrada e sada (E/S), conforme esquema na Figura 1.1.

Figura 1.1: Arquitetura bsica (Von Neumann)

CAPTULO 1. O COMPUTADOR

1.2.1

13

Unidade Central de Processamento (UCP).

A UCP (ou CPU da sigla em ingls, Central Processing Unit) um conjunto de dispositivos
eletrnicos responsvel pelas operaes de processamento referentes aos clculos
lgicos e matemticos. Para execuo das operaes de processamento citadas, a UCP
realiza sempre as seguintes tarefas1:
1. buscadeumainstruonamemria;
2. interpretaodeumainstruo;
3. execuodeumaoperaorepresentadanainstruo;
4. gravaodeeventuaisresultadosdoprocessamento;
5. reincio de todo o processo (casonecessrio)
Fazem parte da maioria das UCPs as seguintes unidades:
Unidade Aritmtica e Lgica (UAL) responsvel por realizar clculos matemticos mais
complexos de maneira mais rpida.
Registradores Memria temporria para armazenar dados a serem processados
Unidade de Controle (UC) Controla o fluxo de dados na UCP: busca na memria,
chamadas da UAL, controle geral das tarefas da UCP.
Relgio Gerador de pulsos que determinam um ciclo de tarefas da UCP. Em cada
ciclo (ou pulso) a UCP realiza uma tarefa, assim quanto maior a frequncia do
relgioda UCP,maistarefasestapoderealizarnummesmointervalodetempo.

1.2.2

Memria

A memria o dispositivo responsvel por armazenar dados. Os vrios tipos de memria no computador so classificadas de maneira geral de acordo com a sua capacidade de leitura, escrita e volatilidade. So divididas em:
RAM sigla para memria de acesso aleatrio, uma memria em que se pode ler e
escrever, mas cujo contedo perdido uma vez que o computador desligado.
a memria principal do computador e a mais usada pelos aplicativos e sistema
operacional.

1A

sequncia de tarefas descritas aqui constitui a base mnima de um algortimo: entrada de dados,
processamento de dados e sada de dados. Mais sobre isso na Seo 2.2.

CAPTULO 1. O COMPUTADOR

14

ROM sigla para memria somente-leitura, como o nome diz s possvel ler seu contedo, mas no alter-lo. No se altera se o computador desligado.
Secundria so dispositivos usados para armazenar grandes quantidades de informao em carter no voltil.Na maioria das vezes muito mais lenta que a
RAM. Exemplo so os discos rgidos.

1.2.3

DispositivosdeEntradaedeSada

Os dispositivos de entrada e sada de dados (E/S) so de suma importnciapois


qualquer informao que deva entrar ou sair do computador ser feita atravs
deles.
Dentre
os
dispositivos
de
entrada
podemos
citar:
teclado,mouse,cmera,digitalizador.Os
dispositivos
desada
podem
ser:monitor2,impressora,sadadesom,porexemplo.
Os dispositivos de E/S se comunicam com o computador atravs de
portasespecficas de comunicao, como porta paralela, porta serial, porta USB,
porta SCSI, porta Firewire,portaPS/2,eassimpordiante. Cadaporta compreende um
tipo de conector especfico, porm mais do que isso um protocolo de comunicao
entre dispositivos.
O dispositivo de entrada padro o teclado, enquanto que a sada padro o monitor. Isto significa que sempre que no for explicitamente especificado, um programa
tentar ler do teclado e escrever para o monitor.

2H

monitores que so utilizados tambm como dispositivos de entrada, os chamados monitores


touch-screen

Captulo 2
Algoritmos
2.1

Conceito de Algortimo

Um algoritmo pode ser definido comouma sequncia finita de passos (instrues)


para resolver um determinado problema. Sempre que desenvolvemos um algoritmo
estamos estabelecendo um padro de comportamento que dever ser seguido (uma
norma de execuo de aes) para alcanar o resultado de um problema.

Para o desenvolvimento deum algoritmo eficiente necessrio obedecermos


algumas premissas bsicas no momento de sua construo:
>Definir aes simples e sem ambiguidade;
>Organizar as aes de formaordenada
>Estabelecer as aes dentro de uma sequncia finita de passos.
O algoritmo 1 um exemplo simples de algoritmo (sem condies ou repeties)
para troca de um pneu.
Os algoritmos so capazes de realizar tarefas como:
1. Ler e escreverdados;
2. Avaliar expresses algbricas, relacionais e lgicas;
3. Tomar decises com base nos resultados das expresses avaliadas;
4. Repetirumconjuntodeaesdeacordocomumacondio;

15

CAPTULO 2. ALGORITMOS

16

No algoritmo 2 esto ilustradas as tarefas anteriormente mencionadas. Nas linhas


de 2 a 4 pode-se observar a repetio de uma ao enquanto uma dada condio seja
verdadeira, neste caso em especfico, o algoritmo est repetindo a ao esperar nibus enquanto a condio nibus no chega permanecer verdadeira, assim que essa
condio se tornar falsa (quando o nibus chegar) o algoritmo deixar de repetir a
ao esperar nibus, e ir executar a linha 5.
J nas linhas de 7 a 9, possvel observar um exemplo da execuo(ou no
execuo) de uma ao com base na avaliao de umaexpresso.Nesse trecho,o
algoritmo avalia se a expresso no tenho passagem verdadeira e em caso
positivo, executa a aco pegar dinheiro. Caso a expresso no tenho passagem
seja falsa (ou seja, a pessoa tem passagem) ento o algoritmo ir ignorar a ao
pegar dinheiro e ir executara linha 10.
Estas estruturas de controle sero estudadas em detalhe nos captulos 6 e 7.

2.2

Partes de Um Algoritmo

Um algortimo quando programado num computador constitudo pelo menos das 3


partes, sendo elas:
1. Entrada dedados;
2. Processamentodedados;
3. Sada dedados;
Na parte de entrada, so fornecidas as informaes necessrias para que o algoritmo
possa ser executado. Estas informaes podem ser fornecidas no momento em que o
programa est sendo executadoou podem estar embutidas dentro do mesmo.

CAPTULO 2. ALGORITMOS

17

Figura 2.1: Partes bsicas de um algoritmo.


Na parte do processamento so avaliadas todas as expresses algbricas, relacionais
e lgicas, assim como todas as estruturas de controle existentes no algoritmo (condio
e/ou repetio).
Na parte de sada, todos os resultados do processamento (ou parte deles) so
enviados para um ou mais dispositivos de sada, como: monitor, impressora, ou at
mesmo a prpria memria do computador.
Por exemplo, considere o algoritmo 3 que tem como objetivo calcular a rea de uma
circunferncia dada por A = R2. Para calcular a rea necessrio saber os valores do
raio R e do . Considerando que o valor de constante o mesmo poder ser gravado
(definido) dentro do prprio algoritmo, e a entrada para o processamento desse
algoritmo consistir nesse valor juntamente com o valor do raio R (que deve ser
informado pelo usurio pelo teclado, por exemplo). O processamento do algoritmo
ser a realizao do clculo R2 e a atribuio do resultado dessa expresso para a
varivel A. A parte da sada consistir na escrita do valor de A nomonitor.

CAPTULO 2. ALGORITMOS

2.3

18

Representaes de um Algoritmo

2.3.1 Fluxograma
Os fluxogramas so uma apresentao do algoritmo em formato grfico.Cada ao
ou situao representada por uma caixa.Tomadas de decises so indicadas por
caixas especiais, possibilitando ao fluxo de aes tomar caminhos distintos.
A Figura2.2 representa um algoritmo na forma de um fluxograma. O incio e o
fim do algoritmo so marcados com uma figura elptica; as aes a seremexecutadas
esto em retngulos; sendo que as estruturas de controle condicionais esto em
losangos e indicam duas possibilidades de proseguimento do algoritmo, uma para o
caso da expresso avaliada(condio) ser verdadeira e outra para o caso de ser
falsa.
No exemplo da Figura 2.2, a primeira ao executada ('abrir forno') e ento a segunda
expresso avaliada ('fogo aceso?') como verdadeira ou falsa; caso seja verdadeira,o
algoritmo prossegue para a ao esquerda ('botar lenha'); caso seja falsa, oalgoritmo
executa a ao direita ('acender fogo'). Em seguida, para qualquer um doscasos, a
prxima ao a ser executada ('assar po').

2.4

Programas de Computador

2.5

Linguagens

Qualquer tipo de informao que deva ser transferida, processada ou armazenada


deve estar na forma de uma linguagem. A linguagem imprescindvel para o processo de comunicao. Duas pessoas que se falam o fazem atravs de uma
linguagem em comum, a linguagem natural. Da mesma forma, duas mquinas
trocam informao por uma linguagem, que neste caso mais tcnico e restrito,se
chama protocolo. Do mesmo modo, um computador armazena suas instrues em
cdigo de mquina. Estas diferentes linguagens no podem ser traduzidas
diretamente entre s, pois almde serem representa das de modos diferentes,
tambm referem-se a coisas muitodistin-

19

CAPTULO 2. ALGORITMOS

Figura 2.2: Algoritmo representado em forma de um

fluxograma.

tas. Para que um ser humano possa programar, armazenar e buscar informaes
num computador, necessrio que saiba instru-lo na sua linguagem de mquina ou
numa linguagem intermediria(uma linguagem de programao)que possa ser
facilmente traduzida para ocomputador.

2.5.1

Linguagem Natural

A linguagem natural a maneira como expressamos nosso raciocnio e trocamos


informao. Como a expresso da cultura de uma sociedade, desenvolvida atravs
das geraes e em diferentes situaes, raramente constitui um sistema de regras
rgidas que possa ser implementada numa mquina ou que possa ser transcrita
logicamente.
Alm da linguagem falada, fazem parte da nossa comunicao gestos e posturas,
que no podem ser diretamente adaptados para compreenso de uma mquina. Por
fim, toda a comunicao eficiente pressupe um conhecimento prvio comum entre
os interlocutores, por exemplo a mesma lngua, a mesma bagagem cultural e assim
por diante.
Ao contrrio dos seres humanos, as mquinas (dentre elas os computadores) so

CAPTULO 2. ALGORITMOS

20

projetados para executar tarefas bem determinadas a partir de determinadas


instrues. Um computador no por si s uma mquina inteligente no sentido que no
pode aprender com a prpria experincia para melhorar seu comportamente futuro1.
Ao contrrio, um computador somente capaz de realizar estritamente as tarefas que
lhe forem delegadas e que faam parte do conjunto daquelas aes que ele pode
executar. Neste sentido, necessrio compreender que tipo de instrues podem ser
exe- cutadas pelos computadores para que possamos program-los instru-los com a
sequncia de aes necessrias para resolver um determinado problema de modo
que realizem a tarefa do modo desejado.

2.5.2

Linguagem de Mquina e Assembler

Alm do fato de o computador necessitar que lhe instruam com aes bem especficas,
estas aes devem ser passadas para o computador numa linguagem que ele possa
entend-las, chamada linguagem de mquina. Esta linguagem composta somente
por nmeros, representados de forma binria, que, sob o ponto de vista do computador, representam as operaes e os operandos que sero usados no processamento do
programa. Para um ser humano, a linguagem de mquina dificlima de compre- ender.
Assim, existe uma linguagem representada por comandos mas que reproduz
as
tarefas que sero executadas dentro do computador, a linguagem de montagem
(assembly). Entretando, mesmo a linguagem de montagem difcil de programar e os
programas feitos para um determinado processador, por conterem instrues
especficas deste, no funcionaro em umprocessador de outro tipo.
Com ilustrao, abaixo mostrado o incio de um programa que escreve a frase
OlMundonomonitor.Nacolunadaesquerdaestoendereorelativodememria, na
coluna do centro o programa escrito em linguagem de mquina e na coluna da
direita a representao em caracteres ASCII. Teoricamente, o programa poderia ser
escrito diretamente em linguagem de mquina, como mostrado abaixo, entretando
a sintaxe do mesmo muito pouco compreensvel e a probabilidade de erro para o
seu desenvolvimento seria muito grande.
00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 02 00 03 00 01 00 00 00 D0 82 04 08 34 00 00 00 ............4...
00000020 BC 0C 00 00 00 00 00 00 34 00 20 00 07 00 28 00 ........4. ...(.
1

Diversos esforos vm sendo despendidos dentro do meio cientfico para equipar computadores
comestacapacidade,ocampodepesquisaquecuidadessetipodetarefaconhecidocomoInteligncia
Artifical

CAPTULO 2. ALGORITMOS

21

Figura 2.3: Compilao: o programa em linguagem de programao transformado


em instrues em linguagem de mquina (que o processador pode executar).
00000030 24 00 21 00 06 00 00 00 34 00 00 00 34 80 04 08 ..!.....4...4...
00000040 34 80 04 08 E0 00 00 00 E0 00 00 00 05 00 00 00 4...............

2.5.3

LinguagensdeProgramao

Para facilitara tarefa de programar um computador, foram criadas vrias linguagens


de programao. Estas linguagens so uma maneira de tentar escrever as tarefas
que o computador vai realizar de maneira mais parecida com a linguagem natural.
Embora ainda seja muitas vezes complexo em comparao com a linguagem
natural,um programa escrito em uma linguagem de programao muito mais fcil
de ser imple- mentado, compreendido emodificado.
Aslinguagensdeprogramaosoummeiotermoentrealinguagemdemquina e a
linguagem natural. Deste modo so classificadas de acordo com o nvel entre a
linguagem natural ou de mquina que ocupam.As linguagens muito parecidas com
linguagem de mquina so chamadas de linguagens debaixo nvel e suasinstrues
parecem muito com aquelas que sero executadas pelo processador. As linguagens
de alto-nvel so as que guardam mais semelhanas com a linguagem natural.
Exemplo de linguagens de baixo nvel a linguagem de montagem (assembly).
Exemplos de linguagens de alto-nvel so: Pascal, C, Fortran, Java, Perl, Python, Lisp,
PHP, entre outras.
Como o processador no pode executar o cdigo numa linguagem de programao, esta deve ser traduzida em cdigo de mquina antes de ser executada. Este
processo chamado de compilao (representadona Figura2.3) e responsvelpor
converter os comandos da lingugem de programao nas instrues em cdigo de
mquina que o processador poder utilizar.
Por exemplo,o cdigo de mquina da seo 2.5.2 foi gerado pelo programa a
seguir, escrito na linguagem de programao C. Esse programa, depois de compilado,
escreve frase Ol Mundo no monitor. A compilao, isto , a traduo do programa
em C para linguagem de mquina, produz algo parecido com o que mostrado na
seo 2.5.2, para o caso de um processador da famlia 80386,usados em PCs.
#include <stdio.h>
int main(){
printf("Ol Mundo\n");
}

CAPTULO 2. ALGORITMOS

22

A primeira linha (#include) inclui algumas bibliotecas de instrues que facilitaro a


programao. A linha seguinte indica que esta a parte principal (main) do programa; o
que estiver dentro do bloco delimitado por chaves { } ser executado. Finalmente, a
prxima linha imprime(printf) o argumento( Ol Mundo) no monitor.
Um programa escrito em linguagem de mquina,como contm instrues
especficas de um processador, s poder ser utilizado naquele processador oue
msimilares.
Em
contrapartida,umalinguagemdeprogramao,comocontmsomenteinstrues
abstratas do que fazer, pode ser compilado para qualquer cdigo de mquina. Em
resumo, ao invs de escrever um programa em cdigo de mquina para cada famlia
de processdores, escreve-se o mesmo cdigo numa linguagem de programao e
est compilada por um compilador especfico daquela arquitetura.

2.5.4

Pseudocdigo

O pseudocdigo uma maneira intermediria entre a linguagem natural e uma


linguagem de programao de representar um algoritmo. Ela utiliza um conjunto
restrito de palavras-chave, em geral na lngua nativa do programador, que tem
equivalentes nas linguagens de programao. Alm disso, o pseudocdigo no
requer toda a rigidez sinttica necessria numa linguagem de programao,
permitindo que o aprendiz se detenha na lgica dos algoritmos e no no formalismo
da sua representao. Na medida em que se obtm mais familiaridade com os
algoritmos, ento o pseudocdigo pode ser traduzido para uma linguagem
deprogramao.

CAPTULO 2. ALGORITMOS

23

Na listagem 4 mostrado um exemplo de pseudocdigo escrito em portugus para escrever o maior


valor entre, x ou y.As palavras leia, se, ento, seno, seno-se, fimse, e escreva so palavras-chave que
representam estruturas presentes em todas as linguagens de programao. Entretanto, no
pseudocdigo no necessrio se preocu- par com detalhes de sintaxe (como ponto-e-vrgula no
final de cada expresso) ou em formatos de entrada e sada dos dados. Deste modo, o enfoque no
desenvolvimento

do algoritmo fica restrito a sua lgica em si, e no na sua sintaxe para

representao em determinada linguagem.

Por exemplo, considere o cdigo do programa a seguir que implementa na linguagem de programao C o algoritmo 4. Veja como o mesmo requer uma sintaxe
bem mais rgida do que o seu algoritmo correspondente Isso acontece pois para que
o compilador C possa entender o programa desenvolvido, necessrio que sejam respeitadasalgumasexignciasdalinguagem,comoporexemplo:
>todo programa em C inicia sua execuo na funo main(), que obrigatria;
>para que certas funes sejam acessveis, necessrio incluir a bilbioteca stdlib.h;
>todas as linhas que contm instrues devem terminar com ponto-e-vrgula;
>os blocos de instrues so delimitados por chaves;
>linhas de comentrios2 so iniciadas por duas barras //;
>blocos de comentrios so delimitados por /* e*/;
Este conjunto de regras demonstra como o compilador (nesse caso o compilador C)
requer estruturas bem rgidas para poder processar (entender) o programa. Para facilitar o entendimento das estruturas algortmicas que sero estudadas, os algoritmos
apresentados aqui sero escritos em pseudocdigo, sendo fundamental que o estudante
consiga entender a correspondncia entre os mesmos e a sua representao em uma
linguagem de programao.
#include <stdio.h>
int main(){
int x, y; // isto um comentrio de linha
2

Os textos escritos dentro de linhas e/ou blocos de comentrios so ignoradoas pelo compilador e
servem para que o programador mantenha o cdigo documentado

CAPTULO 2. ALGORITMOS
/* isto um comentrio
de bloco */
printf("\ndigite x:");
scanf("%i",&x);
printf("\ndigite y:");
scanf("%i",&y);
if (x>y) {
printf("x maior\n");
} else if (x<y) {
printf("y maior\n");
} else {
printf("x e y so iguais\n");
}
}

24

Parte II
Dados

25

CAPTULO 3. REPRESENTAO DE DADOS

27

Captulo 3
Representao deDados
3.1

RepresentaoInterna

Para que seja possvel armazenar e manipular dados no computador necessrio


represent-los internamente de alguma forma. Ns seres humanos, representamos
nossos nmeros usando um sistema que chamamos de sistema decimal (ou sistema
na base 10). Esse sistema, que se originou do fato de utilizarmos os 10 dedos das mos
para realizarmos nossas contas, possui 10 diferentes dgitos para representar as
infinitas quantidades e valores que desejamos (0 1 2 3 4 5 6 7 8 e9).

Nos caso dos computadores digitais, a notao que utilizada possui apenas 2
algarismos ou dgitos para representar uma quantidade desejada,o 0 e o1 .Esse
sistema de representao chamado de sistema binrio(ou sistema na base 2) e
utiliza a noo de ligado/desligado, ou verdadeiro/falso, ou finalmente 0/1 1.
Pelo fato de um nmero precisar de muitos algarismos para ser expresso no sistema
binrio, outras formas de representao auxiliares tambm so utilizadas nos computadores, como por exemplo a representao pelo sistema hexadecimal (ou sistema na
base 16) que utiliza 16 dgitos (0 1 2 3 4 5 6 7 8 9 A B C D E F), e a representao no
sistema octal (ou sistema na base 8) que utiliza 8 dgitos (0 1 2 3 4 6 7 8).
Na Tabela 3.1 so mostradas as quantidades de 0 a 15 representadas nos diferentes
sistemas mencionados
A quantidade de algarismos necessria para representar um determinado
nmerovaria de acordo com o sistema de representao utilizado. Se o sistema
decimal,o maior nmero que pode ser representado utilizando N algarismos ser
10N . Por
1
Por esse motivo,o elemento mnimo capaz de armazenar a informao nos computadores foi
apelida do debit,uma contrao do ingls binary digit (dgitobinrio)

CAPTULO 3. REPRESENTAO DE DADOS

decimal
0d
1d
2d
3d
4d
5d
6d
7d
8d
9d
10d
11d
12d
13d
14d
15d

binrio
0000b
0001b
0010b
0011b
0100b
0101b
0110b
0111b
1000b
1001b
1010b
1011b
1100b
1101b
1110b
1111b

hexadecimal
0h
1h
2h
3h
4h
5h
6h
7h
8h
9h
Ah
Bh
Ch
Dh
Eh
Fh

28

octal
0o
1o
2o
3o
4o
5o
6o
7o
10o
11o
12o
13o
14o
15o
16o
17o

Tabela 3.1: Equivalncia entre sistemas numricos de representao. O subscrito


identifica em que base o nmero est escrito exemplo, se nos restringimos a nmeros de
dois algarismos, no sitema decimal s poderamos escrever 100 nmeros, de 0 a 99 (102
= 100). Para nmeros de trs algarimos, poderamos escrever 1000 nmeros, de 0 a 999
(103 = 100) e assim por diante.
No sistema binrio acontece da mesma forma. Se dispomos de 4 algarismos,
poderemos escrever 24=16 nmeros, de 0 a 15. Se dispomos de 8 algarismos,
poderemos escrever 28 = 256 nmeros, de 0 a 255 e assim por diante. Note que
por isso que a sequnciadenmeros aparece com tanta frequncia na informtica.
Um nico algarismo binrio chamado bit, uma sequncia de 8 bits um byte e uma
sequncia de 16 bits uma palavra.
21, 22, 23, 24, 25, 26, 27, 28, 29, 210, . . .= 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, . . .
A lgica utilizada para realizar a converso de nmeros entre diferentes bases
similar a lgica que usamos para representar um nmero no sistema decimal, ou
seja, os algarismos iro representar diferentes quantidades dependendo da sua
posio no nmero em questo. Por exemplo, no nmero 25, o algarismo 5
representa a quantidade 5, j no nmero 58, o algarismo 5 representa a
quantidade 50, pois 58=5101+8100, sendo que os expoentes de 10 expressam a
ordem que o algarismo ocupa no nmero.

CAPTULO 3. REPRESENTAO DE DADOS

29

Veja esse outro exemplo,


2679d = 2 103 + 6 102 + 7 101 + 9 100
Em um sistema de representao binrio acontece da mesma maneira. Por exemplo,
100110b=125+024+023+122+121+020=32+0+0+4+2+0=38d

3.2

Tipos Primitivos

Os dados em um computador devem ser armazenados de acordo com o tipo de informao que se deseja representar e como tipo de operao que ser realizada com
eles. A representao correta e adequada de uma informao permite otimizar os
re- cursos computacionais disponveis, alm de acelerar o processamento. A seguir
so definidos os tipos de dados mais comuns encontrados na maioria das
linguagens de programao e que constituem a base de como qualquerinformao
ser armazenada.
Inteiro So os nmeros pertencentes ao conjunto dos Inteiros, isto , que no possuem parte fracionria. Podem ser positivos, nulos ou negativos. Exemplos: 2 laranjas,
calado tamanho 42, 65535 gros, 0 pessoas na fila, multa de -2 pontos no campeonato.
Real So os nmeros pertencentes ao conjunto dos Reais, isto , que podem possuir
parte fracionria. Tambm so chamados de ponto flutuante devido a maneira
como o computador os armazena.
Exemplos2: 2.12 litros de combustvel,
3.525C = 3.141592654, saldo de R$ 10000.52, e = 2.7182818284590451.
Caractere So os valores pertencentes ao conjunto de todos os caracteres numricos
(0...9), alfabticos (a...z,A...Z) e especiais (! @ # $ % _ & *). Esse conjunto tambm
conhecido como conjunto de caracteres alfanumricos. Os caracteres alfanumricos
so armazenados internamente no computador na forma numrica (binria) utilizando
o padro ASCII3.
2 Para ser coerente com a notao usada nos computadores, usaremos aqui o ponto como
separador decimal
3ASCII significa American Standard Code Fo r Information Interchange e umconjunto de cdigos
usado pela indstria de computadores para representar caracteres em cdigo binrio.

CAPTULO 3. REPRESENTAO DE DADOS

30

A seguir so apresentados alguns dos caracteres existentes (representados no


padro ASCII entre o intervalo de 33 a 126):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH
IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop

qrstuvwxyz{|}~
Exemplos de informaes do tipo caractere4: "Joo Francisco", "Rua Ismael Soares",
"Hotel Feliz", "?".Nestes exemplos, as aspas duplas (") so usadas para indicar o incio e
o fim das cadeias de caracteres, porm no fazem parte da informao contida nas
mesmas. importante ressaltar que o espao em branco entre as palavras tambm
um caractere.
Lgico O tipo lgico utilizado para representar informaes qu s podem
assumir dois valores, o valor verdadeiro (V) ou o valor falso (F). Estes valores
tambm podem ser entendidos como: ligado/desligado, 1/0, alto/baixo,
fechado/aberto, etc. Exemplos de informaes que podem ser representadas
utilizando o tipo lgico so: O fogo est apagado, a televiso est ligada, o porto
est aberto, o produto foi encontrado.

3.3

Constantes e Variveis

Dentro de um algoritmo podemos encontrar basicamente duas classes diferentes de


dados, os dados constantes e os variveis. Um dado uma constante quando seu
valor no se altera ao longo do tempo em que o algoritmo executado, ou seja,
permanece o mesmo desde o incio at o final da execuo. J um dado que pode ter seu
valor alterado durante a execuo do programa tido como um avarivel.
Por exemplo, no clculo da rea de uma circunferncia (A= r2), o valor de constante,
pois sempre igual a 3.1416..., e o raio r varivel, pois pode assumir diferentes
valores a cada clculo da rea. Seguindo a mesma lgica, a rea A calculada para
diferentes r tambm varivel.
4

Algumas linguagens de programao utilizam tipos diferentes para representar um caractere


isolado e uma cadeia(ou sequncia) de caracteres. Um exemplo comum a linguagem Pascal, que
utiliza o tipo char para representar um nico caractere, e o tipo string para representar um
conjunto de caracteres agrupados
.

CAPTULO 3. REPRESENTAO DE DADOS

3.4
3.4.1

31

Manipulao deDados
Identificao

Para que os dados sejam manipulados no computador, necessrio que estes


estejam associados a um nome, um identificador. O contedo deste identificador ser
o dado em si e o seu nome ser usado para acessar o dado e realizar operaes. Uma
analogia til para entender o conceito e a necessidade de utilizao do identificador
seria pensar no mesmo como uma placa de sinalizao que indica (delimita) uma
determinada regio ou espao na memria do computador onde o dado(informao)
desejado est localizado. Sendo assim, toda vez que se deseja acessar uma
determinada informao utilizamos o nome dessa placa de sinalizao e
recuperamos o contedo.
A nomeao dos identificadores deve obedecer a algumas regras, sendo elas:
1. Sempre comear com um caractere alfabtico;
2. Pode ser seguido por um ou mais caracteres alfanumricos;
3. No conter caracteres especiais nem espaos com exceo do sublinhado _
(essa exceo tambm vale para a regra do item 1, ou seja, permitido iniciar
a nomeao de um identificador com com _).
4. No permitido utilizar palavras reservadas (palavras prprias da linguagem
de programao, como os comandos, tipos de variveis, etc).
Exemplosdeidentificadoresvlidos: raio, _nome, R, num_clientes, BJ33f15, NumPessoasDoentes.
Exemplos deidentificadoresinvlidos: (ee), 32-vr, mil*, 12ddd, o:P
Ao nomearmos os identificadores dos nossos dados conveniente usarmos palavras
mnemnicas, ou seja, palavras que nos faam lembrar o carter do contedo
armazenado. Isso facilita a leitura do cdigo programado e possibilita uma melhor
documentao do mesmo. Por exemplo, ao armazenarmos o nome completo, a idade e a
quantidade de filhos de uma pessoa, mais prtico e coerente usarmos os identificadores
NomeSobrenome, Idade e NumFilhos do que usarmos nomes aleatrios como X,Y e Z.

CAPTULO 3. REPRESENTAO DE DADOS

3.4.2

32

Definio

Como dito anteriormente, ao longo do programa o dado ser manipulado atravs do


nome do seu identificador, sendo assim, o primeiro passo para utilizarmos os dados
a nomeao do seu identificador e a definio do seu tipo (no caso de identificadores
variveis), ou do seu valor (no caso de identificadores constantes). A definio dos
dados em algoritmos tambm conhecida como declarao.
Um identificador (sendo ele varivel ou constante) declarado com um
determinado tipo de dados ficar restrito a armazenar valores daquele tipo
especfico (inteiro,real, caractere, lgico). Na maioria dos casos, se houver uma
tentativa de atribuir a um identificador um tipo diferente daquele para o qual ele foi
definido iro ocorrer erros de compilao, de execuo ou at mesmo perda de
dados5.
A definio de um identificador varivel num algoritmo feita da seguinte forma:
var<identi_cador1> [, <identi_cador2>,...]: <tipo1>;
<identi_cador3> [, <identi_cador4>,...]: <tipo2>;
e a de um identificador constante da seguinte forma:
constante<identi_cador1> = <valor1>;
<identi_cador2> = <valor2>;
<identi_cador3> = <valor3>;
A seguir so apresentados alguns exemplos de declaraes de ambos os tipos de identificadores:
varmarca, modelo: caractere;
ano: inteiro;
preco: real;
vendido: lgico;
constantePI=3.141592654;
MAXIMO=100;
Ao declaramos um identificador varivel, estamos reservando na memria do
computador um espao para armazenar valores do tipo declarado. Podemos
comparara memria de um computador com um mvel cheio de gavetas etiquetadas,
onde cada gaveta marcada pela etiqueta corresponde a um identificador varivel e o
que est guardado dentro da gaveta corresponde ao valor do mesmo.
5

H linguagens de programao que no exigem a definio de tipos para trabalhar com os dados,
como o caso do Python. Essas linguagens so classificadas como no tipadas e normalmente
aceitam atribuio de dados dos mais variados tipos para um mesmo identificador.

CAPTULO 3. REPRESENTAO DE DADOS

3.4.3

33

Atribuio

Aps realizada a declarao de um identificador, possvel iniciar a manipulao


dos dados que esse identificador ir representar a partir da atribuio de valores ao
mesmo. Esse processo de atribuir ou alterar o valor dos dados de um identificador
chamado de atribuio e representado pelo smbolo quando estivermos
trabalhando com identificadores variveis, e pelo smbolo = quando estivermos
traba- lhando com identificadores constantes 6.

A atribuio de valores a uma varivel feita da seguinte forma:


<identificador da varivel><valor do mesmo tipo da varivel>;
<identificador da varivel><operaes cujo resultado do mesmo tipo da varivel>;
Como pode ser visto acima, no lado esquerdo do operador ser colocado o
nome da varivel que ir receber o valor, e do lado direito o valor que ser armazenado
na mesma. A seguir so apresentados alguns exemplos de atribuies de valores
avariveis:
TipoVeiculo_motocicleta_;
Aceleracao15.52;
Massa12.3;
ForcaMassa * Aceleracao;
UsadoF;
Uma varivel pode armazenar apenas um nico valor por vez, sendo que sempre
que um novo valor atribudo a varivel o valor anterior que estava armazenado na
mesma perdido. Por exemplo, consideremos o algoritmo 5 a seguir:
Algoritmo 5 Atribuies de valores a uma varivel.
1: var numero: inteiro
2: numero 222
3: numero 1000
4: numero 23
6

No caso dos identificadores constantes a atribuio feita no momento da definio do mesmo


(como apresentado na seo de declarao), sendo assim, os exemplos e explicaes que seguem so
restritas aos identificadores variveis que chamaremos a partir de agora apenas de variveis

CAPTULO 3. REPRESENTAO DE DADOS

34

Quando a execuo passa pela linha 1 reservado um espao na memria do computador


para armazenarmos valores do tipo inteiro, que acessaremos atravs da varivel numero.
importante ressaltar que inicialmente, a varivel numero no contm nenhum valor.
Continuando a execuo, passamos pela linha 2, onde o valor 222 atribudo para a
varivel numero. Nesse momento, a varivel numero est armazenando o valor 222. Ao
passar pela linha 3 a varivel numero recebe por atribuio o valor 1000,sendo que o
valor anterior (222) eliminado. Ao executarmos a linha 4, o valor 23 atribudo para
numero, e novamente o valor anterior que estava armazenado (1000) perdido para dar
espao ao novo valor.

CAPTULO 4. EXPRESSES

35

Captulo 4
Expresses
4.1

ExpressesAritmticas

As expresses aritmticas so aquelas em que os operadores so aritmticos e os


operandos so valores do tipo numrico (inteiro ou real). Esses valores numricos
podem ser acessados por meio de identificadores constantes ou por meio de variveis.
As operaes aritmticas fundamentais so: adio,subtrao,multiplicao,diviso,
potenciao, diviso inteira e o resto (mdulo). A Tabela 4.1 apresenta os
operadores para cada uma dessas operaes aritmticas.

Tabela 4.1: Operadores aritmticos bsicos.

4.1.1

Precedncia Geral dos Operadores Aritmticos

Quando uma expresso aritmtica precisa ser avaliada num algoritmo, o analisador
processa a expresso dando prioridade para certos operadores. As sub-expresses
que contm estes operadores sero avaliadas primeiro e seu valor substitudo pela
subexpresso inteira.
A Tabela 4.2 mostra a ordem de prioridade na avaliao dos operadores numa expresso
aritmtica, chamada de precedncia de operadores.

36

CAPTULO 4. EXPRESSES

Ordem
1a
2a
3a
4a

Operao
Parnteses
Potenciao
Multiplicao, Diviso, Resto e DivisoInteira
Adio,Subtrao

Smbolo
()
**
*,/,mod,div
+,-

Tabela 4.2: Precedncia Geral de Operadores Aritmticos


Conforme a tabela, as primeiras sub-expresses a serem resolvidas sero os parnteses
mais internos, depois as potncias, depois as multiplicaes e divises, e assim por
diante.
A maneira de alterar a ordem de execuo das operaes numa expresso aritmtica
atravs de parnteses, sendo que eles so executados antes de tudo, a partir dos mais
internos para os mais externos.
Por exemplo, considere a seguinte expresso aritmtica:

A mesma avaliada pelo computador da seguinte maneira: primeiro os parnteses


mais internos so avaliados, depois a potenciao1, depois a multiplicao e depois
a soma. Se ignorssemos a precedncia dos operadores (ou dos parnteses) teramos
um resultado completamente diferente e conseqentemente errado.
Vejamos agora um exemplo de uma expresso que contm apenas variveis (cujos
valores ainda no foram informados):
(x + y)/((2 * y + (z w)).
A expresso ser executada na seguinte ordem: 1. (x +y);
2. (z w)
1grande

parte das linguagens de programao no possui um operador aritmtico especfico para


identificar a potenciao.

3. 2 * y
4. adio do resultado de 2 com o do 3
5. diviso do resultado de 1 com o resultado de 4.

4.1.2

Escritade Operaes Aritmticas

Cada operao aritmtica em um algoritmo deve ser escrita em apenas uma nica
linha. Sendo assim, quando uma expresso matemtica usual escrita precismamos
utilizar parnteses para garantir que todas as operaes sejam executadas na ordem
adequada. Por exemplo, considere a expresso:

cujo valor 25, deve ser escrita e resolvida pelo analisador da seguinte forma

Ao desenvolvermos um algoritmo bastante comum deixarmos parnteses no


pareados nas expresses aritmticas, o que um erro difcil de localizar
posteriormente. Um teste prtico para evitarmos esse tipo de contratempo consiste
em contar na expressa o quanto s parnteses esquerdos e direitos existem, e
conferir se eles esto em mesmo nmero.

4.1.3

Exceesem Expresses Aritmticas

Para a maioria das expresses aritmticas executadas em um algoritmo possvel


associar um valor definido, ou seja, o resultado da expresso propriamente dito. Por
exemplo, a expresso 2 + 3, depois de avaliada, tem um valor definido igual a 5, e a
expresso 2**10 tem um valor definido de 1024. Entretanto, nem todas as expresses
aritmticas possuem um valor definido matematicamente, o caso de divises de
nmeros pelo valor 0 (zero) ou de razes quadradas de nmeros negativos. A avaliao
desse tipo de expresso deve ser sempre evitada a partir da verificao dos valores
que faro parte das mesmas, ou seja, se um denominador nulo ou se o nmero
cuja raiz ser extrada negativo, a operao no deve ser realizada

4.1.4

Simplificao de Expresses Aritmticas

importante ressaltar que expresses as aritmticas podem ser simplificadas, ou

escritas de maneira diferentes e observarmos as igualdades existentes entre as


operaes. Observe que a subtrao equivalente a soma de um nmero negativo; a
diviso equivalente a multiplicao pelo inverso do nmero, e a radiciao
idntica a potenciao com o inverso do expoente. Ou seja,

4.2

Expresses Lgicas

As expresses lgicas so aquelas cujo valor s pode ser verdadeiro ou falso. So compostas por operadores relacionais, operadores lgicos, e por identificadores variveis
ou constantes do tipo lgico. As expresses lgicas tambm podem ser compostas por
resultados de expresses aritmticas.

4.2.1

Operadores Relacionais

Os operadores relacionais so aqueles que comparam dois valores do mesmo tipo.O


retorno da expresso relacional indica se o resultado da comparao foi verdadeiro
ou falso. Por exemplo, a expresso 2 <3 uma expresso lgica vlida cujo valor
verdadeiro. Em contrapartida, a expresso 2 = 8 uma expresso lgica tambm
vlida, mas cujo valor falso. A tabela 4.3 apresenta os operadores relacionais que
utilizaremos.
Operador
Smbolo
Iguala
=
Maiorque
>
Menorque
<
Maior ouIguala
>=
Menor ou Igual a <=
Diferentede
<>
Tabela 4.3: Operadores Relacionais

4.2.2

Operadores Lgicos

Os operadores lgicos so usados para representar situaes lgicas que no podem


ser representadas por operadores aritmticos.Tambm so chamados conectivos
lgicos por unirem duas expresses simples numa composta. Podem ser operadores
binrios, que operam em duas sentenas ou expresses, ou unrio que opera numa
nica sentena.

O primeiro deles o operador binrio de conjuno ou e lgico, representado por ou


AND. Quando duas expresses so unidas por este operador, a expresso resultante
s verdadeira se ambas expresses constituintes tambm so. Por exemplo chove e
venta s verdadeiro se as duas coisas forem verdadeiras, chove e tambm venta. Se
uma das sentenas no ocorrer, a sentena como um todo falsa.
O segundo operador o operador binrio de disjuno ou ou lgico, representado por
ou OR. Neste caso, se qualquer uma das expresses constituintes for

verdadeira,a

expresso completa tambm ser. Por exemplo, vou praia ou vou ao campo uma
sentena verdadeira caso qualquer uma das duas aes acontecer, ou ambas.
verdadeira, se eu for a praia e no ao campo, se eu for ao campo e no a praia e se eu
for a ambos.
Para o caso em que deve-se garantir que somente uma das sentenas acontea,
define-se o operador ou-exclusivo, cujo smbolo ou XOR. Como o nome diz,
semelhante ao operador ou com exclusividade na veracidade dos operandos, isto ,
somente um dos operandos pode ser verdadeiro. No exemplo anterior, se o
concectivo fosse o ou-exclusivo, a sentena composta s seria verdadeira se fosse
praia ou ao campo, mas no ambos.
O ltimo dos operadores o operador unrio no lgico, representado por ~. Sua funo
simplesmente inverter valor lgico da expresso a qual se aplica.
Exemplificando, considere a expresso
(2 <3) ^ (5 >1).
Tanto a parte (2 <3) como(5 >1) so verdadeiras, logo a expresso completa tambm .
A primeira parte verdadeira e a segunda verdadeira, logo toda a expresso
verdadeira. Na linguagem natural no damos tanta importncia para a diferena entre
e e ou. Se uma das partes fosse falsa, toda a expresso, ligadas por e, seria falsa. Outra
maneira de avaliar o valor de uma expresso lgica substituindo suas subexpresses
por V ou F, assim
(2<3)

V ^

(5 >1)
V

V
O operador ou complementar ao operador e. Ele indica que a primeira expresso
pode ser verdadeira ou a segunda expresso pode ser verdadeira. Assim, desde que
um dos operandos seja verdadeiro, toda a expresso verdadeira. Considere a
expresso

(5<4)

F ^

(12>2)
V

V
Existe uma gama finita de possveis valores resultantes das operaes executadas com
operadores lgicos, pois estes s podem assumir V ou F . O resumo destas operaes
o que se chama tabela-verdade dos operadores lgicos e est apresentada naTabela 4.4
P
V
V
F
F

Q
V
F
V
F

P^Q
V
F
F
F

P v Q
V
V
V
F

P Q
F
V
V
F

~P
F
F
V
V

Tabela 4.4: Tabela verdade dos operadores lgicos. P e Q so sentenas lgicas quaisquer.
Ainda sobre os operadores relacionais, os operadores <>, >= e <= so
redundantes, pois poderiam ser substitudos por uma composio de outros mais
simples. Por exemplo,

Da mesma forma,

Ainda,
(x >= b) (x > b) v (x = b).
(x <= b) (x < b) v (x = b).
(x <>b) (x <b) v (x >b).
Deste modo, somente os operadores >,<, = seriam suficientes para expressar todas as
expresses lgicas relacionais.

Captulo 5
Comandos de Entrada eSada
5.1

Sada

Para imprimirmos algum tipo de informao na tela do computador utilizamos o comando escreva seguido da informao que ser escrita. Dessa forma, se quisermos
imprimir uma mensagem como por exemplo Ola mundo!, isto seria feito com a
instruo
escreva(Ol Mundo)
As aspas servem para delimitar uma seqncia de caracteres, uma constante,
mas no fazem parte do contedo a ser impresso. Para imprimir o valor de uma
varivel, basta colocar o seu identificador diretamente. O fragmento de cdigo:

imprime 123 na sada. Como a seqncia +++ no tem aspas, durante a execuo o
algoritmo considera +++ como sendo o identificador de uma varivel e o substitui pelo
seu contedo, neste caso 123. Se por outro lado, colocssemos

seria impresso ttt na sada. ttt essencialmente diferente de ttt . O primeiro indica o
identificador de uma varivel. O segundo, com aspas, simplesmente uma seqncia de
letras. Em resumo, as aspas previnem que o algoritmo interprete o contedo da cadeia
de caracteres.
possvel escrever valores de qualquer tipo existente, como valores reais, valores
lgicos, valores inteiros, do tipo seqncia de caracteres, resultados de expresses
aritmticas, resultados de expresses lgicas, resultados de expresses relacionais. A

CAPTULO 5. COMANDOS DE ENTRADA ESADA

42

Instruo:
escreva(8<9)

ir escrever o valor da expresso relacional 8 <9, neste caso V. Se quisssemos escrever


literalmente 8<9 sem interpretao, deveramos delimit-la com aspas. O cdigo:
escreva(8<9)

escreve 8<9 na tela. Diversos dados a serem escritos podem ser informados numa
mesma instruo separando-os por vrgula.

5.2

Entrada

Da mesma maneira que necessitamos enviar informaes de dentro do algoritmo para a


sada padro (em geral a tela), tambm necessitamos receber informaes de fora do
algoritmo, a partir da entrada padro (em geral o teclado). Considere por exemplo um
sistema de locadora, sempre que alugamos um filme, o sistema ir necessitar de algumas
informaes como, por exemplo: o nosso cdigo de cliente (ou o nome) e o nome da fita
que estamos locando. Essas informaes so fornecidas pelo sistema a partir de
comandos de entrada de dados.

Para realizarmos a entrada de dados utilizaremos o comando leia. Ao utilizar o


comando leia o programador deve saber de antemo qual a varivel que ir
armazenar o valor que ser fornecido pelo usurio. No caso do exemplo anterior, os
valores que seriam fornecidos pelo usurio so referentes ao cdigo do cliente e ao
nome da fita que o mesmo est locando. Sendo assim, necessrio declarar variveis
que possa armazenar valores que sejam compatveis com as informaes solicitadas
ao usurio.
Por exemplo, a informao do cdigo do cliente pode ser um valor do tipo inteiro,
ento necessrio que declaremos no algoritmo uma varivel desse tipo, seguindo
esse mesmo raciocnio, a informao do nome da fita pode ser uma informao do
tipo caractere, sendo tambm necessrio que declaremos no algoritmo uma outra
varivel para receber essa informao.

Aps declaradas as variveis que recebero os valores fornecidos pelo usurio


podemos utilizar o comando leia para receber esses valores. Para isso devemos escrever
leia seguido da varivel que receber os valores entre parnteses.

CAPTULO 5. COMANDOS DE ENTRADA ESADA

43

No algoritmo 6, quando o algoritmo passar pela linha 3, o usurio do algoritmo (ou do


sistema) dever digitar um valor do tipo inteiro, e ao teclar <ENTER>esse valor ser
armazenado na varivel cdigo_cliente. Logo em seguida, na linha 4, o usurio dever
digitar um valor do tipo caractere, e ao teclar <ENTER>esse valor ser armazenado
na varivel nome_fita.

possvel avisarmos o usurio sobre qual tipo de informao o algoritmo est


precisando, para isso, utilizamos o comando de sada de dados escreva imediatamente
antes do leia que informa ao usurio o que deve entrar. Por exemplo, o algoritmo 7
informaria ao usurio o que digitar antes de executar o comando leia e esperar pela
entrada do usurio.

Parte III
Estruturas de Controle

44

Captulo 6
Estruturas de Condio
Num processo geral de execuo de um algoritmo implementado em uma
linguagem de programao, a execuo comea na primeira linha e vai avanando
seqencialmente executando o cdigo linha aps linha at chegar no final.
Entretanto, freqentemente surge a necessidade de colocar instrues dentro de
um programa que s sero executadas caso alguma condio especfica acontea.
Para esta finalidade a maioria das linguagens possui estruturas de condio para
realizar esta tarefa. Neste captulo examinaremos o seu funcionamento e suas
peculiaridades.
Nos captulos anteriores foram apresentados alguns conceitos bsicos sobre as
estruturas e comandos que so utilizados para construir um algoritmo simples.
Como visto, podemos solicitar valores de entrada aos usurios do sistema
utilizando o comando leia, e podemos ainda enviar valores de sada do sistema por
meio do comando escreva. Entretanto, as possibilidades de construo de algoritmos
que temos at o presente momento so bastante limitadas, pois ainda no estamos
aptos a to- mar decises durante o tempo de execuo do algoritmo, ou at mesmo
de classificar determinados valores de variveis.
Por exemplo, considere que precisamos desenvolver um algoritmo que
classifique uma determinada pessoa entre maior de idade ou menor de idade.
Para esse problema sabemos que precisamos avaliar a idade da pessoa, e que se
essa idade for maior (ou igual) que 18 anos a pessoa considerada maior de idade.
Neste caso, para um intervalo de valores da idade o algoritmo executa um
conjunto de aes e para outro intervalo executa um outro conjunto de aes. Neste
tipo de situao, onde um determinado valor avaliado para a partir do resultado
dessa avaliao executar alguma ao, utilizamos as estruturas de condio.

45

CAPTULO 6. ESTRUTURAS DE CONDIO

6.1

46

Estrutura de Condio Simples:se-ento

A estrutura de condio mais simples a se-ento utilizada da seguinte forma:

A <expresso lgica> uma expresso que dever retornar um valor de verdadeiro(V) ou de


falso (F), e caso o resultado dessa expresso for verdadeiro, ser executado o bloco de
comandos que est dentro da estrutura. Caso seja falso, a execuo do pro- grama ignora
o bloco de comando e continua na linha seguinte estrutura de condio. Alguns
exemplos de expresses lgicas j foram vistos anteriormente, a seguir temos mais alguns
exemplos:
18 > 20, cujo resultado ser falso.
45 = 45, cujo resultado ser verdadeiro.
media> 7 , cujo resultado depender do valor da varivel media. Por exemplo, se
mediavale 5 o bloco no executado; se media for 15, o bloco ser executado.
O<bloco de comandos> uma seqncia de cdigo que ser executado somente quando o
resultado da expresso lgica for verdadeiro. Porfim, a instruo fim-se indica que a
estrutura se-ento chegou ao final, servindo para delimitar o bloco de instrues.
Voltando ao nosso problema de classificar uma pessoa como maior de idade ou menor
de idade, podemos utilizar a estrutura de condio se-ento da seguinte maneira:
 Solicitamos ao usurio que digite a sua idade, e utilizamos o comando leia para
armazenar o valor digitado na varivel idade.
 Depois de termos o valor da idade, avaliamos se esse valor maior ou igual a 18.
 Se o resultado dessa avaliao for verdadeiro escreveremos na tela a frase voc
maior de idade, como mostra o algoritmo 8.

6.2

Estrutura de Condio Composta: se-ento-seno

O algoritmo 8 resolve o nosso problema quando a pessoa maior de idade,porm


no nos d nenhum retorno para quando a mesma for menor de idade. Para
contornar esse tipo de situao, a estrutura de condio se-ento oferece a
possibilidade de executarmos uma determinada ao ou comando se o resultado da
expresso lgica for verdadeiro e de executarmos uma ao diferente se o resultado
da expresso lgica for falso. Para essas situaes utilizado o comando se-ento,
como mostrado abaixo.

Figura6.1:Estutura de um commando se-ento


Na estrutura se-ento-seno, o bloco verdade executado se a expresso lgica
verdadeira e o bloco falsidade, que vem aps seno, executado se a expresso lgica
falsa. A Figura 6.1 mostra esquematicamente como funciona uma estrutura de
condio se-ento de modo geral. Quando o processamento do algoritmo chega numa
estrutura se-ento a expresso lgica nela contida avaliada; se o seu valor verdadeiro
(V) ento o bloco de comandos seguinte ao se, chamado bloco-verdade, executado. Caso
o resultado da expresso lgica seja o bloco de comandos posterior ao comando seno,
chamado de bloco-falso, executado. Se a estrutura de condio no possui uma clusula
seno, ento no caso da expresso lgica ser falsa, a execuo do algoritmo continua na
linha subseqente ao bloco se-ento;
O algoritmo 9 mostra como escrever que a pessoa maior de idade quando tem 18
anos ou mais, ou que a pessoa menor de idade quando essa condio no atendida.

Neste caso, a expresso lgica idade >= 18 . Se for verdadeira ento o bloco- verdade
(linha 5) ser executado; isto depende da varivel idade lida na linha 3. Caso contrrio, o
bloco-falso (linha 7) seria executado. A seguir, o processamento segue na linha seguinte
estrutura de condio, neste caso a linha 9 seria executada independente do valor da
varivel idade.
Expresses lgicas compostas em Estruturas de Condio Como vimos na seo 4.2,
possvel compor expresses lgicas utilizando operadores relacionais <,>,<>, =, <=, >=, mas
tambm possvel compor expresses lgicas utilizando os operadores lgicos ^ (conjuno), v
(disjuno) e ~ (negao). Nesse sentido, a expresso lgica que ser avaliada na estrutura de
condio se-ento tambm pode ser formada por uma expresso lgica composta.

Por exemplo, considere a situao de um determinado aluno em uma disciplina. Sabe-se


que para ser aprovado, necessrio que nota >= 7.0 e que freqncia > 75, ao mesmo
tempo, isto , uma conjuno lgica representada pelo operador e lgico ^.
O fragmento do algoritmo que avalia a situao est mostrado no algoritmo 10. Neste
caso, para que a expresso lgica como um todo seja verdadeira, necessrio que as
duas expresses lgicas que a compem tambm o sejam.

6.3

Estruturas de Condio Encadeadas

Dentro de uma estrutura se-ento-seno perfeitamente possvel utilizarmos mais de uma


linha de comando, ou at mesmo outras estruturas se-ento-seno.Existem situaes
em que os caminhos para a tomada de uma deciso acabam formando uma espcie de
rvore com diversas ramificaes, onde cada caminho um conjunto de aes.Nesses
casos podemos recorrer utilizao de vrias estruturas se-ento-seno embutidas umas
dentro das outras, comumente chamadas de ninhos.

Nas estruturas de deciso encadeadas, uma estrutura de condio aninhada dentro


de outra, como bloco verdade ou falsidade. Neste caso, para que a estrutura de
condio mais interna seja avaliada, necessrio que uma determinada condio seja
satisfeita na estrutura de condio mas externa. Considere a estrutura aninhada no
algoritmo 11, onde EL significa expresso lgica, BV bloco verdade e BF bloco falsidade.
Para que BV2 seja executado necessrio que a EL1 juntamente com EL2 sejam
verdadeiras. Se EL1 for verdadeira mas EL2 for falsa, ento BF2 quem ser executado. A
tabela 6.1, chamada tabela de deciso, mostra as diferentes alternativas possveis para
este caso.
EL1
V
V
F
F

EL2
V
F

EL3

V
F

execuo
BV2
BF2
BV3
BF3

Tabela 6.1: Tabela de deciso para a estrutura de condio composta mostrada no


algoritmo 11.
Por exemplo, suponha que desejemos refinar um pouco mais o problema referente
s mdias dos alunos de uma dada disciplina. Sabemos que um aluno aprovado caso
apresente mdia maior ou igual a 7.0 e freqncia maior ou igual a 75%. Na verdade,
em uma situao real, se o aluno obtiver a freqncia mnima exigida e uma mdia
entre 3 e 7, ainda teria direito a uma ltima avaliao de recuperao. Como faramos
para resolver o problema em questo utilizando apenas estruturas de condio seento-seno. Poderamos comear avaliando a freqncia do aluno, e se a mesma for
menor que 75% o aluno j estaria reprovado, porm caso a freqncia respeite o
mnimo exigido, comearamos a avaliar a mdia para saber se est aprovado, em
recuperao ou reprovado. No momento em que verificado que a freqncia menor
que 0.75 (75%) o aluno j est imediatamente reprovado, mas caso a freqncia seja
maior ou igual a esse valor, devemos continuar com o algoritmo para avaliar em que
situao que o aluno se encontra. Enfim, agora necessrio avaliar a mdia do mesmo,
verificando se est acima de 7.0(aprovado),entre3e7.0(recuperao),ou abaixo de 3.0
(reprovado). Estes condicionais esto mostrados no algoritmo 12.

6.4 Estrutura de Condio caso seja


Outra alternativa para trabalhar com comandos condicionados a um determinado valor
a estrutura caso seja Nessa estrutura o valor de uma determinada varivel avaliado e
caso esse valor coincida com determinado valor pr-estabelecido um determinado
comando executado. A estrutura de condio caso seja utilizada da forma
mostrada a seguir:

Da mesma maneira que a estrutura de condio se-ento possibilita que executemos


algum comando quando a expresso avaliada no verdadeira, a estrutura de
condio caso tambm nos oferece essa opo, chamada opo padro. O bloco de
comandos dentro da opo padro ser executado caso nenhuma dos casos
fornecidos seja contemplado. A sintaxe para utilizarmos essa opo mostrada no
exemplo do algoritmo 14: a varivel n do tipo inteiro testada, e caso tenha valor 1
escrito na tela um, caso tenha valor 2 escrito na tela dois e caso no tenha
nenhum desses valores ser escrito na tela outrovalor.

Captulo 7
Estruturas de Repetio
Uma das principais caractersticas que consolidaram o sucesso na utilizao dos
computadores para a resoluo de problemas foi a sua capacidade de repetir o
processamento de um conjunto de operaes para grandes quantidades de dados.
Exemplos de conjuntos de tarefas que repetimos diversas vezes dentro de uma
situao especfica podem ser observados largamente no nosso dia a dia.
As estruturas de repetio provm uma maneira de repetir um conjunto de
procedimentos at que determinado objetivo seja atingido, quando a repetio se
encerra. Todas as estruturas de repetio tm em comum o fato de haver uma
condio de controle, expressa atravs de uma expresso lgica, que testada em
cada ciclo para determinar se a repetio prossegue ou no.
Por exemplo, consideremos que uma determinada loja de calados efetue uma venda
no credirio para um cliente que ainda no est registrado em seu sistema. Para
realizar essa venda, necessrio cadastrar o cliente, solicitando informaes bsicas
como: nome, endereo, CPF, RG, etc. Essas etapas para realizar o cadastro seguiro
sempre a mesma ordem para cada novo cliente que aparecer na loja. Caso
precisssemos desenvolver um sistema para efetuar os cadastros de clientes de uma
loja, no haveria lgica que programssemos novamente essas etapas para cada
cliente novo, bastaria que desenvolvssemos uma nica vez a seqncia de etapas e
que a cada novo cliente usssemos a seqncia previamente definida.
As estruturas de repetio so basicamente trs: enquanto-faa, faa-enquanto e para-faa. A
diferena bsica que enquanto-faa primeiro testa a condio para depois realizar o
bloco de comando, ao contrrio de faa-enquanto que primeiro executa o bloco para
depois realizar o teste.A estrutura para-faa tem embutida um mecanismo de controle
para determinar quando o lao dever ser terminado.
53

CAPTULO 7. ESTRUTURAS DE REPETIO

7.1

53

Teste no Incio: enquanto-faa

No algoritmo 15 apresentado o formato bsico da estrutura de repetico enquanto-faa.


Antes de entrar na estrutura de repetio, uma expresso lgica avaliada e caso o
resultado for verdadeiro, os comandos questo dentro da estrutura sero executados.
Aps a execuo dos comandos, a expresso lgica novamente avaliada. Caso o
resultado da expresso lgica for falso, o algoritmo sai da estrutura de repetio e
segue para a prxima linha.
De maneira geral, o mecanismo que altera o valor da expresso lgica que controla o
lao est embutido dentro do bloco de comandos ou depende de alguma varivel
externa que ser fornecida em tempo de execuo.
Aestruturaenquanto-faausadaprincipalmentequandonosesabecomantecedncia
a
quantidade de repeties que precisam ser realizadas. Por exemplo, suponha que
estamos oferecendo ao usurio 3 opes de menu sendo que uma dessas opes seria a
de sair do programa. Caso desejemos que o usurio possa executar vrias vezes as opes
dispostas no menu, no temos como adivinhar quando o usurio ir optar por sair do
algoritmo, sendo assim, no podemos limitar a repetio um determi- nado nmero
de vezes.
Considere um problema mais especfico onde necessitamos fazer a leitura de vrios nomes
de pessoas e a cada nome que lido devemos escrever na tela a frase "O nome digitado foi
Jos, onde nome a varivel. A princpio isso deve ser feito inmeras vezes e quando o
usurio digitar um nome igual a fim o algoritmo deve parar. Da mesma maneira que no
exemplo anterior no podemos definir quando o usurio ir digitar fim, e no temos
como precisar a quantidade de vezes que o algoritmo dever repetir esse conjunto de
aes.

7.2

Teste no Fim: faa-enquanto

A estrutura faa-enquantodifere da estrutura enquanto-faa somente por executar o bloco


de comando antes de testar se a condio verdadeira, ou seja, o teste da condio
realizado apenas ao final da estrutura. Assim, utilizando o faa-enquanto o bloco de
comandos ser sempre executado pelo menos uma vez, mesmo que a expresso de
controle seja falsa. Seu formato mostrado no algoritmo16.

CAPTULO 7. ESTRUTURAS DE REPETIO

7.3

54

RepetiocomControle: faa-para

A estrutura para-faa composta de um mecanismo de controle que estabelece de


antemo quantas vezes o lao ser executado. A estrutura mostrada no algoritmo
17 e para ser utilizada precisa das informaes referentes aos valores de inicio, fim e
incremento. Nessa estrutura, uma determinada varivel assumir valores pertencentes
ao intervalo identificado pelos valores de inicio e fim, respeitando o incremento
informado. Por exemplo a expresso i de 0 at 10 passo 2 significa que i assumir os
valores 0,2,4,6,8,10. Nesse caso, o lao seria executado 5 vezes.

7.4

Contadores e Acumuladores

Em situaes onde necessrio realizarmos contagens de ocorrncias, ou


somatrios produtrios de valores dentro de um conjunto de dados,devemos
utilizar variveis especficas para fazer o armazenamento dos resultados.
Chamamos de contadores para as variveis que realizam a contagem de
ocorrncias de um determinado valor

CAPTULO 7. ESTRUTURAS DE REPETIO

55

(ou situao) e de acumuladores para as variveis responsveis por armazenar os


resultados de somatrios e produtrios de valores.

7.4.1

Contadores

Os contadores so normalmente inicializados com valor 0 (zero) e incrementados em


1(um) a cada vez que uma nova ocorrncia(ou situao) observada.

Por exemplo, considere que dentro de um conjunto de informaes referentes a idades e


sexos de 50 pessoas, desejemos saber quantas dessas pessoas so do sexo feminino e
possuem 18 anos ou mais. Para isso, necessrio inserir um contador para
armazenar a quantidade de ocorrncias da condio definida no enunciado. Esse
contador deve ser inicializado com 0 e incrementado em 1 sempre que o sexo de uma
dada pessoa feminino e sua idade maior ou igual a 18, como no Algoritmo 20.

7.4.2

Acumuladores

Como comentado anteriormente, os acumuladores so utilizados em dois tipos de


situaes, para a realizao de somatrios e para a realizao de produtrios. No caso

56
CAPTULO 7. ESTRUTURAS DE REPETIO
Dos somatrios, o acumulador normalmente inicializado com o valor 0 e incrementado
no valor de um outro termo qualquer, dependendo do problema em questo.

Considere que no problema anterior, ao invs de desejarmos calcular a quantidade de


pessoas que so do sexo feminino e possuem 18 anos, desejemos calcular a soma das
idades das pessoas que esto nessa situao. Nesse caso, precisamos inserir no
algoritmo um acumulador, que deve ser inicializado em 0, e incrementado no valor da
idade da pessoa em questo.Veja no algoritmo 22.

Um algoritmo para calcular a mdia das idades das pessoas do sexo feminino
com 18 anos ou mais, pode ser facilmente desenvolvido utilizando um contador
para armazenar a quantidade de pessoas que pertencem a esse conjunto e um
acumulador para armazenar a soma das idades dessas pessoas.
No caso de utilizarmos acumuladores para armazenar produtrios necessrio a
Inicializao com o valor neutro da multiplicao (onmero1). A cada iterao o
acumulador ento multiplicado por outro termo qualquer, dependendo do
problema em questo.

Por exemplo, para calcular o fatorial de um determinado nmero, devemos


escrever o Algoritmo 24.

Referncias Bibliogrficas
[1] Marco Medina, Cristina Fertig, ALGORITMOS E PROGRAMAO: TEORIA E
PRTICA, So Paulo, Novatec Editora,2005.
[2] Marco Antnio Furlan de Souza et al., ALGORITMOS E LGICA DE
PROGRAMAO, So Paulo, Thomson Learning, 2006.
[3] Wikipedia, www.wikipedia.org visitado em 23/abril/2007
[4]
Andr Luiz Villar Forbellone, Henri Frederico Eberspcher, LGICA DE
PROGRAMAO, So Paulo, Pearson Prentice Hall, 2005
[5]

lvaro

Borges

de

Oliveira,

Isaias

Camilo Boratti,

INTRODUO

PROGRAMAO DE ALGORITMOS, Florianpolis, Bookstore, 1999.


[6] Irenice de Ftima Carboni, LGICA DE PROGRAMAO, So Paulo, Thomson
Learning, 2003.

64

Parte V
Apndice

65

Apndice A
Exerccios
A.1

Algoritmos

1. Diferencie um algoritmo de umprograma.


2. Criealgortimossimplificadosparaexecutarcadaumadastarefasaseguir:
t>Tomar um banho
t>Fazer um bolo
t>Tirar uma fotografia
t>Ligar um automvel
t>Cadastrar de um cliente
t>Tricotar uma blusa
t>Ler uma revista
3. Represente2dosalgoritmosacimanaformadeumfluxograma.
4. Pense em um problema existente na sua rotina diria (particular ou no trabalho)
e monte um algoritmo de acordo com os passos que voc normalmente utiliza
pararesolv-lo.

A.1.1

Para os problemas a seguir, defina:

t>Quais so os valores de entrada


t>Qual ser o processamento do algoritmo
66

APNDICEA.EXERCCIOS

67

t>Quais so os valores de sada


t>Quais so os valores que variam e quais permanecem constantes (fixos) durante a execuo do algoritmo
1. CalcularareadeumtringulodadaafrmulaA=(bh)/2.
2. Calcularaquantidadedeazulejosquesonecessriosparacobrirumadeterminadaparede.
3. Calcularamdiadopesodeumafamliade5pessoas.
4. CalcularareadeumacircunfernciadadaafrmulaA=(r2)/2.

A.2

Representao deDados

1.

Identifique quais os tipos que as seguintes variveis teriam em um algoritmo


qualquer:
t>nomeDeRua
t>numeroDeCasa
t>idadeDeUmaPessoat>
pesoDeUmaPessoa
t>valorDoSalario
t>quantidadeDePessoasEmFila
t>senhaCorreta

2. Identifique quais os tipos dos valores listados a seguir:


t>F
t>V
t>FALSO

APNDICEA. EXERCCIOS

68

t>5.84
t>A*R*&
t>Amarelo
t>2008
t>04
t>abril

3. Verifique entre os itens abaixo quais no poderiam ser utilizados como nomesde
variveis. Justifique o motivo.
t>1x
t>fone#
t>$salario
t>x
t>a-6
t>2/3
t>livro
t>tipo_de_talher
t>tipo de talher
t>automvel
t>talher
t>e-mail
t>e_mail
t>email
t>nome_#

APNDICEA. EXERCCIOS

t>time de futebol
t>time_de_futebol
t>01salario
t>nome01
t>idade
t>salario

A.3

Expresses

1. Nofinaldaexecuodofragmentodecdigoabaixo,qualovalorde,e?
l. l.

2. Quaisosvaloresde,enofinaldaexecuodocdigoabaixo?
l.

3. Queproblemaexistenoalgoritmoabaixo?
l. l.

4. O que ser impresso para cada uma das instrues abaixo?


1.2l.l.

69

APNDICEA. EXERCCIOS

2. 2l. 22 l.2+
2l.

3. 2l. +l. 2
4.2l.
5. 2l.l.l.
6. 2l.
7.

2l.
8.

2l.
9.

2l.
10.

2l.
11.

2l.
12.

2l.
13.

2l.

70

71

APNDICEA. EXERCCIOS

A.4

Entrada eSada

1. DesenvolvaosalgoritmosparaosproblemasapresentadosnaseoA.1.1
2. Elabore um algoritmo que leia um nmero inteiro e imprima seus sucessor e seu
antecessor. Por exemplo, suponha que o usurio digite o nmero 7, o algoritmo
dever imprimir (escrever) na tela o seu antecessor (nmero 6) e o seu sucessor
(o nmero8).
Algoritmo 27 Antecessor-sucessor
l.nantsuc l.
2l. + l.
n
ant n 1
suc n + 1
2l.+22l.ant
2l. 222l. suc
3. Elabore um algoritmo que leia uma temperatura em graus centgrados e apresentea convertida em graus Fahrenheit. A frmula de converso :
9
F = C +32
5
onde F a temperatura em Fahrenheit e C a temperatura em Centgrados.
Algoritmo 28 Conversor
l.fcl.
2l. + l.2 + l.2
c
f ((9/5) c) + 32
2l. l.+ f
4. Paravriostributos,abasedeclculoosalriomnimo.Elaboreumalgoritmo que
leia o valor do salrio mnimo e o valor do salrio de uma pessoa. Calcular
eimprimirquantossalriosmnimosessapessoaganha.
5. Elabore um algoritmo que leia o peso de uma pessoa em gramas, calcule e imprima.

APNDICEA. EXERCCIOS

72

Algoritmo 29Numero-de-salarios
l.minimosalarioquantidadel.
2l. + l. 2l. l. 2 2l.
minimo salario
quantidade salario/minimo
2l.l.quantidade2l.22
t>O novo peso da pessoa (em gramas) considerando que a pessoa engordou
12% em relao ao seu peso inicial.
Algoritmo 30Novo-peso
l.pesoatualnovopesopesoextral.
2l. + 2 2 l.2
pesoatual
pesoextra pesoatual 0.12
novopeso pesoatual + pesoextra
2l. 2l.l.22 novopeso
6. Faa um algoritmo que leia um valor inteiro positivo e menor que 1000, armazeneo em uma varivel inteira e determine a soma dos dgitos que formam o valor.
Exemplo: o valor 453 tem soma dos dgitos igual a 12 (4 + 5 + 3) .
7. Faa um algoritmo que leia dois nmeros inteiros positivos com 5 dgitos cada e
gere um terceiro nmero inteiro com 10 dgitos, sendo que estes sejam os dgitos
dos dois primeirosintercalados.
Exemplo : Numero_1 = 12345 Numero_2 = 67890 Numero_3 = 1627384950
8. Desenvolva um algoritmo que solicite ao usurio duas variveis de valor inteiro
(variveis A e B) e que ao final do processamento a varivel A contenha o valor
davarivelBeavarivelBcontenhaovalordavarivelA.

A.5

Estruturas deCondio

A.5.1

Estrutura 2.J2

1. Elabore um algoritmo que leia um nmero e imprima uma das mensagens:


mltiplo de 3, ou, no mltiplo de3.

APNDICEA. EXERCCIOS

73

2. Desenvolvaumalgoritmoqueclassifiqueumnmerodeentradafornecidopelo
usuriocomoparoumpar.
3. Elaboreumalgoritmoqueleiaumnmero,eseeleformaiordoque20,imprimir
ametadedessenmero.
4. Elabore um algoritmo que leia dois nmeros inteiros e efetue a adio; caso o
resultadosejamaiorque10,imprima-o.
5. Elabore um algoritmo que leia um nmero e, se ele for positivo, imprima a metadedessenmero,casocontrrioimprimaonmeroaoquadrado.
6. Osistemadeavaliaodedeterminadadisciplinacompostoportrsprovas.A
primeira prova tem peso 2, a segunda tem peso 3 e a terceira tem peso 5. Considerando que a mdia para aprovao 7.0, Faa um algoritmo para calculara
mdiafinaldeumalunodestadisciplinaedizerseoalunofoiaprovadoouno.
7. Elaboreumalgoritmoqueleiadoisnmeroserespondaseadivisodoprimeiro pelo
segundo exata (o resto da diviso deve ser igual a 0). Se for, o algoritmo
deveimprimiramensagemAdivisode(1onumero)por(2onmero)exata.
8. Elabore um algoritmo que leia o nome e o peso (em real) de duas pessoas eimprima os dados da pessoa maispesada.
9. Elaboreumalgoritmoqueleiaumnmeroeinformeseeleounodivisvelpor 5.
10. Elabore um algoritmo que indique se um nmero digitado est compreendido
entre20e90,ouno.
11. Um comerciante comprou um produto e quer vend-lo com um lucro de 45% se
o valor da compra for menor que R$ 20,00; caso contrrio, o lucro ser de 30%.
Elabore um algoritmo que leia o valor do produto e imprima o valor de venda
para oproduto.
12. Segundoumatabelamdica,opesoidealestrelacionadocomaalturaeosexo.
Elaboreumalgoritmoqueleiaaalturaeosexodeumapessoa,calculeeimprima
seupesoideal,utilizandoasseguintesfrmulas.

APNDICEA. EXERCCIOS

74

Para homens (72.7*+l.)58


Para mulheres (62.1*+l.)44.7
13. Elabore um algoritmo para testar se uma senha digita igual a Patinho Feio.
SeasenhaestivercorretaescrevaAcessopermitido,docontrarioemitaamensagem Voc no tem acesso aosistema.

A.5.2

Estrutura 2.J2aninhada

1. Elabore um algoritmo que leia dois nmeros e imprima qual maior, qual
menor, ou se soiguais.
2. Elabore um algoritmo que leia um nmero e informe se ele divisvel por 10,
por5,por2,ousenodivisvelpornenhumdeles.
3. Umaempresaqualquerdecidiuconcederumaumentodesalriosaseusfuncionriosdeacordocomatabelaaseguir:
Salrio Atual

Aumento

0 400,00
400,01 700,00
700,01 1.000,00
1.000,01 1.800,00
1.800,01 2.500,00
acima de 2.500,00

15%
12%
10%
7%
4%
Sem aumento

Escrever um algoritmo que leia o salrio atual de um funcionrio e escreva o


percentualdeseuaumentoeovalordosalriocorrigidoapartirdesseaumento.
Utilize a estrutura de condio 2+aninhadas.
4. Considerando o sistema de avaliao das mdias colocado a seguir, escreva um
algoritmo que avalie a mdia de um aluno, o seu conceito correspondente e escreva a mensagem: APROVADO se o conceito for A, B, ou C e
REPROVADOseoconceitoforDouE.Utilizeaestruturadecondio2+2
aninhadas.

75

APNDICEA. EXERCCIOS

Mdia
>=9.0
>= 7.5 e<9.0
>= 6.0 e<7.5

Conceito
A
B
C

>= 4.0 e<6.0


<4.0

D
E

5. Elabore um algoritmo que leia o nome, nota da avaliao 1 e nota da avaliao 2


de um aluno. Ao final, imprima o nome do aluno, suas notas, a mdia aritmtica
e uma das mensagens: Aprovado, Reprovado ou em Prova Final (a mdia 7,0
paraaprovao,menorque3,0parareprovaoeasdemaisemprovafinal).
6. Elabore um algoritmo que leia o salrio de uma pessoa e imprima o desconto
doINSSsegundoatabelaaseguirutilizandoaestruturadecondio2 +
aninhadas:
Faixadesalrio
Menor ou igual aR$600,00
Maior que R$ 600,00 e menor ou igual a R$1200,00
Maior que R$ 1200,00 e menor ou igual aR$2000,00
Maior queR$2000,00

Desconto
Isento
20%
25%
30%

7. Sabe-se que a direo de uma determinada escolinha faz a distribuio de seus


alunos de acordo com as idades dos mesmos. Dessa forma, os alunos sodistribudosnasseguintesturmasdeacordocomaclassificaoaseguir:
TURMA Faixa de Idade
TURMA A de 4 a 5 anos
TURMA B de 6 a 8 anos
TURMA C de 9 a 10 anos
SEM TURMAS abaixo de 4 anos, acima de 10 anos
Desenvolva um algoritmo que leia a idade de uma nica criana e informe em
qualturmaamesmairteraulas.Oalgoritmodevesepreocuparemresponder para
o usurio que a escolinha no possui turmas para a criana caso a mesma
tenhamenosque4anosoumaisque10anos.
8. Numa loja de eletrodomsticos, as compras tm um preo vista, ou acrscimo
de10%parapagamentosem2vezes,ouainda,acrscimode20%parapaga-

APNDICEA. EXERCCIOS

76

mentoem3vezes.Oprogramadevepedirparaousurioentrarcomovalorda
compraavistaeaopodecompra.Oprogramadeveexibirqualovalorfinala
serpago.
9. Faaumprogramaparacalcularacontafinaldeumhspededeumhotelfictcio,
considerando que:
t>Devem ser lidos o nome do hspede, o tipo do apartamento utilizado (A, B, C
ou D), o nmero de dirias utilizadas pelo hspede e o valor do consumo
interno dohspede;
t>O valor da diria determinado pela seguinte tabela:
TIPO DO APTO VALOR DA DIRIA (R$)
A 150.00
B 100.00
C 75.00
D 150.00
t>O valor total das dirias calculado pela multiplicao do nmero de dirias utilizadas pelo valor da diria;
t>O subtotal calculado pela soma do valor total das dirias e o valor do
consumo interno;
t>O valor da taxa de servio equivale a 10% do subtotal;
t>O total geral resulta da soma do subtotal com a taxa de servio.
Escreva a conta final contendo: o nome do hspede, o tipo do apartamento, o
nmerodediriasutilizadas,ovalorunitriodadiria,ovalortotaldasdirias,
ovalordoconsumointerno,osubtotal,ovalordataxadeservioeototalgeral.
10. Construa a tabela de deciso (veja Tabela 6.1) para o algoritmo 31 abaixo, conformeospossveisvaloresdeddd,especificandooqueserimpressoem cada
caso ao final da execuo do algoritmo.
11. Construir um algoritmo que tome como entrada trs valores e os imprima em
ordemcrescente.
12. Elabore um algoritmo para ler trs valores e verificar se eles podem ser os comprimentosdosladosdeumtringulo,eseforemdizerotipodetringulo. Para

APNDICEA. EXERCCIOS

77

Algoritmo 31 Problema 20
l. d d d
2l.
2 d !
2l.
2l.
2
2 d !
2l.
2
2l.
2 d !
2l.
2!
2l.
2
2l.
serumtringulonecessrioquequalquerumdosladosdomesmosejamenor
queasomadosoutrosdoislados,(A<B+C),(B<A+C)e(C<A+B).Utilize
aestruturadecondio2 + aninhadas.Equilteroaquelequetemostrs
lados iguais (A = B = C.) Issceles aquele que tem dois lados iguais (A = B) ou
(A = C) ou (B = C). Escaleno aquele que tem todos os lados diferentes (A <>B
<>C)

A.5.3

Estruturacasoseja

1. Criarumalgoritmoqueleiadoisnmerosinteiros,equesoliciteaousurioqual
aoperaodesejarealizarentreessesnmeros.Casoousuriodigitarocaractere
*serrealizadaumamultiplicao,casosejadigitadoocaractere/serrealizadaumadiviso,casosejadigitadoocaractere+serrealizadoumaadio,
ecasosejadigitadoocaractereserrealizadaumasubtrao.
2. Elabore um algoritmo que leia um nmero inteiro entre 1 e 12 e imprima o ms
correspondente. Caso seja digitado um valor fora desse intervalo, dever ser
exibidaumamensageminformandoquenoexistemscomessenmero.

APNDICEA. EXERCCIOS

A.6

Estruturas deRepetio

A.6.1

Utilizandosomenteaestruturaderepetiol.c;

78

1. Elaboreumalgoritmoqueimprimatodososnmerosde1at100.
2. Elaboreumalgoritmoqueimprimatodososnmerosde100at1.
3. Elaboreumalgoritmoqueimprimatodososnmerosde250a500.
4. Elabore um algoritmo que leia um nmero de entrada que indicar a quantidade de nmeros a serem lidos. Em seguida, leia n nmeros (conforme o valor
informado anteriormente) e imprima o triplo de cada um.

A.6.2

Utilizando a estrutura de condio 2.J2 dentroda


estrutura de repetiol.c;

1. Elabore um algoritmo que leia nome, idade e sexo de 20 pessoas. Imprimir o


nome,seapessoafordosexomasculino,etivermaisde21anos.
2. Elaboreumalgoritmoqueimprimatodososnmerosparesde1at100.

A.6.3

Calculando quantidades de ocorrncias, somatrios e produtos


com a estrutural.c;

1. Elabore um algoritmo que imprima todos os nmeros de 100 a 200, e ao finala


somadeles.
2. Elaboreumalgoritmoqueleiaumnmeroeimprimatodososnmerosde1at o
nmero lido, e tambm o seu produto.Exemplo:
Nmero: 3 Sada: 1 2 3 Produto: 6
3. Construirumalgoritmoquecalculeofatorialdeumnmero.
4. Construir um algoritmo que leia dois nmeros (BASE e EXPOENTE) e retorne
como resultado a POTENCIA do clculo da BASE elevado ao EXPOENTE.
Ex: para a BASE = 2 e EXPOENTE = 4, POTENCIA = 24 = 16
5. Elaboreumalgoritmoqueimprimaatabuadadeumnmeroqueserinformado
pelousurio.

APNDICEA. EXERCCIOS

79

6. Elabore um algoritmo que leia 30 nmeros, e imprima quantos nmeros maiores


que 30 foramdigitados.
7. Elaboreumalgoritmoqueleiaumnmeroeimprimaasomadosnmerosmltiplos de 5 no intervalo entre 1 e o nmero informado. Suponha que o nmero
lidosermaiorquezero.
8. Elabore um algoritmo que leia 20 nmeros, e ao final, imprima a mdia desses
nmeros.
9. Elaboreumalgoritmoqueleia200nmeros,eimprimaquantossoparesequantossompares.
10. Um ms antes das eleies municipais, um determinado partido poltico encomendouumapesquisadeopiniosobreasintenesdevotosdoseleitores.Fo- ram
entrevistas 50 pessoas que indicaram suas intenes de acordo com as seguintes opes: (A) candidato A, (B) candidato B, (C) indeciso. Desenvolva um
algoritmo que faa a leitura das intenes de votos dessas 50 pessoas e que informeaofinalaporcentagemdeintenesparacadaumadasopesexistentes
(candidatosAeB,eindecisos).

A.6.4

Localizando valores dentro de um conjunto com aestrutura


l.c;

1. Elabore um algoritmo que leia um nmero de entrada que indicar a quantidade de nmeros a serem lidos. Em seguida, leia n nmeros (conforme o valor
informadoanteriormente)e,aofinalimprimaomaiornmerodigitado.
2. Elabore um algoritmo que leia um nmero de entrada que indicar a quantidade de nmeros a serem lidos. Em seguida, leia n nmeros (conforme o valor
informadoanteriormente)e,aofinalimprimaomenornmerodigitado.
3. Elabore um algoritmo que leia um nmero de entrada que indicar a quantidade
de nmeros a serem lidos. Em seguida, leia n nmeros (conforme o valor informado anteriormente) e, ao final imprima o maior, menor, e a mdia dos nmeros
digitados.

APNDICEA. EXERCCIOS

A.6.5

80

Usando estrutura de repetio l.c;aninhada

1. Desenvolva um algoritmo que calcule as tabuadas dos nmeros divisveis por 2


que encontram-se no intervalo entre 1 e10.

A.6.6

Estruturas de repetio (d.Jc; e c;d.J)

1. Desenvolva um algoritmo que realize o sorteio de um nmero inteiro pertencenteaointervalode1a100,equesoliciteaousurioqualovalorquefoisorte- ado. O


algoritmo deve informar se o valor que o usurio digitou maior,menor ou
igual ao valor sorteado. O algoritmo deve parar quando o usurio acertar o
valorsorteadoedeveinformaraofinalaquantidadedetentativasqueousurio
utilizouparaacertaronmero.Considereaexistnciadeumcomandochamado
SORTEIO que retorna um valor aleatrio de 1 at um nmero informado da seguinteforma:
Algoritmo 32Adivinhacao
l.sorteado l.
sorteadoSORTEIO(100)Cll.d2l.+2l.
2. Uma determinada empresa fez uma pesquisa de mercado para saber se as pessoas gostaram ou no de um novo produto que foi lanado. Para cada pessoa entrevistada foram coletados os seguintes dados: Sexo (M ou F) e Resposta (Gostou
ou No Gostou). Sabendo-se que foram entrevistados N pessoas, faa um programa quefornea:
t>Nmero de pessoas que gostaram do produto
t>Numero de pessoas que no gostaram do produto
t>Percentagem de pessoas do sexo masculino que no gostaram do produto
t>Informao dizendo em que sexo o produto teve uma melhor aceitao.

A.6.7

Sries

1. Desenvolva um algoritmo que calcule o valor de a partir da seguinte expresso


matemtica:
n
1
=4
( 1)(
)
k (2k +1)
k=0

81

APNDICEA. EXERCCIOS

onde n deve ser informado pelo usurio e corresponde ao grau de preciso no


clculo do valor de
Algoritmo 33 Calculo do pi
l.kn l.
l.pil.
2l.+n
n
pi 0
l.k0+n22 2
mod!

pi pi + 1/(2 k + 1)
2!
pi pi 1/(2 k + 1)
2
l.
pi 4 pi
2l.l.pipi
2. Resolvaoexerccioanteriorsemautilizaodaestruturadecondio2+ 2

3. Desenvolva um algoritmo para calcular e imprimir o valor de S na expresso a


seguir:
1 3 5 7
99
S= +
+ ...
1 2 3
4
50
4. Desenvolva um algoritmo que calcule o valor de S para um determinado valor
deninformadopelousurioapartirdaseguinteexpresso:
1 2 3
n
Sn = + + + ... +
2 3 4
n+1
5. Desenvolva um algoritmo capaz de calcular o resultado da seguinte expresso
aritmtica,ondeovalordeninformadopelousurio:
Sn = 11 + 22 + 33 + ... + nn
6. Desenvolva um algoritmo que calcule o valor de X que dadopor:
n1
Xn = n +

n2
3

+ ...+

1
n

APNDICEA. EXERCCIOS

82

7. Elaborar um programa que utilize uma subrotina para calcular a serie de fibonacci de N termos. A srie de Fibonacci formada pela sequncia : 1, 2, 3, 5,
8, 13, 21, 34, ..., etc. Esta srie caracteriza-se pela soma de um termo posterior
com o seu subsequente, e ela deve ser impressa at que o ltimo elemento no
ultrapasse o valor de entrada N.

A.7

Vetores

1. Desenvolva um programa que solicite a idade, o nome e o sexo de 10 pessoas e


armazene esses dados em vetores. O programa deve oferecer um menu que permita
aousurioasseguintesopes:
1. Informar os dados das 10 pessoas.
2. Sair
Apsousurioterinformadoosdadosdas10pessoas(casoaopo1sejaselecionada),oprogramadeveoferecerasseguintesopesemumsegundomenu:
1. Consultar o nome da pessoa maisnova
2. Consultar a idade do homem maisidoso
3. Consultar a mdia das idades dasmulheres
4. Sair
A cada consulta realizada o programa dever apresentar novamente o menu com
as opes disponveis e s dever ser encerrado quando o usurio escolher a opo
Sair.

2. Desenvolvaumalgoritmoqueofereaaousurioasseguintesopes:
1. Inserirnmerosinteirosemumvetordeat10posies.Osnmerosdevemser
inseridosdemodoqueovetornuncafiquedesordenado(emnenhummomento).
Aosetentarinserirumnmeroemumvetorcheiooprogramadeveacusarque
noserpossvelrealizarainsero.Apsainsero,oalgoritmodeveimprimir
aquantidadedeelementosdovetoreosrespectivoselementos.

APNDICEA. EXERCCIOS

83

2. Excluir um elemento do vetor a partir de seu valor. O usurio dever entrar com
o nmero que deseja excluir do vetor e o mesmo dever ser retirado. Os demais
elementos que se localizam aps o elemento excludo devem ser realocados para
suas novas posies. O algoritmo deve informar quando no existirem mais
elementos paraexcluir.
3. Imprimir na tela os elementos do vetor em ordemCRESCENTE.
4. Imprimir na tela os elementos do vetor em ordemDECRESCENTE.
5. Sair doprograma.
Obs: O objetivo do item 1 no o de ordenar o vetor, mas sim de manter o vetor
ordenado a cada insero, sendo assim, o vetor nunca chegar a estar desordenado,
ou seja, antes de inserir cada elemento, o algoritmo deve procurar em qual posioo
mesmodeveserinserido,edepoisrealizarainseroexatementenaquelaposio.

A.8

Matrizes

1. Desenvolva um algoritmo que solicite ao usurio a ordem de duas matrizes A e


B (mximo 10x10) e seus respectivos elementos. Aps a insero dos elementos das
matrizesAeBoprogramadeveofereceraousurioasseguintesopes:
1. mostrar as duas matrizes
2. multiplicarasduasmatrizesemostraramatrizresultante.Casoamultiplicao
dasmatrizesnosejapossveloprogramadeveinformaraousurioomotivoda
impossibilidade.
3. Sair doprograma.
Obs: Os elementos da matriz devem ser do tipo inteiro ou do tipo real.

A.9

Modularizao

1. Para um grupo de valores reais, determinar o valor do desvio padro destes valores
emrelaoamdiadosvalores. Odesviopadrodeumgrupodevalorespodeser

84

APNDICEA. EXERCCIOS

obtido por:
dp=

2
i=1Xi

2
i=1Xi )

n1

Para esse problema devem ser desenvolvidas 3 funes que iro receber como parmetros o conjunto de elementos e a quantidade de elementos desse conjunto, e que
faro os seguintes processamentos:
1. Clculo da soma dos quadrados dos elementos dogrupo.
2. Clculo do quadrado da soma dos elementos dogrupo.
3. Clculo do DesvioPadro.
O programa principal deve oferecer para o usurio as seguintes opes:
1. Informaraquantidadeeosvaloresdoselementosdogrupo.
2. Calcular o desvio padro dogrupo.
3. Sair.

Você também pode gostar