Você está na página 1de 55

PSA - Material de Apoio

APOSTILA DE INTRODUO CINCIA DOS COMPUTADORES


Verso 1.0

Jos Francisco de Magalhes Netto Raimundo da Silva Barreto

jnetto@dcc.fua.br barreto@dcc.fua.br

ltima Atualizao 26/01/99 por Ruiter Braga Caldas - ruiter@dcc.fua.br

SUMRIO
INTRODUO...................................................................................................................................................3 1. NOES DE COMPUTADORES .............................................................................................................4 1.1 EVOLUO HISTRICA DA COMPUTAO....................................................................................4 1.2 GERAES DE COMPUTADORES .....................................................................................................5 1.3 ESTRUTURA BSICA DE UM COMPUTADOR..................................................................................6 1.4 SISTEMA OPERACIONAL E TRADUTORES .....................................................................................9 1.5 CONVERSO DE NMEROS DECIMAIS EM BINRIOS E VICE-VERSA ...................................10 1.5.1. CONVERSO DE NMEROS INTEIROS DECIMAIS EM NMEROS BINRIOS ..........10 1.5.2. CONVERSO DE NMEROS INTEIROS BINRIOS EM NMEROS DECIMAIS ................10 1.5.3. CONVERSO DE NMEROS FRACIONRIOS DECIMAIS EM NMEROS BINRIOS.....11 1.5.4. CONVERSO DE NMEROS FRACIONRIOS BINRIOS EM NMEROS DECIMAIS.....11 2. ALGORITMOS.............................................................................................................................................12 2.1. CONSTRUO DE ALGORITMOS....................................................................................................12 2.2. DEFINIO DE ALGORITMOS .........................................................................................................14 2.3. REFINAMENTOS SUCESSIVOS.........................................................................................................15 2.4. ALGORITMOS ESTRUTURADOS.....................................................................................................15 2.5. O PORTUGOL .......................................................................................................................................17 2.6. IDENTIFICADORES.............................................................................................................................17 2.7. CONSTANTES ......................................................................................................................................17 2.8. VARIVEIS...........................................................................................................................................18 2.9. COMENTRIOS ...................................................................................................................................18 2.10. EXPRESSES ARITMTICAS ..........................................................................................................18 2.11. EXPRESSES LGICAS ...................................................................................................................19 2.12. EXPRESSES LITERAIS ...................................................................................................................19 2.13. COMANDO DE ATRIBUIO..........................................................................................................19 2.14. COMANDOS DE ENTRADA E SADA.............................................................................................20 2.15. ESTRUTURA SEQENCIAL............................................................................................................20 2.16. ESTRUTURA CONDICIONAL ..........................................................................................................21 2.17. ESTRUTURA DE REPETIO..........................................................................................................21 3. CODIFICAO PASCAL............................................................................................................................23 3.1 ESTRUTURA DE PROGRAMAS PASCAL..........................................................................................23 3.1.1 IDENTIFICADORES.......................................................................................................................23 3.1.2 CONSTANTES ................................................................................................................................23 3.1.3 VARIVEIS.....................................................................................................................................24 3.1.4 COMENTRIOS .............................................................................................................................24 3.1.5 EXPRESSES..................................................................................................................................24 3.1.6 COMANDO DE ATRIBUIO......................................................................................................27 3.1.7 COMANDOS DE ENTRADA E SADA.........................................................................................27 3.1.8 ESTRUTURA CONDICIONAL ......................................................................................................27 3.1.9 ESTRUTURA DE REPETIO......................................................................................................28 3.1.10 REGRAS DE SINTAXE ................................................................................................................30 3.1.11 EXEMPLO DE CODIFICAO DE UM ALGORITMO EM PORTUGOL NA LINGUAGEM PASCAL....................................................................................................................................................32 4. LISTA DE EXERCCIOS .............................................................................................................................33 A. Noes de Computadores .........................................................................................................................33 B.Converso de Nmeros Decimais em Binrios e Vice-Versa ....................................................................35 C. Introduo aos Algoritmos ........................................................................................................................36 D. Algoritmos ................................................................................................................................................37 6 . EXERCCIOS RESOLVIDOS.....................................................................................................................44

INTRODUO O computador est cada vez mais presente no dia a dia de todos ns. Cada vez mais reas so abrangidas pela sua atuao, mudando a forma com que as pessoas trabalham e tambm a maneira como as pessoas se relacionam entre si atravs da ampla disseminao das redes de computadores. Este texto apenas uma pequena introduo neste vasto mundo da Informtica. No mbito da Universidade do Amazonas as disciplinas Introduo Cincia dos ComputadoresIEC081 e Introduo ao Processamento de Dados-IEC981, oferecidas pelo Departamento de Cincia da Computao da Universidade do Amazonas-DCC/UA, visam dar aos alunos provenientes de diversos cursos um primeiro contato com o computador. Este texto pretende servir de auxlio para atingir o objetivo de mostrar conceitos bsicos sobre computadores.

1. NOES DE COMPUTADORES 1.1 EVOLUO HISTRICA DA COMPUTAO


A Tabela 1 mostra um histrico sucinto da maneira como o Homem calcula e dos meios que utilizou para facilitar este processo. Dedos (origem do sistema decimal) Seixos baco Ossos de Napier. Rgua de clculo. Primeira calculadora mecnica Calculadora mecnica de rodas dentadas de 10 posies Mquina de multiplicar totalmente mecnica Tear com desenhos programados por folha giratria de papel perfurado Mquina para computar tabelas matemticas Mquina para somar, subtrair, multiplicar e dividir a partir de mveis acionados no painel. Computmetro mquina dirigida por chaves Primeira mquina de somar e imprimir Perfuradora de cartes registrava e classificava nmeros atravs de furos em cartes; a leitura era feita atravs de pinos que se encaixavam em localizaes especficas. Criada para utilizao no censo americano. Empresa origem da IBM (1924) Caixas registradoras eltricas e mquinas com teclado ENIAC (Eletronic Integrator and Calculator), primeiro computador digital eletrnico: 18000 vlvulas, 1500 rels, resistores, capacitores, indutores, 200 kW de potncia. Memria para at 20 nmeros de 10 dgitos cada um. Programao atravs de fios e pinos (painel de telefonista). Apenas dados armazenados na memria. EDVAC (Electronic Discrete Variable Automatic Computer), baseado na proposta de J. Von Neumann de uma mquina que armazenava na memria dados e instrues. UNIVAC, primeiro computador em escala comercial, utilizado com sucesso no censo dos EUA em 1951.

1617 1633 1642 1694 1728 1859 1875 1887 1890 1890

John Napier Wilhelm Schickard Blaise Pascal Gottfried Wilhelm von Leibnitz Basile Bouchon Charles Babbage Frank Baldwin Dorr Feld W. Burroughs Herman Holerith

1920 1946

1948

1949

Tabela 1: Breve Histrico da Computao

1.2 GERAES DE COMPUTADORES


comum referenciar-se aos computadores com relao ao seu grau de evoluo tecnolgica em funo de geraes. A Tabela 2 d um resumo das geraes de computadores. Dcada Gerao 1940 1a 1950 2a 1960 1970 3a 4a Caractersticas Circuitos eletromecnicos e vlvulas (ENIAC, EDVAC, UNIVAC). Transistores (Bell Telephone Laboratories, 1948), dispositivos menores com menor consumo de potncia, mais robustos e confiveis. Circuitos integrados integrao de vrios transistores em uma nica embalagem (chip) com aproximadamente as mesmas dimenses de um transistor. Milhares de transistores em uma nica pastilha VLSI (Very Large Scale Integration). Tabela 2: Geraes de Computadores A evoluo tecnolgica gera computadores cada vez mais baratos, potentes e rpidos. Com isso cada vez mais coisas podem ser realizadas pelos computadores.

1.3 FORMAS EM QUE SE APRESENTAM OS COMPUTADORES


Os computadores apresentam-se em diversas formas e esto em evoluo contnua. A Tabela 3 d um breve resumo destas formas. Forma Supercomputador Mainframe Minicomputador Estao de Trabalho (Workstation) Microcomputador Caractersticas Mais potentes, em geral utilizam multiprocessadores. Usado para simulaes cientficas complexas (Ex.: previso de clima). Fabricante: IBM, Cray. Grandes de computadores com alta capacidade de processamento. Em geral so usados para aplicaes comerciais e industriais. Fabricante: IBM. Intermedirio entre mainframes e microcomputadores. Fabricantes: IBM, DEC, HP. Mais poderosos que os microcomputadores. Rodam o sistema operacional Unix ou uma variao. Em geral usam a tecnologia RISC (Reduced Instruction Set Computer). Fabricantes: Sun, SiliconGraphics. Pequenos computadores com mltiplas finalidades. Fabricantes: IBM, Apple. Tabela 3: Formas dos Computadores

1.4 ESTRUTURA BSICA DE UM COMPUTADOR


O computador uma mquina programvel capaz de processar informaes com grande rapidez. A Figura 1 mostra a estrutura bsica de um computador: unidades de entrada, unidade central de processamento, memria e unidades de sada. As unidades de entrada permitem ao computador acessar informaes do mundo externo. As informaes so traduzidas em cdigos que possam ser entendidos pela Unidade Central de Processamento. Exemplos de dispositivos de entrada so: teclado, mouse, tela touchscreen, leitora de carto magntico, joystick, caneta tica, scanner de imagens, scanner de cdigo de barras, driver de disquete, driver de CD-ROM (Compact Data - Read Only Memory), disco rgido (hard disk ou HD), leitora de fita magntica, leitora de carto perfurado, cmera fotogrfica digital, cmera de video, sensores, etc. As unidades de sada convertem impulsos eltricos, permitindo a sada de informaes para meios externos e possibilitando sua visualizao e armazenamento por diferentes perifricos ou, ainda, a utilizao de dados por outro computador. Exemplos de dispositivos de sada so: impressora, plotadora, monitor ou vdeo, driver de disquete (31/2 e 51/4 pol), disco rgido (hard disk ou HD), gravadora de fita magntica, emissor de som, controladores, etc. A Unidade Central de Processamento (UCP) formada pela Unidade de Controle e Unidade Lgico-Aritmtica (ULA). A Unidade de Controle gerencia todos os recursos do computador e contm as instrues da UCP para executar comandos. A Unidade LgicoAritmtica realiza operaes aritmticas (adio, subtrao, multiplicao, diviso) e operaes lgicas (conjuno, disjuno e negao). A Unidade Central de Processamento tambm conhecida pela sigla inglesa CPU (Central Processor Unit). A memria principal do computador conhecida por RAM (Random Access Memory). Na memria principal esto as instrues que esto sendo executadas e os dados necessrios a sua execuo. A memria principal tambm chamada de memria de trabalho ou memria temporria, uma memria de leitura e escrita (read/write). Suas caractersticas so: rpido acesso (da ordem de nanosegundos em computadores mais modernos), acesso aleatrio (para acessar uma posio de memria o computador vai diretamente a esta posio atravs do endereo) e volatilidade (em caso de falta de energia eltrica ou desligamento do computador h perda de informaes).

Memria

Unidade de Entrada

Unidade de Controle

Unidade de Sada

Unidade Lgica e Aritmtica Unidade Central de Processamento

Figura 1: Estrutura bsica de um computador O computador possui tambm uma memria chamada ROM (Read Only Memory) onde so guardadas informaes para inicializar o computador, verificando a memria principal (seu tamanho e integridade) e os perifricos e, tambm, ativando o sistema operacional. Esta memria no voltil (isto , no se perde quando o computador desligado ou h uma variao de tenso), e em geral gravada pelo fabricante e com pequena capacidade de armazenamento. Depois de gravada a ROM no pode ser mais alterada pelo usurio. A memria secundria ou memria auxiliar usada para armazenar grandes quantidades de informaes. Um exemplo comum de memria secundria o disco rgido. O hardware de um computador consiste dos componentes fsicos, tais como a UCP (Unidade Central de Processamento), memria e os dispositivos de entrada/sada (comumente chamados de perifricos) que formam o sistema. O software refere-se aos programas usados para controlar a operao do hardware para solucionar problemas. A unidade bsica de informao o bit (binary digit). O bit pode ter valor 0 (zero desligado) ou 1 (um - ligado). Esta representao no usual para seres humanos por envolver grandes seqncias de dgitos binrios para representar nmeros decimais. Entretanto esta representao pode ser usada convenientemente por computadores usando circuitos eletrnicos pois os dois valores bsicos (0 e 1) so representados de modo confivel e eficiente, pela presena ou ausncia de correntes eltricas, cargas eltricas ou campos magnticos nos circuitos. Chama-se byte um conjunto de 8 bits. Bytes so usados para representar informaes tais como caracter, nmero e outros tipos de dados. comum se referir aos seus mltiplos: kilobyte, megabyte, gigabyte e terabyte.
7

1 Kilobyte 1 Megabyte 1 Gigabyte 1 Terabyte

= 210 bytes = 1024 bytes = 1024 kilobytes = 1048576 bytes = 1024 Megabytes = 1048576 kilobytes = 1073741824 bytes = 1024 Gigabytes

O ASCII (American Standard Code for Information Interchange), Figura 2, o cdigo normalmente usado para representar caracteres em computadores. Ele constitudo de 95 caracteres de impresso (grficos) e 33 caracteres de controle, que so usados principalmente em transmisso de dados e para controle de equipamentos de impresso. Por exemplo os caracteres a maisculo e minsculo so representados em ASCII pelas seqncia A a Binrio 01000001 01100001 Decimal 65 97

A memria do computador est subdividida em palavras, que a menor quantidade de informao enderevel. Uma palavra de computador um conjunto de bytes. O tamanho da palavra do computador uma escolha de arquitetura, variando de mquina para mquina. Por exemplo no microprocessador Pentium a palavra de 32 bits (ou 4 bytes).
BIT mais 0 1 significativo OOOO OOO1 0 OOOO NUL DLE 1 OOO1 SOH DC1 2 OO1O STX DC2 3 OO11 ETX DC3 4 O1OO EOT DC4 5 O1O1 ENQ NAK 6 O11O ACK SYN 7 O111 BEL ETB 8 1OOO BS CAN 9 1OO1 HT EM A 1O1O LF SUB B 1O11 VT ESC C 11OO FF FS D 11O1 CR GS E 111O SOH RS F 1111 SI US BIT menos significativo 2 3 4 5 OO1O OO11 O1OO O1O1 SP 0 @ P ! 1 A Q " 2 B R # 3 C S $ 4 D T % 5 E U & 6 F V ' 7 G W ( 8 H X ) 9 I Y * : J Z + ; K [ , < L \ = M ] . > N ^ / ? O _ 6 O11O ` a b c d e f g h i j k l m n o 7 O111 p q r s t u v w x y z { | } ~ DEL

Figura 2: Cdigo Padro Americano para Intercmbio de Informaes (ASCII)

1.5 SISTEMA OPERACIONAL


O sistema operacional (SO) gerencia os recursos (hardware e software) do computador, disponibilizando-os de maneira amigvel ao usurio. O SO tem como objetivo colocar uma camada de software sobre o hardware para gerenciar todas as partes do sistema e apresentlas ao usurio como uma interface, uma abstrao, uma mquina mais fcil de entender e programar. Ex.: DOS, UNIX, Linux, Windows95, VM, VSE, etc. As funes do sistema operacional so: gerenciamento de memria, gerenciamento de processos, gerenciamento de E/S (entrada/saida) e gerenciamento de arquivos.

1.6 PROGRAMAS DE COMPUTADORES E TRADUTORES


Um programa de computador uma coleo de instrues que, quando executadas pela CPU de um computador, cumpre uma tarefa ou funo especfica. Nos primeiros computadores a programao era feita diretamente por iniciao direta de comandos ligando e desligando interruptores e por meio de ligao direta de fios em circuitos. Este processo oneroso e lento atualmente substituido pela introduo dos tradutores. Os computadores trabalham internamente com instrues em linguagem de mquina. Estas linguagens so chamadas de baixo nvel por serem entendidas facilmente apenas pelas mquinas. Tipicamente linguagens de mquinas so compostas de 50 a 300 instrues que fazem basicamente mover dados pela mquina e realizam comparaes e operaes aritmticas. Ex.: ADD A, B Os tradutores permitem que um programa escrito em uma linguagem de alto nvel (Pascal, C, Fortran, etc) seja entendido e executado pelo computador. As linguagens so consideradas de alto nvel quando apresentam algumas fortes semelhanas com a maneira pela qual o Homem se expressa. Os tradutores dividem-se em interpretadores e compiladores. No programa interpretador uma instruo decodificada e executada, atravs de um ciclo repetitivo. A desvantagem que isso leva um tempo de execuo maior. No programa compilador o programa fonte compilado atravs de diversas fases: Faz-se uma anlise lxica do programa-fonte; depois uma anlise sinttica; gera-se um cdigo intermedirio; procura-se otimizar o cdigo; finalmente gerado o cdigo objeto, que chamado programa-objeto. O programa objeto est pronto para ser executado quando for carregado na memria principal e ativado pelo sistema operacional.

1.7 CONVERSO DE NMEROS DECIMAIS EM BINRIOS E VICEVERSA


O computador uma mquina binria pois internamente trabalha com nmeros na base 2 (base binria), reconhecendo apenas os dgitos 0 e 1, conhecidos como bits. O Homem comumente utiliza o sistema de numerao decimal, ou seja nmeros formados por 10 dgitos que so o 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Nas sees subseqentes aprenderemos a transformar nmeros decimais em binrios e viceversa. 1.5.1. CONVERSO DE NMEROS INTEIROS DECIMAIS EM NMEROS BINRIOS O mtodo utilizado conhecido como mtodo das divises sucessivas. Tomaremos como exemplo o nmero decimal 12 e encontraremos seu equivalente em binrio. Passos: 1.Realizam-se divises inteiras sucessivas do nmero decimal original pela base 2 at que o quociente seja menor do que o divisor 2. 12 |_2_ 0 6 |_2_ 0 3 |_2_ 1 1

1 < 2 Verdadeiro

2.Ao encontrar a condio de parada, o nmero binrio equivalente dado tomando-se o ltimo quociente e os demais restos na ordem inversa em que foram calculados. Logo o nmero binrio equivalente 1100 Dizemos ento que: (12)10 = (1100)2 1.5.2. CONVERSO DE NMEROS INTEIROS BINRIOS EM NMEROS DECIMAIS Tomemos o caso do nmero inteiro binrio 1100. Podemos coloc-lo na forma: (1100)2 = 1 X 23 + 1 X 22 + 0 X 21 + 0 X 20 = 1X8 +1x 4 +0X2 + 0X1 = 8+4 = (12)10

10

1.5.3. CONVERSO DE NMEROS FRACIONRIOS DECIMAIS EM NMEROS BINRIOS O mtodo utilizado conhecido como mtodo das multiplicaes sucessivas. Tomaremos como exemplo o nmero decimal 0.625 e encontraremos seu equivalente em binrio. Passos: 1.Realizam-se multiplicaes sucessivas do nmero fracionrio decimal original pela base 2 at que o quociente seja igual a 1. 0.625 X 2 = 1.250

2.Ao encontrar um resultado maior que 1, toma-se no prximo clculo a parte fracionria. Caso contrrio prossiga. 0.250 0.500 X2 X2 = 0.500 = 1.000 1.000 = 1 Verdadeiro

3. A condio de parada encontrarmos um produto igual a 1. Os dgitos na ordem em que foram gerados correspondem parte fracionria do nmero binrio convertido. Logo o nmero binrio equivalente 0.101 Dizemos ento que: (0.625)10 = (0.101)2 1.5.4. CONVERSO DE NMEROS FRACIONRIOS BINRIOS EM NMEROS DECIMAIS Tomemos o caso do nmero fracionrio binrio 0.101, podemos coloc-lo na forma: (0.101)2 = 1 X 2-1 + 0 X 2-2 + 1 X 2-3 + 0 + 1 = 1 21 22 23 = 0.5 + 0.125 = (0.625)10

11

2. ALGORITMOS O conceito de algoritmo central tanto na programao de computadores quanto na prpria cincia da computao. Quando se constri algoritmos, geralmente este ser executado por uma outra pessoa ou por uma mquina. Da a necessidade de que estes sejam expressos da forma mais clara e objetiva possvel a quem vai execut-lo. Niklaus Wirth, o inventor da linguagem de programao Pascal apresenta a programao estruturada como a arte ou tcnica de construir e formular algoritmos de forma sistemtica. A programao pode ser vista como formulaes concretas de algoritmos abstratos, em outras palavras, existe uma mquina que pode executar um programa enquanto que algoritmos, no sentido mais amplo da palavra, no.

2.1. CONSTRUO DE ALGORITMOS


Antes de ser apresentado a definio de algoritmos, interessante que se resolva alguns exerccios, apresentao de conceitos e a partir destes pode-se construir uma definio. Exerccio 1: A troca de contedos entre dois recipientes Supor a existncia de dois recipientes tendo cada um lquido. Se os dois lquidos forem juntados uma exploso ocorrer. Como transferir o contedo de um recipiente para o outro e vice-versa sem que ocorra uma exploso? Soluo: As restries deste exerccio s apontam para o caso da exploso, caso os dois lquidos sejam juntados, e no fala nada sobre a forma de transferncia entre os dois lquidos. Para fazermos esta transferncia precisaremos de um terceiro recipiente. Chamaremos cada recipiente de A, B e C. A soluo pode ser expressa da seguinte forma: 1) Colocar o contedo do recipiente A no recipiente C. 2) Colocar o contedo do recipiente B no recipiente A. 3) Colocar o contedo do recipiente C no recipiente B. Repare que a soluo foi expressa em termos de uma seqncia de aes. A partir da ao inicial, cada ao sempre segue uma outra ao, caracterizando uma ordem de execuo e, se esta ordem no for mantida, poderemos no chegar ao resultado esperado. A definio de uma ao, neste contexto, pode ser a de um acontecimento que ocorre num perodo de tempo finito e que produz algum efeito. Note que, nesta definio, s interessante as aes que terminam em um tempo finito, as outras no interessam. Cada ao produz um efeito. Quando se tem uma seqncia de aes surge o conceito de efeito intermedirio, que seria o efeito produzido por cada ao, e efeito total (ou acumulado), que seria a juno de todos os efeitos intermedirios.

12

Exerccio 2: O problema do homem e suas trs cargas Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas trs cargas, que so: uma ona, uma paca e mao de alface. O que o homem deve fazer para conseguir atravessar o rio com suas trs cargas e sem perd-las? Soluo: Mais uma vez, antes de comearmos a escrita do algoritmo interessante analisarmos as restries do exerccio. O homem no deve deixar em uma mesma margem do rio: (a) a ona e a paca (seno a ona devorar a paca) e (b) a paca e o mao de alface (seno a paca devorar a alface). O resto tudo possvel. importante notar que nada foi falado sobre quantas viagens o homem poderia fazer. Tendo em vista estas restries j possvel buscar a soluo. Inicialmente simplesmente no podemos levar nem a ona e nem a alface, seno uma restrio seria violada. E da por diante continuaremos sempre tentado nunca violar as restries. A soluo pode ser atravs de um grfico e/ou descrio textual. Vamos apresentar em sala de aula as duas formas. importante notar que esta soluo tem uma segunda alternativa e que tambm chega ao resultado final. O desenvolvimento desta alternativa fica como exerccio. Mais uma vez, este algoritmo foi expresso como uma seqncia de aes e, antes que qualquer linha tivesse sido escrita, foi necessrio fazer uma anlise para identificar as restries do exerccio, ou seja, o que pode e o que no pode ser feito. Exerccio 3: O problema da torre de hanoi A torre de hanoi consiste de trs hastes (a, b e c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1, 2 e 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um disco menor. O objetivo transferir os trs discos para a outra haste. Soluo: A nica restrio a de que um disco maior no pode ficar sobre um disco maior. A soluo ser dada somente de forma grfica. A descrio textual ficar como exerccio. Exerccio 4: Dona de casa descascando batatas Como um observador relataria uma dona de casa descascando batatas para o jantar.

13

Soluo: Dependendo do observador, o relato poderia ser de vrias formas possveis. Por exemplo: 1) Traz a cesta com batatas do poro 2) Traz a panela do armrio 3) Descasca as batatas 4) Devolve a cesta ao poro Suponhamos que este seja o relato em um certo dia. No dia seguinte a dona de casa novamante descasca batatas para o jantar e o observador descreve um relato que idntico ao primeiro. Podemos dizer que este relato descreve o mesmo evento? Evidentemente no, pois trata-se de eventos distintos, ocorridos em dias diferentes, com batatas diferentes e at a mesma dona de casa no a mesma (est um dia mais velha, por exemplo). Entretanto, estes dois eventos apresentam o mesmo padro de comportamento. Considerando um outro exemplo: nas diferentes execues de n2, para diferentes valores de n, podemos reconhecer o mesmo padro de comportamento e o nome que damos a todos estes eventos elevar um nmero ao quadrado.

2.2. DEFINIO DE ALGORITMOS


Aps estes exerccios de construo de algoritmos j estamos em condies de criarmos uma definio para algoritmos. Existem algumas definies para algoritmos. Pode-se dizer que algoritmo uma seqncia de aes para chegar a um objetivo bem definido. Ou que, algoritmo a descrio de um padro de comportamento, expresso em termos de um repertrio bem definido e finito de aes primitivas, das quais damos por certo que elas podem ser executadas. Uma terceira definio diz que, um algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes. Das definies acima vemos que as aes tm um carter imperativo e por isso, muitas vezes, so chamadas de comandos. Para introduzirmos novos conceitos vamos voltar ao exerccio da dona de casa descascando batatas. Algumas vezes as donas de casa colocam um avental. Vamos supor que a dona de casa usa um critrio racional para saber se deve ou no usar o avental, e que este critrio se ela est usando ou no uma roupa branca. Neste caso podemos escrever um algoritmo que cubra estes dois eventos. Um outro detalhe sobre este algoritmo est no nmero de batatas a serem descascadas. Ora, em um dia podem ser descascadas cinco batatas, no dia seguinte sete batatas, no terceiro dia quatro batatas e assim sucessivamente, sendo que a cada dia a quantidade de batatas pode variar. Poderemos suprir estas duas situaes se usarmos duas novas estruturas: a estrutura de seleo e a de repetio. O novo algoritmo pode ser modificado para:

14

1) Trazer o cesto com batatas do poro 2) Trazer a panela do armrio 3) Se a roupa clara ento colocar o avental 4) enquanto nmero de batatas insuficiente faa 4.1) descasque uma batata 5) devolver a cesta ao poro A quarta ao poderia ser feita de uma outra forma, como em: 4) repetir at que nmero de batatas seja suficiente 4.1) descasque uma batata Acabamos de apresentar as trs estruturas que compem os algoritmos: seqncia, seleo e repetio. Todo e qualquer algoritmo sempre desenvolvido atravs do uso de apenas estas trs estruturas. Quando descrevemos algoritmos utilizando estas estruturas de controle os mesmos tornam-se mais claros e elegantes, alm de serem mais gerais do que a simples descrio de aes.

2.3. REFINAMENTOS SUCESSIVOS


Na vida quotidiana, os algoritmos so encontrados freqentemente: instrues para se utilizar um aparelho eletrodomstico, uma receita para o preparo de algum prato, o guia de preenchimento da declarao do imposto de renda, a regra para a determinao dos mximos e mnimos de funes por derivadas sucessivas, dentre vrias outras. Um algoritmo considerado completo se seus comandos forem do entendimento de seu destinatrio. Um comando que no for do entendimento do destinatrio tem que ser desdobrado em novos comandos, que constituiro um refinamento do comando original. Considere como exemplo o algoritmo para calcular a multiplicao de matrizes. Algoritmo: Multiplicao de Matrizes. Ler as matrizes A e B Calcular C = A x B Mostrar as matrizes Fim-algortimo Se algum destes comandos no for do entendimento do destinatrio, este comando precisa ser refinado.

2.4. ALGORITMOS ESTRUTURADOS


A flexibilidade da utilizao de computadores exige que, para cada problema a ser levado ao computador, sejam planejadas as operaes correspondentes. Este planejamento deve ser feito antes de se utilizar o computador. Desta forma, antes de se usar um computador para resolver problemas necessrio que se construa antes um algoritmo. Este algoritmo tem
15

que ser, de alguma forma, transmitido ao computador e armazenado em sua memria, para depois ser posto em execuo e conduzir o computador para a soluo do problema proposto. O algoritmo deve, portanto, prever antecipadamente todas as situaes que possam vir a ocorrer quando for posto em execuo. Se um problema for muito simples e pequeno, no h qualquer dificuldade em desenvolver um algoritmo. Entretanto, com o avano da tecnologia de hardware, os computadores de hoje em dia tm grande poder de processamento e memria. Com esta evoluo, os problemas que esto sendo levados aos computadores so maiores e mais complexos. Por esta razo, surgiram tcnicas que permitem sistematizar e ajudar o desenvolvimento de algoritmos para a resoluo de grandes e complexos problemas. Estas tcnicas so chamadas de desenvolvimento estruturado de algoritmos. Os objetivos destas tcnicas so: a. facilitar o desenvolvimento de algoritmos; b. facilitar o seu entendimento por humanos; c. antecipar a comprovao de sua correo; d. facilitar a sua manuteno (corretiva e/ou evolutiva); e. permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas. Para atingir estes objetivos o desenvolvimento estruturado preconiza que: (1) Os algoritmos sejam desenvolvidos por refinamentos sucessivos; (2) Os sucessivos refinamentos so mdulos, que possuem poucas funes e so o mais independente possvel dos outros mdulos; (3) Nos mdulos devem ser usados um nmero limitado de comandos e de estruturas de controle. O refinamento sucessivo permite que se aborde o problema de forma mais segura e objetiva. A integrao dos mdulos mais perfeita porque o mdulo atacado quando j se estudou claramente o ambiente onde este deve atuar. A diviso por mdulos permite contornar a complexidade e, ainda, permite que sejam desenvolvidos de forma independente, inclusive por pessoas diferentes. O uso limitado de diferentes estruturas e comandos, apesar de parecer muito restritiva, so teis para manter a simplicidade e clareza, sendo estas inestimveis quando se est fazendo alguma manuteno. Para se obter uma melhor clareza dos algoritmos, costuma-se desenvolv-los e ilustr-los com o auxlio de diagramas de blocos: algumas figuras geomtricas e dizeres so usados para representar as vrias operaes do computador, sendo ligados por setas para indicar a seqncia de execuo. Existem dois principais tipos de estruturas de blocos: o fluxograma e o diagrama de Chapin. O grande problema de utilizarmos estes diagramas que quando o algoritmo grande h uma confuso no entendimento dos diagramas.

16

2.5. O PORTUGOL
A liberdade de expresso essencial para o desenvolvimento da criatividade em praticamente todas as atividades humanas. Para tanto, o uso da linguagem natural o que se tem de melhor para expressar os nossos pensamentos. Entretanto, as linguagens naturais vm com a problemtica das ambigidades e, algumas vezes, de falta de conciso. Uma linguagem formal evita estes problemas, mas limita o poder de expresso. Estamos, portanto, diante de um impasse. A soluo a escolha de uma linguagem que oferea estruturas adequadas, bem projetadas, com efeitos bem definidos e que, alm disso, no restrinjam a criatividade do programador. Ser utilizada a pseudo-linguagem PORTUGOL (simbiose do PORTUgus com alGOl e pascaL). A idia permitir que com um conjunto bsico de primitivas seja possvel ao projetista pensar no problema e no na mquina que vai executar o algoritmo e, por outro lado, no fique to distante desta mquina. Em toda a linguagem, as frases construdas envolvem dois aspectos: a sintaxe e a semntica. A sintaxe tem a ver com a forma e a semntica com o contedo. Considerando o portugus como linguagem, tomemos uma frase sintaticamente correta (tem verbo, sujeito e objeto, e as palavras esto escritas corretamente): Aqui vendem-se frangos abatidos A semntica correta desta frase a de que naquele estabelecimento existe uma venda de frangos j mortos, e no frangos deprimidos ou anmicos.

2.6. IDENTIFICADORES
Os identificadores so nomes dados variveis e constantes. Estes nomes devem ser o mais significativo possvel, isto , devem refletir o que est sendo armazenado naquela varivel ou constante. Um identificador formado por um ou mais caracteres, sendo que o primeiro caractere deve, obrigatoriamente, ser uma letra. O restante podem ser letras ou dgitos (no so permitidos smbolos especiais, exceto o underscore _).

2.7. CONSTANTES
Uma constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um programa. Com o propsito de deixar mais claro o algoritmo, algumas vezes so dados nomes (ou identificadores) para as constantes. Esta pode ser um nmero, um valor lgico ou uma seqncia de caracteres (constante literal).

17

A constante numrica expressa na notao decimal, com ou sem parte fracionria, podendo ser positiva ou negativa. A constante lgica s assume dois valores possveis: verdadeiro ou falso. As constantes literais englobam qualquer seqncia de caracteres (letras, dgitos ou smbolos especiais). Estas constantes so representadas entre aspas para que no seja confundida com outro item qualquer.

2.8. VARIVEIS
Na matemtica, sabemos que uma varivel a representao simblica dos elementos de um certo conjunto. Nos algoritmos uma varivel corresponde a uma posio de memria, cujo contedo pode variar ao longo do tempo durante a execuo de um programa. As variveis s podem assumir um valor a cada instante. Toda varivel identificada por um identificador. As variveis s podem armazenar valores de um mesmo tipo, sendo estes tambm numricos, lgicos ou literais. Para indicar o tipo das variveis usada a declarao de variveis e constantes. Uma vez declarada uma varivel, qualquer referncia a seu identificador implica na referncia ao contedo do local de memria representado pelo mesmo. As declaraes de variveis podem ter a seguinte forma: declare lista-de-identificadores nome-do-tipo

2.9. COMENTRIOS
Os comentrios tm a finalidade de deixar mais claro os algoritmos para as pessoas que o estaro lendo. Ele um texto, ou simplesmente uma frase que aparece sempre delimitado por chaves. Os comentrios podem ser postos em qualquer lugar onde se faam necessrios.

2.10. EXPRESSES ARITMTICAS


Denomina-se expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico. O conjunto de operaes bsicas adotado o que se conhece da matemtica, que so: adio, subtrao, multiplicao, diviso, potenciao e radiciao. Nas expresses aritmticas, tal como na matemtica, as operaes guardam entre si uma relao de prioridade. Primeiro a potenciao e radiciao, depois a multiplicao e diviso e por ltimo a adio e subtrao. Para se alterar essa ordem de prioridade pode-se usar os parnteses. Alm das operaes bsicas, pode-se utilizar algumas funes muito comuns na matemtica. Algumas funes podem ser: LOG(X), logaritmo na base 10 de X; LN(X), logaritmo neperiano de X; EXP(X), o nmero e (base do logaritmo neperiano) elevado a X; ABS(X), o valor absoluto de X; TRUNCA(X), a parte inteira do nmero fracionrio X;

18

ARREDONDA(X), transforma por arredondamento um nmero fracionrio em um nmero inteiro; SINAL(X), devolve o valor -1, +1 ou 0, caso X seja negativo, positivo ou igual a zero, respectivamente; QUOCIENTE(X, Y), devolve o quociente inteiro da diviso de X por Y; RESTO(X, Y), devolve o resto da diviso inteira de X por Y.

2.11. EXPRESSES LGICAS


comum nos algoritmos surgirem situaes em que a execuo de uma ao (ou seqncia de aes) est sujeita a uma certa condio. Esta condio representada atravs de uma expresso lgica. Uma expresso relacional uma comparao realizada entre dois valores de mesmo tipo bsico. Os operadores relacionais, que so usados na expresso relacional, j so conhecidos da matemtica e so: = (igual) < (menor do que) (diferente) (maior ou igual) > (maior do que) (menor ou igual)

O resultado obtido de uma relao sempre um valor lgico. Os operadores lgicos utilizados nas expresses relacionais so: E (para a conjuno), OU (para a disjuno) e NO (para a negao).

2.12. EXPRESSES LITERAIS


Uma expresso literal aquela formada por operadores literais e operandos que so constantes e/ou variveis do tipo literal. As operaes sobre valores literais so bastante diversificadas, e entre elas incluem: (a) concatenao de duas literais (b) comprimento da literal (c ) os n primeiros caracteres de uma literal (d) os n ltimos caracteres de uma literal (e) a cpia de uma parte da literal a partir da posio i at a posio j.

2.13. COMANDO DE ATRIBUIO


Este comando permite que se fornea um valor a uma varivel, onde a natureza deste valor tem que ser compatvel com o tipo da varivel. O comando de atribuio tem a forma a seguir: identificador expresso

19

A expresso deve ser primeiramente avaliada e depois atribuda varivel. As constantes e variveis so tambm formas de expresso mais simples.

2.14. COMANDOS DE ENTRADA E SADA


Sabemos que as unidades de entrada e sada so dispositivos que possibilitam a comunicao entre o usurio e o computador. Por exemplo, atravs do teclado, o usurio consegue dar entrada ao programa e os dados na memria do computador. Por outro lado, o computador pode emitir os resultados e outras mensagens para o usurio atravs de uma impressora ou do monitor de vdeo. Os comandos de entrada e sada tm a finalidade de fazer esta interao com o usurio. O comando de entrada feito de acordo com a seguinte forma geral: Leia <lista de identificadores> Ex.: Leia codigo_aluno, nota O comando de sada tem a forma geral: Escreva <lista de identificadores> e/ou <constantes> Ex.: Escreva Cdigo do Aluno: , codigo_aluno, Nota: , nota

2.15. ESTRUTURA SEQENCIAL


Em um algoritmo aparecem em primeiro lugar as declaraes seguidas por comandos que, se no houver indicao em contrrio, devero ser executados em uma seqncia. Os algoritmos so iniciados com a palavra Algoritmo e terminados com fim-algoritmo. Exemplo: Algoritmo declare A, B, C numrico leia A, B, C C (A + B) x C escreva A, B, C fim-algoritmo Neste exemplo, aps serem definidos os tipos das variveis A, B e C, os valores de A e B so lidos, o valor de C calculado e os valores contidos nas variveis A, B e C sero escritos.
20

2.16. ESTRUTURA CONDICIONAL


A estrutura condicional permite a escolha do grupo de aes e estruturas a serem executados quando determinadas condies, representadas por operaes lgicas, so ou no satisfeitas. Esta estrutura delimitada pelo comando se e pela expresso fim-se. Esta estrutura pode se apresentar de duas formas: (a) estrutura condicional simples e; (b) estrutura condicional composta. A estrutura condicional simples tem a seguinte forma: se <condio> ento <seqncia de comandos> fim-se A estrutura condicional composta tem a seguinte forma: se <condio> ento <seqncia A de comandos> seno <seqncia B de comandos> fim-se

2.17. ESTRUTURA DE REPETIO


A estrutura de repetio permite que uma seqncia de comandos seja executada repetidamente at que uma determinada condio de interrupo seja satisfeita. A estrutura ser delimitada pelo comando repita e pela expresso fim-repita. A interrupo feita atravs do comando interrompa. Esta estrutura pode se dar de trs formas: interrupo no incio, interrupo no interior e interrupo no fim. A interrupo no incio tem a seguinte forma: repita se condio ento interrompa fim-se <seqencia de comandos> fim-repita A interrupo no interior tem a seguinte a forma: repita <seqencia A de comandos> se condio ento interrompa
21

fim-se <seqencia B de comandos> fim-repita A interrupo no fim tem a seguinte a forma: repita <seqencia A de comandos> se condio ento interrompa fim-se fim-repita

22

3. CODIFICAO PASCAL A linguagem de programao Pascal foi criada na dcada de 70 por Niklaus Wirth e de propsito geral, baseada em conceitos de programao estruturada. Nas verses mais atuais o Pascal suporta tambm o paradigma de Orientao a Objetos. Neste texto daremos uma breve introduo das regras de sintaxe dos principais comandos e exemplificamos traduzindo algoritmos do Portugol para o Turbo Pascal 7.0.

3.1 ESTRUTURA DE PROGRAMAS PASCAL


Um programa Pascal consiste em um ttulo e um corpo. O comando Program define o ttulo: PROGRAM PesoIdeal; Program Somar; PROGRAM Soma_Dois_Nmeros; O corpo do programa contm a seo de especificao de dados e a seo de operao. A seo de especificao de dados deve vir primeiro e define todos os dados a serem usados: ela comea com a palavra reservada Var. A seo de operaes contm comandos que lem dados, executam aes e mostram resultados; ela comea com Begin e termina com End. O programa termina com um ponto final. Ex.: Program SomaDoisNumeros; var A, B, Soma : real; begin read(A,B); Soma := A + B; write(Soma); end. 3.1.1 IDENTIFICADORES Os identificadores so nomes dados s variveis e constantes. Estes nomes devem ser o mais significativo possvel, Os identificadores so formados de letras, digitos e o caracter underscore (_). No h distino entre caracteres maisculos e minsculos. O primeiro caracter de um identificador deve ser ou uma letra ou caracter underscore; o caracter branco no dever ser usado em um identificador. O identificador pode ter qualquer tamanho contudo limitaremos seu tamanho no mximo a 15 caracteres. 3.1.2 CONSTANTES Os dados em Turbo Pascal podem ser classificados ou como constantes ou como variveis. Se os valores no variam so constantes. A palavra reservada Const usada para definir as constantes. Ex:

23

Const Pi Total_Alunos Distancia Meu_Nome NomeArquivo Passou = = = = = = 3.14159; 50; 152.34; 'Francisco' 'Arquivo01.dta'; True;

3.1.3 VARIVEIS As variveis caracterizam os dados que podem mudar durante a execuo do programa. A palavra reservada Var usada para definir as variveis. Ex: Var MeuPeso : integer; Altura : real; NomeAluno : string; Passou : boolean; 3.1.4 COMENTRIOS Os comentrios so precedidos de {e terminados pelo caracter }. Exemplo: ( Programa: Somar_Dois_Nmeros Objetivo: Este programa soma dois nmeros reais Autor: Jos Francisco de Magalhes Netto Data: 98/07/28 ltima Alterao: 98/07/29 } 3.1.5 EXPRESSES Constantes e variveis so usadas em expresses. Uma expressso controla a ordem das operaes de processamento de dados. A expresso consiste de operandos, parnteses e operadores. Constantes, variveis e chamadas de funes podem tambm ser operandos. Operadores definem as operaes de processamento de operandos. Exemplo: (X + Y - 10) X Y operandos + - operadores

24

Operadores Aritmticos Operador Operao + * / DIV MOD adio subtrao multiplicao diviso diviso inteira resto Expresso 12 + 5 7+8 12.6 - 12 -(5 + 2) +(5 - 7) Tipo de Operando inteiro real inteiro real inteiro real inteiro real inteiro inteiro Resultado 17 15 0.6 -7 -2 Tipo do Resultado inteiro real inteiro real inteiro real real real inteiro inteiro

Exemplo:

A diviso se apresenta de trs formas: /, DIV e MOD. Para dividir dois nmeros reais usa-se / : 125.77 / 54.92 = 2.2905 o resultado um nmero real. Para dividir nmeros inteiros use DIV ou MOD. O operador DIV retorna o quociente da diviso de operandos: 30 DIV 25 = 1 O operador MOD retorna o resto da diviso dos operandos: 30 MOD 25 = 5 Os resultados da diviso por MOD e DIV um inteiro.

25

Operadores Relacionais Operao igual no igual maior que menor que maior ou igual que menor ou igual que Expresso A=B A <> B A>B A<B A >= B A <= B Tipo do Resultado Verdade, se A igual a B Verdade, se A no igual a B Verdade, se A maior que B Verdade, se A menor que B Verdade, se A maior ou igual a B Verdade, se A menor ou igual a B

Operador = <> > < >= <= Exemplo:

Expresso 45 = 50 45 <> 50 60 > 60 60 >= 60 Operadores Lgicos (ou Booleanos) Operador Operao NOT AND Negao lgica E lgico (Conjuno) OU lgico (Disjuno) OU Exclusivo lgico

Resultado Falso Verdade Falso Verdade

Expresso NOT A A AND B

A V F V V F F V V F F V V F F

OR

A OR B

XOR

A XOR B

V F V F V F V F V F V F

Tipo do Resultado F V V F F F V V V F F V V F

Exemplo: Expresso NOT (45 = 50) (4 < 5) AND (10 > 7) Verdade OR Falso Falso XOR Verdade Resultado Verdade Verdade Verdade Verdade

26

3.1.6 COMANDO DE ATRIBUIO denotada pelo smbolo := atribuindo o resultado de uma expresso a uma varivel. Ex.: Ind := 5; Preco := 10 * Quantidade; Pais := Brasil; Aprovado := True; 3.1.7 COMANDOS DE ENTRADA E SADA Os comandos de entrada so Read e Readln que efetuam a operao de leitura. Ex. read(Nota); readln(Codigo, Nome, Nota, Freq); Os comandos de sada so o Write e o Writeln. Ex.: write(Nota); writeln(Codigo, Nome, Nota, Freq); writeln(`Codigo `, Codigo, `Nome do Aluno `, Nome, ` Media Final `, Media, ` Frequencia `, Freq); writeln; 3.1.8 ESTRUTURA CONDICIONAL H dois comandos condicionais em Turbo Pascal: If e Case. O comando If o comando condicional comum. Ele possui duas formas: If <condio> then <comando1> else <comando2>; e If <condio> then <comando>; Qualquer expresso relacional ou booleana pode ser usada como uma <condio>. No primeiro caso se a condio Verdade, ento o <comando1> executado seno o <comando2> executado. Exemplos: If temperatura > 37 then write(Gripe possvel`) else write(Tudo bem!);

27

O comando Case possui duas formas: Case <seletor_de_-expresso> of <lista de constantes 1> : <comando_1>; <lista de constantes 2> : <comando_2>; <lista de constantes 3> : <comando_3>; ................................................................ <lista de constantes n> : <comando_n>; end; Case <seletor_de_-expresso> of <lista de constantes 1> : <comando_1>; <lista de constantes 2> : <comando_2>; <lista de constantes 3> : <comando_3>; ................................................................ <lista de constantes n> : <comando_n>; else <comando> end; O seletor pode ser qualquer tipo escalar, exceto real ou string. Exemplos: Case i of 1, 3, 5, 7, 9 : writeln(Nmero mpar); 0, 2, 4, 6, 8 : writeln(Nmero par); end; Case i of `I : writeln(Incluso); D : writeln(Deleo); E : writeln(Excluso); else writeln(Cdigo Incorreto. Digite novamente a opo desejada); end; 3.1.9 ESTRUTURA DE REPETIO Os comandos de repetio so Repeat, While e For. O comando Repeat tem a seguinte estrutura: Repeat <comando_1>; <comando_2>; ...................... <comando_n>; Until <condio>;

28

Exemplo: Repeat Read(Codigo,Nome,Media_Final,Freq); Writeln(Codigo, Nome, Media_Final, Freq) Alunos_Lidos := Alunos_Lidos + 1; If ((Media_Final >= 5.0) And (Freq >= 45)) then Aprovados := Aprovados + 1 else Reprovados := Reprovados + 1; Until Alunos_Lidos = Total_Sala; O comando While tem a seguinte estrutura: While <condio> do begin <corpo do loop>; End; Exemplo: While Alunos_Lidos < Total_Alunos do begin Read(Codigo,Nome,Media_Final,Freq); Alunos_Lidos := Alunos_Lidos + 1; Writeln(Codigo, Nome, Media_Final, Freq) If ((Media_Final >= 5.0) and (Freq >= 45)) then Aprovados := Aprovados + 1 else Reprovados := Reprovados + 1 end; Se a <condio> Falsa logo no incio o corpo do While no ser executado nunca. O comando For se apresenta das seguintes maneiras: For <varivel de loop> := <S1> to <S2> do <comando>; ou For <varivel de loop> := <S1> downto <S2> do <comando>; onde S1 e S2 definem o comeo e o fim dos valores da <varivel de loop>.

29

Exemplo: Soma dos inteiros de 1 at 10 Program SomarInteiro; Var I , Soma : integer; Begin Soma := 0; For I := 1 to 10 do Soma := Soma + I; Writeln(Soma); end. A varivel do loop no pode ser mudada no corpo do loop. Caso isto ocorra ocasionar erro. For I := 1 to 10 do begin Soma := I * 2; Write(Soma); I := I + 2; end. 3.1.10 REGRAS DE SINTAXE H algumas regras de sintaxe que devem ser observadas ao se escrever um programa em Turbo Pascal: a) O ponto-e-vrgula delimita comandos e sua ausncia causa erros de compilao. X := A + B;;; write(X) X := X + 1; { Correto { Errado } }

{ Erro : troca ilegal da varivel de loop }

b) Um ponto-e-vrgula no usado aps as palavras reservadas Unit, Uses, Label, Type, Const e Var. Uses; Var; { Errado { Errado } }

b) Um ponto-e-vrgula no usado aps Begin. Um ponto-e-vrgula antes de End opcional. Begin; { Errado } Begin Writeln(`Alo`}; { (;) antes de End legal } end;

30

d) Um ponto-e-vrgula no usado aps While, Repeat e Do. Um ponto-e-vrgula antes de Until opcional. While True do; { Errado } X := 1; Repeat X := X + 1; writeln(X*X); { (;) legal Until X <> 11;

e) Um ponto-e-vrgula no usado aps Then e antes de Else; If X <> 5 then Y := Y + X; { Errado } else Y := Y + X;

31

3.1.11 EXEMPLO DE CODIFICAO DE UM ALGORITMO EM PORTUGOL NA LINGUAGEM PASCAL A figura abaixo na primeira coluna mostra um algoritmo em Portugol e na segunda coluna o programa equivalente em Pascal.
Fatorial Incio Escreva (Digite um numero) Leia(N) Se N<0 Ento Escreva('Nao existe fatorial de numero negativo!) Seno Incio f <- N; Para i de (N-1) at 1 faa f <- f * i Escreva (O fatorial de N , f) Fim (Seno) Fim(Fatorial) Program Fatorial; Uses Crt; Var f,n,x,i :Integer; Begin ClrScr; Write('Digite um numero :'); Read(n); If n<0 Then Write('Nao existe fatorial de numero negativo!') Else begin f :=n; For i:=(n-1) downto 1 do f :=f*i; Write('O fatorial de ',n,' ',f); end;{Else} Repeat Until Keypressed; End.

32

4. LISTA DE EXERCCIOS

A. Noes de Computadores
1. Discuta a afirmao abaixo: O computador uma mquina inteligente que soluciona novos problemas sem precisar de nenhuma interferncia humana. Cite as geraes dos computadores e suas principais caractersticas. Explique a organizao bsica de um computador, comentando e detalhando a funo de cada uma de suas partes e exemplificando o hardware envolvido. Defina dispositivos de entrada e dispositivos de sada. D 5 (cinco) exemplos para cada uma das definies. Um prefeito deseja instalar um pequeno centro de computao em uma biblioteca que dever ser ligado via Internet a outros centros, e que possa tambm gerar relatrios dirios para acompanhamento. Especifique o hardware mnimo para que isso se realize. O que RAM? O que ROM? Aponte quais as diferenas entre elas e defina as siglas. O cdigo ASCII (American Standard Code for Information Interchange) do caracter g maisculo o nmero decimal 71. Mostre a transformao em binrio gerando o byte correspondente a este caracter. Defina programa-fonte e programa-objeto. Uma nova gerao de dispositivos de armazenamento est sendo criada. Um desses equipamentos so as fitas DLT (Digital Linear Tape), que tm alta capacidade e velocidade de acesso. So encontradas no mercado com vrias capacidades de memria. Um valor tpico 5 Gigabytes. Para este caso especfico, quantas pginas de texto este dispositivo pode armazenar? * Considere uma pgina de 40 linhas, tendo cada linha 30 caracteres.

2. 3. 4. 5.

6. 7.

8. 9.

10. Considere um livro que possui 200 pginas, sendo que cada pgina possui, em mdia, 50 linhas e cada linha, em mdia 50 caracteres. Quantos livros deste tamanho conseguiramos armazenar em um dispositivo que contivesse 4 Gigabytes de armazenamento? 11. Seja um computador hipottico com um byte de 6 bits. Quantas informaes distintas podem ser armazenadas por esse byte?

33

12. Um bit tem dois estados (0 ligado e 1 desligado). Quantos estados pode ter um byte? 13. Um computador tem palavras de 16 bits. Quantos estados diferentes podem ser acessados com uma palavra deste tamanho? 14. Um computador utiliza 3 bytes para armazenar nmeros inteiros. O primeiro bit do primeiro byte convencionado representar o sinal (0 positivo e 1 negativo) e os bits restantes do primeiro byte e dos demais bytes so usados para representar o mdulo do nmero inteiro. Qual , ento, o maior nmero inteiro decimal positivo que pode ser representado nesta arquitetura? 15. Coloque V para verdadeiro e F para falso a assertiva: ( ) O scanner um dispositivo que digitaliza imagens e um dispositivo de sada do computador. ( ) Os disquetes de 5 tem capacidade de gravao maior do que os de 3 pois tem rea maior de gravao. ( ) O mouse um tpico dispositivo de sada de dados. ( ) O CD-ROM o dispositivo mais usado para se dar backup dirio dos arquivos do computador. ( ) O modem um aparelho que possibilita conectar um computador a outro usando a linha telefnica. 16. Conforme a classificao do software, coloque a sigla apropriada: Software Bsico (SB), Aplicao (AP) e Sistema Aplicativo (SA). ( ) Editor de texto Word 6.0 ( ) Sistema de Automatizao de Biblioteca ( ) Compilador Pascal ( ) Editor de texto Wordstar ( ) Sistema Operacional DOS 17. Marque V caso seja verdadeiro e F caso seja falso a assertiva: ( ) O compilador traduz um programa de linguagem de alto nvel para um programa executvel. ( ) O compilador deve estar presente quando da execuo do programa. ( ) O compilador Pascal igual ao compilador C, mudando apenas a linguagem objeto. ( ) Para cada linguagem de programao h um nico compilador. ( ) A linguagem de mquina o conjunto de instrues entendidas pelo hardware.

34

B.Converso de Nmeros Decimais em Binrios e Vice-Versa


1. Converta os seguintes nmeros decimais em nmeros binrios: a) 8 b) 17 c) 32 d) 64 e) 81 f) 93 2. Converta os seguintes nmeros inteiros binrios em nmeros decimais: a) 10 b) 101 c) 1100 d) 11111 e) 101110 f) 1010101 3. Converta os seguintes nmeros fracionrios decimais em nmeros binrios: a) 0.5 b) 0.75 c) 0.1 d) 0.3 e) 0.01 f) 9.1 4. Converta os seguintes nmeros binrios em nmeros decimais: a) 0.111 b) 0.1 c) 0.011 d) 0.1101 e) 1.011 f) 101.1101 5. Faa as transformaes de base pedidas: . a) (21.1)10 = ( )2 b) (10011.011)2 = ( )10 c) (19.1)10 = ( )2 d) (10111,011) 2 = ( )10 6. Mover a vrgula decimal em um nmero binrio n casas para a esquerda, ou para a direita o mesmo que dividir (ou multiplicar, respectivamente) o nmero por 2n. Justifique esta afirmativa. 7. Mostre que qualquer nmero da forma 2-n, onde n um nmero inteiro positivo, pode ser escrito como um nmero decimal com um nmero finito de algarismos. 8. Mostre que qualquer frao binria tambm uma frao finita, se transformada em uma frao decimal.

35

C. Introduo aos Algoritmos


1. Suponha que voc esteja se dirigindo ao Campus Universitrio, conduzindo seu prprio carro e repentinamente o pneu fura. Faa um roteiro para efetuar a troca dos pneus e assim poder continuar o seu trajeto. Resolva o exerccio 1 supondo possibilidade de quando voc abrir o portamalas, para retirar o estepe, o mesmo no esteja l (por exemplo: o estepe foi roubado). Dados dois recipientes A e B, contendo lquidos que explodem quando misturados, como fazer para trocar o contedo dos recipientes A e B sem que haja exploso? Voc dispe de um barco para atravessar um rio. O barco tem capacidade para voc mais uma de suas trs cargas que so: um tigre, uma ovelha e um mao de alface. Como atravessar as trs cargas para o outro lado do rio, sabendo-se que a ovelha come a alface e o tigre devora a ovelha mas no come a alface? Nove homens e dois meninos querem atravessar um rio, usando uma pequena canoa com capacidade para levar ou um homem ou os dois meninos. Quantas vezes o barco ter de atravessar o rio para atingir a meta? Trs missionrios e trs canibais encontram-se numa margem de um rio e todos precisam passar para a outra margem. Um barco com a capacidade mxima de dois passageiros est disponvel na margem em que se encontram os missionrios e os canibais. Os missionrios desconfiam dos canibais de tal maneira que evitam em qualquer ponto (margens e na travessia) que o nmero de canibais seja maior que deles (missionrios). Descubra uma estratgia (caso exista) para atravessar todos em segurana para a outra margem. Voc recebe dois vasilhames dgua, um de 4 litros e outro de 3 litros . Nenhum deles possui qualquer marcao de medida. H uma bomba que pode ser utilizada para encher os vasilhames de gua. Como voc poder colocar exatamente 2 litros dgua dentro do vasilhame de 4 litros?

2.

3.

4.

5.

6.

7.

A torre de Hanoi consiste de trs hastes (a, b e c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1, 2 e 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um disco menor. O objetivo transferir os trs discos para a outra haste. 9. Qual o padro de comportamento para gerarmos a seqncia: 1 5 9 13 17 21 25. 10. E para a seqncia: 1 7 13 19 25 31. O padro de comportamento deste exerccio igual ao do exerccio anterior?

8.

36

D. Algoritmos
1 Imprima a mensagem "As coisas boas na vida so as coisas simples". 2 Leia e imprima um valor numrico. 3 Lidos dois nmeros A e B, imprima a soma desses nmeros. 4 Leia trs valores numricos e imprima o somatrio dstes nmeros. 5 Dado o raio de um crculo, calcular sua rea e permetro. 6 Considere um retngulo de lados L1 e L2. Calcular a rea e o permetro desse retngulo, lidos os lados. 7 Dados os dois catetos (A e B) de um tringulo retngulo, calcular a hipotenusa. 8 Leia trs valores numricos e imprima o produto entre estes nmeros. 9 Dados trs nmeros X,Y e Z, calcular a mdia aritmtica desses nmeros. 10 Lidas trs notas de um aluno nota1, nota2 e nota3, calcule a mdia do aluno. Imprima a mdia. 11 Lido um nmero A, se ele for maior ou igual a 5, ento imprima "Aprovado"; se for menor que 5, ento imprima "Reprovado". 12 Leia um nmero, caso este seja maior que 50 imprimir a mensagem maior que cinqenta caso contrrio deve imprimir menor que cinqenta. 13 Leia o nome do aluno, sua respectiva nota final e o total de presenas. Sabendose que a freqncia necessria de no mnimo 75% e o total de aulas ministradas foi de 60 aulas e que a nota mnima deve ser maior ou igual a cinco. Checar e imprimir se este aluno foi aprovado ou reprovado. 14 Lidas trs notas de um aluno nota1, nota2 e nota3, calcule a mdia do aluno. Imprima a mdia. Se a mdia for maior ou igual a 5, ento imprima "Aprovado"; se for menor que 5, ento imprima "Reprovado". 15 Lidos dois nmeros A e B, se A for maior que B, ento imprima a diferena de A menos B; se A for menor ou igual a B, ento imprima a diferena de B menos A. 16 Lidas as notas parciais de um aluno (em nmero de quatro) e sua freqncia, calcule sua mdia final e decida se o aluno est aprovado ou no.

37

17 Leia o nome do aluno, sua respectiva nota final, o total de presenas e o nmero total de aulas ministradas. Sabendo-se que a freqncia necessria de no mnimo 70% das aulas ministradas e que a nota mnima deve ser maior ou igual a 7.0, checar e imprimir o nome do aluno, nota final, total de presenas e uma mensagem dizendo se este aluno foi aprovado ou reprovado. 18 Dados trs valores X, Y e Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se um tringulo equiltero, issceles ou escaleno. Se eles no formarem um tringulo escrever uma mensagem de erro. 19 Lido um nmero inteiro n (n 0), verificar se le par ou mpar. 20 Em um colgio ao final do ano o aluno estar aprovado se tiver obtido mdia final igual ou superior a 7.0 e freqncia superior ou igual a 200. Caso contrrio se a mdia final for igual ou superior a 5.0 e menor que 7.0 estar em recuperao, desde que suas presenas sejam superiores a 150. Nos outros casos o aluno estar reprovado. 21 Leia trs valores numricos e imprima o maior deles. 22 Lidos dois nmeros A e B, imprima o maior deles. 23 Dados dois nmeros imprim-los em ordem descendente. 24 Dados dois nmeros imprim-los em ordem ascendente. 25 Leia trs valores numricos e imprima o maior e o menor valor. 26 Lidos trs nmeros, imprimir o maior, o menor e a mdia aritmtica. 27 Lidos um conjunto de 5 nmeros, elimine o maior e o menor do conjunto e calcule e escreva mdia aritmtica dos 3 nmeros restantes. 28 Lido um nmero inteiro positivo entre 0 e 200, escreva-o por extenso. 29 Imprima 100 vezes a mensagem "As coisas boas na vida so as coisas simples". 30 Lido um conjunto de 40 nmeros inteiros positivos, conte os nmeros pares e os mpares. 31 Leia um nmero indeterminado de linhas contendo cada uma a idade de um indivduo. A ltima linha, que no dever entrar nos clculos, contm o valor da idade igual a zero. Calcule e imprima a idade mdia dos indivduos.

38

32 Uma turma tem n alunos. Para cada aluno, calcule a mdia, lidas as trs notas nota1, nota2 e nota3, imprima a mdia e "Aprovado" se a mdia for maior ou igual a 5 e "Reprovado" se a mdia for menor que 5. 33 Foi feita uma pesquisa de audincia de canal de TV em vrias casas de uma certa cidade. Para cada casa visitada fornecido o nmero do canal (4, 5, 7 e 12) e o nmero de pessoas que estavam assistindo naquela casa. Ler um nmero indeterminado de dados (o ltim dado possui canal igual a zero) e calcule e imprima para cada emissora a respectiva porcentagem de audincia. 34 Tem-se um conjunto de dados contendo a altura e o sexo de 50 pessoas. Calcule e escreva: (a) a maior e a menor altura do grupo; (b) a mdia de altura das mulheres; ( c) o nmero de homens. 35 Num frigorfico existem 90 bois. Cada boi traz preso em seu pescoo um carto contendo seu nmero de identificao e seu peso. Escreva o nmero e o peso do boi mais gordo e do boi mais magro. 36 Pode-se aproximar a raiz quadrada de um nmero subtraindo-se sucessivamente nmeros mpares mais altos do nmero original at que o nmero original seja inferior ou igual a zero. O nmero de subtraes igual raiz quadrada aproximada do nmero original. Ex.: 23 - 1 = 22 22 - 3 = 19 19 - 5 = 14 14 7 = 7 raiz quadrada 4 7 9 = -2 37 A raiz quadrada de um nmero a pode ser calculada atravs da equao iterativa x i+1 = xi xi2 - a 2xi Sendo dado o valor inicial x0, calcule a raiz quadrada de 2. 38 Supondo que a populao de um pas A seja da ordem de 90.000.000 de habitantes com uma taxa anual de crescimento de 3% e que a populao de um pas B seja, aproximadamente, de 200.000.000 de habitantes com uma taxa de crescimento de 1,5%. Calcule e escreva o nmero de anos necessrios para que a populao do pas A ultrapasse ou iguale a populao do pas B, mantidas estas taxas de crescimento. 39 Calcular a soma dos nmeros pares desde 100 at 200, inclusive. 40 Calcule e escreva uma tabela de centgrados em funo de graus Farenheit, que variam de 50 a 150 de 1 em 1.

39

41 Calcule e escreva o nmero de gros de trigo que se pode colocar num tabuleiro de xadrez, colocando 1 no primeiro quadrado e nos seguintes o dobro do quadrado anterior. O tabuleiro de xadrez composto de 64 quadrados. 42 O nmero 3025 possui a seguinte caracterstica: 30 + 25 = 55 552 = 3025 Pesquise e imprima todos os nmeros de quatro algarismos que apresentam tal caracterstica. 43 Nmeros perfeitos so nmeros inteiros para os quais a soma dos seus divisores igual ao produto dos mesmos. Ex.: 6 = 1 + 2 + 3 = 1 x 2 x 3. Verifique quantos nmeros perfeitos existem entre 1 e 10.000. 44 Qual o menor nmero inteiro que igual a uma soma de quadrados e a uma soma de cubos? . 45 Calcular a soma dos nmeros mpares entre 0 e um numero inteiro positivo M qualquer. 46 Lidos dois nmeros inteiros positivos M e N, escreva os nmeros pares entre estes nmeros. 47 Lidos dois nmeros inteiros M e N, escreva os nmeros pares entre M e N, inclusive. 48 Calcule o fatorial de n. 49 Verifique se um nmero n (n>0) primo. 50 Lidos dois nmeros inteiros positivos M e N, escreva os nmeros primos entre estes nmeros. 51 Gere os primeiros n nmeros primos. 52 Lidos dois nmeros inteiros positivos P e Q, nmeros. calcule o mmc desses dois

53 Lidos dois nmeros inteiros positivos P e Q, calcule o mdc desses dois nmeros. 54 Calcule a soma dos n primeiros termos da srie

40

A = 1 -3 5 -7 9 -11 13 -15 ... 55 Calcule a soma dos n primeiros termos da srie H = 1 + + 1/3 + + 1/5 + ... 56 A seqncia de Fibonacci se define como tendo o primeiro termo igual a 0 e o segundo termo igual a 1 e cada termo seguinte igual a soma dos dois termos imediatamente anteriores. Escrever a seqncia de Fibonacci dos termos inferiores a um nmero inteiro L qualquer. 57 Escrever o termo que corresponda ao n-simo termo de uma seqncia de Fibonacci. 58 Aplique a funo ex para um determinado valor usando a srie ex = 1 + x + x2 + x3 + x4 + x5 - ... 2! 3! 4! 5! 59 Calcule e escreva o valor de S: S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50 60 Calcule o valor do seno de um ngulo usando a srie sen x = x x3 + x5 x7 + x9 - ... 3! 5! 7! 9! 61 Calcule o valor do cosseno de um ngulo usando a srie cos x = 1 x2 + x4 x6 + x8 - ... 2! 4! 6! 8! 62 Calcule e escreva o valor de , com preciso de 0.01, dado pela srie: = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 ... Sugesto: para obter a preciso desejada, adicionar apenas os termos cujo valor absoluto seja maior ou igual a 0.01 63 Converta um nmero inteiro decimal em binrio. 64 Lido um nmero inteiro positivo, escreva-o na ordem inversa. 65 Leia e escreva um array numrico de 5 elementos. 66 Leia e escreva um array numrico de n elementos. 67 Leia um array numrico de 5 elementos e calcule a soma destes nmeros. 68 Leia um array numrico de n elementos e calcule a soma destes nmeros.

41

69 Leia um array numrico de 5 elementos e calcule a mdia aritmtica destes nmeros. 70 Leia um array numrico de n elementos e calcule a mdia aritmtica destes nmeros. 71 Lido um string, escreva-o na ordem inversa (palndromo). 72 Lidos dois vetores A, de tamanho m e B, de tamanho n, calcule o vetor C, soma de A e B. 73 Lido um string, conte quantas vogais existem. 74 Lido um string, escrever quantas e quais so as vogais. 75 O produto interno entre dois vetores A e B o escalar obtido por ai bi, onde n o tamanho dos dois vetores. 76 Lidos dois strings A e B, verifique se o string B est contido em A. 77 Lido um array numrico de n elementos, ache o maior. 78 Lido um conjunto de n elementos, orden-lo crescentemente. 79 Leia uma matriz de dimenses 3x3. 80 Leia uma matriz de dimenses mxn. 81 Leia uma matriz A e calcule a soma de seus elementos. 82 Leia uma matriz A e calcule a mdia aritmtica de seus elementos. 83 Leia uma matriz A e ache o maior elemento. 84 Lidas duas matrizes A, de dimenses mxn e B, de dimenses pxq, calcule a matriz C, soma de A e B. 85 Lida uma matriz, gere sua matriz transposta. 86 Lidas duas matrizes A, de dimenses mxn e B, de dimenses pxq, calcule a matriz C, produto de A e B. 87 Lida uma matriz quadrada, calcule a somatria dos elementos da diagonal principal.

42

88 Lida uma matriz, calcule a porcentagem de elementos nulos desta matriz. 89 Lidas duas matrizes verifique se uma inversa da outra. 90 Lida uma matriz quadrada verifique se ela triangular superior. 91 Gere o movimento do bispo no jogo de xadrez. 92 Gere o movimento da torre no jogo de xadrez. 93 Lidos dois conjuntos A, de tamanho n, e B, de tamanho m, gere o conjunto C, unio de A e B. 94 Lidos dois conjuntos A, de tamanho n, e B, de tamanho m, gere o conjunto C, interseo de A e B. 95 Clculo da derivada de um polinmio.

43

6 . EXERCCIOS RESOLVIDOS 1. Dados trs valores X, Y e Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um tringulo escrever uma mensagem de erro. Apresentaremos e discutiremos trs solues. Soluo 1: Algoritmo Declare X, Y, Z numrico Leia X, Y, Z Escreva X, Y, Z Se X < Y + Z e Y < X + Z e Z < X + Y { Teste de Existncia de Tringulo } ento Se X = Y e Y = Z ento escreva Tringulo Equiltero seno Se X Y e X Z e Y Z ento escreva Tringulo Escaleno seno escreva Tringulo Issceles Fim-se Fim-se seno escreva Os segmentos X, Y e Z no podem gerar um tringulo Fim-se Fim-Algoritmo Na primeira soluo usamos o operador lgico E para testar a existncia do tringulo. Na segunda soluo usaremos o operador lgico OU. Como vamos usar outro operador lgico, devemos achar uma relao de equivalncia que relacione os operadores lgicos E e OU. Esta relao dada pelo Teorema de De Morgan. O Teorema de De Morgan nos diz que A e B = no (no A ou no B) A ou B = no (no A e no B) O teorema de De Morgan demonstrado facilmente usando tabelas-verdade. Chamando A = (X < Y + Z) , B = (Y < X + Z) e C = (Z < X + Y) , teremos:

44

A e B e C = no (no A ou no B ou no C) Aplicando este resultado na soluo anterior, geraremos a segunda soluo: Soluo 2: Algoritmo Declare X, Y, Z numrico Leia X, Y, Z Escreva X, Y, Z Se no (X Y + Z ou Y X + Z ou Z X + Y ) { Teste de Existncia de Tringulo } ento Se X = Y e Y = Z ento escreva Tringulo Equiltero seno Se X Y e X Z e Y Z ento escreva Tringulo Escaleno seno escreva Tringulo Issceles Fim-se Fim-se seno escreva Os segmentos X, Y e Z no podem gerar um tringulo Fim-se Fim-Algoritmo A terceira soluo obtida retirando-se o No do teste de existncia do tringulo. Soluo 3: Algoritmo Declare X, Y, Z numrico Leia X, Y, Z Escreva X, Y, Z Se X Y + Z ou Y X + Z ou Z X + Y { Teste de Existncia de Tringulo} ento escreva Os segmentos X, Y e Z no podem gerar um tringulo seno Se X = Y e Y = Z ento escreva Tringulo Equiltero seno Se X Y e X Z e Y Z ento escreva Tringulo Escaleno seno escreva Tringulo Issceles Fim-se Fim-se seno escreva Os segmentos X, Y e Z no podem gerar um tringulo

45

Fim-se Fim-Algoritmo Observe que com a retirada do No houve uma inverso entre as condies do Ento e do Seno. Compare e analise as diferenas entre as trs solues. 2. Em um colgio ao final do ano o aluno estar aprovado se tiver obtido mdia final igual ou superior a 7.0 e freqncia superior ou igual a 200. Caso contrrio se a mdia final for igual ou superior a 5.0 e menor que 7.0 estar em recuperao, desde que suas presenas sejam superiores a 150. Nos outros casos o aluno estar reprovado. Elabore um algoritmo que leia as notas parciais de um aluno (em nmero de quatro) e sua freqncia, calcule sua mdia final e decida se o aluno est aprovado ou no. Soluo: Algoritmo Declare Nome literal Declare Nota_1, Nota_2, Nota_3, Nota_4, Freq, Mdia numrico Leia Nome, Nota_1, Nota_2, Nota_3, Nota_4, Freq Escreva Nome, Nota_1, Nota_2, Nota_3, Nota_4, Freq Mdia (Nota_1 + Nota_2 + Nota_3 + Nota_4)/4 Escreva Mdia Se Mdia 7.0 e Freq 200 ento escreva "Aprovado" seno Se Mdia 7.0 { No necessrio testar aqui se Freq < 200 } ento escreva "Recuperao" seno Se Mdia 5.0 e Freq 150 { No necessrio testar aqui se Mdia 7.0 } ento Escreva "Recuperao" seno Escreva "Reprovado" Fim-se Fim-se Fim-se Fim-Algoritmo Exerccio: Lido um nmero inteiro n (n 0), verificar se le par ou mpar.

46

Apresentaremos trs solues. Soluo 1: Algoritmo Declare N, X numrico Leia N Se N < 0 ento escreva "O nmero ", N," negativo" seno X N/2 Se Trunca(X) x 2 = N ento escreva "O nmero ", N," par" seno escreva "O nmero ", N," mpar" Fim-se Fim-se Fim-Algoritmo A segunda soluo uma simplificao da primeira. Soluo 2: Algoritmo Declare N, X numrico Leia N Se N < 0 ento escreva "O nmero ", N," negativo" seno X N/2 Se Trunca(X) = X ento escreva "O nmero ", N," par" seno escreva "O nmero ", N," mpar" Fim-se Fim-se Fim-Algoritmo A terceira soluo parece mais simples pois usa o fato de que para verificar se um nmero par, basta divid-lo por 2 e verificar se o resto zero ou no. Soluo 3: Algoritmo Declare N numrico Leia N Se N < 0 ento escreva "O nmero ", N, " negativo"
47

seno Se Resto (N,2) = 0 ento escreva "O nmero ", N," negativo" seno escreva "O nmero ", N," mpar" Fim-se Fim-se Fim-Algoritmo 3: Lido um conjunto de 40 nmeros inteiros positivos, conte os nmeros pares e os mpares. Apresentaremos duas solues. Soluo 1: Algoritmo Declare N, Contador, Contador_Par, Contador_Impar numrico Contador 0 Contador_Par 0 Contador_Impar 0 Repita Se Contador = 40 ento interrompa Fim-se Leia N Contador Contador + 1 Se N 0 ento Se Resto(N,2) = 0 ento Contador_Par Contador_Par + 1 seno Contador_Impar Contador_Impar + 1 Fim-se Fim-se Fim-Repita escreva "Nmeros Lidos ", Contador escreva "Total de nmeros pares ", Contador_Par escreva "Total de nmeros mpares ", Contador_Impar Fim-Algoritmo

48

A segunda soluo requer uso de um flag, no sendo necessrio ler o total de alunos da sala.. Soluo 2: Algoritmo Declare N, Contador_Par, Contador_Impar numrico Contador_Par 0 Contador_Impar 0 Repita Leia N Se N = -99 { Teste de parada com o flag -99 } ento interrompa Fim-se Se N 0 ento Se Resto(N,2) = 0 ento Contador_Par Contador_Par + 1 seno Contador_Impar Contador_Impar + 1 Fim-se Fim-se Fim-Repita escreva "Total de nmeros pares ", Contador_Par escreva "Total de nmeros mpares ", Contador_Impar Fim-Algoritmo 4: Calcule a soma dos n primeiros termos da srie A = 1 -3 5 -7 9 -11 13 -15 ... Apresentaremos duas solues. Soluo 1: a.Anlise do Problema O termo inicial 1, cada termo subseqente igual em mdulo ao termo anterior somandose e alternando o sinal. b.Soluo: Algoritmo

49

Soluo 2: Trata-se de uma srie alternada, i.e. os termos trocam de sinais alternadamente. O termo geral da srie ai = (-1)i+1 (2i - 1) A somatria dada por
n n

S = ai =
i =1

(-1)i+1 (2i - 1)
i =1

b.Soluo: Algoritmo Declare N, A, Soma, I numrico Leia N Se N < 0 ento escreva "Nmero incorreto ",N seno I 1 Soma 0 Repita Se I > N ento interrompa Fim-se A (-1) I+1 * (2 * I - 1) I I+1 Soma Soma + A Fim-Repita Escreva N, Soma Fim-se Fim-Algoritmo

50

Exerccios 1. Lidos n nmeros, escreva o maior. Soluo: Uma primeira abordagem nos d: Algoritmo Leitura_do_Array_A Procura_Maior Imprime Maior Fim-Algoritmo Desenvolvendo os mdulos obtemos: Algoritmo Declare A array[1..100] numrico Declare I, N, Maior numrico { Leitura do Array A Leia N I 1 Repita Se I = N + 1 ento interrompa Fim-se Leia A[I] I I+1 Fim-Repita { Procura do Maior Maior A[1] I 2 Repita Se I = N + 1 ento interrompa Fim-se Se A[I] > Maior ento Maior A[I] Fim-se I I+1 Fim-Repita } }

51

{ Impresso do Maior Escreva Maior Fim-Algoritmo Sugerimos testar o algoritmo para o seguinte conjunto de dados: n=5
1 2 3 4 5

0.75

2.25

1.25

1.25

0.91

52

2.a) Lidos um nmero k, verifique se le pertence ou no a um array lido A, de tamanho n. Apresentaremos e discutiremos duas solues. Soluo 1: Uma primeira abordagem nos d: Algoritmo Leitura_do_Valor_k Leitura_do_Array_A Verifica_Presena Fim-Algoritmo Desenvolvendo os mdulos obtemos: Algoritmo Declare A array[1..100] numrico Declare i, k numrico { Leitura do Valor k Leia k { Leitura do Array A Leia N I 1 Repita Se I = N + 1 ento interrompa Fim-se Leia A[I] I I+1 Fim-Repita { Verifica Presena I 1 Repita Se I = N + 1 ento interrompa Fim-se Se A[I] = k ento Escreva "k pertence ao array A" Fim-se I I+1 Fim-Repita Fim-Algoritmo } } }

53

Ao simularmos a execuo do algoritmo para um conjunto de dados como os apresentados abaixo: k = 1.25 n=5
1 2 3 4 5

0.75

2.25

1.25

1.25

0.91

verificamos que a mensagem "k pertence ao array A" ser impressa duas vzes quando apenas uma vez seria suficiente. Por outro lado se simularmos a execuo do algoritmo para um conjunto de dados como os apresentados abaixo: k = 0.88 n=5
1 2 3 4 5

0.75

2.25

1.25

1.25

0.91

verificamos que a nenhuma mensagem ser impressa, quando poderamos declarar que o nmero k no pertence ao array A. O algoritmo 2 procura sanar essas deficincias. Soluo 2: Algoritmo Declare A array[1..100] numrico Declare i, k numrico Declare Achei lgico { Leitura do Valor k Leia k { Leitura do Array A Leia N I 1 Repita Se I = N + 1 ento interrompa Fim-se Leia A[I] I I+1 Fim-Repita { Verifica Presena } } }

54

Achei Falso I 1 Repita Se I = N + 1 ou Achei = Verdadeiro ento interrompa Fim-se Se A[I] = k ento Achei Verdadeiro Fim-se I I+1 Fim-Repita Se Achei = Verdadeiro ento Escreva "k pertence ao array A" seno Escreva "k no pertence ao array A" Fim-se Fim-Algoritmo

55

Você também pode gostar