Documente Academic
Documente Profesional
Documente Cultură
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
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
Lista de Figuras
1.1 Arquitetura bsica (VonNeumann) .........................................................................................12
2.1
2.2
2.3
Lista de Tabelas
3.1 Equivalncia entre sistemas numricos de representao. Osubscrito
identifica em que base o nmeroestescrito......................................................................27
4.1
4.2
4.3
4.4
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
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
CAPTULO 1. O COMPUTADOR
1.2.1
13
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
2H
Captulo 2
Algoritmos
2.1
Conceito de Algortimo
15
CAPTULO 2. ALGORITMOS
16
2.2
Partes de Um Algoritmo
CAPTULO 2. ALGORITMOS
17
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
19
CAPTULO 2. ALGORITMOS
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
CAPTULO 2. ALGORITMOS
20
2.5.2
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
2.5.3
LinguagensdeProgramao
CAPTULO 2. ALGORITMOS
22
2.5.4
Pseudocdigo
CAPTULO 2. ALGORITMOS
23
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
27
Captulo 3
Representao deDados
3.1
RepresentaoInterna
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)
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
29
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.
30
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
3.4
3.4.1
31
Manipulao deDados
Identificao
3.4.2
32
Definio
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.
3.4.3
33
Atribuio
34
CAPTULO 4. EXPRESSES
35
Captulo 4
Expresses
4.1
ExpressesAritmticas
4.1.1
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
+,-
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
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
4.1.3
4.1.4
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
4.2.2
Operadores Lgicos
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
42
Instruo:
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
43
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
6.1
46
6.2
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.
6.3
EL2
V
F
EL3
V
F
execuo
BV2
BF2
BV3
BF3
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
7.1
53
7.2
7.3
54
RepetiocomControle: faa-para
7.4
Contadores e Acumuladores
55
7.4.1
Contadores
7.4.2
Acumuladores
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.
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.
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
64
Parte V
Apndice
65
Apndice A
Exerccios
A.1
Algoritmos
A.1.1
APNDICEA.EXERCCIOS
67
A.2
Representao deDados
1.
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.
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
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
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
75
APNDICEA. EXERCCIOS
Mdia
>=9.0
>= 7.5 e<9.0
>= 6.0 e<7.5
Conceito
A
B
C
D
E
Desconto
Isento
20%
25%
30%
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
A.6.3
APNDICEA. EXERCCIOS
79
A.6.4
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
A.6.6
A.6.7
Sries
81
APNDICEA. EXERCCIOS
pi pi + 1/(2 k + 1)
2!
pi pi 1/(2 k + 1)
2
l.
pi 4 pi
2l.l.pipi
2. Resolvaoexerccioanteriorsemautilizaodaestruturadecondio2+ 2
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
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
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.