Escolar Documentos
Profissional Documentos
Cultura Documentos
ApostilaICC
ApostilaICC
jnetto@dcc.fua.br barreto@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.
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
Memria
Unidade de Entrada
Unidade de Controle
Unidade de Sada
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
= 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
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.
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.
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.
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.
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.
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).
19
A expresso deve ser primeiramente avaliada e depois atribuda varivel. As constantes e variveis so tambm formas de expresso mais simples.
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.
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
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
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 } }
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
35
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