Table Of ContentUNIVERSIDADE FEDERAL DO PAMPA
CAMPUS BAGÉ
I A
NTRODUÇÃO A LGORITMOS E
P
ROGRAMAÇÃO
FABRICIO FERRARI
[email protected]
CRISTIAN CECHINEL
[email protected]
BAGÉ, ABRIL DE 2008, VERSÃO 2.0
Sumário
I Conceitos Preliminares 9
1 OComputador 10
1.1 HistóricodosComputadores . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2 ArquiteturaBásica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 UnidadeCentraldeProcessamento(UCP). . . . . . . . . . . . . . 12
1.2.2 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3 DispositivosdeEntradaedeSaída . . . . . . . . . . . . . . . . . . 13
2 Algoritmos 14
2.1 ConceitodeAlgortimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 PartesdeUmAlgoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 RepresentaçõesdeumAlgoritmo . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Fluxograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 ProgramasdeComputador . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Linguagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.1 LinguagemNatural . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 LinguagemdeMáquinaeAssembler . . . . . . . . . . . . . . . . 19
2.5.3 LinguagensdeProgramação . . . . . . . . . . . . . . . . . . . . . 20
2.5.4 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
II Dados 24
3 RepresentaçãodeDados 25
3.1 RepresentaçãoInterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 TiposPrimitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 ConstanteseVariáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 ManipulaçãodeDados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2
SUMÁRIO 3
3.4.1 Identificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.2 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.3 Atribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Expressões 33
4.1 ExpressõesAritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.1 PrecedênciaGeraldosOperadoresAritméticos . . . . . . . . . . . 33
4.1.2 EscritadeOperaçõesAritméticas . . . . . . . . . . . . . . . . . . . 35
4.1.3 ExceçõesemExpressõesAritméticas . . . . . . . . . . . . . . . . . 35
4.1.4 SimplificaçãodeExpressõesAritméticas . . . . . . . . . . . . . . 36
4.2 ExpressõesLógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.1 OperadoresRelacionais . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2 OperadoresLógicos . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 ComandosdeEntradaeSaída 40
5.1 Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2 Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
III Estruturas de Controle 43
6 EstruturasdeCondição 44
6.1 EstruturadeCondiçãoSimples: se-entªo. . . . . . . . . . . . . . . . . . . 45
6.2 EstruturadeCondiçãoComposta: se-entªo-senªo . . . . . . . . . . . . . . 46
6.3 EstruturasdeCondiçãoEncadeadas . . . . . . . . . . . . . . . . . . . . . 48
6.4 Comandocaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7 EstruturasdeRepetição 52
7.1 TestenoInício: enquanto-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.2 TestenoFim: fa(cid:231)a-enquanto . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.3 RepetiçãocomControle: fa(cid:231)a-para . . . . . . . . . . . . . . . . . . . . . . 54
7.4 ContadoreseAcumuladores . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.4.1 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.4.2 Acumuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
SUMÁRIO 4
IV Estrutura de Dados e Modularização 58
8 VariáveisCompostasHomogêneas 59
8.1 VetoresUnidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.2 VetoresBidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8.3 VetoresMultidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9 Módulos 62
9.1 Modularização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.2 RetornodeValores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.3 EscopodeVariáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.4 PassagemdeParâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.4.1 PorValor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.4.2 PorReferência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
V Apêndice 64
A Exercícios 65
A.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.2 Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3 EstruturasdeCondição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
A.4 EstruturasdeCondicao–exercíciosavançados . . . . . . . . . . . . . . . 71
A.5 EstruturasdeRepeticao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.6 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
A.7 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
A.8 Modularização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Lista de Figuras
1.1 Arquiteturabásica(VonNeumann) . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Partesbásicasdeumalgoritmo. . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Algoritmorepresentadoemformadeumfluxograma. . . . . . . . . . . . 18
2.3 Compilação: o programa em linguagem de programação é transfor-
madoeminstruçõesemlinguagemdemáquina(queoprocessadorpode
executar). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1 Estuturadeumcomandose-entªo. . . . . . . . . . . . . . . . . . . . . . . 46
8.1 Vetoridade[8]comseusvaloreseíndices. . . . . . . . . . . . . . . . . . . 60
5
Lista de Tabelas
3.1 Equivalência entre sistemas numéricos de representação. O subscrito
identificaemquebaseonúmeroestáescrito . . . . . . . . . . . . . . . . 26
4.1 Operadoresaritméticosbásicos. . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 PrecedênciaGeraldeOperadoresAritméticos . . . . . . . . . . . . . . . . 34
4.3 OperadoresRelacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Tabela verdade dos operadores lógicos. P e Q são sentenças lógicas
quaisquer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1 Tabela de decisão para a estrutura de condição composta mostrada no
algoritmo11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6
Lista de Algoritmos
1 Trocadepneudocarro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Pegarumonibus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 CalculaÁreadeumaCircunferência. . . . . . . . . . . . . . . . . . . . . . 17
4 ExemplodePseudocódigo. . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5 Atribuiçõesdevaloresaumavariável. . . . . . . . . . . . . . . . . . . . . 31
6 Locadora: exemplodeentradadedados. . . . . . . . . . . . . . . . . . . 42
7 Locadora2: exemplodeavisoparaentradadedados. . . . . . . . . . . . 42
8 Condição: maioroumenordeidade. . . . . . . . . . . . . . . . . . . . . . 46
9 Condição: maioroumenordeidadecomse-entªo-senªo. . . . . . . . . . . 47
10 Expressãológicacomposta. . . . . . . . . . . . . . . . . . . . . . . . . . . 48
11 Estruturadecondiçãocomposta. . . . . . . . . . . . . . . . . . . . . . . . 48
12 Verificaaprovaçãodealunos. . . . . . . . . . . . . . . . . . . . . . . . . . 50
13 Estruturacaso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
14 Exemplodecaso: mostraonumero. . . . . . . . . . . . . . . . . . . . . . . 51
15 Estruturaderepetiçãoenquanto-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . 54
16 Estruturaderepetiçãofa(cid:231)a-enquanto. . . . . . . . . . . . . . . . . . . . . . 54
17 Estruturaderepetiçãopara-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . . . . 54
18 Exemplodeestruturaderepetição. . . . . . . . . . . . . . . . . . . . . . . 54
19 Contadores1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
20 Contadores2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
21 Acumuladores1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
22 Acumuladores2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
23 Acumuladores3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
24 Acumuladores4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
25 Definindoosvaloresdavariávelidade. . . . . . . . . . . . . . . . . . 60
26 Imprimindotodososvaloresdavariávelidade[]. . . . . . . . . . . . 61
27 Problema20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7
LISTADEALGORITMOS 8
28 Calculodopi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
29 Adivinhacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Parte I
Conceitos Preliminares
9
Capítulo 1
O Computador
Um computador é uma máquina que manipula dados a partir de uma lista de instru-
ções.
Os computadores podem ser mecânicos (computador analógico) ou eletrônicos
(computadoresdigitais).
1.1 Histórico dos Computadores
. MECÂNICOS
– Ábaco1000A.C
– OssosdeNapier1612
– Pascaline,Pascal1642
– Tearautomático,Jacquard1801
– Máquinadediferenças,Babbage1882
– Tabuladoreletromecânico,Hollerith1890
. 1a GERAÇÃO –eletro-eletrônicos
– Z1,Z2,Z3(relés),KonradZuse1935
– ABC(válvulas),Atanosoff1936
– MARK-1,1941,120m2,10multiplicaçõesem3segundos
– ENIAC,1946,30toneladas,18000válvulas,5000somas/s
. 2a GERAÇÃO –transistores1947
10
Description:™ont—tod™risti—n™e™hinelFproF˜r .. 23 Acumuladores3 . o maior número que pode ser representado utilizando N algarismos será 10N . Por.