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É, NOVEMBRO DE 2008, VERSÃO 2.2
Sumário
I Conceitos Preliminares 10
1 OComputador 11
1.1 HistóricodosComputadores . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 ArquiteturaBásica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 UnidadeCentraldeProcessamento(UCP). . . . . . . . . . . . . . 13
1.2.2 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3 DispositivosdeEntradaedeSaída . . . . . . . . . . . . . . . . . . 14
2 Algoritmos 15
2.1 ConceitodeAlgortimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 PartesdeUmAlgoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 RepresentaçõesdeumAlgoritmo . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Fluxograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 ProgramasdeComputador . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Linguagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 LinguagemNatural . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.2 LinguagemdeMáquinaeAssembler . . . . . . . . . . . . . . . . 20
2.5.3 LinguagensdeProgramação . . . . . . . . . . . . . . . . . . . . . 21
2.5.4 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
II Dados 25
3 RepresentaçãodeDados 26
3.1 RepresentaçãoInterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 TiposPrimitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 ConstanteseVariáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 ManipulaçãodeDados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2
SUMÁRIO 3
3.4.1 Identificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.2 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.3 Atribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Expressões 34
4.1 ExpressõesAritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 PrecedênciaGeraldosOperadoresAritméticos . . . . . . . . . . . 34
4.1.2 EscritadeOperaçõesAritméticas . . . . . . . . . . . . . . . . . . . 36
4.1.3 ExceçõesemExpressõesAritméticas . . . . . . . . . . . . . . . . . 36
4.1.4 SimplificaçãodeExpressõesAritméticas . . . . . . . . . . . . . . 37
4.2 ExpressõesLógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.1 OperadoresRelacionais . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.2 OperadoresLógicos . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5 ComandosdeEntradaeSaída 41
5.1 Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
III Estruturas de Controle 44
6 EstruturasdeCondição 45
6.1 EstruturadeCondiçãoSimples: se-entªo. . . . . . . . . . . . . . . . . . . 46
6.2 EstruturadeCondiçãoComposta: se-entªo-senªo . . . . . . . . . . . . . . 47
6.3 EstruturasdeCondiçãoEncadeadas . . . . . . . . . . . . . . . . . . . . . 49
6.4 EstruturadeCondiçãocasoseja . . . . . . . . . . . . . . . . . . . . . . . 50
7 EstruturasdeRepetição 53
7.1 TestenoInício: enquanto-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.2 TestenoFim: fa(cid:231)a-enquanto . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.3 RepetiçãocomControle: fa(cid:231)a-para . . . . . . . . . . . . . . . . . . . . . . 55
7.4 ContadoreseAcumuladores . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.4.1 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4.2 Acumuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
SUMÁRIO 4
IV Estrutura de Dados e Modularização 59
8 VariáveisCompostasHomogêneas 60
8.1 VetoresUnidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.2 VetoresBidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.3 VetoresMultidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9 Módulos 63
9.1 Modularização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.2 RetornodeValores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.3 EscopodeVariáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.4 PassagemdeParâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.4.1 PorValor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.4.2 PorReferência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
V Apêndice 65
A Exercícios 66
A.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.1.1 Paraosproblemasaseguir,defina: . . . . . . . . . . . . . . . . . . 66
A.2 RepresentaçãodeDados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
A.3 Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.4 EntradaeSaída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.5 EstruturasdeCondição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.5.1 Estruturase-entªo-senªo . . . . . . . . . . . . . . . . . . . . . . . . 72
A.5.2 Estruturase-entªo-senªoaninhada . . . . . . . . . . . . . . . . . . 74
A.5.3 Estruturacasoseja . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
A.6 EstruturasdeRepetição . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A.6.1 Utilizandosomenteaestruturaderepetiçãopara-fa(cid:231)a . . . . . . . 78
A.6.2 Utilizando a estrutura de condição se-entªo-senªo dentro da es-
truturaderepetiçãopara-fa(cid:231)a . . . . . . . . . . . . . . . . . . . . . 78
A.6.3 Calculando quantidades de ocorrências, somatórios e produtos
comaestruturapara-fa(cid:231)a . . . . . . . . . . . . . . . . . . . . . . . . 78
A.6.4 Localizandovaloresdentrodeumconjuntocomaestruturapara-
fa(cid:231)a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.6.5 Usandoestruturaderepetiçãopara-fa(cid:231)aaninhada . . . . . . . . . 80
SUMÁRIO 5
A.6.6 Estruturasderepetição(enquanto-fa(cid:231)aefa(cid:231)a-enquanto) . . . . . . . 80
A.6.7 Séries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.7 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.8 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.9 Modularização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Lista de Figuras
1.1 Arquiteturabásica(VonNeumann) . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Partesbásicasdeumalgoritmo. . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Algoritmorepresentadoemformadeumfluxograma. . . . . . . . . . . . 19
2.3 Compilação: o programa em linguagem de programação é transfor-
madoeminstruçõesemlinguagemdemáquina(queoprocessadorpode
executar). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1 Estuturadeumcomandose-entªo. . . . . . . . . . . . . . . . . . . . . . . 47
8.1 Vetoridade[8]comseusvaloreseíndices. . . . . . . . . . . . . . . . . . . 61
6
Lista de Tabelas
3.1 Equivalência entre sistemas numéricos de representação. O subscrito
identificaemquebaseonúmeroestáescrito . . . . . . . . . . . . . . . . 27
4.1 Operadoresaritméticosbásicos. . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 PrecedênciaGeraldeOperadoresAritméticos . . . . . . . . . . . . . . . . 35
4.3 OperadoresRelacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Tabela verdade dos operadores lógicos. P e Q são sentenças lógicas
quaisquer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.1 Tabela de decisão para a estrutura de condição composta mostrada no
algoritmo11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7
Lista de Algoritmos
1 Trocadepneudocarro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Pegarumonibus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 CalculaÁreadeumaCircunferência. . . . . . . . . . . . . . . . . . . . . . 18
4 ExemplodePseudocódigo. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Atribuiçõesdevaloresaumavariável. . . . . . . . . . . . . . . . . . . . . 32
6 Locadora: exemplodeentradadedados. . . . . . . . . . . . . . . . . . . 43
7 Locadora2: exemplodeavisoparaentradadedados. . . . . . . . . . . . 43
8 Condição: maioroumenordeidade. . . . . . . . . . . . . . . . . . . . . . 47
9 Condição: maioroumenordeidadecomse-entªo-senªo. . . . . . . . . . . 48
10 Expressãológicacomposta. . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11 Estruturadecondiçãocomposta. . . . . . . . . . . . . . . . . . . . . . . . 49
12 Verificaaprovaçãodealunos. . . . . . . . . . . . . . . . . . . . . . . . . . 51
13 Estruturacaso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
14 Exemplodecaso: mostraonumero. . . . . . . . . . . . . . . . . . . . . . . 52
15 Estruturaderepetiçãoenquanto-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . 54
16 Estruturaderepetiçãofa(cid:231)a-enquanto. . . . . . . . . . . . . . . . . . . . . . 55
17 Estruturaderepetiçãopara-fa(cid:231)a. . . . . . . . . . . . . . . . . . . . . . . . . 55
18 Exemplodeestruturaderepetição. . . . . . . . . . . . . . . . . . . . . . . 55
19 Contadores1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
20 Contadores2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
21 Acumuladores1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
22 Acumuladores2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
23 Acumuladores3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
24 Acumuladores4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
25 Definindoosvaloresdavariávelidade. . . . . . . . . . . . . . . . . . 61
26 Imprimindotodososvaloresdavariávelidade[]. . . . . . . . . . . . 62
27 Antecessor-sucessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8
LISTADEALGORITMOS 9
28 Conversor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
29 Numero-de-salarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
30 Novo-peso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
31 Problema20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
32 Adivinhacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
33 Calculodopi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Parte I
Conceitos Preliminares
10
Description:2.3 Compilação: o programa em linguagem de programação é transfor- ..
linguagens de alto-nível são: Pascal, C, Fortran, Java, Perl, Python, Lisp, PHP,
entre.