UNIVERSIDADE 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: