Você está na página 1de 85

ALGORITMOS

APOSTILA por Luclia Ribeiro

Qualquer tempo tempo. A hora mesma da morte hora de nascer. Nenhum tempo tempo bastante para a cincia de ver, rever. Tempo, contratempo anulam-se, mas o sonho resta, de viver. (Mario Quintana, Qualquer)
Verso 3 jan/08

ndice
"Quantas vezes a gente, em busca da ventura, Procede tal e qual o avozinho infeliz: Em vo, por toda parte, os culos procura, Tendo-os na ponta do nariz! (Mrio Quintana)
NDICE .................................................................................................................................................................. 2 VISO GERAL ..................................................................................................................................................... 5 1.1 DADOS E INFORMAES................................................................................................................ 5 1.2 CONVERSO DE DADOS EM INFORMAES............................................................................. 5 1.3 DIVISO DE TAREFAS SERES HUMANOS X SISTEMAS DE COMPUTAO ...................................... 5 1.4 INFORMTICA .................................................................................................................................. 6 1.5 TIPOS DE DADOS .............................................................................................................................. 6 1.6 O QUE UM COMPUTADOR? ......................................................................................................... 6 1.6.1 UNIDADE CENTRAL DE PROCESSAMENTO ................................................................................... 9 1.6.2 MEMRIA ............................................................................................................................................ 9 1.6.3 DISPOSITIVOS DE ENTRADA ............................................................................................................ 9 1.6.4 DISPOSITIVOS DE SADA .................................................................................................................. 9 1.7 CICLO DE PROCESSAMENTO......................................................................................................... 9 1.7.1 ENTRADA / SADA DE DADOS .......................................................................................................... 9 1.7.2 PROGRAMA ....................................................................................................................................... 10 1.7.3 PROCESSAMENTO............................................................................................................................ 10 1.8 REPRESENTAO DA INFORMAO ........................................................................................ 10 1.9 BYTES ............................................................................................................................................... 11 1.10 EXERCCIOS .................................................................................................................................... 11 NOES DE LGICA ...................................................................................................................................... 13 2.1 2.2 2.3 2.4 2.5 2.5.1 2.5.2 2.5.3 2.6 2.7 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.3 3.4 3.5 3.6 3.7 4.1 4.2 4.3 4.4 LGICA............................................................................................................................................. 13 LGICA DE PROGRAMAO ....................................................................................................... 13 ALGORITMO.................................................................................................................................... 14 PROGRAMAO............................................................................................................................. 14 IMPORTNCIA DE UM ALGORITMO .......................................................................................... 14 LINGUAGEM NATURAL.............................................................................................................. 14 FLUXOGRAMA............................................................................................................................. 15 LINGUAGEM ESTRUTURADA.................................................................................................... 15 EXEMPLOS....................................................................................................................................... 15 EXERCCIOS .................................................................................................................................... 17 INTRODUO ................................................................................................................................. 19 TIPOS DE DADOS ............................................................................................................................ 19 INTEIRO........................................................................................................................................ 19 REAL ............................................................................................................................................. 19 CARACTER ................................................................................................................................... 19 LGICO ........................................................................................................................................ 20 FORMAO DE IDENTIFICADORES........................................................................................... 20 CONSTANTES.................................................................................................................................. 20 VARIVEIS ...................................................................................................................................... 20 COMENTRIOS ............................................................................................................................... 21 EXERCCIOS .................................................................................................................................... 21 INTRODUO ................................................................................................................................. 23 EXPRESSES ARITMTICAS........................................................................................................ 23 EXPRESSES LGICAS ................................................................................................................. 24 EXERCCIOS .................................................................................................................................... 25
2

ITENS FUNDAMENTAIS ................................................................................................................................. 19

EXPRESSES E OPERADORES..................................................................................................................... 23

Algoritmos e Linguagens Lucilia Ribeiro

ESTRUTURA SEQUENCIAL ........................................................................................................................... 27 5.1 5.2 5.2.1 5.2.2 5.3 5.4 5.5 6.1 6.2 6.3 6.3.1 6.3.2 6.5 7.1 7.2 8.1 8.2 8.3 8.4 8.5 9.1 9.2 9.3 9.3.1 9.4 9.4.1 9.4.2 9.4.3 9.5 COMANDO DE ATRIBUIO........................................................................................................ 27 COMANDOS DE ENTRADA E SAIDA ........................................................................................... 27 COMANDO DE ENTRADA........................................................................................................... 27 COMANDO DE SADA ................................................................................................................. 27 ESTRUTURA SEQUENCIAL........................................................................................................... 28 TESTE DE MESA.............................................................................................................................. 28 EXERCCIOS .................................................................................................................................... 29 ESTRUTURA CONDICIONAL SIMPLES....................................................................................... 31 ESTRUTURA CONDICIONAL COMPOSTA.................................................................................. 32 ESTRUTURA CONDICIONAL ENCADEADA............................................................................... 33 SELEO ENCADEADA HETEROGNEA................................................................................. 33 SELEO ENCADEADA HOMOGNEA .................................................................................... 33 EXERCCIOS .................................................................................................................................... 35 SELEO DE MLTIPLA ESCOLHA............................................................................................ 39 EXERCCIOS .................................................................................................................................... 41 ESTRUTURAS DE REPETIO ..................................................................................................... 42 ESTRUTURA DE REPETIO COM VARIVEL DE CONTROLE............................................. 42 ESTRUTURA DE REPETIO COM TESTE NO INCIO ............................................................. 43 ESTRUTURA DE REPETIO COM TESTE NO FINAL .............................................................. 43 EXERCCIOS .................................................................................................................................... 44 ESTRUTURA DE DADOS................................................................................................................ 45 VARIVEIS COMPOSTAS HOMOGNEAS................................................................................. 45 VETORES - VARIVEIS COMPOSTAS UNIDIMENSIONAIS ................................................................... 45 MANIPULAO DE VETORES ................................................................................................... 45 MATRIZES - VARIVEIS COMPOSTAS MULTIDIMENSIONAIS ............................................................ 47 DECLARAO DE MATRIZES .................................................................................................... 47 MANIPULAO DE MATRIZES.................................................................................................. 48 PERCORRENDO UMA MATRIZ BIDIMENSIONAL ................................................................... 48 EXERCCIOS .................................................................................................................................... 49

ESTRUTURAS CONDICIONAIS..................................................................................................................... 31

SELEO DE MLTIPLA ESCOLHA .......................................................................................................... 39

ESTRUTURAS DE REPETIO ..................................................................................................................... 42

VETORES E MATRIZES .................................................................................................................................. 45

REGISTROS........................................................................................................................................................ 51 10.1 ESTRUTURA DE DADOS................................................................................................................ 51 10.2 REGISTROS ...................................................................................................................................... 51 10.2.1 DECLARAO DE UM REGISTRO ................................................................................................ 51 10.2.2. MANIPULAO DE UM REGISTRO............................................................................................. 51 10.2.3. REGISTRO DE CONJUNTOS ......................................................................................................... 51 10.2.4. MANIPULAO DE REGISTRO DE CONJUNTOS ...................................................................... 52 10.2.5. CONJUNTO DE REGISTROS ......................................................................................................... 52 10.2.6 MANIPULAO DE CONJUNTO DE REGISTROS ....................................................................... 53 10.3 EXERCCIOS .................................................................................................................................... 54 MODULARIZAO .......................................................................................................................................... 55 11.1 DECOMPOSIO ............................................................................................................................ 55 11.2 MDULOS ........................................................................................................................................ 55 11.3 SUB-ROTINA.................................................................................................................................... 58 11.3.1 PASSAGEM DE PARMETROS POR VALOR ................................................................................ 59 11.3.2 PASSAGEM DE PARMETROS POR REFERNCIA ..................................................................... 60 11.4 FUNO ........................................................................................................................................... 60 11.5 EXERCCIOS .................................................................................................................................... 63 LISTAS DE EXERCCIOS ................................................................................................................................ 64 LISTA 1: LGICA ............................................................................................................................................ 65 LISTA 2: ESTRUTURA SEQENCIAL.................................................................................................................. 66 Algoritmos e Linguagens Lucilia Ribeiro
3

LISTA 3: ESTRUTURA CONDICIONAL ............................................................................................................... 68 LISTA 4: SELEO DE MLTIPLA ESCOLHA ..................................................................................................... 71 LISTA 5: REVISO........................................................................................................................................... 72 LISTA 6: ESTRUTURAS DE REPETIO ............................................................................................................. 75 LISTA 7: VETORES E MATRIZES ....................................................................................................................... 77 LISTA 8: REGISTROS ....................................................................................................................................... 82 LISTA 9: MODULARIZAO ............................................................................................................................. 83 BIBLIOGRAFIA ................................................................................................................................................. 85

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

1
1.1

Viso Geral

As coisas so sempre melhores no comeo (Blaise Pascal)


DADOS E INFORMAES

Dados so conjuntos de fatos distintos e objetivos, relativos a eventos. Os dados, por si s, tem pouca relevncia ou propsito. Por exemplo, se for dito que a temperatura ambiente de 32C, provavelmente todos compreendero, mas se for dito que a temperatura de 82F, a compreenso depender do conhecimento do ouvinte sobre essa unidade de medida. O dado 32C rapidamente convertido em sensao trmica, portanto ele tem algum significado ou importncia. Nesse caso, pode-se dizer que ele uma informao. Informaes so dados com algum significado ou relevncia. Se o ouvinte no tem nenhum conhecimento sobre a unidade de medida F, ela no fornece a exata sensao de frio ou calor. A informao a compreenso dos dados, a matria-prima para o processamento mental. Sem dados e um mecanismo (processo) de compreenso desses dados existe o processamento mental e, se no houver esse processamento mental, os dados no se transformam em informaes, continuam sendo apenas dados.
DADO x INFORMAO DADO INFORMAO Data de Nascimento: 16/07/61 Idade: 41 anos Soma de Preo Unitrio x Quantidade Valor Total da Fatura: R$ 2500,00 Medio x Mtrica de Temperatura = 38 C Quente Medio x Mtrica de Distncia = 100 Km Longe

1.2

CONVERSO DE DADOS EM INFORMAES

Os sistemas de computao trabalham somente com dados. Eles permitem a coleta, processamento, armazenamento e distribuio de enormes quantidades de dados. A converso de dados em informaes uma tarefa do ser humano, mas os sistemas de computao podem auxiliar alguns processos que ajudam nessa converso:
Contextualizao Categorizao Clculo Condensao Relacionar os dados coletados com outros existentes Separar os dados em categorias Analisar matemtica ou estatisticamente os dados Resumir os dados para uma forma concisa

1.3

DIVISO DE TAREFAS Seres Humanos x Sistemas de Computao

Quando o ser humano trabalha com informaes, existem determinadas tarefas que podem ser realizadas:
Pensar / Criar Tomar Decises Realizar Aes Fsicas Comunicar-se Processar Dados Absorver e combinar conhecimentos e informaes de modo no programado para criar novas informaes e conhecimentos. o processo criativo propriamente dito. Usar informaes para definir, avaliar e selecionar entre possveis aes a serem tomadas. Qualquer combinao de movimentos fsicos, com algum propsito. Apresentar conhecimentos e informaes para outras pessoas, de modo que elas entendam. Da, a diferena entre comunicar e transmitir. Capturar, transmitir, armazenar, recuperar, manipular ou apresentar dados.

Os equipamentos so criados para facilitar e agilizar as tarefas realizadas pelos seres humanos Isso inclui os sistemas de computao, que tm como uma de suas finalidades at substituir o ser humano em uma ou mais tarefas ligadas informao. Das tarefas 5 Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

apresentadas, a mais adequada para os sistemas de computao realizarem o Processamento de Dados. As outras apresentam caractersticas humanas difceis de serem imitadas. Dentro do processamento de dados, algumas tarefas so bsicas:
Capturar Manipular Armazenar Recuperar Apresentar Transmitir Buscar os dados onde eles existem e traz-los Tratas os dados de forma que possam ser organizados e ganhar sentido (transformando-se em informao) Guardar os dados de maneira organizada Buscar os dados que foram armazenados de forma organizada Mostrar os dados de forma compreensvel Enviar e receber dados de outros locais

A Tecnologia da Informao formada por dispositivos que processam dados de forma precisa e rpida, facilitando alguma tarefa para o ser humano. O equipamento mais importante dessa tecnologia o computador, e a informtica estuda essa tecnologia. 1.4 INFORMTICA

Informtica o estudo de tudo o que se relaciona tecnologia da informao. uma unio de trechos de duas outras palavras e foi criada pelos franceses. INFORMTICA = INFORmao + AutoMTICA Outra definio possvel para informtica : O estudo do tratamento da informao, utilizando-se, como ferramenta bsica, recursos dos sistemas de computao. Este conceito amplia bastante a idia inicial. Primeiro, porque a informtica tratada como um estudo, por isso, dotada de conceitos prprios e distintos. Como estudo, seu objetivo o tratamento da informao, usando como ferramenta os recursos de sistemas de computao, ou seja, o computador e outros recursos ligados a ele. 1.5 TIPOS DE DADOS

Os sistemas de computao, atualmente, manipulam vrios tipos diferentes de dados:


Nmeros Textos Imagens Sons Podem ser organizados, alterados, calculados e armazenados. Podem ser escritos, corrigidos, alterados na forma e cor, armazenados e impressos. Podem ser estticas (em duas ou trs dimenses) ou em movimento (animaes e vdeos). Podem ser criadas, alteradas, armazenadas e reproduzidas. Podem ser gerados eletronicamente (sintetizados) ou gravados diretamente da realidade. Podem ser alterados, armazenados e reproduzidos.

1.6

O QUE UM COMPUTADOR?

Para facilitar a compreenso do funcionamento e dos componentes de um computador, apresentada, a seguir, uma analogia entre o funcionamento de um computador e o local de trabalho de um operador, formado basicamente pelos utenslios comuns de um escritrio (obviamente, sem um computador). Layout e funcionamento desse local de trabalho:

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

Regras para realizar as tarefas: 1) No arquivo de ao (1), esto armazenadas as instrues para realizao de cada tarefa. Essas instrues apresentam uma seqncia de passos a serem seguidos. 2) Quando o operador (2) receber as instrues, ele deve copiar cada uma delas no quadro-negro (3), que possui 16 reas para isso (A1 -A16). Cada instruo deve ser escrita em uma das reas livres do quadro-negro, sempre iniciando pela rea A1. 3) Aps copiar as instrues, o operador deve comear a realizar cada uma delas, respeitando a seqncia. Caso alguma indique ao operador para escrever em uma rea j ocupada do quadro, ele deve apagar o contedo anterior e escrever o novo contedo. 4) Os dados que sero usados para realizar as tarefas encontram-se escritos em fichas empilhadas ao lado do operador, no escaninho (4). As fichas devero ser usadas na seqncia em que se encontram e, ao ser usada, a ficha deve ser descartada. 5) O operador possui uma calculadora (5) para realizar todos os clculos matemticos necessrios para a realizao da sua tarefa (dependendo das instrues). 6) Para apresentar os resultados da tarefa realizada, o operador possui uma mquina de escrever (6), utilizada para escrever os resultados. Suponha-se que o operador receba a seguinte seqncia de instrues que estavam armazenadas no arquivo de ao: 1) Pegue uma ficha e copie o seu valor no quadro - rea A16 2) Pegue uma ficha e copie o seu valor no quadro - rea A15 3) Some o contedo de A15 com o de A16 e coloque o resultado em A16 4) Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a rea A5 5) Volte para a rea A2 6) Datilografe o contedo de A16 7) Pare O operador copiava as instrues, uma a uma, nas primeiras reas do quadro-negro. O quadro ficava com a seguinte aparncia:
A1 Pegue uma ficha e copie o seu valor no quadro, rea A16 A5 Volte para a rea A2 A9 A2 Pegue uma ficha e copie o seu valor no quadro, rea A15 A6 Datilografe o contedo de A16 A10 A3 Some o contedo de A15 com o de A16 e coloque o resultado em A16 A7 Pare A11 A4 Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a rea A5 A8

A12

Terminada a cpia das instrues, o operador comea a realizar cada uma delas, na seqncia em que foram apresentadas. Como exemplo, supe-se que existam, no escaninho, quatro fichas com os seguintes valores: 7, 1, 4 e 2. Veja o que acontece no quadro e nas reas afetadas:

Incio A15 A16

Pegue uma ficha e copie o seu valor na rea A16 A15 A16 7 Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a rea A5 A15 A16 1 8 Some o contedo de A15 com o de A16 e coloque o resultado em A16 A15 8 4 A16 12

Pegue uma ficha e copie seu valor na rea A15 A15 A16 1 7 Volte para a rea A2

Some o contedo de A15 com o de A16 e coloque o resultado em A16 A15 1 A16 8

A15 1

A16 8

Pegue uma ficha e copie seu valor na rea A15

A15 4

A16

Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a rea A5 A15 A16 4 12 7

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

Volte para a rea A2

Pegue uma ficha e copie seu valor na rea A15 A15 A16 2 12

A15 4

A16 12

Some o contedo de A15 com o de A16 e coloque o resultado em A16 A15 A16 2 14 Pare

Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a rea A5 A15 A16 2 14

Datilografe o contedo de A16

A15 2

A16 14

A15 2

A16 14

A palavra computador vem da palavra latina computare, que significa calcular. Pode at parecer estranho, mas essa idia no est de toda errada, mesmo assim, muito pouco para se ter uma idia do que seja um computador, ento, eis mais uma definio: Computador uma mquina que recebe e trabalha os dados de maneira a obter um resultado. Para realizar isso, ele programvel, ou seja, responde a um grupo de comandos especficos (instrues) de uma maneira bem definida e pode executar uma lista pr-gravada desses comandos. Essa lista chamada de programa. A partir dessa definio, podem ser retiradas algumas concluses importantes: O computador uma mquina. Realiza um trabalho com os dados para obter resultados. O trabalho realizado pelo computador chama-se Processamento. O computador programvel. Pode realizar somente tarefas bem definidas, e cada uma delas corresponde a uma nica instruo, que sempre realizada da mesma maneira. Alm disso, ele pode responder a uma lista de instrues pr-gravadas, realizando uma instruo aps a outra. Essa lista de instrues pr-gravadas chamada de Programa. Existem computadores que apresentam programas fixos e invariveis o computador realiza sempre as mesmas tarefas - que j acompanham o computador. Tambm existem computadores cujos programas instalados so diferentes, portanto realizam tarefas diferentes de acordo com os programas.

Outra definio para computador: " um sistema integrado, composto de hardware e de software." Concluindo: O computador um sistema formado por determinados componentes que, atuando em conjunto, permitem que ele realize as tarefas que foram determinadas. Esse sistema composto, basicamente, de dois elementos, Hardware e Software. Hardware a parte fsica do computador, ou seja, o prprio computador e todos os dispositivos ligados a ele (perifricos). O hardware composto por "dispositivos eletrnicos que fornecem capacidade de computao, dispositivos de interconectividade (por exemplo, switches de rede, dispositivos de telecomunicao) que permitem o fluxo dos dados e dispositivos eletromecnicos (por exemplo, sensores, motores, bombas) que fornecem funes do mundo exterior". Normalmente, o hardware de um sistema de computao apresenta a seguinte estrutura geral:

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

1.6.1 UNIDADE CENTRAL DE PROCESSAMENTO A Unidade Central de Processamento UCP (CPU .Central Processing Unit), o crebro do computador, o componente de hardware que realmente executa as instrues apresentadas pelo programa. A Unidade Central de Processamento possui dois componentes principais: - Unidade de Controle (UC): responsvel pelo controle do fluxo dos dados entre as partes do computador e por sua interpretao (se so dados ou instrues). Na simulao de computador, o operador. - Unidade Lgica e Aritmtica (ULA): responsvel pelos clculos e pela manipulao dos dados. Na simulao de computador, a calculadora. 1.6.2 MEMRIA Possibilita ao computador armazenar dados e instrues durante o processamento. Podem existir dois tipos de memria em um computador: - Memria de "Acesso Direto" ou Memria Principal, tambm conhecida por RAM (Memria de Acesso Randmico): o armazenamento dos dados e programas temporrio. Na simulao de computador, o quadro-negro. - Dispositivos de Armazenamento Secundrios: dispositivos que permitem ao computador armazenar permanentemente grandes quantidades de dados ou programas. Na simulao de computador, o arquivo de ao. 1.6.3 DISPOSITIVOS DE ENTRADA Dispositivos atravs dos quais os dados e instrues entram no sistema de computao para o processamento. Traduz essas entradas para um cdigo que a Unidade Central de Processamento entende. Na simulao de computador, o escaninho com as fichas. 1.6.4 DISPOSITIVOS DE SADA Dispositivos que permitem a visualizao dos resultados do processamento dos dados. Na simulao de computador, a mquina de escrever. -Software o conjunto de instrues (programas de computador) que, quando executadas, produzem o desempenho desejado e dados que permitem que os programas manipulem adequadamente a informao. a parte lgica do computador, aquela com a qual no existe contato fsico. Na simulao de computador, so as instrues realizadas pelo operador e o contedo das fichas utilizadas por ele. Observando a simulao de computador, apresentada anteriormente, percebe-se que as operaes de um computador dependem da lgica das instrues que ele realiza. Essas instrues so criadas pelo homem e alimentadas no computador, que apenas as executa, de acordo com os seus componentes internos. 1.7 CICLO DE PROCESSAMENTO

O computador, de maneira simplificada, realiza uma determinada seqncia ("ciclo") para processar os dados. chamado de Ciclo de Processamento, e representado graficamente da seguinte maneira:
ENTRADA PROCESSAMENTO PROGRAMA SADA

1.7.1 ENTRADA / SADA DE DADOS O computador l os dados a serem processados (a partir de perifricos de entrada) e os coloca na memria principal. Aps o processamento, o computador envia uma cpia dos resultados, a partir da memria principal, para os perifricos de sada. Essa sada pode ser composta por dados de entrada modificados ou por novos dados gerados pelo processamento.

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

1.7.2 PROGRAMA Lista de instrues que o computador deve seguir, ou seja, a seqncia das operaes necessrias para que os dados sejam processados. Normalmente esse programa est gravado num dispositivo de armazenamento secundrio e copiado para a memria principal do computador durante o processamento. 1.7.3 PROCESSAMENTO o trabalho realizado pela CPU do computador. O que ela faz depende do programa, mas quem processa os dados o hardware do computador. Para que o processamento acontea, os dados devem estar na memria principal. 1.8 REPRESENTAO DA INFORMAO

A informao e os dados necessitam de meios para que sejam exibidos. Normalmente so utilizados modelos que imitam a realidade. O sistema de computao funciona, basicamente, da mesma maneira, pois imita a informao real criando um modelo eletrnico para trabalhar. Esse modelo numrico e aritmtico. Alguns pontos em comum entre os equipamentos de computao e a matemtica permitem essa imitao da realidade. Esses pontos em comum so a Numerao e a Aritmtica Binria. Os sistemas de computao trabalham com o sistema de numerao binrio. Cada smbolo 0 ou 1 da numerao binria chamado de dgito binrio. Em ingls, Binary Digit, que resulta: Blnary digiT = BIT Como esse bit usado para modelar (representar a informao), pode-se definir que "Bit a menor unidade da informao". Os bits servem muito bem para a representao de nmeros, mas o sistema de computao no trabalha apenas com informaes numricas, ento, como representar letras e smbolos? Para entender como o sistema faz isso, imagine a existncia de duas lmpadas e a necessidade de criar uma maneira (um modelo) para indicar o estado do movimento de um carro em determinado momento. As lmpadas apresentam dois "estados" possveis: acesa ou apagada. Com isso foi criada uma tabela que associa os estados das lmpadas aos estados do movimento do carro. Se em vez de lmpadas houvesse bits 0 (apagada) ou 1 (acesa), a tabela ficaria com os valores apresentados direita. 00 01 10 11 Carro andando em frente Carro virando direita Carro virando esquerda Carro parado

Com isso possvel criar tabelas de equivalncia entre as combinaes possveis dos bits e as informaes que devem ser representadas. Quando so usados dois bits, o nmero de combinaes possveis quatro, pois na numerao binria existe a seguinte relao: Nmero de combinaes = 2n sendo n = nmero de bits. O sistema de computao utiliza uma tabela de equivalncia entre combinaes de bits e caracteres (nmeros, letras e smbolos). claro que, se o sistema utilizasse apeAlgoritmos e Linguagens Lucilia Ribeiro
10

01 Viso Geral

nas dois bits, s conseguiria representar quatro caracteres, o que no o caso, pois ele pode utilizar qualquer quantidade de bits para representar os dados. Normalmente, utilizam-se grupos de oito bits. Usando a frmula anterior: nmero de combinaes = 28 = 256. Portanto, o sistema de computao utilizando oito bits consegue representar at 256 caracteres diferentes (256 combinaes diferentes). 1.9 BYTES

Cada um desses grupos de oito bits chamado de byte. Pode-se considerar cada byte representando um caractere, portanto o byte utilizado para medir o tamanho dos trabalhos realizados no sistema de computao, principalmente se for levado em considerao que sistemas antigos utilizavam somente textos em seus trabalhos. Por exemplo: um livro com 250 pginas tem, aproximadamente, 1.000.000 de caracteres (contando-se espaos, que tambm so caracteres). Caso fosse usado um computador para editar esse mesmo texto, ele continuaria tendo o mesmo nmero de caracteres que o livro real, mas esses caracteres seriam modelados em bytes. Esse texto seria representado, ento, por 1.000.000 de bytes, ou melhor, o tamanho desse texto para o computador seria de 1.000.000 de bytes. Como em outras unidades de medida, no caso de bytes, so usados mltiplos para representar grandes quantidades (por exemplo, 1000 m = 1 km). Estes smbolos serviro para fazer um arredondamento de valores, o que facilitar a operao:
210 220 230 240 = = = = Quantidade de Bytes 1024 bytes 1.048.576 bytes 1.073.741.824 bytes 1.099.511.627.776 bytes Valor 1024 bytes 1024 Kb 1024 Mb 1024 Gb 1 1 1 1 Nome Kb Kilobyte Mb Megabyte Gb Gigabyte Tb - Terabyte

1.10

EXERCCIOS

1) Verifique a configurao de algum computador que voc tenha acesso. Verifique tipo do processador, capacidade de memria RAM, capacidade do HD e sistema operacional utilizado. 2) Recorte dois anncios de propagandas de lojas de computadores. Um para computadores de marca (Itautec, Dell, HP) e outro para computadores sem marca. Compare configuraes e preos. 3) Explique a diferena entre dados e informaes. 4) Baseado na resposta anterior, comente por que o computador processa dados e no informaes. 5) Entre os componentes de um sistema de computao, qual o responsvel pelo processamento dos dados? 6) Defina programa e a sua funo em um sistema de computao. 7) Utilizando as suas palavras e os conceitos apresentados neste captulo, defina computador. 8) Quais so os principais componentes de um sistema de computao? 9) Quando se afirma que um computador programvel, o que isso significa? 10)Utilize a simulao de computador apresentada para "processar" as instrues a seguir e apresente o resultado final dessa tarefa. No escaninho, existem quatro fichas com os seguintes valores: 5, 3, 2 e 2: Algoritmos e Linguagens Lucilia Ribeiro
11

01 Viso Geral

a) Escreva 1 em A14; b) Pegue uma ficha e copie o seu valor no quadro - rea A 16; c) Pegue uma ficha e copie o seu valor no quadro - rea A 15; d) Some o contedo de A15 com o de A16 e coloque o resultado em A16; e) Some 1 ao valor de A14 e coloque o resultado em A14; f) Se no houver mais fichas, avance para a rea A8; caso contrrio, avance para a rea A7; g) Volte para a rea A3; h) Divida o valor de A16 pelo valor de A14 e coloque o resultado em A16; i) j) Datilografe o contedo de A16; Pare.

-x-

Algoritmos e Linguagens Lucilia Ribeiro

12

02 Noes de Lgica

2
2.1

Noes de Lgica

Cada ferramenta carrega consigo o esprito com o qual foi criada. (Werner Karl Heisenberg)
LGICA

Coerncia e racionalidade. "Arte do bem pensar", "cincia das formas do pensamento". Visto que nossa razo pode funcionar desordenadamente, a lgica tem em vista a "correo do raciocnio", colocando ordem no pensamento. Exemplos: Todo mamfero um animal Todo cavalo um mamfero Portanto, todo cavalo um animal Kaiton pas do planeta Stix Todos os Xinpins so de Kaiton Logo, todos os Xinpins so Stixianos

A lgica objetiva a criao de uma representao mais FORMAL. Utilizamos sempre a lgica para pensar, falar, escrever ou agir corretamente. Precisamos, para todas essas atividades, colocar ordem no pensamento. 2.2 A gaveta est fechada A caneta est dentro da gaveta Precisamos primeiro abrir a gaveta para depois pegar a caneta Anacleto mais velho que Felisberto Felisberto mais velho que Marivaldo Portanto, Anacleto mais velho que Marivaldo

LGICA DE PROGRAMAO

Significa o uso correto das leis do pensamento, da "ordem da razo" e de processos de raciocnio e simbolizao formais na programao de computadores, objetivando racionalidade no desenvolvimento de tcnicas que produzam solues logicamente vlidas e coerentes que resolvam os problemas que se deseja programar. Um mesmo raciocnio pode ser expresso em qualquer um dos inmeros idiomas existentes, mas continuar representando o mesmo raciocnio, usando apenas outra conveno. Acontece exatamente a mesma coisa na Lgica de Programao. Pode ser representada em qualquer uma das inmeras linguagens de programao existentes. S que, no raciocnio geral, uma grande diversidade de detalhes computacionais no tem nada a ver com o mesmo. Portanto, para escapar dessa "Torre de Babel" e, ao mesmo tempo, representar mais fielmente o raciocnio da Lgica de Programao, utilizamos os Algoritmos. O objetivo principal da Lgica de Programao a construo de algoritmos coerentes e vlidos. Sistemas Operacionais Lucilia Ribeiro
13

02 Noes de Lgica

2.3

ALGORITMO

Algoritmo um conjunto de procedimentos a ser seguido para que um determinado problema seja resolvido. Para trazermos os algoritmos para a memria do computador necessrio que o mesmo seja programado, ou seja, convertido em uma linguagem que possa ser entendida pela mquina. uma seqncia de passos que visam atingir um objetivo bem definido. Cada passo deve ser simples e sem ambigidade. Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Na receita existe uma srie de ingredientes necessrios e uma seqncia de diversos passos (aes) que devem ser fielmente executados para que se consiga o alimento desejado, conforme se esperava antes do incio da atividade (objetivo bem definido). Portanto, ao elaborar um algoritmo devemos: Especificar aes claras e precisas -> Partindo de um estado inicial -> Aps um perodo de tempo finito -> Produzem um estado final previsvel e bem definido. Um algoritmo deve garantir que sempre que seja executado, sob as mesmas condies, produza o mesmo resultado. Obs.: Observe a seqncia: 1, 6, 11, 16, 21, 26,... Qual o stimo elemento? Qual o padro de comportamento? 2.4 PROGRAMAO

Programar consiste em elaborar um conjunto finito de instrues reconhecidas pela mquina, de forma que o computador as execute. a implementao de um algoritmo em determinada linguagem de programao.

Problema

Fase da resoluo do problema


Soluo em forma de algoritmo

Soluo como programa

Fase da implementao

2.5

IMPORTNCIA DE UM ALGORITMO

Representar mais fielmente o raciocnio envolvido na Lgica de Programao bem como codificar para qualquer linguagem de programao. Existem vrias formas de representar um algoritmo: Linguagem Natural, Fluxograma e Linguagem Estruturada (Algoritmo - Portugol) que a mais utilizada. Para exemplificar utilizaremos o seguinte programa: Dividir dois nmeros. 2.5.1 LINGUAGEM NATURAL Escolher o numerador Escolher o denominador Se o denominador for igual a zero, ento Escreva que no existe diviso por zero Seno, divida o numerador pelo denominador
14

Sistemas Operacionais Lucilia Ribeiro

02 Noes de Lgica

2.5.2 FLUXOGRAMA Escolher o numerador

Escolher o denominador

Sim

Denominador = 0

No

Imprimir mensagem Diviso por zero

Imprimir numerador dividido por denominador Fim

2.5.3 LINGUAGEM ESTRUTURADA Algoritmo PRIMEIRO_EXEMPLO real: NUMERADOR, DENOMINADOR, RESULTADO; leia (NUMERADOR); leia (DENOMINADOR); se DENOMINADOR = 0 ento escreva ("Diviso por Zero") seno RESULTADO NUMERADOR / DENOMINADOR; fimse; fim. 2.6 EXEMPLOS

Muitas vezes realizamos tarefas aparentemente bvias demais como, por exemplo, trocar uma lmpada, sem percebermos seus pequenos detalhes. Vejamos esse primeiro algoritmo: 1. 2. 3. 4. 5. 6. pegar uma escada; posicionar a escada embaixo da lmpada; buscar uma lmpada nova; subir na escada; retirar a lmpada velha; colocar a lmpada nova;

Neste primeiro algoritmo, seguimos uma determinada seqncia de aes que fazem com que ele seja seguido naturalmente por qualquer pessoa, estabelecendo um padro de comportamento, pois qualquer pessoa agiria da mesma maneira. MAS, e se a lmpada no estivesse queimada? A execuo das aes conduziria a uma troca, independentemente de a lmpada estar ou no queimada, pois essa possibilidade no foi prevista. Uma soluo seria: 1. 2. 3. 4. 5. pegar uma escada; posicionar a escada embaixo da lmpada; buscar uma lmpada nova; acionar o interruptor; se a lmpada no acender, ento
15

Sistemas Operacionais Lucilia Ribeiro

02 Noes de Lgica

5.1. subir na escada; 5.2. retirar a lmpada velha; 5.3. colocar a lmpada nova; Este algoritmo funciona, mas pode ser melhorado visto que buscamos uma lmpada e a escada sem saber se sero necessrias. Mudemos o teste condicional para o incio da seqncia de aes: 1. acionar o interruptor; 2. se a lmpada no acender, ento 2.1. pegar uma escada; 2.2. posicionar a escada embaixo da lmpada; 2.3. buscar uma lmpada nova; 2.4. subir na escada; 2.5. retirar a lmpada velha; 2.6. colocar a lmpada nova; H muitas formas de resolver um problema, afinal cada pessoa pensa e age de maneira diferente. Isto significa que, para este mesmo problema de trocar lmpadas, poderamos ter diversas solues diferentes e corretas (se atingissem o resultado desejado de efetuar a troca), portanto, o bom senso e a prtica de lgica de programao que indicaro a soluo mais adequada, que com menos esforo e menor objetividade produz o resultado almejado. O algoritmo acima no prev ainda o fato de a lmpada nova no funcionar e, portanto, no atingir o objetivo nesta situao especfica. Melhorando o algoritmo: 1. acionar o interruptor; 2. se a lmpada no acender, ento 2.1. pegar uma escada; 2.2. posicionar a escada embaixo da lmpada; 2.3. buscar uma lmpada nova; 2.4. subir na escada; 2.5. retirar a lmpada velha; 2.6. colocar a lmpada nova; 2.7. se a lmpada nova no acender, ento 2.7.1. buscar uma lmpada nova; 2.7.2. subir na escada; 2.7.3. retirar a lmpada queimada; 2.7.4. colocar outra lmpada nova; 2.7.5. se a lmpada nova no acender, ento 2.7.5.1. buscar uma lmpada nova; 2.7.5.2. subir na escada; 2.7.5.3. retirar a lmpada queimada; 2.7.5.4. colocar outra lmpada nova; (repito os quatro ltimos passos at quando?) Percebemos que as aes cessaro quando conseguirmos colocar uma lmpada que acenda; caso contrrio, ficaremos testando indefinidamente (note que o interruptor continua acionado!) Temos que expressar a repetio da ao sem repetir o texto que representa a ao, assim como determinar um limite para tal repetio, para garantir uma condio de parada. Observemos que o nmero de repeties indefinido, mas finito. 1. acionar o interruptor; 2. se a lmpada no acender, ento 2.1. pegar uma escada; 2.2. posicionar a escada embaixo da lmpada; 2.3. buscar uma lmpada nova; 2.4. subir na escada; 2.5. retirar a lmpada velha; 2.6. colocar a lmpada nova; Sistemas Operacionais Lucilia Ribeiro
16

02 Noes de Lgica

2.7. enquanto a lmpada nova no acender, faa 2.7.1. buscar uma lmpada nova; 2.7.2. subir na escada; 2.7.3. retirar a lmpada queimada; 2.7.4. colocar outra lmpada nova; At agora estamos efetuando a troca de uma nica lmpada. Na verdade, estamos testando um soquete (acionado por um interruptor), trocando tantas lmpadas quantas forem necessrias para assegurar que o conjunto funcione. O que faramos se tivssemos mais soquetes a testar, por exemplo, 10 soquetes? A soluo aparentemente mais bvia seria repetir o algoritmo de uma nica lmpada para os 10 soquetes existentes. Entretanto, isso no uma maneira eficiente de se resolver esse problema. O conjunto de aes desenvolvidas exatamente igual para os 10 soquetes. Ento, podemos fazer com que o algoritmo volte a executar o conjunto de aes relativas a um nico soquete tantas vezes quantas forem desejadas (no nosso caso, 10 vezes). O algoritmo ficaria assim: 1. ir at o interruptor do primeiro soquete; 2. enquanto a quantidade de soquetes testados for menor do que dez, faa 2.1. acionar o interruptor; 2.2. se a lmpada no acender, ento 2.2.1. pegar uma escada; 2.2.2. posicionar a escada embaixo da lmpada; 2.2.3. buscar uma lmpada nova; 2.2.4. subir na escada; 2.2.5. retirar a lmpada velha; 2.2.6. colocar a lmpada nova; 2.3. enquanto a lmpada nova no acender, faa 2.3.1. buscar uma lmpada nova; 2.3.2. subir na escada; 2.3.3. retirar a lmpada queimada; 2.3.4. colocar outra lmpada nova; 2.4. ir at o interruptor do prximo soquete; Quando a condio quantidade de soquetes testados for menor do que dez for verdadeira, as aes responsveis pela troca ou no de um nico soquete sero executadas. Caso a condio de parada seja falsa, ou seja, todos os dez soquetes j tiverem sido testados, nada mais ser executado. 2.7 EXERCCIOS

11)Elabore algoritmo passo-a-passo para trocar um pneu furado. Admita que esto disponveis no porta malas do carro todos os materiais necessrios. 12)Elabore algoritmo passo-a-passo para fazer um bolo. Admita que esto disponveis todos os ingredientes necessrios. 13)Elabore algoritmo passo-a-passo para pegar uma coca-cola em uma mquina de refrigerantes. Admita que voc esteja em frente mquina e a ficha esteja em sua carteira/bolsa. 14)Elabore algoritmo passo-a-passo representando seus atos de um dia da semana (meio de semana) desde o momento que voc abre o olho de manh at o momento que voc os fecha para dormir 15)Trs jesutas e trs canibais precisam atravessar um rio; para tal dispem de um barco com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a soluo para efetuar a travessia com segurana? Elabore um algoritmo mostrando a resposta, indicando as aes que concretizam a soluo deste problema. Sistemas Operacionais Lucilia Ribeiro
17

02 Noes de Lgica

16)Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a, b, c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1, 2, 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 menor. O objetivo transferir os trs discos para outra haste

a
1 2 3

-x-

Sistemas Operacionais Lucilia Ribeiro

18

03 Itens Fundamentais

3
3.1

Itens Fundamentais

Quantas mas caram na cabea de Newton at ele ter inspirao! (Robert Frost)
INTRODUO

Todo o trabalho realizado por um computador baseado na manipulao de dados contidos em sua memria. A memria do computador pode ser comparada a um conjunto de caixas numeradas. Em cada caixa podemos guardar uma informao. O nmero da caixa serve para localizla e possui o nome de endereo.
1 5 2 6 3 Joo 7 4 25 8 Guarde o valor Joo na posio de memria 3 Guarde o valor 25 na posio de memria 4

Para armazenar uma informao na memria, no precisamos referenciar o endereo da posio. Isso pode ser feito pela associao de um nome a cada posio. A associao feita por um mecanismo interno das linguagens de programao que associa nomes que criamos s posies de memria. Este mecanismo utiliza uma tabela de smbolos.
NOME Idade Cpf Tabela de Smbolos POSIO DA MEMRIA 1 2

3.2

TIPOS DE DADOS

Inicialmente vamos diferenciar dado de informao. Se falarmos: A escada possui 8 degraus. O valor 8 um dado, e informao a associao de 8 com o nmero de degraus da escada. Iremos trabalhar com quatro tipos primitivos. Usaremos estes tipos bsicos na construo de algoritmos: 3.2.1 INTEIRO Podem ser positivos, negativos ou nulos e no possuem parte decimal. Eu tenho 2 filhos. A escada possui 9 degraus. Meu vizinho ganhou 1 carro novo.

3.2.2 REAL Podem ser positivos, negativos ou nulos e possuem parte decimal. Ele tem 1,65 m de altura. Meu saldo no banco de R$ 500,30. No momento Geraldo est pesando 73,5 kg.

3.2.3 CARACTER Podem ser as letras maisculas (A...Z), as letras minsculas (a...z), os nmeros (0...9) e os caracteres especiais (ex.: &, #, @, ?, +). So sempre representados entre aspas no algoritmo. Constava na prova: Use somente caneta preta!. O parque municipal estava cheio de placas: No pise na grama!. O nome do vendedor Felisberto Laranjeira.
19

Sistemas Operacionais Lucilia Ribeiro

03 Itens Fundamentais

3.2.4 LGICO Possuem apenas duas possibilidades de representao, ou seja, podem assumir apenas duas situaes (Verdadeiro ou Falso, Verdade ou Falsidade, V ou F). Convencionaremos que dados lgicos podero assumir um dos seguintes valores: Verdade ou Falsidade (V ou F) 3.3 A porta pode estar aberta ou fechada. A lmpada pode estar acesa ou apagada.

FORMAO DE IDENTIFICADORES

Os identificadores so os nomes das variveis, das constantes, das rotinas etc. Existem regras bsicas para a formao de identificadores: 1. Os caracteres que voc pode utilizar na formao dos identificadores so: nmeros, letras maisculas e minsculas e o caracter sublinhado ( _ ); 2. Devem comear por um caracter alfabtico ou pelo caracter sublinhado; 3. Podem ser seguidos por mais caracteres alfabticos ou numricos; 4. No so permitidos espaos em branco e caracteres especiais (@, $, #,+,!,%...); 5. No permitido usar palavras reservadas nos identificadores, ou seja, palavras que pertenam linguagem de programao. Alguns exemplos vlidos: Lambda, Y, CK32, K9, Nota, CBC, SALARIO, CONTADOR. Alguns exemplos invlidos: 5Y, F(15), B:C, Nota1/2; WXZ*, B&CC,@143, a-b, Q:c. importante observar que no desenvolvimento de algoritmos, o nome de identificador deve ser o mais significativo possvel, pois desta maneira, o entendimento do mesmo se torna mais fcil. 3.4 CONSTANTES

Um dado constante o que no sofre nenhuma variao no decorrer do tempo. Seu valor constante do incio ao fim da execuo do algoritmo, assim como constante para execues diferentes no tempo. As definies das constantes so feitas antes das declaraes das variveis. No formato apresentado logo a seguir, identificador o nome da constante que est sendo criada. Formato: Constante identificador = valor; Exemplos: Constante FRASE = No Fume; Constante NOME = Bruna; Constante FATOR = 1,24; Observao: importante observar que dados entre aspas caracterizam caracteres, mesmo que possuam valores numricos. Veja os exemplos a seguir: Constante SORTE = 13; Constante TMP = E%R#Y*; Constante LIXO = Abc34F19; Constante NUMCHAR = 9,16; 3.5 VARIVEIS

Um dado classificado como varivel quando pode ter seu valor alterado em algum instante durante a execuo do algoritmo. Exemplos: cotao do dlar, peso de uma pessoa, ndice da inflao. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. Toda varivel identificada por um nome ou identificador. Exemplo para ilustrar a diferena entre valores constantes e variveis: Construo de um algoritmo para calcular o valor da rea de uma circunferncia. A frmula que expressa a rea da circunferncia R2, onde tem valor constante de 3,1416... independente de qual seja a circunferncia (vale para todas as ocasies em que calculamos a rea). J o valor de R (raio) dependente da circunferncia que estamos calculando. Portanto, varivel a cada execuo do algoritmo. Sistemas Operacionais Lucilia Ribeiro
20

03 Itens Fundamentais

Formato: Tipo de Dado: lista_de_identificadores Exemplos: inteiro: NUM, A; real: XYZ, Y; caracter: NOME, ENDERECO; lgico: RESPOSTA; Observaes: Como visto anteriormente, os tipos primitivos que iremos trabalhar so: inteiro, real, caracter e lgico. No exemplo anterior, a varivel RESPOSTA o nome de um local de memria que s pode conter valores do tipo lgico, ou seja, verdadeiro (V) ou falso (F), assim como o identificador NUM o nome de um local de memria que s pode conter valores do tipo inteiro e assim por diante. No permitido que mais de uma varivel possua o mesmo identificador, visto que se isso acontecer no ser possvel saber que varivel usar. S podemos guardar dados em variveis do mesmo material, ou seja, uma varivel do tipo primitivo inteiro s poder armazenar nmeros inteiros; uma varivel do tipo primitivo lgico, somente verdade (V) ou falsidade (F) e assim por diante. 3.6 COMENTRIOS

Todo algoritmo deve conter comentrios, a fim de que as pessoas possam entend-lo mais facilmente. Os comentrios so representados por um texto, ou simplesmente uma frase, que aparece sempre aps o smbolo //. Os comentrios podem ser colocados em qualquer ponto do algoritmo onde se faam necessrios. Formato: // Comentrio ... Exemplos: real: SALARIO; inteiro: NUMPECAS; 3.7 EXERCCIOS 17) Determine qual o tipo primitivo de informao presente nas sentenas a seguir: a) A placa Pare tinha 2 furos de bala. b) Josefina subiu 5 degraus para pegar uma ma boa. c) Alberta levou 3,5 horas para chegar ao hospital onde deu luz uma menina. d) Astrogilda pintou em sua camisa: Preserve o meio ambiente, e ficou devendo 23,00 ao vendedor de tintas. e) Felisberto recebeu sua medalha de nmero 18 por ter alcanado a marca de 57,3 segundos nos 100 metros rasos. 18)Identifique o tipo dos dados: (I)nteiro, (R)eal, (C)aracter e (L)gico ( ( ( ( ( ) ) ) ) ) verdadeiro aula 0,342 0 ( ( ( ( ( ) ) ) ) ) 45,0 c*d 35,23 354,0 897 ( ( ( ( ( ) ) ) ) ) 1234 234 34 15,0 falso ( ( ( ( ( ) ) ) ) ) 0,0 1 2 3 4 18,589 falso 23 //salrio do funcionrio //nmero de peas

19)Assinale os identificadores vlidos e, para cada identificador no assinalado, explique a razo de ele ser invlido. a) (X) f) KM/L l) P{O} b) U2 g) UYT m) B52 c) AH! h) ASDRUBAL n) Rua d) ALUNO i) AB*C o) CEP e) #55 j) O&O p) dia/ms

Sistemas Operacionais Lucilia Ribeiro

21

03 Itens Fundamentais

20)Supondo que as variveis NB, NA, NMAT, SX sejam utilizadas para armazenar a nota do aluno, nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente na linguagem algortmica, associando o tipo primitivo adequado ao dado que ser armazenado. 21)Encontre os erros da seguinte declarao de variveis: inteiro: ENDERECO, NFILHOS; caracter: IDADE, X; real: XPTO, C, PESO, R$; logico: LAMPADA, C;

-x-

Sistemas Operacionais Lucilia Ribeiro

22

04 Expresses e Operadores

4
4.1

Expresses e Operadores

A chave usada sempre brilha (Benjamim Franklin)


INTRODUO

Assim como na matemtica, realizamos diversas operaes dependendo do tipo de dado utilizado nos algoritmos. 4.2 EXPRESSES ARITMTICAS

As expresses aritmticas so escritas linearmente usando a notao matemtica, tendo como resposta sempre um valor numrico. Seus operandos so constantes ou variveis do tipo numrico (inteiro ou real) e seus operadores so operadores aritmticos, ou seja, smbolos que representam as operaes bsicas da matemtica. O conjunto de operaes bsicas adotadas nos algoritmos so: Adio, Subtrao, Multiplicao e Diviso.
Operador + * / Funo Adio Subtrao Diviso Exemplos 5 + 1, A + B 5 2, X Z 27/3, B1/B2

Multiplicao 4 * 2, Y * W

As operaes de radiciao e potenciao sero realizadas atravs do uso das palavras-chave rad e pot, conforme tabela abaixo.
Operador pot(X,Y) rad(X) Funo Potenciao Significado X elevado a Y Exemplos pot(2,3) rad(9)

Radiciao Raiz quadrada de X

Algumas outras operaes matemticas no-convencionais, mas teis na construo de algoritmos so: o resto da diviso e o quociente da diviso inteira, mostrados na tabela a seguir.
Operador mod div Funo Resto da diviso Quociente da diviso Exemplos 9 mod 4 resulta em 1 9 div 4 resulta em 2

Prioridades: Na resoluo das expresses aritmticas, as operaes guardam uma hierarquia entre si. Operadores 1 2 3 4 Prioridade parnteses mais internos rad, pot /, *, div, mod +, -

Para operaes de mesma prioridade, devemos resolver a expresso na seqncia existente, ou seja, da esquerda para a direita. Para alterar a prioridade da tabela, utilizamos parnteses mais internos.

Sistemas Operacionais Lucilia Ribeiro

23

04 Expresses e Operadores

Exemplos: a) 5 + 9 + 7 + 8/4 5 + 9 + 7 + 2 23 b) 1 1 1 1 4 * 3/6 pot(3,2) 4 * 3/6 9 12/6 9 2 9 10 + 2 4/2 + rad(1 + 3 * 5)/2 4/2 + rad(1 + 15)/2 4/2 + rad(16)/2 4/2

c)

pot(5,2) pot(5,2) pot(5,2) 25 4/2 25 2 + 25

4.3

EXPRESSES LGICAS

As expresses lgicas so expresses que trabalham com operadores relacionais ou lgicos, tendo como resposta um valor lgico (verdadeiro ou falso). Uma relao uma comparao entre valores do mesmo tipo primitivo. Esses valores podem ser representados por constantes, variveis ou expresses aritmticas. Os operadores relacionais utilizados esto listados na tabela a seguir. O resultado obtido de uma relao SEMPRE um valor lgico.
Operador = <> <= >= < > Descrio Igual a Diferente de Menor ou Igual a Maior ou Igual a Menor que Maior que

Exemplos: a) A + B = C (Essa relao retornar verdadeiro se o valor de A + B for igual ao de C, e retornar falso caso contrrio). b) 2 * 4 = 8 = 8 V 24 / 3

c)

15 mod 4 < 19 mod 6 3 < 1 F

Os operadores lgicos utilizados com expresses lgicas bem como as prioridades esto na seguinte tabela:
Operador Descrio Prioridade E OU NO Conjuno Disjuno Negao 2 3 1

Tabela-verdade o conjunto de todas as possibilidades combinatrias entre os valores de diversas variveis lgicas e um conjunto de operadores lgicos. Sistemas Operacionais Lucilia Ribeiro
24

04 Expresses e Operadores

OPERAO DE NEGAO A V F NO A F V

OPERAO DE CONJUNO A V V F F B V F V F OPERAO DE DISJUNO A V V F F B V F V F A OU B V V V F AEB V F F F

Exemplos: a) 2 < 5 E 15 / 3 = 5 2 < 5 E 5 = 5 V E V V b) 2 < 5 OU 15 / 3 = 5 2 < 5 OU 5 = 5 V OU V V F F F F F OU OU OU OU 20 div (18/3) <> (21/3) div 2 20 div 6 <> 7 div 2 3 <> 3 F

c)

d)

NO V OU pot(3,2)/3 < 15 35 mod 7 NO V OU 9/3 < 15 0 NO V OU 3 < 15 NO V OU V F OU V V

4.4

EXERCCIOS

22)Supondo que A, B e C so variveis do tipo inteiro, com valores iguais a 5, 10 e 8, respectivamente, e uma varivel real D, com valor de 1,5, quais os resultados das expresses aritmticas a seguir? a) 2 * A mod 3 C b) rad(-2 * C) div 4 c) ((20 div 3) div 3) + pot(8,2)/2 d) (30 mod 4 * pot(3,3)) * 1 e) pot (-C,2) + (D*10)/A f) rad(pot(A,B/A)) + C * D

Sistemas Operacionais Lucilia Ribeiro

25

04 Expresses e Operadores

23)Escreva as expresses algbricas em forma de algoritmo. No se preocupe nesse momento em atribuir o resultado da expresso a uma varivel. Exemplo: Expresso: x + vy Algoritmo: x + v * y a) a + bc + d b) (a+b) c + d (a-2b) c) (x+y) (x-y) 24)Verifique as expresses abaixo e diga qual o resultado das mesmas (verdadeiro ou falso). a) 3 * 5 div 4 <= pot(3,2) / 0,5 b) 2 + 8 mod 7 >= 3 * 6 15 25)Determine os resultados obtidos na avaliao das expresses lgicas seguintes. a) X * X + Y > Z. Considere X = 1, Y = 2, Z = 5 b) X * X + Y > Z. Considere X = 4, Y = 3, Z = 1 c) (NOME = JORGE) E SIM OU (X < Z * 10). Considere X = 2, Z = 9, NOME = MARIA, SIM = F 26)Determine o resultado das expresses a seguir: a) NO (5 <> 10/2 OU V E 2 5 > 5 2 OU V) b) pot(2,4) <> 4 + 2 OU 2 + 3 * 5 / 3 mod 5 < 0 27)Determine o resultado obtidos na avaliao das expresses lgicas apresentadas a seguir, sabendo que A, B, C possuem os valores 2, 7 e 3,5 respectivamente, e que L uma varivel lgica com o valor F. a) B = A * C E (L OU V) b) B > A OU B = pot(A,A) c) L E B div A >= C OU NO A <= C d) NO L OU V E rad(A+B) >= C e) B/A = C OU B/A <> C f) L OU pot(B,A) <= C * 10 + A* B

28)Faa a declarao de 3 variveis do tipo inteiro, 2 variveis do tipo real, 2 variveis do tipo caracter e 1 varivel do tipo lgico.

-x-

Sistemas Operacionais Lucilia Ribeiro

26

05 Estrutura Sequencial

5
5.1

Estrutura Sequencial

Tente terminar e nunca vacile; Nada mais difcil, mas a pesquisa descobrir. (Robert Herrick
COMANDO DE ATRIBUIO

Um comando de atribuio usado para atribuir valores a variveis. O tipo do dado deve ser compatvel com o tipo da varivel, ou seja, s se pode atribuir um valor lgico a uma varivel capaz de comport-lo, isto , a uma varivel declarada como sendo do tipo lgico. Na linguagem algortmica, o comando de atribuio tem o formato apresentado a seguir, onde identificador o nome da varivel qual est sendo atribudo o valor, o smbolo de atribuio e expresso pode ser uma constante, varivel, valor ou expresso cujo tipo seja compatvel com o da varivel qual o valor est sendo atribudo. Formato: identificador expresso Exemplos: caracter: COR; real: MEDIA, N1, N2; logico: TESTE; inteiro: X, Y, Z; COR Verde; MEDIA (N1+N2)/2; TESTE FALSO; X Y; Z 0; importante ressaltar que do lado esquerdo do smbolo de atribuio deve existir apenas um identificador. 5.2 COMANDOS DE ENTRADA E SAIDA

Os comandos de entrada e sada tm como finalidade a interrupo do programa a fim de que o usurio possa entrar com dados (entrada), atravs de unidades de entrada (normalmente o teclado), ou o programa possa fornecer informaes a respeito dos dados (sada), atravs de unidades de sada (normalmente monitor ou impressora). 5.2.1 COMANDO DE ENTRADA O comando denominado leia o comando de entrada de dados. Seu objetivo atribuir o dado a ser fornecido varivel identificada. O formato est listado a seguir. leia a palavra-chave do comando de entrada, lista de identificadores o nome das variveis, separados por vrgula, nas quais sero armazenados os valores provenientes do meio de entrada. Formato: leia (lista de identificadores) Exemplos: leia (COD); leia (NOTA1, NOTA2); leia (nome); leia (endereco); 5.2.2 COMANDO DE SADA O comando denominado escreva o comando de sada de dados, que tem como objetivo mostrar o contedo de uma varivel, constante ou expresso. O formato apreSistemas Operacionais Lucilia Ribeiro
27

05 Estrutura Sequencial

sentado a seguir, onde escreva a palavra-chave do comando de sada; lista de identificadores e/ou expresses so os nomes das variveis, os nomes das constantes ou as expresses, que se deseja fornecer como resultados. Formato: escreva(lista de identificadores e/ou expresses) Exemplos: escreva(X); escreva(Bom dia, NOME); escreva(Voc pesa , P, quilos); 5.3 ESTRUTURA SEQUENCIAL

A estrutura seqencial de um algoritmo corresponde ao fato de que o conjunto de aes primitivas ser executado em uma seqncia linear de cima para baixo e da esquerda para a direita, ou seja, na mesma ordem em que foram escritas. As aes sero seguidas por ponto-e-vrgula (;). O ponto-e-vrgula objetiva separar uma ao da outra e auxiliar na organizao seqencial das aes, visto que, aps encontrar um (;) o prximo comando da seqncia deve ser executado. Exemplo 1: Algoritmo NOME// identificao do incio do algoritmo // declarao de variveis // corpo do algoritmo ao 1; ao 2; ao 3; . . . ao n; Fim Algoritmo // fim do algoritmo Exemplo 2: Escreva um algoritmo que calcule a mdia aritmtica entre quatro notas quaisquer fornecidas por um aluno. Algoritmo EX2 // declarao de variveis real: N1, N2, N3, N4,M ;

leia (N1,N2,N3,N4); // processamento, ou seja, clculo da mdia aritmtica das notas M (N1 + N2 + N3 + N4) / 4; // sada de dados escreva(A mdia aritmtica das notas informadas : , M); Fim Algoritmo. 5.4 TESTE DE MESA

//variveis que armazenaro as quatro , //notas e a mdias das notas.

A simulao ou teste de mesa tem por objetivo detectar, caso existam, erros de lgica na descrio do algoritmo. Partindo de dados escolhidos (com resposta conhecida) simulamos a execuo do algoritmo e comparamos a resposta obtida com a resposta esperada. Se no houver coincidncia est detectado um erro, embora a recproca no seja verdadeira. A escolha dos dados para os testes de muita importncia na simulao. As amostras de dados devem ser escolhidas de modo que provoquem a execuo de todas as instrues presentes no algoritmo, testando todas as possibilidades diferentes de sada. Na simulao so listadas todas as variveis utilizadas no algoritmo e registrados todos os valores assumidos pelas variveis, na ordem em que ocorrem. conveniente identificar com um nmero cada uma das instrues contidas no algoritmo. Dessa forma ser possvel localizar facilmente a varivel que foi definida ou alterada naquele momento. Sistemas Operacionais Lucilia Ribeiro
28

05 Estrutura Sequencial

5.5

EXERCCIOS 29)Encontre os erros dos comandos de atribuio a seguir: logico: A; real: B, C; inteiro: D; A B = C; D B; C + 1 B + C; C e B 3,5; B pot(6,2)/3 <= rad(9) * 4; 30)O que ser atribudo s variveis A, X e B?. logico: A, B; inteiro: X; X 8 + 13 div 5; B 5 = 3; A B; 31)Dadas as declaraes abaixo, assinale os comandos de atribuio invlidos: inteiro: NUM; real: SOMA, X; caracter: SIMBOLO, NOME, COR, DIA; logico: COD, TESTE, TUDO; ( ( ( ( ) ) ) ) SIMBOLO 5; TESTE COR; COR PRETO; NUM *ABC*; ( ( ( ( ) ) ) ) SOMA NUM + 2 * X; TUDO SOMA; X X + 1; DIA SEGUNDA;

32)Explique o que est acontecendo em cada linha do trecho de algoritmo abaixo e qual o resultado de cada ao executada: Algoritmo Exemplo inteiro:X, Y; real: Z; leia (X); escreva ( X, elevado ao cubo = , pot(x,3)); leia (Y); escreva (X + Y); Z X/Y; escreva(Z); Z Z + 1; X (Y + X) mod 2; escreva(x); Fim Algoritmo. 33) Escreva um algoritmo que receba o valor do salrio de um funcionrio e o valor do salrio mnimo. Calcule e escreva quantos salrios mnimos ganha esse funcionrio. 34)Faa um algoritmo que receba o nome e o salrio de um funcionrio, calcule e imprima o nome do funcionrio e o valor do imposto de renda a ser pago, sabendo que o imposto equivale a 5% do salrio. 35)Faa um algoritmo que receba a idade de uma pessoa em anos, calcule e imprima essa idade em: a) meses, b) dias, c) horas e d) minutos. Sistemas Operacionais Lucilia Ribeiro
29

05 Estrutura Sequencial

36)Escreva um algoritmo que receba dois nmeros inteiros, calcule e escreva: a) soma dos dois nmeros b) subtrao do primeiro pelo segundo c) subtrao do segundo pelo primeiro d) multiplicao dos dois nmeros e) diviso do primeiro pelo segundo f) diviso do segundo pelo primeiro g) o primeiro elevado ao quadrado 37)Sabe-se que o quilowatt de energia custa um quinto do salrio mnimo. Escreva um algoritmo que receba o valor do salrio mnimo e a quantidade de quilowatts gasta por uma residncia. Calcule e imprima: a) o valor, em reais, de cada quilowatt; b) o valor, em reais, a ser pago por essa residncia; c) novo valor a ser pago por essa residncia, a partir de um desconto de 15%. 38) Faa um algoritmo que receba o ano do nascimento de uma pessoa e o ano atual. Calcule e imprima: a) a idade dessa pessoa; b) essa idade convertida em semanas. 39) Escreva um algoritmo que calcule e imprima a rea de um retngulo. O algoritmo deve solicitar ao usurio as informaes necessrias para esse clculo. 40) Faa um algoritmo que calcule e imprima o valor do FGTS a ser descontado de um empregado, sabendo que o desconto do FGTS de 8% sobre o salrio bruto (fornecido pelo usurio). O algoritmo deve, ainda, calcular e imprimir o valor do salrio lquido. Nesse exemplo, o valor do salrio lquido representado pelo salrio bruto menos o valor do FGTS. 41) Escreva um algoritmo que leia 2 valores A e B e calcule o valor de C, sabendo que C = (A + B) * B. O algoritmo deve imprimir os valores de A, B e C.

-x-

Sistemas Operacionais Lucilia Ribeiro

30

06 Estruturas Condicionais

6
6.1

Estruturas Condicionais

Numa sociedade de lobos, preciso aprender a uivar. (Mme. Du Barry)


ESTRUTURA CONDICIONAL SIMPLES

Uma estrutura de seleo permite escolher um grupo de aes a ser executado quando determinadas condies so ou no satisfeitas. As condies podem ser representadas por expresses lgicas ou relacionais. Formato: se (condio) ento C; // ao primitiva Fim se; Onde (condio) uma expresso que, quando avaliada, vai gerar um resultado lgico (verdadeiro ou falso). Na seleo simples, se (condio) for verdadeira, a ao primitiva (C) sob a clusula ento executada. Caso contrrio, nenhum comando executado. Quando existirem diversas aes a serem executadas, necessrio usar um bloco, delimitado por inicio e fim, conforme mostrado a seguir. se (condio) ento inicio // incio do bloco verdade C1; // sequncia de comandos C2; . . . Cn; fim; // fim do bloco verdade fim se; Se (condio) for verdadeira, os comandos C1, C2, ..., Cn (bloco verdade) so executados. Caso contrrio ((condio) falsa), nenhum comando executado, encerrando-se a seleo (fimse). Exemplo 1: Escreva um algoritmo para calcular a mdia de quatro notas de um aluno e caso a mesma seja igual ou superior a 7, seu algoritmo deve imprimir uma mensagem sobre a aprovao do aluno. Algoritmo MediaAlunos real: N1, N2, N3, N4, MEDIA; escreva (Informe as quatro notas do aluno: ); leia (N1, N2, N3, N4); MEDIA (N1+N2+N3+N4)/4; escreva(A mdia do aluno : , MEDIA); se (MEDIA >= 7) ento escreva(Aluno aprovado); fim se; Fim Algoritmo.

Sistemas Operacionais Lucilia Ribeiro

31

06 Estruturas Condicionais

6.2

ESTRUTURA CONDICIONAL COMPOSTA

Quando houver duas alternativas que dependem de uma mesma condio, uma da condio ser verdadeira e a outra da condio ser falsa, usamos a estrutura de seleo composta. Formato: se (condio) ento inicio C1; C2; . . . Cn; fim; seno inicio B1; B2; . . . Bn; fim; fim se;

// incio do bloco verdade // seqncia de comandos

// fim do bloco verdade // incio do bloco falso // seqncia de comandos

// fim do bloco falso

As regras para utilizao dos delimitadores inicio e fim tanto dentro do ento, quanto dentro seno, so as mesmas apresentadas para a estrutura de seleo simples. Exemplo 2: Escreva um algoritmo que verifique a igualdade de dois nmeros inteiros fornecidos pelo usurio. Algoritmo NumerosIguais inteiro: num1, num2; escreva(Informe dois nmeros inteiros: ); leia(num1,num2); se (num1=num2) ento escreva(Os nmeros informados so iguais.) seno escreva(Os nmeros informados so diferentes.); fim se; Fim Algoritmo. Exemplo 3: Escreva um algoritmo que receba como entrada trs nmeros inteiros, realize sua soma e informe se essa soma maior ou igual a 100. Em caso contrrio, informe uma mensagem que a soma menor do que 100. Algoritmo SomaMaiorCem inteiro: num1, num2, num3, soma; escreva(Informe trs nmeros inteiros: ); leia (num1,num2,num3); soma num1+num2+num3; se (soma >= 100) ento escreva(A soma dos nmeros maior ou igual a 100) seno escreva(A soma dos nmeros menor do que 100); fim se; Fim Algoritmo.

Sistemas Operacionais Lucilia Ribeiro

32

06 Estruturas Condicionais

6.3

ESTRUTURA CONDICIONAL ENCADEADA Quando agrupamos vrias selees, estamos formando uma seleo encadeada.

6.3.1 SELEO ENCADEADA HETEROGNEA Quando no conseguimos identificar um padro lgico de construo em uma estrutura de seleo encadeada, temos uma estrutura de seleo encadeada heterognea. Formato: se (condio1) ento se (condio2) ento inicio C1; C2; C3; fim; fim se; seno se (condio3) ento inicio C4; C5; C6; fim; seno se (condio4) ento se (condio5) ento C7; fim se; seno C8; fim se; fim se; fim se; fim se; Para resumir as variaes possveis da seleo encadeada mostrada anteriormente, temos a seguinte tabela de deciso:
Condio 1 V F F F Condio 2 V Condio 3 V F F Condio 4 V F Condio 5 V Ao executada C1, C2, C3 C4, C5, C6 C7 C8

6.3.2 SELEO ENCADEADA HOMOGNEA Quando temos diversas estruturas de seleo encadeadas que seguem um determinado padro lgico, temos uma estrutura de seleo encadeada homognea. Neste exemplo, aps cada ento existe outro se e no existem senes. Temos, ento, uma estrutura de seleo encadeada homognea.

Sistemas Operacionais Lucilia Ribeiro

33

06 Estruturas Condicionais

Formato: se (condio1) ento se (condio2) ento se (condio3) ento se (condio4) ento C1; fim se; fim se; fim se; fim se; O exemplo anterior equivalente a: se (condio1) e (condio2) e (condio3) e (condio4) ento C1; fim se; Exemplo 4: Supondo que uma varivel X possa assumir apenas quatro valores, V1, V2, V3 e V4 e que exista um comando diferente a ser executado para cada valor armazenado em X.. Nesse exemplo, somente um, e apenas um comando, pode ser executado nos testes, ou seja, se X igual a V3, ele no igual a V1, nem a V2 e nem a V4. se (X=V1) ento C1; fim se; se (X=V2) ento C2; fim se; se (X=V3) ento C3; fim se; se (X=V4) ento C4; fim se;
X = V1 V F F F X = V2 F V F F X = V3 F F V F X = V4 F F F V Ao C1 C2 C3 C4

No temos aqui uma estrutura de seleo encadeada, pois as selees no esto interligadas. Dessa maneira, todas as condies (X = Vn) esto sendo avaliadas e acontecero testes desnecessrios. Com o objetivo de melhorar a performance do exemplo apresentado anteriormente, podemos usar um conjunto de selees encadeadas, como mostrado a seguir.

Sistemas Operacionais Lucilia Ribeiro

34

06 Estruturas Condicionais

se (X = V1) ento C1 seno se (X=V2) ento C2 seno se (X=V3) ento C3 seno se (X=V4) ento C4; fim se; fim se; fim se; fim se;
X = V1 V F F F X = V2 V F F X = V3 V F X = V4 V Ao C1 C2 C3 C4

Nesse caso, o nmero mdio de testes a serem executados foi reduzido. Se o contedo de X for igual a V2, por exemplo, sero executados apenas dois testes (X=V1) e (X=V2) e um comando (C2). Na estrutura anterior, para esse exemplo de V2, so inspecionadas quatro condies, embora um nico comando (C2) seja executado. 6.5 EXERCCIOS

42) A nota final de um estudante calculada a partir de trs notas atribudas respectivamente a um trabalho de laboratrio, a uma avaliao semestral e a um exame final. A mdia das trs notas mencionadas anteriormente obedece aos pesos a seguir: Nota Trabalho de laboratrio Avaliao semestral Exame final Peso 2 3 5

Faa um algoritmo que receba as trs notas, calcule e mostre a mdia ponderada e o conceito segundo mostrado abaixo: Mdia Ponderada 8,0 --- 10,0 7,0 --- 8,0 6,0 --- 7,0 5,0 --- 6,0 0,0 --- 5,0 Conceito A B C D E

43) Faa um algoritmo que receba dois nmeros e mostre o maior. 44) Escreva um algoritmo que receba como entrada trs nmeros inteiros e verifique se a soma dos mesmos maior ou igual a 100. O algoritmo deve emitir uma mensagem em caso positivo. 45) Escreva um algoritmo que receba o valor de um depsito e o valor da taxa de juros, calcule e mostre o valor do rendimento e o valor total depois do rendimento. Sistemas Operacionais Lucilia Ribeiro
35

06 Estruturas Condicionais

46) Escreva um algoritmo que receba uma medida em ps, faa as converses a seguir e mostre os resultados. a) polegadas b) jardas c) milhas Sabe-se que: 1 p = 12 polegadas 1 jarda = 3 ps 1 milha = 1760 jardas 47) Escreva um algoritmo que receba trs nmeros obrigatoriamente em ordem crescente e um quarto nmero que no siga esta regra. Mostre, em seguida, os quatro nmeros em ordem decrescente. 48) Escreva um algoritmo verifique a validade de uma senha fornecida pelo usurio. A senha vlida um conjunto de caracteres ASDFG. O algoritmo deve imprimir uma mensagem de permisso ou de negao de acesso. 49) Escreva um algoritmo que receba o valor do salrio mnimo, o nmero de horas trabalhadas, o nmero de dependentes do funcionrio e a quantidade de horas extras trabalhadas. Calcule e mostre o salrio do funcionrio de acordo com as regras a seguir: - o valor da hora trabalhada igual a 1/5 do salrio mnimo; - o salrio do ms igual ao nmero de horas trabalhadas multiplicado pelo valor da hora trabalhada; - para cada dependente acrescentar R$ 32,00; - para cada hora extra trabalhada, calcular o valor da hora trabalhada acrescida de 50%; - o salrio bruto igual ao salrio do ms mais o valor dos dependentes mais o valor das horas extras; - calcular o valor do imposto de renda retido na fonte de acordo com a tabela a seguir:
IRRF Isento 10% 20% Salrio bruto Inferior a R$ 200,00 De R$ 200,00 at R$ 500,00 Superior a R$ 500,00

- o salrio lquido igual ao salrio bruto menos IRRF; - a gratificao segue a tabela a seguir:
Salrio Lquido At R$ 350,00 Superior a R$ 350,00 Gratificao R$ 100,00 R$ 50,00

- o salrio do funcionrio igual ao salrio lquido mais gratificao. 50) Escreva um algoritmo que leia um nmero e, caso ele seja positivo, imprima seu inverso. Caso contrrio, imprima seu valor absoluto. 51) Escreva um algoritmo para resolver equaes do 2 grau. ax2 + bx + c = 0. A varivel a deve ser diferente de zero. < 0 no existe raiz real = 0 existe uma raiz real x = -b/(2*a) > 0 existem duas razes reais: x1 = (-b + )/(2*a) e x2 = (-b - )/(2*a) 52) Escreva um algoritmo que leia 2 valores A e B e calcule o valor de C, sabendo que C = (A + B) * B. O algoritmo deve imprimir os valores de A, B e C.

Sistemas Operacionais Lucilia Ribeiro

36

06 Estruturas Condicionais

53) Deduza o que ficar armazenado nas variveis do trecho de algoritmo a seguir, sabendo que as variveis armazenam valores do tipo inteiro. se (a > b) ento inicio aux a; a b; b aux; fim; fimse; se (a > c) ento inicio aux a; a c; c aux; fim; fimse; se (b > c) ento inicio aux b; b c; c aux; fim; fimse; 54) Um supermercado deseja reajustar os preos de seus produtos usando o seguinte critrio: o produto poder ter seu preo aumentado ou diminudo. Para alterar o preo, o produto deve preencher pelo menos um dos requisitos a seguir:
Venda Mdia Mensal < 500 >= 500 e < 1200 >= 1200 Requisitos Preo Atual < R$ 30,00 >= R$ 30,00 e < R$ 60,00 >= R$ 80,00 Reajustes % de Aumento % de Diminuio 10 15 20

Faa um algoritmo que receba o preo atual e a venda mensal mdia do produto, calcule e mostre o novo preo. 55) Escreva um algoritmo que receba e altura e o peso de uma pessoa. De acordo com a tabela a seguir, verifique e mostre qual a classificao dessa pessoa.
Altura Menores que 1,20 De 1,20 a 1,70 Maiores que 1,70 At 60 A B C Peso Entre 60 e 90 (inclusive) D E F Acima de 90 G H I

56) Escreva um algoritmo que receba a altura e o sexo de uma pessoa, calcule e imprima o seu peso ideal, usando as seguintes frmulas: para homens: (72.7 * h) 58; para mulheres: (62.1 * h) 44.7. 57) Escreva um algoritmo que receba a medida de um ngulo em graus (nmero inteiro). Calcule e mostre o quadrante em que se localiza esse ngulo. Considere os quadrantes da trigonometria e para ngulos maiores que 360 ou menores que -360, reduzi-los, mostrando tambm o nmero de voltas e o sentido da volta (horrio ou antihorrio).

Sistemas Operacionais Lucilia Ribeiro

37

06 Estruturas Condicionais

90

180

0 360

270

58) O IMC ndice de Massa Corporal um critrio da Organizao Mundial de Sade para dar uma indicao sobre a condio de peso de uma pessoa adulta. A frmula IMC = peso / (altura)2. Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condio.
IMC em adultos abaixo de 18.5 entre 18.5 e 25 entre 25 e 30 acima de 30 Condio abaixo do peso peso normal acima do peso obeso

59) Escreva um algoritmo que receba a idade de um nadador e imprima a sua categoria seguindo as regras:
Categoria Infantil A Infantil B Juvenil A Juvenil B Snior Idade 5 7 anos 8 10 anos 11 13 anos 14 17 anos maiores de 18 anos

-x-

Sistemas Operacionais Lucilia Ribeiro

38

07 Seleo de Mltipla Escolha

7
7.1

Seleo de Mltipla Escolha

Numa sociedade de lobos, preciso aprender a uivar. (Mme. Du Barry)


SELEO DE MLTIPLA ESCOLHA

Uma estrutura de seleo de mltipla escolha usada quando ocorrem situaes onde: se um comando for executado, os demais no sero, ou seja, quando um conjunto de valores discretos precisa ser testado e aes diferentes so associadas a esses valores. Observe o seguinte exemplo: se (X=V1) entao C1; senao se (X=V2) entao C2; senao se (X=V3) entao C3; senao se (X=V4) entao C4; fim se; fim se; fim se; fim se; Esse exemplo pode ser escrito usando uma seleo de mltipla escolha. O uso da estrutura escolha pode ser para variveis dos tipos inteiro, caracter e lgico. escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4; fim escolha; Para se executar um comando que possui mais de um valor em que se verifica sua necessidade, todos esses valores so agrupados em um nico caso (os valores so separados por vrgula ou, caso seja um intervalo, separados por . .). Para se executar um comando que se verifica com todos os outros valores, exceto os discriminados caso a caso, se inclui outra situao: caso contrrio. Se dentro de um caso for preciso colocar mais de um comando, necessrio usar os delimitadores incio e fim. Exemplo: se (X=V1) entao C1; senao Sistemas Operacionais Lucilia Ribeiro
39

07 Seleo de Mltipla Escolha

se (X=V2) entao C2; senao se (X=V3) entao C2; senao se (X=V4) entao C3; senao se (X=V5) entao C4; senao C5; fim se; fim se; fim se; fim se; fim se; Reescrevendo o exemplo anterior com a estrutura de mltipla escolha: escolha X caso V1: C1; caso V2, V3: C2; caso V4: C3; caso V5: C4; caso contrario: C5; fim escolha; Exemplo 1: Escreva um algoritmo que diga se um caracter digitado : uma vogal maiscula, um nmero inteiro de 0 a 9 ou um operador aritmtico. Se o usurio informar algo diferente do que foi mencionado anteriormente, imprimir uma mensagem avisandoo desse fato. Algoritmo Letras caracter: opcao; escreva(Anlise de Caracter Digitado); escreva(Informe um caracter: ); leia(opcao); escolha opcao caso A, E, I, O, U: escreva( uma vogal maiscula); caso 0..9: escreva( um nmero inteiro de 0 a 9); caso +, -, *, /: escreva( um operador matemtico); caso contrario: escreva(Outro caracter); fim escolha; Fim Algoritmo. Exemplo 2: Construa um algoritmo que, tendo como dados de entrada o preo de um produto e seu cdigo de origem, mostre o preo junto de sua procedncia. Se o cdigo no for nenhum dos especificados, o produto deve ser encarado como importado. Considere a tabela de cdigos apresentada abaixo:
Cdigo de origem 1 2 3 4 5 ou 6 7, 8 ou 9 10 at 20 25 at 30 Procedncia Sul Norte Leste Oeste Nordeste Sudeste Centro-oeste Nordeste 40

Sistemas Operacionais Lucilia Ribeiro

07 Seleo de Mltipla Escolha

Algoritmo Produto real: preco; inteiro: codigo; escreva(Informe o preo do produto e seu cdigo de origem: ); leia(preco, codigo); escolha codigo caso 1: escreva(Preo: , preco, Sul); caso 2: escreva(Preo: , preco, Norte); caso 3: escreva(Preo: , preco, Leste); caso 4: escreva(Preo: , preco, Oeste); caso 5, 6, 25..30: escreva(Preo: , preco, Nordeste); caso 7, 8, 9: escreva(Preo: , preco, Sudeste); caso 10..20: escreva(Preo: , preco, Centro-oeste); caso contrario:escreva(Preo: , preco, Produto Importado); fim escolha; Fim Algoritmo. 7.2 EXERCCIOS 60) Dado o algoritmo a seguir, responda: Algoritmo EX52 logico: A, B, C; se A entao C1; senao se B entao se C entao C2; senao C3; C4; fim se; fim se; C5; fim se; C6; Fim Algoritmo. a) Se A = verdade, B = verdade, C = falsidade, quais comandos sero executados? b) Se A = falsidade, B = verdade, C = falsidade, quais comandos sero executados? c) Se A = falsidade, B = verdade, C = verdade, quais comandos sero executados? d) Valores de A, B, C para que somente os comandos C5 e C6 sejam executados? e) Quais so os valores de A, B, C para que somente o comando C6 seja executado? 61) Escreva um algoritmo que leia o cdigo de um determinado produto e mostre a sua classificao de acordo com a tabela apresentada a seguir:
Cdigo 1 2, 3 ou 4 5 ou 6 7 8 at 15 Qualquer outro cdigo Classificao Alimento no-perecvel Alimento perecvel Vesturio Higiene pessoal Limpeza e utenslios domsticos Invlido

-xSistemas Operacionais Lucilia Ribeiro


41

08 Estruturas de Repetio

8
8.1

Estruturas de Repetio

Quem no compreende um olhar, tampouco compreender uma longa explicao. (Mrio Quintana)
ESTRUTURAS DE REPETIO

As estruturas de repetio so usadas quando queremos executar uma mesma sequncia de comandos vrias vezes, provocando sempre um retrocesso para o incio dessa sequncia. Isso ocasiona a repetio de certo trecho do algoritmo um nmero de vezes (que pode ser indeterminado, porm finito). Aos trechos do algoritmo que so repetidos damos o nome de laos de repetio, loops ou looping. 8.2 ESTRUTURA DE REPETIO COM VARIVEL DE CONTROLE

A estrutura de repetio com varivel de controle, conhecida como para, repete a execuo de um bloco de comandos um nmero predeterminado de vezes, pois possui limites fixos. Sintaxe: para i de vi ate vf passo p faca C1; C2; C3; . . . Cn; fim para; Onde: i a varivel de controle, vi o valor inicial da varivel i, vf o valor final da varivel i (valor at o qual ela vai chegar) e p o valor do incremento dado varivel i. Exemplo 1: Escreva um algoritmo que imprima todos os nmeros inteiros de 1 a 50. Algoritmo NumInt inteiro: i; escreva(Imprimindo os nmeros inteiros de 1 a 50); para i de 1 ate 50 passo 1 faca escreva(i, ); fim para; Fim Algoritmo. Exemplo 2: Escreva um algoritmo que imprima todos os nmeros inteiros de 1 at 50, em ordem decrescente. Algoritmo NumIntDecrescente inteiro: i; escreva(Nmeros inteiros de 1 a 50 em ordem decrescente); para i de 50 ate 1 passo -1 faca escreva(i, ); fim para; Fim Algoritmo.

Sistemas Operacionais Lucilia Ribeiro

42

08 Estruturas de Repetio

8.3

ESTRUTURA DE REPETIO COM TESTE NO INCIO

uma estrutura de controle do fluxo de execuo que permite repetir diversas vezes um mesmo trecho do algoritmo, sempre verificando antes de cada execuo se permitido executar o mesmo trecho. A estrutura de repetio com teste no incio denomina-se enquanto e permite que um bloco de comandos ou uma ao primitiva seja repetida enquanto uma determinada condio for verdadeira. Quando o resultado da condio for falso, o comando de repetio abandonado. Caso o resultado da condio seja falso j da primeira vez, os comandos que se encontram dentro do enquanto no so executados nenhuma vez. Sintaxe: enquanto (condicao) faa C1; C2; . . . Cn; fim enquanto; Exemplo 3: Clculo da mdia das 4 notas por aluno, considerando 50 alunos. Escrever mensagem de aprovado, caso a mdia seja maior ou igual a 7 e de reprovado, caso a mesma seja menor do que 7. Cuidado com dados invlidos. Algoritmo Medias real: n1,n2,n3,n4,media; inteiro: cont; // declarao do contador cont 0; enquanto (cont < 50) faa escreva(Informe quatro notas: ); leia(n1,n2,n3,n4); enquanto ((n1<0) ou (n1>10) ou (n2<0) ou (n2>10) ou (n3<0) ou (n3>10) ou (n4<0) ou (n4>10)) faca escreva(Notas invlidas. Informe novamente: ); leia(n1,n2,n3,n4); fim enquanto; media (n1+n2+n3+n4)/4; escreva (Mdia Anual: , media); se (media >= 7,0) entao escreva(Aluno Aprovado) senao escreva(Aluno Reprovado); fim se; cont cont + 1; fim enquanto; Fim Algoritmo. 8.4 ESTRUTURA DE REPETIO COM TESTE NO FINAL

A estrutura de repetio com teste no final (faa ... enquanto) consiste em uma estrutura de controle do fluxo de execuo que permite repetir diversas vezes um mesmo trecho do algoritmo. Porm, diferentemente do enquanto, a condio testada sempre no final. Assim, o faa ... enquanto usado para realizar a repetio com teste no final, permitindo que um bloco ou ao primitiva seja repetido at que uma determinada condio se torne verdadeira. Dessa forma, possvel observar que um bloco (ou ao primitiva) executado pelo menos uma vez, independente da validade da condio. Isto ocorre porque a inspeo da condio feita aps a execuo do bloco, o que representa a caracterstica principal dessa estrutura de repetio. Sistemas Operacionais Lucilia Ribeiro
43

08 Estruturas de Repetio

importante ressaltar que a estrutura faa ... enquanto no possui inicio e fim quando se tem um bloco de comandos a ser executado dentro dela. Sintaxe: faa C1; C2; . . . Cn; enquanto (condicao); Exemplo4: Escreva um algoritmo que receba 2 notas de um aluno e calcule sua mdia. Para cada nota, se o usurio entrar com um valor maior do que 10 ou menor do que zero, o programa deve sempre pedir para que ele digite novamente a nota correta em um intervalo entre 0 e 10. Algoritmo Notas real: n1, n2; faa escreva(Informe a primeira nota (entre 0 e 10): ); leia(n1); enquanto (n1 < 0) ou (n1 > 10); faa escreva(Informe a segunda nota (entre 0 e 10): ); leia(n2); enquanto (n2 < 0) ou (n2 > 10); escreva(A mdia das duas notas : , (n1+n2)/2); Fim Algoritmo. 8.5 EXERCCIOS 62) Uma loja usa os seguintes cdigos para as transaes de cada dia: d para compras vista em dinheiro; c para compras a vista em cheque. dada uma lista de transaes contendo o valor de cada compra e o respectivo cdigo da transao. Considere que houve 25 transaes no dia. Faa um algoritmo que calcule e imprima: - valor total das compras vista em dinheiro; - valor total das compras vista em cheque; - valor total das compras efetuadas. 63) Escreva um algoritmo que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas com idade maior ou igual a 18 anos. 64) Escreva um algoritmo que conte quantos nmeros pares existem de 0 a 20. (Use a estrutura faa ... enquanto). 65) Escreva um algoritmo que calcule a tabuada de multiplicao (de 1 a 10) de um nmero inteiro positivo qualquer digitado pelo usurio usando faa ... enquanto. Reescreva o mesmo algoritmo usando enquanto. O algoritmo pode ser executado vrias vezes at que o usurio deseje sair do mesmo.

-xSistemas Operacionais Lucilia Ribeiro


44

09 Vetores e Matrizes

9
9.1

Vetores e Matrizes

Lembrana quando, mesmo sem autorizao, seu pensamento reapresenta um captulo (Mrio Quintana)
ESTRUTURA DE DADOS

Estruturas de dados so tipos construdos, compostos de tipos primitivos. um conjunto de elementos. 9.2 VARIVEIS COMPOSTAS HOMOGNEAS

Varivel Composta Homognea composta de variveis com o mesmo tipo primitivo, formando, assim, um conjunto homogneo de dados. Podem ser unidimensionais, tambm chamadas de Vetores ou bidimensionais, chamadas de matrizes. 9.3 VETORES - Variveis Compostas Unidimensionais

Os vetores so variveis compostas homogneas unidimensionais. Eles representam uma seqncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome). Como as variveis tm o mesmo nome, o que as distingue um ndice que referencia sua localizao dentro da estrutura. Para declarar a varivel, utilizamos a seguinte sintaxe descrita abaixo, onde i a quantidade de elementos do vetor e tipo primitivo qualquer um dos tipos bsicos. Sintaxe: tipo primitivo de dado: indentificador[i]; A figura a seguir mostra como o vetor VCLASSE pode ser representado. Nesse exemplo, a primeira posio do vetor 1 e a ltima 40.
VCLASSE 8,2 1 6,8 2 9,2 3 3,1 4 ... 5,2 39 9,6 40

9.3.1 MANIPULAO DE VETORES O nome do vetor determinado atravs do identificador que foi usado na definio de variveis. A posio determinada por meio de uma constante, de uma expresso aritmtica ou de uma varivel que estiver dentro dos colchetes e tambm denominada ndice. VCLASSE[4]

39

40

Aps isolar um nico elemento do vetor, podemos manipul-lo atravs de qualquer operao de atribuio, entrada ou sada. Atrituio: VCLASSE[4] 8,6; A[3] 6; Sistemas Operacionais Lucilia Ribeiro
45

09 Vetores e Matrizes

Leitura de dados e atribuio dos mesmos a um vetor: para i de 1 at 15 passo 1 faa leia(A[i]); fim para; Escrita (ou impresso) dos elementos de um vetor: para i de 1 at 8 passo 1 faa escreva(B[i]); fim para; Exemplo 1: Escreva um algoritmo que calcule a mdia aritmtica geral de uma classe com 10 alunos e imprima a mdia e a quantidade de notas acima da mdia calculada. Algoritmo MediaAritmetica inteiro: NotaAcima; real: A, B, C, D, E, F, G, H, I, J, MediaNota; NotaAcima 0; faa escreva(Informe 10 notas: ); leia(A,B,C,D,E,F,G,H,I,J); enquanto ((A<0)ou(A>10)ou(B<0)ou(B>10)ou(C<0)ou(C>10)ou(D<0) ou (D>10)ou(E<0)ou(E>10)ou(F<0)ou(F>10)ou(G<0)ou(G>10)ou(H<0)ou (H>10)ou(I<0)ou(I>10)ou(J<0)ou(J>10)); MediaNota (A+B+C+D+E+F+G+H+I+J) / 10; se (A > MediaNota) entao NotaAcima NotaAcima + 1; fim se; se (B > MediaNota)entao NotaAcima NotaAcima + 1; fim se; se (C > MediaNota) entao NotaAcima NotaAcima + 1; fim se; se (D > MediaNota)entao NotaAcima NotaAcima + 1; fim se; se (E > MediaNota) entao NotaAcima NotaAcima + 1; fim se; se (F > MediaNota)entao NotaAcima NotaAcima + 1; fim se; se (G > MediaNota) entao NotaAcima NotaAcima + 1; fim se; se (H > MediaNota)entao NotaAcima NotaAcima + 1; fim se; se (I > MediaNota) entao NotaAcima NotaAcima + 1; fim se; se (J > MediaNota)entao NotaAcima NotaAcima + 1; fim se; escreva(A mdia de: , MediaNota); escreva(Existem , NotaAcima, notas acima da media!); Fim Algoritmo.

Sistemas Operacionais Lucilia Ribeiro

46

09 Vetores e Matrizes

O algoritmo desenvolvido no exemplo anterior torna impraticvel para uma grande quantidade de notas. Imagine que existissem 100 alunos na sala. Teramos que declarar 100 variveis diferentes, uma para cada nota. Assim, muito mais coerente usar uma nica varivel que comporte vrios dados, ou seja, um vetor armazenando cada nota em uma posio diferente do mesmo. Para acessar cada posio do vetor usaremos uma varivel como ndice. Assim, reescrevendo o exerccio anterior usando um vetor, teremos: Algoritmo OutroExemplo real: A[10], soma, medianota; inteiro: notaacima, i; notaacima 0; soma 0; para i de 1 ate 10 passo 1 faca faa escreva(Informe a nota do aluno: , i, : ); leia(A[i]); enquanto ((A[i] < 0) ou (A[i] > 10)); soma soma + A[i]; fim para; medianota soma/10; para i de 1 ate 10 passo 1 faca se (A[i] > medianota) entao notaacima notaacima + 1; fim se; fim para; escreva(A mdia de: , medianota); escreva(Existem , notaacima, notas acima da media!); Fim Algoritmo. 9.4 MATRIZES - Variveis Compostas Multidimensionais

Os vetores tm como caracterstica principal a necessidade de apenas um ndice para endereamento. So estruturas UNIDIMENSIONAIS. Uma estrutura que precisa de mais de um ndice denominada de Estrutura Composta Multidimensional (ou Matriz). No caso da estrutura ter duas dimenses temos uma Estrutura Composta Bidimensional. 9.4.1 DECLARAO DE MATRIZES tipo primitivo: identificador [linha, coluna]; onde linha a quantidade de linhas que a matriz ter e coluna a quantidade de colunas. Veja o exemplo de uma matriz A 5 x 5:

Sistemas Operacionais Lucilia Ribeiro

47

09 Vetores e Matrizes

9.4.2 MANIPULAO DE MATRIZES

9.4.3 PERCORRENDO UMA MATRIZ BIDIMENSIONAL Exemplo 2: Seja a matriz abaixo. Descobrir qual a linha da matriz A que possui a maior quantidade de 0s.

Algoritmo LinhaZerada inteiro: Mat[6,5], i,j,maiorqtde,numlinha,qtdelinha; maiorqtde 0; numlinha 0; para i de 1 ate 6 passo 1 faca para j de 1 ate 5 passo 1 faca escreva(Informe o elemento (, i , , j, ): ); leia(Mat[i,j]); fim para; fim para; para i de 1 ate 6 passo 1 faca para j de 1 ate 5 passo 1 faca escreva(Mat[i,j], ); fim para; fim para; para i de 1 ate 6 passo 1 faca qtdelinha 0; para j de 1 ate 5 passo 1 faca se (Mat[i,j] = 0) entao qtdelinha qtdelinha + 1; fim se; fim para; se (qtdelinha > maiorqtde) entao numlinha i; maiorqtde qtdelinha; fim se; fim para; se (numlinha <> 0) entao escreva(Linha com maior qtde de zeros : , numlinha); escreva(Essa linha possui , maiorqtde, zeros. ); Sistemas Operacionais Lucilia Ribeiro
48

09 Vetores e Matrizes

senao escreva(Nenhuma linha da matriz possui zeros); fim se; Fim Algoritmo. Exemplo 3: Seja a matriz do exemplo anterior. Descobrir qual a coluna da matriz A que possui a maior quantidade de 0s. Algoritmo ColunaZerada inteiro: Mat[6,5], i,j,maiorqtde,numcoluna,qtdecol; maiorqtde 0; numcol 0; para i de 1 ate 6 passo 1 faca para j de 1 ate 5 passo 1 faca escreva(Informe o elemento (, i , , j, ): ); leia(Mat[i,j]); fim para; fim para; para i de 1 ate 6 passo 1 faca para j de 1 ate 5 passo 1 faca escreva(Mat[i,j], ); fim para; fim para; para j de 1 ate 5 passo 1 faca qtdecol 0; para i de 1 ate 6 passo 1 faca se (Mat[i,j] = 0) entao qtdecol qtdecol + 1; fim se; fim para; se (qtdecol > maiorqtde) entao numcoluna j; maiorqtde qtdecol; fim se; fim para; se (numcoluna <> 0) entao escreva(Coluna com maior qtde de zeros : , numcoluna); escreva(Essa colunaa possui , maiorqtde, zeros. ); senao escreva(Nenhuma coluna da matriz possui zeros); fim se; Fim Algoritmo. 9.5 EXERCCIOS

66) Escreva um algoritmo que preencha um vetor de 100 elementos inteiros, colocando 0 na posio correspondente a um nmero par e 1 na posio correspondente a um nmero mpar. 67) Escreva um algoritmo que alimente os dados de dois vetores inteiros de 20 posies, efetue as respectivas operaes indicadas por um outro vetor de 20 posies de caracteres tambm fornecido pelo usurio, contendo as quatro operaes aritmticas em qualquer combinao e armazenando os resultados em um terceiro vetor. 68) Sendo o vetor V descrito abaixo e as variveis X = 2 e Y = 4, escreva o valor correspondente s solicitaes
2 1 6 2 8 3 3 4 10 5 9 6 1 7 21 8 33 9 14 10

a) V[X+1] f) V[X*2] l) V[V[4]]

b) V[X+2] g) V[X*3] m)V[V[V[7]]]

c) V[X+3] h) V[V[X+Y]] n) V[V[1] * V[4]]

d) V[X*4] i) V[X+Y] o) V[X+4]

e) V[X*1] j) V[8-V[2]]
49

Sistemas Operacionais Lucilia Ribeiro

09 Vetores e Matrizes

69) Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado entre duas matrizes quadradas inteiras que comportem 25 elementos. 70) Dada uma matriz B de dimenso N x M (N<=20 e M<=20), calcule C = K * B, sendo K um escalar fornecido pelo usurio. Imprima a matriz original (B) e a matriz resultante da multiplicao de B por K. Seu algoritmo deve pedir ao usurio para informar a dimenso da matriz a ser digitada, considerando as restries para N e M definidas anteriormente. 71) Escreva um algoritmo que leia uma matriz quadrada A de dimenso N x N (N<=20) de valores inteiros, calcule e imprima a soma dos elementos da diagonal secundria. Coloque os elementos da diagonal secundria em um vetor V. Seu algoritmo deve pedir ao usurio para informar a dimenso da matriz a ser digitada, considerando a restrio para N definida anteriormente. 72) Dada uma matriz A de dimenso N x M (N<=20 e M<=20), calcule sua transposta. Imprima a matriz original e a sua transposta. Seu algoritmo deve pedir ao usurio para informar a dimenso da matriz a ser digitada, considerando as restries para N e M definidas anteriormente.

-x-

Sistemas Operacionais Lucilia Ribeiro

50

10 Registros

10
10.1

Registros

Lembrana quando, mesmo sem autorizao, seu pensamento reapresenta um captulo (Mrio Quintana)
ESTRUTURA DE DADOS

Conforme j foi visto, as variveis compostas homogneas so os vetores e as matrizes, pois so constitudos de elementos do mesmo tipo de dado. Estruturas de dados formadas por elementos de vrios tipos de dados, so chamadas de Variveis Compostas Heterogneas. 10.2 REGISTROS

Registro um conjunto em que os elementos no so do mesmo tipo, ou seja, um conjunto heterogneo de dados. Exemplo 1: Passagem de nibus
Nmero:___________________ Fumante: ( ) Sim ( ) No De: _______________________________Para: ____________________________ Data: ___/___/___ Horrio: ______________Poltrona: _____________________

Nome do passageiro: ______________________________Idade: ______________

A passagem de nibus formada pelas seguintes informaes de tipos diferentes: -Nmero da passagem (inteiro) -Fumante (logico) -Origem e Destino (caracter) -Data (caracter) -Horrio (caracter) -Poltrona (inteiro) -Nome do passageiro (caracter) -Idade (inteiro) Essas informaes so chamadas de CAMPOS. Assim, um registro composto por campos. 10.2.1 DECLARAO DE UM REGISTRO Considerando o exemplo mencionado anteriormente: Registro = passagem inteiro: NPass, NPol, Idade; caracter: Origem, Destino, Data, Horario, Nome; logico: Fumante; fim registro; 10.2.2. MANIPULAO DE UM REGISTRO leia(Passagem.NPol); escreva(Passagem.Fumante); utilizado o ponto ( .) para separar o nome do registro do nome do campo. 10.2.3. REGISTRO DE CONJUNTOS

Sistemas Operacionais Lucilia Ribeiro

51

10 Registros

O registro mostrado anteriormente possui apenas campos de dados de tipos primitivos (inteiro, caracter, logico). Entretanto, possvel termos campos que so compostos tambm. Exemplo 2: Estoque
Nome:__________________________________________________ Cdigo:_______________ Preo:_____________________________ Baixa:

Registro = Produto inteiro: Baixa[6], Cod; caracter: Nome; real: Preco; fim registro; Modificando o exemplo anterior, fazendo com que o registro de estoque de um produto possa conter as baixas de 4 semanas (usando uma matriz para isso). Exemplo 3:
Nome:__________________________________________________ Cdigo:_______________ Preo:_____________________________ Baixa: 1 1 2 3 4 2 3 4 5 6

Registro = Produto inteiro: Baixa[4,6],Cod; caracter: Nome; real: Preco; fim registro; 10.2.4. MANIPULAO DE REGISTRO DE CONJUNTOS - Acessa quanto foi vendido no terceiro dia da quarta semana.: Produto.Baixa[4,3] -.Imprime as baixas da segunda semana: para i de 1 ate 6 passo 1 faa escreva(Produto.Baixa[2,i]); fim para; - Totaliza, por dia da semana, todas as baixas do ms. para j de 1 ate 6 passo 1 faa total 0; para i de 1 ate 4 passo 1 faa total total + Produto.Baixa[i,j]; fim para; escreva("No dia ", j, " houve ", total, " baixas no ms"); fim para; 10.2.5. CONJUNTO DE REGISTROS Em vetores e matrizes usamos tipos de dados primitivos sendo elementos dessas estruturas. Entretanto, podemos usar como componentes dessa estrutura no apenas um tipo primitivo, mas tambm os registros! Sistemas Operacionais Lucilia Ribeiro
52

10 Registros

Exemplo 4: nibus de viagem com 44 lugares. Suponha que quisssemos manter um registro de informaes relativas s passagens de todos os lugares de um nibus. Assim, usaramos um registro referente a cada poltrona (Passagem) e para agrupar todos eles utilizaramos um conjunto desses registros. Como o nibus tem 44 lugares, numerados sequencialmente de 1 a 44, pode- se, para uni-los, criar um vetor no qual cada posio um elemento do tipo registro (Passagem).
1 2 3 4 . . . . . 44

Nmero:___________________ Fumante: ( ) Sim ( ) No De: _______________________________Para: ____________________________ Data: ___/___/___ Horrio: ______________Poltrona: _____________________

Nome do passageiro: ______________________________Idade: ______________

Exemplo: Registro = Passagem inteiro: NPass, NPol, Idade; caracter: Origem, Destino, Data, Horario, Nome; logico: Fumante; fim registro; Passagem: onibus[44]; Exemplo 5: Declarar um conjunto de registro que comporte as informaes de estoque de 500 produtos. Considere as informaes mostradas no registro do Exemplo 3. Registro = Produto inteiro: Baixa[4,6],Cod; caracter: Nome; real: Preco; fim registro; Produto: Estoque[500] 10.2.6 MANIPULAO DE CONJUNTO DE REGISTROS - Acessa a baixa do dcimo produto, da terceira semana e do quarto dia da semana: Estoque[10].Baixa[3,4] - Imprime o total de movimentao do estoque para cada um dos 500 produtos: para n de 1 at 500 passo 1 faa total 0; para i de 1 at 4 passo 1 faa para j de 1 at 6 passo 1 faa total total + Produtos[n].Baixa[i,j]; fim para; fim para; escreva("Movimentao do produto ",Estoque[n].Nome,"foi ",total); fim para;

Sistemas Operacionais Lucilia Ribeiro

53

10 Registros

10.3

EXERCCIOS

73) Faa um algoritmo que realize o cadastro de contas bancrias com as seguintes informaes: nmero da conta, nome do cliente e saldo. O banco permitir o cadastramento de apenas 15 contas e no pode haver mais de uma conta com o mesmo nmero. Crie o menu de opes a seguir: 1. Cadastrar contas 2. Visualizar todas as contas de um determinado cliente 3. Excluir a conta com o menor saldo (no existem saldos iguais) 4. Sair do programa 74) Escreva um algoritmo para ler o cdigo, o sexo (M masculino; F feminino) e o nmero de horas/aulas dadas no ms dos professores de uma escola, sabendo que um professor ganha R$ 24,00 hora/aula e que a escola possui dez professores. Aps a leitura, mostre: a) Uma listagem contendo o cdigo, o salrio bruto, o desconto e o salrio lquido de todos os professores; b) A mdia aritmtica dos salrios brutos dos professores do sexo masculino; c) O cdigo da professora que ganha o maior salrio bruto. Os descontos so assim calculados: Sexo Masculino Feminino At 70 ha ao ms 10% 7% Mais que 70 ha ao ms 8% 5%

-x-

Sistemas Operacionais Lucilia Ribeiro

54

11 Modularizao

11
11.1

Modularizao

Algumas questes no resolvidas, atolam-se em detalhes. (Stanislaw Lem)


DECOMPOSIO

Um problema complexo pode ser simplificado quando dividido em vrios subproblemas. Para acompanhar essa abordagem, sero apresentados conceitos e tcnicas que permitem a diviso de um algoritmo em mdulos. A decomposio de um problema fator determinante para a reduo da complexidade. Lembremos que Complexidade sinnimo de Variedade, ou seja, a quantidade de situaes diferentes que um problema pode apresentar. Assim, quando decompomos um problema em subproblemas, estamos invariavelmente dividindo tambm a complexidade e, por conseqncia, simplificando a resoluo. Outra grande vantagem da decomposio que permite focalizar a ateno em um problema pequeno de cada vez, o que ao final produzir uma melhor compreenso do todo. Passos para orientar o processo de decomposio: 1. 2. 3. 4. Dividir o problema em suas partes principais. Analisar a diviso obtida para garantir coerncia. Se alguma parte ainda permanecer complexa, decomp-la tambm. Analisar o resultado para garantir entendimento e coerncia.

Esse processo de decomposio tambm conhecido como Refinamentos Sucessivos, porque se parte de um problema complexo e abrangente, que sucessivamente dividido at resultar em problemas mais simples e especficos. tcnica de Refinamentos Sucessivos tambm se d o nome de Top-Down, uma vez que se parte de conceitos mais abrangentes (abstratos) at atingir o nvel de detalhamento desejado. Tambm existe, apesar de menos difundida, uma tcnica exatamente inversa, conhecida por Bottom-Up. Consiste em partir dos conceitos mais detalhados e ir agrupando-os sucessivamente em nveis mais abrangentes, at atingir o nvel de abstrao desejado. O processo de compreenso frequentemente mais natural quando se usa a tcnica Top-Down. Por exemplo, mais fcil compreender um automvel partindo-se do todo at o ltimo parafuso do que do parafuso at o todo. Certamente existem excees. Por exemplo, mais fcil entender operaes aritmticas mais abstratas, como potenciao e radiciao, se antes soubermos somar e subtrair. 11.2 MDULOS

Depois de decompor um problema complexo em subproblemas, podemos construir um subalgoritmo ou mdulo para cada subproblema. Um mdulo um grupo de comandos, constituindo um trecho de algoritmo, com uma funo bem definida e o mais independente possvel em relao ao resto do algoritmo. Assim sendo, ao se elaborar um algoritmo para calcular o salrio lquido de um empregado, tem-se as seguintes etapas: Algoritmo Leia os dados do funcionrio; Determine o salrio; Escreva o salrio; Sistemas Operacionais Lucilia Ribeiro
55

11 Modularizao

Fim Algoritmo O comando Determine o salrio pode ser refinado assim: Ref. Determine o salrio Calcule as vantagens; Calcule as dedues; SalarioLiquido Vantagens Dedues; Fim Ref. Na elaborao do refinamento acima, no houve preocupao de como o processo de clculo das vantagens e das dedues seria efetuado. Essas aes constituem funes bem definidas no algoritmo e que sero executadas por mdulos especficos. Nesta fase do projeto do algoritmo, pode-se, ento, optar pela elaborao de mdulos para o clculo das vantagens e clculo das dedues. O mesmo refinamento ficaria ento: Ref. Determine o salrio Ative o mdulo Clculo das vantagens; Ative o mdulo Clculo das dedues; SalarioLiquido Vantagens Dedues; Fim Ref. A verso final modularizada do algoritmo ficaria ento constituda do algoritmo seguinte, mais os mdulos: Algoritmo Leia os dados do funcionrio; Ative o mdulo Clculo das vantagens; Ative o mdulo Clculo das dedues; SalarioLiquido Vantagens Deducoes; Escreva SalarioLiquido; Fim Algoritmo Mdulo {Clculo das vantagens} SalarioBruto NumHoras * SalarioHora; SalarioFamilia NumFilhos * ValorFilho; Vantagens SalarioBruto + SalarioFamilia; Fim mdulo Mdulo {Clculo das dedues} Inss SalarioBruto * 0,08; Irpf SalarioBruto * Taxa; Deducoes Inss + Irpf; Fim mdulo A experincia recomenda que os mdulos de um programa tenham tamanho limitado. Mdulos muito grandes so difceis de ser compreendidos e, em geral, so multifuncionais. Um outro aspecto importante a possibilidade de cada mdulo poder definir as prprias estruturas de dados, suficientes e necessrias apenas para atingir o objetivo final do mdulo. Todo mdulo constitudo por uma seqncia de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais. Objetos globais so entidades que podem ser usadas em mdulos internos a outros mdulos do algoritmo onde foram declaradas. Objetos locais so entidades que s podem ser usadas no mdulo do algoritmo onde foram declaradas. Estes objetos no possuem qualquer significado fora deste mdulo. So exemplos de objetos globais ou locais: variveis, arquivos, outros mdulos, etc. A deciso pela modularizao traz benefcios tais como: a) a independncia do mdulo permite uma manuteno mais simples e evita efeitos colaterais em outros pontos do algoritmo; b) a elaborao do mdulo pode ser feita independentemente e em poca diferente do restante do algoritmo; c) testes e correes dos mdulos podem ser feitos em separado; Sistemas Operacionais Lucilia Ribeiro
56

11 Modularizao

d) um mdulo independente pode ser utilizado em outros algoritmos que requeiram o mesmo processamento por ele executado. Dentre as ferramentas para modularizao podemos destacar as sub-rotinas e as funes. Essas ferramentas so mdulos de programao que servem basicamente a trs objetivos: Evitar que uma certa seqncia de comandos necessria em vrios locais de um algoritmo tenha que ser escrita repetidamente nestes locais; Dividir e estruturar um algoritmo em partes fechadas e logicamente coerentes Aumentar a legibilidade de um algoritmo.

Sub-rotinas e funes so mdulos hierarquicamente subordinados a um algoritmo, comumente chamado de mdulo principal. Da mesma forma, uma sub-rotina ou uma funo pode conter outras sub-rotinas e funes aninhadas, como pode ser visto no diagrama hierrquico a seguir: MP

S1

S2

F1

F2

S3

F3

S4

F4

Essa figura ilustra um algoritmo constitudo de um mdulo principal MP, as subrotinas S1, S2, S3 e S4 e as funes F1, F2, F3 e F4. A notao algoritmica fica da seguinte forma: Algoritmo Subrotina S1 Subrotina S3 C1; C2; Fim Subrotina; Funo F3 C3; Fim Funo; Fim Subrotina; Subrotina S2 C4; C5; Fim Subrotina; Funo F1 C6; Fim Funo; Funo F2 Subrotina S4 C7; C8; Fim Subrotina; Funo F4 C9; Fim Funo; Fim Funo; Fim Algoritmo. Tendo em vista os conceitos de objeto local e global, a funo F3, declarada dentro da sub-rotina S1 conhecida apenas em S1. Entretanto, a sub-rotina S2, declarada dentro do mdulo principal, conhecida em todo o algoritmo e pode ser ativada dentro de S1. A declarao de uma sub-rotina ou funo constituda de um cabealho e de um corpo. O cabealho, que identifica a sub-rotina ou funo, contm o seu nome e a lista Sistemas Operacionais Lucilia Ribeiro
57

11 Modularizao

de parmetros formais. O corpo contm declaraes locais e os comandos da sub-rotina ou funo. A ativao feita atravs da referncia a seu nome e a indicao dos parmetros atuais. 11.3 SUB-ROTINA

Uma sub-rotina declarada conforme a seguir, onde subrotina uma palavra chave, NOME o nome dado sub-rotina e lista de parmetros formais a lista de objetos que sero substitudos por outros objetos, fornecidos quando da chamada da sub-rotina. Subrotina NOME(lista-de-parmetros-formais) Declaraes dos objetos locais sub-rotina; Comandos da sub-rotina; Fim Subrotina; A chamada de uma sub-rotina feita com uma referncia a seu nome e a indicao dos parmetros reais no local do algoritmo onde a sub-rotina deve ser ativada, ou seja, onde a sua execuo deve ser iniciada. A forma geral para o comando de ativao de uma sub-rotina mostrada a seguir, onde NOME o nome dado sub-rotina, e lista de parmetros reais a lista de objetos que substituiro os parmetros formais durante a execuo da sub-rotina. Os parmetros reais devem concordar em nmero, ordem e tipo com os parmetros formais. NOME(lista-de-parmetros-reais); Ao terminar a execuo dos comandos de uma sub-rotina, o fluxo de controle retorna ao comando seguinte quele que provocou a chamada. Desta maneira, a execuo de uma sub-rotina se constitui de uma transferncia temporria da execuo do mdulo chamador para a sub-rotina, retornando depois ao algoritmo que a chamou. Exemplo 1: Dados trs valores distintos, coloca-los em ordem crescente. Algoritmo Ordem crescente; inteiro: aux,n1,n2,n3; leia (n1,n2,n3); se (n1 > n2) ou (n1 > n3) ento se (n2 < n3) ento aux n1; n1 n2; n2 aux; seno aux n1; n1 n3; n3 aux; fim se; fim se; se (n2 > n3) ento aux n2; n2 n3; n3 aux; fim se; escreva (n1, n2, n3); Fim Algoritmo. Observe que h repetio de um grupo de comandos que diferem entre si devido s variveis utilizadas: aux n1; n1 n2; n2 aux; Sistemas Operacionais Lucilia Ribeiro
58

11 Modularizao

aux n1; n1 n3; n3 aux; aux n2; n2 n3; n3 aux; Todas estas repeties tm por objetivo a troca de valores de 2 variveis, podendo ser substitudas por uma nica sub-rotina: Algoritmo Ordem crescente; Subrotina TROCA(inteiro a, inteiro b) inteiro: aux; aux a; a b; b aux; Fim Subrotina; inteiro: n1,n2,n3; leia (n1,n2,n3); se (n1 > n2) ou (n1 > n3) ento se (n2 < n3) ento TROCA(n1, n2); seno TROCA(n1, n3); fim se; fim se; se (n2 > n3) ento TROCA(n2, n3); fim se; escreva (n1, n2, n3); Fim Algoritmo. Cada vez que a sub-rotina TROCA for ativada, os comandos dentro dela so executados tendo em vista os valores contidos nos parmetros atuais e, em seguida, a seqncia do algoritmo retorna ao comando imediatamente seguinte ao da ativao. A vinculao entre mdulos pode ser feita atravs da transferncia ou passagem de parmetros, que associam parmetros reais com os parmetros formais. Dentre os modos de transferncia de parmetros, pode-se destacar a passagem por valor e por referncia. 11.3.1 PASSAGEM DE PARMETROS POR VALOR A passagem de parmetro por valor caracteriza-se pela no alterao do valor do parmetro real quando o parmetro formal manipulado dentro da sub-rotina. Assim sendo, o valor passado pelo parmetro real copiado para o parmetro formal, que no caso assume o papel de varivel local da sub-rotina. Desta forma, qualquer modificao que ocorra na varivel local da sub-rotina no afetar o valor do parmetro real correspondente, ou seja, o processamento executado somente dentro da sub-rotina, ficando o resultado obtido preso na sub-rotina. Como exemplo considere o exemplo a seguir: Exemplo 2: Clculo do fatorial de um nmero Algoritmo Fatorial Subrotina FATORIAL(inteiro n) inteiro: i, fat; fat 1; para i de 1 at n passo 1 faa fat fat * i; fim para; Sistemas Operacionais Lucilia Ribeiro
59

11 Modularizao

escreva (fat); Fim Subrotina; inteiro: limite; escreva(Qual fatorial: ); leia (limite); FATORIAL (limite); Fim Algoritmo. Neste exemplo, indicado o uso da passagem de parmetro por valor. No caso, a varivel n o parmetro formal, que receber o valor fornecido varivel limite por meio da sub-rotina FATORIAL. Esse valor estabelece o nmero de vezes que o looping deve ser executado. Dentro do procedimento encontrado a varivel fat que ir realizar um efeito de acumulador, tendo ao final do looping o valor da fatorial do valor informado para o parmetro n. Ao trmino do looping, a instruo escreva(fat) imprime o valor da varivel fat, que somente vlida dentro da sub-rotina e por esta razo ficar preso dentro da mesma. A passagem de parmetro por valor utilizada somente para a entrada de um determinado valor. 11.3.2 PASSAGEM DE PARMETROS POR REFERNCIA Ao utilizar a passagem de parmetros por referncia, eles devero ser indicados no s no incio da sub-rotina, mas tambm junto do programa principal, uma vez que este tipo de parmetro devolve para o mdulo principal do programa um resultado. Exemplo 3: Clculo do fatorial de um nmero Algoritmo Fatorial Subrotina FATORIAL(inteiro n, *fat) inteiro: i; fat 1; para i de 1 at n passo 1 faa fat fat * i; fim para; Fim Subrotina; inteiro: limite, retorne; escreva(Qual fatorial: ); leia (limite); FATORIAL (limite,retorne); escreva (retorne); Fim Algoritmo. Neste exemplo, indicado o uso da passagem de parmetro por referncia (varivel fat por meio do smbolo *). A varivel n neste exemplo continua sendo do tipo passagem de parmetro por valor, pois ela receber o valor fornecido varivel limite, por meio da sub-rotina FATORIAL. Esse valor estabelece o nmero de vezes que o looping deve ser executado. Dentro do procedimento encontrada a varivel fat que do tipo passagem de parmetro por referncia e possui no final o valor acumulado do clculo da fatorial. Ao trmino do looping, o valor da varivel fat transferido para fora da rotina, ou seja, transferido para a varivel retorne do programa principal. Ento, a instruo escreva(retorne) imprime o valor recebido de dentro da sub-rotina por meio da varivel fat. A passagem de parmetro por referncia utilizada para que se tenha a sada de um determinado valor de dentro de uma sub-rotina. 11.4 FUNO

As funes, embora bastante semelhantes s sub-rotinas, tm a caracterstica especial de retornar ao algoritmo que as chamou um valor associado ao nome da funo. Esta caracterstica permite uma analogia com o conceito de funo matemtica. A declarao de uma funo idntica de uma sub-rotina, com exceo de que necessrio o seu tipo, ou seja, o tipo do valor que ser retornado. Alm de numricas, as funes podem ser lgicas ou literais. No formato abaixo, funo uma palavra chave, tipo o tipo do valor que ser retornado, NOME o nome dado funo e lista de paSistemas Operacionais Lucilia Ribeiro
60

11 Modularizao

rmetros formais a lista dos objetos que sero substitudos por outros objetos, fornecidos quando da chamada da funo. Funo tipo NOME(lista-de-parmetros-formais) Declaraes dos objetos locais funo; Comandos da funo; Fim Funo A chamada de uma funo feita com uma referncia a seu nome e a indicao dos parmetros reais em uma expresso. A seguir, apresenta-se a forma geral para a ativao da funo, onde NOME o nome dado funo, e lista de parmetros reais a lista de objetos que substituiro os parmetros formais durante a execuo da funo. Os parmetros reais devem concordar em nmero, ordem e tipo com os parmetros formais. NOME(lista-de-parmetros-reais); O fluxo de controle desviado para a funo, no momento em que ela ativada. Ao terminar a execuo dos comandos da funo, o fluxo de controle retorna ao comando seguinte quele onde ela foi ativada. So vlidas aqui as consideraes j feitas sobre passagem de parmetros. Exemplo 4: Escrever um algoritmo que retorne o valor da soma dos nmeros a e b. Algoritmo Calculo_Soma Funo real SOMA(real a, real b) SOMA a + b; Fim Funo; real: n1, n2; escreva(Informe o primeiro nmero: ); leia (n1); escreva(Informe o segundo nmero: ); leia (n2); escreva (A soma dos nmeros : , SOMA(n1,n2)); Fim Algoritmo. Exemplo 5: Escrever um algoritmo que apresente uma mensagem informando se dois nmeros so iguais ou diferentes Algoritmo Comparao Funo logica COMPARA(inteiro a, inteiro b) COMPARA a = b; Fim Funo; inteiro: n1, n2; escreva(Informe o primeiro nmero: ); leia (n1); escreva(Informe o segundo nmero: ); leia (n2); se (COMPARA(n1,n2) ento escreva (Nmeros Iguais) seno escreva (Nmeros Diferentes); fim se; Fim Algoritmo. Exemplo 6: Criar uma funo que efetue o clculo, segundo o parmetro de operao fornecido. Assim, essa funo dever receber trs parmetros, sendo os dois nmeros mais o operador para clculo. Se for +, soma os nmeros, se for -, subtrai, se for *, multiplica e se o operador for /, divide os valores.

Sistemas Operacionais Lucilia Ribeiro

61

11 Modularizao

Algoritmo Calculadora Subrotina ENTRADA escreva(Informe o primeiro nmero: ); leia (a); escreva(Informe o segundo nmero: ); leia (b); Fim Subrotina; Funo real CALCULO(real a, real b, caracter op) escolha op caso +: CALCULO a + b; caso -: CALCULO a - b; caso *: CALCULO a * b; caso /: CALCULO a / b; fim escolha; Fim Funo; Subrotina SADA escreva(O resultado : ,r); Fim Subrotina; Subrotina SOMA escreva(Soma); ENTRADA; r CALCULO(a, b, +); SADA; Fim Subrotina; Subrotina SUBTRAI escreva(Subtrao); ENTRADA; r CALCULO(a, b, -); SADA; Fim Subrotina; Subrotina MULTIPLICA escreva(Multiplicao); ENTRADA; r CALCULO(a, b, *); SADA; Fim Subrotina; Subrotina DIVIDE escreva(Diviso); ENTRADA; r CALCULO(a, b, /); SADA; Fim Subrotina; real: r, a, b; inteiro: opcao; opcao 0 enquanto (opcao <> 5) faa escreva(1 Soma); escreva(2 Subtrai); escreva(3 Multiplica); escreva(4 Divide); escreva(5 Sai do Programa); leia(opcao); se (opcao <> 5) ento escolha opcao Sistemas Operacionais Lucilia Ribeiro
62

11 Modularizao

caso 1: SOMA; caso 2: SUBTRAI; caso 3: MULTIPLICA; caso 4: DIVIDE; caso contrrio: escreva (Opo Invlida); fim escolha; fim se; fim enquanto; Fim Algoritmo. 11.5 EXERCCIOS

75) Faa uma funo que retorne 1 se o nmero digitado for positivo ou 0 se o nmero for negativo. 76) Faa uma funo que receba dois nmeros positivos por parmetro e retorne a soma dos N nmeros inteiros existentes entre eles. 77) Faa uma funo que receba trs nmeros inteiros: a, b e c, onde a maior que 1. A funo deve somar todos os inteiros entre b e c que sejam divisveis por a (inclusive b e c) e retornar o resultado para a funo principal. 78) Faa uma funo que transforme e mostre segundos em horas, minutos e segundos. Todas as variveis devem ser passadas como parmetro, no havendo variveis globais. 79) Faa uma funo que receba como parmetro um inteiro no intervalo de 1 a 9 e mostre a seguinte tabela de multiplicao (no exemplo, n = 9): 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18

9 12 15 18 21 24 27

16 20 24 28 32 36

25 30 35 40 45

36 42 48 54

49 56 63

64 72

81

80) Faa uma sub-rotina que receba as 3 notas de um aluno como parmetros e uma letra. Se a letra for A o procedimento calcula a mdia aritmtica das notas do aluno, se for P o procedimento calcula a mdia ponderada com pesos 5, 3 e 2. A mdia calculada deve ser devolvida ao programa principal para, ento, ser mostrada. 81) Faa uma sub-rotina que receba, por parmetro, a hora de incio e a hora de trmino de um jogo, ambas subdivididas em dois valores distintos: horas e minutos. O procedimento deve retornar a durao expressa em minutos, considerando que o tempo mximo de durao de um jogo de 24 horas e que o jogo pode comear em um dia e terminar no outro. 82) Faa uma sub-rotina que leia cinco valores inteiros e retorne o maior e o menor deles. 83) Faa uma funo que receba, por parmetro, uma matriz A[5,5] e retorne a soma dos seus elementos.

-xSistemas Operacionais Lucilia Ribeiro


63

Listas de Exerccios

Algoritmos e Linguagens Lucilia Ribeiro

64

LISTA 1: LGICA
01.Com as informaes a seguir, determine a extenso, a altura, a quantidade de operrios e o ms previsto para o trmino da construo de cinco novos viadutos em uma grande cidade: a) O viaduto mais curto no tem uma altura de 160 metros. b) A ponte cuja construo est prevista para terminar em janeiro e na qual trabalham 2850 operrios no ter uma extenso de 1900 metros, mas ter uma altura de 130 ou 160 metros. c) Os 2800 operrios no trabalham na obra de um viaduto com 140 metros de altura. d) O viaduto que ficar pronto em abril 300 metros mais extenso do que o mais alto entre os cinco viadutos em construo. e) A ponte de 1600 metros, na qual trabalham 2750 operrios, no ficar pronta em fevereiro nem em maio. f) O viaduto cuja construo est prevista para terminar em maro ser mais alto do que aquele de 1900 metros de extenso, porm ser mais baixo do que aquele que est sendo construdo por 2900 trabalhadores. g) O viaduto em cuja construo trabalham 2700 operrios no ser inaugurado em fevereiro e no ser o mais longo de todos. h) A ponte de 1600 metros no ter uma altura de 160 metros.

02. Cinco moradores de condomnios diferentes sofreram durante algum tempo com o

barulho de uma obra realizada perto de seus locais de moradia. Descubra a quantidade de prdios de cada condomnio, a distncia da obra e a durao do inconveniente barulho: a) A obra que tanto incomodou Alberto durou 3 meses a mais ou a menos do que a obra mais distante. b) A obra realizada mais rapidamente tinha uma distncia 50 metros menor do que aquela realizada no condomnio em que mora Mariana e 100 metros maior do que os barulhentos trabalhos que duraram 4 meses. c) Beatriz tinha que aumentar constantemente o volume da televiso em funo de uma obra 150 metros mais longe ou mais perto do que aquela realizada no condomnio com 10 prdios. d) O barulho ouvido por Lcia, que no mora em um condomnio com 10 nem com 17 prdios, durou 2 meses a mais do que o barulho que tirou o sossego daquele(a) que reside em um condomnio de 12 edifcios e um ms a menos do que o barulho vindo de uma obra 250 metros distante de uma das residncias. e) A obra realizada no condomnio com 14 edifcios era mais distante do que a obra suportada por Cludio e menos distante do que aquela que durou 6 meses.

Algoritmos e Linguagens Lucilia Ribeiro

65

LISTA 2: ESTRUTURA SEQENCIAL


01. Faa um algoritmo que escreva seu nome, endereo e seu time favorito. 02. Faa um algoritmo que leia trs nmeros, calcule e escreva a multiplicao dos trs. 03. Faa um algoritmo que leia a idade do pai e a idade do filho, calcule e escreva a
diferena de idade dos dois.

04. Faa um algoritmo que dado um nmero inteiro de 3 algarismos, inverter a ordem de seus algarismos e mostrar o novo nmero formado. Considere que os trs algarismos sejam diferentes de zero. 05. Faa um algoritmo que leia as medidas de um retngulo (comprimento e largura),
calcule e escreva sua rea.

06. Joo faz economias em dlar e deseja saber quanto vale em reais, faa um algorit-

mo que leia a quantidade de dlares que ele possui e o valor atual do dlar, calcule e escreva o valor convertido.

07. Uma pessoa construindo sua residncia resolveu colocar em sua casa uma caixa

para servir como reservatrio de gua. Considerando que a caixa seja retangular, faa um algoritmo que leia as dimenses da caixa (comprimento, altura e largura), calcule e escreva o volume de gua que pode ser armazenado.

08. O critrio de notas semestrais numa faculdade consiste em dois bimestres, sendo que, cada nota varia de 0 a 10 e tem os respectivos pesos 4 e 6. Elabore um algoritmo que leia as notas bimestrais, calcule e escreva a media semestral. 09. Um canal de notcias internacionais, previa temperatura mxima para Braslia de 85 graus Farenheit. Escrever um programa que lhe permita converter esta temperatura (e qualquer outra) para graus Celsius, sabendo que a relao entre elas C=5/9*(F32). 10. A conta de gua de uma residncia o resultado da soma da tarifa de gua com a tarifa de esgoto. Faa um algoritmo que leia a tarifa de gua, calcule a tarifa de esgoto (80% da tarifa de gua) e escreva o valor da conta a ser paga. 11. O valor do ICMS pago na venda de um produto de 12%. Faa um algoritmo que leia o valor do produto vendido, calcule e escreva o ICMS pago. 12. Maria e Jos resolveram abrir uma poupana conjunta, os dois tm economias guardadas, faa um algoritmo que leia o valor da economia de cada um, calcule e escreva a porcentagem de participao de cada scio. 13. Luciana distribui sua renda mensal da seguinte forma: 10% sade, 25% educao, 30% alimentao, 10% vesturio; 5% lazer, 20% outros. Faa um algoritmo que leia a renda mensal liquida de Luciana, calcule e escreva o valor aplicado em cada item acima citado. 14. Faa um algoritmo que leia quantos minutos por dia uma pessoa pode estudar Algoritmos, calcule e escreva ao final de 90 dias quanto tempo em horas ela estudou.

Algoritmos e Linguagens Lucilia Ribeiro

66

15. Faa um algoritmo que leia a distncia em centmetros entre duas Universidades,
calcule e escreva a distncia em KM.

16. Faa um algoritmo que leia o salrio mensal de um funcionrio e o percentual de


reajuste a ser aplicado. Calcule e escreva o valor do novo salrio.

17. Uma instituio de ensino realizou uma pesquisa sobre os eleitores de um municpio que participaram da ultima eleio. Faa um algoritmo que leia o total de votos brancos, nulos e vlidos. Calcule e escreva o percentual que cada um representa em relao ao total de eleitores. 18. Efetuar o clculo da quantidade de litros de combustvel gastos em uma viagem, sabendo-se que o carro faz 12 Km com um litro. Devero ser fornecidos o tempo gasto na viagem e a velocidade mdia. Utilizar as seguintes frmulas: Distncia = Tempo x Velocidade Litros Usados = Distncia / 12
O algoritmo dever apresentar os valores da velocidade mdia, tempo gasto na viagem, distncia percorrida e a quantidade de litros utilizados na viagem.

19. Criar um algoritmo que leia o peso de uma pessoa, s a parte inteira, calcular e imprimir: a) o peso da pessoa em gramas b) novo peso, em gramas, se a pessoa engordar 12% 20. Criar um algoritmo que leia um nmero entre 0 e 60 e imprimir o seu sucessor, sabendo que o sucessor de 60 0. No pode ser utilizado nenhum comando de seleo e nem de repetio.

21. Faa um algoritmo que dado um nmero inteiro que representa um nmero binrio
de cinco dgitos, determinar o seu equivalente decimal.

Algoritmos e Linguagens Lucilia Ribeiro

67

LISTA 3: ESTRUTURA CONDICIONAL


01. Escreva um programa que verifique a igualdade de dois nmeros inteiros e informe
ao usurio se os nmeros so ou no iguais.

02. Escreva um programa que receba como entrada trs nmeros inteiros, realize sua soma, verifique se essa soma maior ou igual a 100 e informe ao usurio o valor da soma e se a soma maior ou igual a 100 ou se menor do que 100. 03. Implemente um programa que receba como dados de entrada as quatro notas de
um aluno, calcule e imprima a mdia aritmtica das notas. O programa deve informar ao usurio as seguintes mensagens: Aluno Aprovado para mdia superior ou igual a 7,0 ou Aluno Reprovado para mdia inferior a 7,0.

04. Uma empresa resolve dar um aumento de 30% aos funcionrios que recebem um

salrio inferior a R$ 500,00. Implemente um programa que receba como dado de entrada o salrio de um funcionrio e imprima o valor do salrio reajustado, caso o funcionrio tenha direito ao aumento. Se o funcionrio no tiver direito ao aumento, informe isso atravs de uma mensagem.

05. Implemente um programa que verifique a validade de uma senha fornecida pelo

usurio. A senha 1234567. O programa deve imprimir uma mensagem de permisso ou de negao de acesso.

06. Implemente um programa que receba dois nmeros e imprima o menor deles.
imprima o seu peso ideal, usando as seguintes frmulas: homens: (72.7 * altura) - 58 mulheres: (62.1 * altura) - 44.7

07. Implemente um programa que receba a altura e o sexo de uma pessoa, calcule e

08. Em uma determinada disciplina, a nota final do estudante calculada a partir de 3

notas atribudas a um trabalho, a um teste em laboratrio e a uma prova escrita em sala de aula, respectivamente. As notas variam de 0 a 10 e a nota final a mdia ponderada das 3 notas anteriormente citadas. A seguir so apresentados os pesos das notas: Trabalho: peso 2 Teste em laboratrio: peso 2 Prova escrita em sala de aula: peso 6 Sabendo que foram dadas 64 aulas, implemente um programa que receba as 3 notas do estudante e o nmero de faltas, calcule e imprima a mdia final e uma mensagem de acordo com a seguinte regra: Se o nmero de faltas for superior a 25% das aulas dadas, REPROVADO POR FALTA Se o nmero de faltas for inferior ou igual a 25% das aulas dadas e a mdia final for igual ou superior a 7,0: ALUNO APROVADO Se o nmero de faltas for inferior ou igual a 25% das aulas dadas e a mdia final for inferior a 7,0 mas superior ou igual a 5,0: PROVA FINAL Se a mdia final for inferior a 5,0: ALUNO REPROVADO

09. Implemente um programa que receba a idade de uma pessoa e imprima mensagem
de acordo com os critrios: Menor de 16 anos:MENOR Entre 16 e 18 anos: EMANCIPADO Maior de 18 anos: MAIOR

Algoritmos e Linguagens Lucilia Ribeiro

68

10. Implemente um programa que receba como entrada o salrio de um funcionrio da


empresa e imprima o salrio reajustado de acordo com as seguintes regras: salrios at R$ 300,00, reajuste de 50%; salrios maiores que R$ 300,00, reajuste de 30%.

11. Fazer um programa que leia trs valores inteiros, determine e imprima o menor deles.

12. Dados trs valores, X, Y, 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.

Propriedade: o comprimento de cada lado de um tringulo menor que a soma dos comprimentos dos outros dois lados Eqiltero: trs lados iguais Issceles: dois lados iguais Escaleno: trs lados diferentes

13. Dados trs valores inteiros distintos, coloca-los em ordem crescente. 14. Desenvolva um programa que determine se um cliente de um banco excedeu o limite de crdito de sua conta. Os seguintes dados de cada cliente so solicitados: Nmero da conta Limite do Crdito Saldo no incio do ms Total de depsitos Total de retiradas

O programa deve receber esses dados, calcular o novo saldo (= saldo inicial + total de depsitos total de retiradas) e determinar se o novo saldo (caso negativo), supera o limite de crdito do cliente. Se superar, imprimir o nmero da conta do cliente, e uma mensagem indicando: CRDITO EXCEDIDO EM tantos reais.

15. Uma grande companhia qumica paga seus vendedores por comisso. Os vendedores recebem R$ 200,00 por semana mais 9 por cento de suas vendas brutas naquela semana. Por exemplo, um vendedor que vender o equivalente a R$ 500,00 em produtos em uma semana recebe R$ 200,00 mais 9 por cento de R$ 500,00, ou um total de R$ 745,00. Se por acaso, as vendas ultrapassarem R$ 1000,00, o vendedor recebe um prmio de R$ 800,00. Desenvolva um programa que receba as vendas brutas de um vendedor na ltima semana, calcule seu salrio e o exiba. 16. Desenvolva um programa que determine o pagamento bruto de um empregado. A companhia paga o valor de uma hora normal pelas primeiras 40 horas trabalhadas e paga o valor de uma hora extra (uma vez e meia a hora normal) para cada hora trabalhada depois de completadas as primeiras 40 horas. Solicite o nmero de horas trabalhadas, o valor da hora normal do trabalhador e exiba o pagamento bruto do funcionrio.
esquerda como da esquerda para a direita. Por exemplo, cada um dos inteiros seguintes, de cinco dgitos, palndromo: 12321, 55555, 45554 e 11611. Escreva um programa que leia um nmero de cinco dgitos e determine se ele e palndromo ou no. (Sugesto: use os operadores diviso e resto para separa o nmero em seus algarismos isolados)

17. Um palndromo um nmero que lido da mesma forma tanto da direita para a

18. Uma empresa deseja transmitir dados atravs do telefone, mas existe a preocupao de que seus telefones possam estar grampeados. Todos os seus dados so transmitiAlgoritmos e Linguagens Lucilia Ribeiro
69

dos como inteiros de quatro dgitos. A empresa pediu a voc que escrevesse um programa para criptografar os dados de forma que eles possam ser transmitidos com mais segurana. Seu programa deve ler um inteiro de quatro dgitos e criptograf-lo da seguinte maneira: substitua cada dgito pelo resultado da expresso ((soma daquele dgito com 7) % 10) (ou seja, o resto da diviso por 10 do nmero obtido pela soma daquele dgito com 7). Depois, troque o primeiro dgito pelo terceiro e troque o segundo dgito pelo quarto. A seguir, imprima o inteiro criptografado.

19. Faa um programa que pea um nmero ao usurio e imprima se o nmero par ou
mpar.

20. A prefeitura de Aparecida de Goinia abriu uma linha de crdito para os funcionrios

estatutrios. O valor mximo da prestao no poder ultrapassar 30% do salrio bruto. Fazer um algoritmo que permita entrar com o salrio bruto e o valor da prestao e informar se o emprstimo pode ou no ser concedido.

Algoritmos e Linguagens Lucilia Ribeiro

70

LISTA 4: SELEO DE MLTIPLA ESCOLHA


01. O prefeito do Rio de Janeiro contratou uma firma especializada para manter os nveis de poluio considerados ideais para um pas do 1 mundo. As indstrias, maiores responsveis pela poluio, foram classificadas em trs grupos. Sabendo-se que a escala utilizada varia de 0,05 e que o ndice de poluio aceitvel at 0,25, fazer um algoritmo que possa imprimir intimaes de acordo com o ndice e a tabela a seguir: ndice indstrias que recebero intimao 0,3 1 grupo 0,4 1 e 2 grupo 0,5 1, 2 e 3 grupos

ano. Aps a leitura escreva por extenso qual o ms lido. Caso o nmero digitado no esteja na faixa de 1..12 escreva uma mensagem informando o usurio do erro de digitao.

02. Faa um algoritmo que leia um nmero que represente um determinado ms do

03. Faa um algoritmo que leia um nmero qualquer. Caso o nmero seja par menor que 10, escreva Nmero par menor que Dez; caso o nmero digitado seja mpar menor que 10, escreva Nmero mpar menor que Dez; caso contrrio escreva Nmero fora do Intervalo. 04. Uma empresa ir dar aumento de salrio aos seus funcionrios de acordo com a
categoria de cada empregado. O aumento seguir as seguintes regras: a) Funcionrios das categorias A, C, F e H recebero 10% de aumento. b) Funcionrios das categorias B, D, E, I, J e T recebero 15% de aumento. c) Funcionrios das categorias K e R recebero 25% de aumento. d) Funcionrios das categorias L, M, N, O, P, Q, R e S recebero 35% de aumento. e) Funcionrios das categorias U, V, X, Y, W e Z recebero 50% de aumento. Faa um algoritmo que leia o nome, a categoria e o salrio do funcionrio e mostre o salrio reajustado.

05. Elabore um algoritmo que calcule o que deve ser pago por um produto, consideran-

do o preo normal de etiqueta e a escolha da condio de pagamento. Use os cdigos da tabela a seguir para ler qual a condio de pagamento escolhida e efetuar o clculo adequado. Condio de Pagamento vista em dinheiro ou cheque, recebe 10% de desconto vista no carto de crdito, recebe 5% de desconto Em duas vezes, preo normal de etiqueta sem juros Em trs vezes, preo normal de etiqueta mais juros de 10%

Cdigo 1 2 3 4

Algoritmos e Linguagens Lucilia Ribeiro

71

LISTA 5: REVISO
01. O nmero 3025 possui a seguinte caracterstica mostrada abaixo. Fazer um programa que leia um nmero inteiro de quatro dgitos e diga se tal nmero possui ou no tal caracterstica 30 + 25 = 55 55 = 3025

02. Numa certa loja de eletrodomsticos, o funcionrio encarregado da seo de televi-

sores recebe, mensalmente, um salrio fixo mais comisso. Essa comisso calculada em relao ao tipo e ao nmero de televisores vendidos por ms, obedecendo tabela abaixo: TIPO a cores preto e branco N DE TELEVISORES VENDIDOS maior ou igual a 10 menor do que 10 maior ou igual a 20 menor do que 20 COMISSES R$ 50,00 por televisor vendido R$ 5,00 por televisor vendido R$ 20,00 por televisor vendido R$ 2,00 por televisor vendido

Sabe-se, ainda, que ele tem um desconto de 8% sobre seu salrio fixo para o INSS. Se o seu salrio total (fixo + comisses INSS) for maior ou igual a R$ 500,00 ele ainda ter um desconto de 15%, sobre esse salrio total, relativo ao imposto de renda retido na fonte. Faa um programa que leia o valor do salrio fixo, o nmero de televisores a cores e o nmero de televisores preto e branco vendidos; calcule e escreva o seu salrio lquido.

03. Numa fbrica trabalham homens e mulheres divididos em trs classes:

A os que fazem at 30 peas por ms; B os que fazem de 31 a 35 peas por ms; C os que fazem mais de 35 peas por ms. A classe A recebe salrio-mnimo. A classe B recebe salrio-mnimo e mais 3% do salrio-mnimo por pea, acima das 30 iniciais. A classe C recebe salrio-mnimo e mais 5% do salrio-mnimo por pea acima das 30 iniciais. Fazer um programa que leia o nmero de peas fabricadas no ms, e calcule e escreva o salrio do operrio. Considere o salrio mnimo como uma constante no valor de R$ 240,00.

04. Uma grande companhia qumica paga seus vendedores por comisso. Os vendedo-

res recebem R$ 200,00 por semana mais 9 por cento de suas vendas brutas naquela semana. Por exemplo, um vendedor que vender o equivalente a R$ 500,00 em produtos em uma semana recebe R$ 200,00 mais 9 por cento de R$ 500,00, ou um total de R$ 245,00. Se por acaso, as vendas ultrapassarem R$ 1.000,00, o vendedor recebe um prmio de R$ 800,00. Desenvolva um programa em Pascal que receba as vendas brutas de um vendedor na ltima semana, calcule seu salrio e o exiba.

05. Uma empresa deseja transmitir dados atravs do telefone, mas existe a preocupao de que seus telefones possam estar grampeados. Todos os seus dados so transmitidos como inteiros de quatro dgitos. A empresa pediu a voc que escrevesse um programa para criptografar os dados de forma que eles possam ser transmitidos com mais segurana. Seu programa deve ler um inteiro de quatro dgitos e criptograf-lo da seguinte maneira: substitua cada dgito pelo resultado da expresso ((soma daquele dgito com 9) % 5) (ou seja, o resto da diviso por 5 do nmero obtido pela soma daquele dgito
72

Algoritmos e Linguagens Lucilia Ribeiro

com 9). Depois, troque o primeiro dgito pelo quarto e troque o segundo dgito pelo terceiro. A seguir, imprima o inteiro criptografado.

06. Um endocrinologista deseja controlar a sade de seus pacientes e, para isso, se utiliza do ndice de Massa Corporal (IMC). Sabendo-se que o IMC calculado atravs da frmula IMC= peso / altura 2 , criar um algoritmo que apresente o nome do paciente e sua faixa de risco, baseando-se na seguinte tabela:
IMC abaixo de 20 a partir de 20 at 25 acima de 25 at 30 acima de 30 at 35 acima de 35 FAIXA DE RISCO abaixo do peso normal excesso de peso obesidade obesidade mrbida

07. Desenvolva um programa que determine o pagamento bruto de um empregado. A

companhia paga o valor de uma hora normal pelas primeiras 40 horas trabalhadas e paga o valor de uma hora extra (uma vez e meia a hora normal) para cada hora trabalhada depois de completadas as primeiras 40 horas. Solicite o nmero de horas trabalhadas, o valor da hora normal do trabalhador e exiba o pagamento bruto do funcionrio.

08. Uma locadora de filmes tem a seguinte regra para aluguel de fitas:

Segunda, Tera e Quinta (2, 3 e 5), um desconto de 40% em cima do preo normal. E Quarta, Sexta, Sbado e Domingo (4, 6, 7 e 1), preo normal. Aluguel de Fitas Comuns: preo normal e Aluguel de Lanamentos: 15% em cima do preo normal Desenvolver um programa para ler o preo normal da fita, o dia da semana (1 a 7) e se ele lanamento (1) ou no (2). Calcule e imprima o preo final a ser pago pelo cliente.

09. Em uma danceteria o preo da entrada sofre variaes. Segunda, Tera e Quinta (2,

3 e 5), ela oferece um desconto de 25% do preo normal de entrada. Nos dias de msicas ao vivo, o preo da entrada ainda acrescido em 15% em relao ao preo normal da entrada. Fazer um programa que leia o preo normal da entrada, o dia da semana (1 a 7) e se dia de msica ao vivo (1) ou no (2). Calcular e imprimir o preo final que dever ser pago pela entrada.

nrio pelo governo. Seu programa dever ler o salrio anual do funcionrio e o imposto j pago. O imposto calculado conforme a tabela abaixo: SALRIO ANUAL mais de 12 salrios mnimos de 5 a 12 salrios mnimos menos de 5 salrios mnimos IMPOSTO BRUTO 20% do salrio anual 8% do salrio anual Isento

10. Desenvolver um programa que determine imposto de renda cobrado de um funcio-

O programa calcular e imprimir o imposto a ser pago ou devolvido, que a diferena entre o imposto j pago e o imposto bruto. Se a diferena for negativa sair a mensagem de imposto a restituir, caso contrrio imposto a receber. Aps a mensagem, imprima o valor do imposto a pagar/restituir. Considere o salrio mnimo como uma constante no seu programa igual a 240.00. Exemplo: Salrio Anual = 12000,00. Imposto Pago = 700,00 Bem, o salrio anual maior que 12 salrios-mnimos (12*240), portanto utilizarei a taxa de 20% do salrio anual = 2400,00 (imposto bruto). Considerando que paguei 700,00, o imposto lquido ser 2400 700 = 1700 a ser pago. Algoritmos e Linguagens Lucilia Ribeiro
73

11. Um certo ao classificado de acordo com o resultado dos trs testes abaixo, que devem determinar se o mesmo satisfaz as seguintes especificaes: Contedo de Carbono abaixo de 7 Dureza Rockwell maior do que 50 Resistncia trao maior do que 80.000 psi
Ao ao atribudo o grau 10 se passar por todos os testes; 9 se passar somente nos testes 1 e 2; 8 se passar no teste 1; 7 se no passar em nenhum dos 3 testes. Desenvolver um programa que leia o contedo do carbono (CC), a dureza Rockwell (DR) e a resistncia trao (RT) e fornea a classificao do ao.

12. Dado um nmero de 3 algarismos construir outro nmero de 4 algarismos de acordo


com a seguinte regra: os trs primeiros algarismos, contados da esquerda para a direita so iguais aos do nmero dado; o quarto algarismo um dgito de controle calculado da seguinte forma: primeiro algarismo + segundo algarismo * 3 + terceiro algarismo * 5; o dgito de controle igual ao resto da diviso dessa soma por 7. Exemplo: Nmero 479 (trs algarismos) Novo Nmero: 974 (trs algarismos de trs para frente) (4+(7*3)+(9*5))%7 = 70%7 = 0. O novo nmero ser 9740 e o quarto

ser:

Algoritmos e Linguagens Lucilia Ribeiro

74

LISTA 6: ESTRUTURAS DE REPETIO


01. Escreva um programa que apresente a srie de Fibonacci at o dcimo quinto termo. A srie de Fibonacci formada pela seqncia: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... etc. Esta srie se caracteriza pela soma de um termo atual como seu anterior subseqente, para que seja formado o prximo valor da seqncia.

02. Elaborar um programa que calcule potncias. O usurio deve digitar a base e o expoente, e o programa deve apresentar o resultado. Esse programa dever ser executado at que o usurio digite 0 (zero) para a base.
dos valores pares situados na faixa numrica de 50 a 70.

03. Elaborar um programa que apresente os resultados da soma e da mdia aritmtica

04. Elaborar um programa que possibilite calcular a rea total de uma residncia (sala, cozinha, banheiro, quartos, rea de servio, quintal, garagem, etc.) O programa deve solicitar a entrada do nome, a largura e o comprimento de um determinado cmodo. Em seguida, deve apresentar a rea do cmodo lido e tambm uma mensagem solicitando do usurio a confirmao de continuar calculando novos cmodos. Caso o usurio responda N (no), o programa deve apresentar o valor total acumulado da rea residencial. 05. Fazer um programa que leia um nmero indeterminado de dados contendo a idade de um indivduo. O ltimo dado, que no entrar nos clculos, contm o valor da idade igual a zero. Calcule e escreva a idade mdia deste grupo de indivduos. 06. Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de
10 pessoas. Fazer um programa que calcule e escreva: A maior e a menor altura do grupo A mdia de altura das mulheres O nmero de homens

07. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram

ou no de um novo produto lanado no mercado. Para isso, forneceu o sexo do entrevistado e sua resposta (sim ou no). Sabendo-se que foram entrevistadas 10 pessoas, fazer um programa que calcule e escreva: O nmero de pessoas que responderam sim O nmero de pessoas que responderam no A porcentagem de pessoas do sexo feminino que responderam sim A porcentagem de pessoas do sexo masculino que responderam no

08. A converso de graus Farenheit para centgrados obtida pela seguinte frmula: C = 5/9 (F 32). Fazer um programa que calcule e escreva uma tabela de centgrados em funo de graus Farenheit, que variam de 50 a 150 de 1 em 1. 09. Foi feita uma pesquisa de audincia de canal de TV em vrias casas de uma certa
cidade, num determinado dia. Para cada casa visitada, fornecido o nmero do canal (4, 5, 7, 12) e o nmero de pessoas que o estavam assistindo naquela casa. Se a televiso estivesse desligada, nada era anotado, ou seja, esta casa no entrava na pesquisa. Fazer um programa que: Leia um nmero indeterminado de dados, sendo que o FLAG corresponde ao nmero do canal igual a zero Calcule a porcentagem de audincia para cada emissora Escreva o nmero do canal e a sua respectiva porcentagem
75

Algoritmos e Linguagens Lucilia Ribeiro

10. Fazer um programa que calcule e escreva o valor de S:


S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50

11. Fazer um programa que calcule e escreva o valor de S:


S = 37x38/1 + 36x37/2 + 35x36/3 + ... + 1x2/37

12. Fazer um programa que calcule e escreva o valor de S:


S = 1/1 + 2/4 + 3/9 + 4/16 + 5/25 + 6/36 + ... + 10/100

13. Fazer um programa que calcule e escreva o valor de S:


S = 1000/1 + 997/2 + 994/3 + 991/4 + ...

14. Fazer um programa que calcule e escreva o valor de S:


S = 480/10 + 475/11 + 470/12 + 465/13 + ...

15. Escreva um programa que some uma seqncia de inteiros. Admita que o primeiro inteiro lido especifica o nmero de valores que ainda devem ser fornecidos. Seu programa deve ler apenas um valor cada vez que leia for executado. Uma seqncia tpica de entrada poderia ser: 5 100 200 300 400 500, onde o 5 indica que os 5 valores subseqentes devem ser somados. 16. Uma loja de venda de produtos por reembolso postal vende cinco produtos diferentes cujos preos de varejo so mostrados na tabela a seguir: Nmero do Produto 1 2 3 4 5 Preo de Varejo 2,98 4,50 9,98 4,49 6,87

Escreva um programa que leia uma srie de pares de nmeros como se segue: (nmero do produto, quantidade vendida em um dia). Seu programa deve usar uma instruo escolha para ajudar a determinar o preo de varejo de cada produto. Seu programa deve calcular e mostrar o valor total de todos os produtos vendidos na semana passada.

17. Fazer um programa para ler a base e a altura de 10 tringulos e imprimir suas reas 18. Fazer um programa para ler um valor x qualquer e calcular
Y = (x+1)+(x+2)+(x+3)+(x+4)+...+(x+100)

19. Fazer um programa para gerar os termos da seguinte Progresso Geomtrica: 3, 9,


27, 81,.... Calcule e mostre o 20 termo e a soma dos termos da PG.

mero de Dependentes e o Nmero de Horas Trabalhadas. Pede-se um programa que imprima, para cada funcionrio, o seu Nome, Salrio Bruto, Salrio Lquido e o Valor Descontado. A empresa paga R$ 12,50 por hora de trabalho e R$ 125,55 por dependente, e ainda faz um desconto de 12% sobre o salrio bruto. Pede-se ainda que seja impresso o total de funcionrios da empresa e o total gasto com salrios. Para encerrar a entrada de dados, considere o nome igual a FIM

20. Dado um nmero indeterminado de funcionrios, onde so fornecidos o Nome, N-

[
Algoritmos e Linguagens Lucilia Ribeiro
76

LISTA 7: VETORES E MATRIZES


VETORES

01. Elabore um Programa que leia uma seqncia de nmeros, e os mostre por ordem
inversa.

02. Elabore um Programa que dada uma seqncia de nmeros, indique qual a porcentagem que cada um representa em relao ao total. 03. Elabore um programa que:
Leia 100 valores numricos e os armazene num vetor A Calcule e escreva Onde ai o i-simo valor armazenado na varivel A

Calcule e escreva quantos termos da srie tm o numerador inferior ao denominador

04. Fazer um algoritmo que: a) leia uma frase de 80 caracteres, incluindo brancos; b) conte quantos brancos existem na frase; c) conte quantas vezes a letra A aparece; d) conte quantas vezes ocorre um mesmo par de letras na frase e quais so elas; e) imprima o que foi calculado nos itens b, c e d. 05. Dado um conjunto de 100 valores numricos disponveis num meio de entrada qualquer, fazer um algoritmo para armazen-los numa varivel composta B, e calcular e imprimir o valor do somatrio dado a seguir: S = (b1 b100)3 + (b2 b99)3 + (b3 b98)3 + + (b50 b51)3 Exemplo: B 210 160 33 97 1 2 99 100 S = (210 97)3 + (160 33)3 +

06. Fazer um algoritmo que: a) leia um conjunto de valores inteiro correspondentes a

80 notas dos alunos de uma turma, notas estas que variam de 0 a 10; b) calcule a freqncia absoluta (nmero de vezes em que aquela nota aparece no conjunto de dados); c) imprima uma tabela contando os valores das notas (de 0 a 10) e suas respectivas freqncias absoluta.

07. Fazer um programa que leia diversos pares de conjuntos numricos e que imprima a

identificao dos pares de conjuntos disjuntos (aqueles que no possuem elementos comuns a ambos). Os elementos de cada par de conjuntos so precedidos pelo nome que identifica o par e pelo nmero de elementos de cada conjuntos. Aps o ltimo par de conjuntos vem como identificao do par o literal VAZIO. O nmero mximo de elementos de cada conjunto 250.
77

Algoritmos e Linguagens Lucilia Ribeiro

08. Uma grande firma deseja saber quais os trs empregados mais recentes. Fazer um programa para ler um nmero indeterminado de informaes (mximo de 300) contendo o nmero do empregado e o nmero de meses de trabalho deste empregado e imprimir os trs mais recentes. Obs.: A ltima informao contm os dois nmeros iguais a zero. No existem dois empregados admitidos no mesmo ms. 09. Fazer um algoritmo para corrigir provas de mltipla escolha. Cada prova tem 10 questes, cada questo valendo um ponto. O primeiro conjunto de dados a ser lido ser o gabarito para a correo da prova. Os outros dados sero os nmeros dos alunos e suas respectivas respostas, e o ltimo nmero, do aluno fictcio, ser 9999. o algoritmo dever calcular e imprimir: a) para cada aluno, o seu nmero e sua nota; b) a porcentagem de aprovao, sabendo-se que a nota mnima 6;
GABARITO RESPOSTAS N NOTA

10. Fazer um algoritmo que: a) leia o valor de M (M <= 30) e os M valores de uma vari-

vel composta A; b) leia o valor de N (N <= 20) e os N valores de uma varivel composta B; c) determine o conjunto C = A U B (A unio com B), onde C no dever conter elementos repetidos (A e B no contm elementos repetidos); d) imprima os elementos contidos em A, B e C. Fazer um algoritmo que: a) lei o nmero de elementos do conjunto A (NA<=100) e seus respectivos elementos em ordem crescente; b) lei o nmero de elementos do conjunto B (NB<=100) e seus respectivos elementos em ordem crescente; c) crie e imprima um conjunto C, ordenado, de tamanho NA + NB, a partir dos conjuntos originais de A e B.

11. Escreva um algoritmo que procure por um determinado elemento em um vetor e imprima quantas vezes ele aparece no vetor (caso ele esteja no vetor). Seu algoritmo deve, inicialmente, ler os valores e armazen-los em um vetor de 8 posies. 12. Escreva um algoritmo que descubra qual o maior elemento de um vetor e o coloque na ltima posio do mesmo, comparando pares de elementos e permutando-os quando estiverem foram de ordem. Exemplo com um vetor de 5 elementos: A = [8 7 3 1 2] 78 38 18 28 13.. Escreva um algoritmo que faa o mesmo procedimento do algoritmo do exerccio
anterior para todos os elementos do vetor.

N<=100) sem usar um vetor auxiliar. Leia os elementos a serem colocados no vetor, bem como a dimenso do mesmo.

14. Escreva um algoritmo que inverta a ordem de um vetor A de N posies (com

15. Dados dois vetores A e B em ordem crescente (assuma que A e B sero digitados em ordem crescente), construa um vetor C resultante da intercalao destes 2 vetores de modo que C j seja gerado em ordem crescente. Considere que a dimenso mxima de C 100. Entretanto, os vetores podem ter dimenses distintas (ex.: A ter 6 elementos e B ter 3). Pea ao usurio para informar as dimenses e os elementos dos vetores. No permitido colocar um vetor aps o outro em C e fazer a ordenao em seguida.
Algoritmos e Linguagens Lucilia Ribeiro
78

Observao: O primeiro vetor tem dimenso necessariamente >= 1. O usurio pode escolher a dimenso do primeiro vetor = 100. Neste caso, no h intercalao de vetores e o vetor resultante o primeiro vetor. Caso contrrio, h intercalao de vetores e, neste caso, o segundo vetor tem dimenso necessariamente >= 1.

16. Encontre o maior elemento de um vetor A e coloque-o na 1 posio do mesmo (Efetue uma troca com o maior elemento cuja posio dever estar armazenada na varivel POS, se necessrio, isto , se o primeiro elemento j no for o maior de todos). Dimenso mxima do vetor = 100. 17. Ordene o vetor A em ordem decrescente, adotando o seguinte procedimento:
- coloque na 1 posio do vetor o maior elemento do mesmo - coloque na 2 posio do vetor o segundo maior elemento do mesmo; - coloque na 3 posio do vetor o terceiro maior elemento do mesmo etc....

18. Dado um vetor ordenado em ordem crescente de valores do tipo caracter (assuma

que os elementos do vetor sero digitados em ordem crescente), verifique se uma CHAVE (dada) pertence ao vetor (CHAVE elemento a ser pesquisado). Compare a CHAVE com o elemento do meio do vetor. Se a CHAVE for maior que tal elemento, restrinja a busca segunda metade do vetor. Em caso contrrio, pesquise na primeira metade. Repita o processo at que a CHAVE seja encontrada. Imprima a posio do vetor onde a CHAVE ocorre ou uma mensagem, caso voc conclua que a pesquisa no foi bem sucedida. Exemplo: Seja VET o vetor abaixo e CHAVE = G. VET A 1 B 2 C 3 D 4 E 5 F 6 F G 7 G H 8 H

CHAVE > VET[MEIO] procurar na segunda metade E CHAVE > VET[MEIO] procurar na segunda metade

Tal mtodo chama-se Pesquisa Binria. Neste caso, a pesquisa foi concluda com sucesso. O elemento procurado se encontra na posio POS = 7. MATRIZES

19. Elabore um Programa que:


Leia uma matriz inteira A de M x N, onde os elementos de cada linha e os valores de M e N so fornecidos ( M<=20, N<=10); Imprima a matriz lida; Calcule e imprima uma matriz modificada B (M x N+1), sendo que os elementos da (N+1)-sima coluna so formados com os produtos dos elementos da mesma linha. EXEMPLO: A B 2 3 2 3 6 4 5 4 5 20

20. Elabore um Programa que leia e imprima uma matriz cujo contedo a populao dos 10 municpios mais populosos de cada um dos 26 estados brasileiros. Determinar e imprimir o nmero do municpio mais populoso e o nmero do estado a que pertence.
Algoritmos e Linguagens Lucilia Ribeiro
79

Considerando que a primeira coluna contm sempre a populao da capital do estado, calcular a mdia da populao das capitais dos 26 estados. 1 1 2 . . . 26 2 ... 10 POPULAO[i,j] Populao do j-simo municpio do i-simo estado.

21. A composio dos custos das diversas atividades de construo de um prdio feita

a partir da elaborao de um quadro de quantitativos dos diversos recursos envolvidos em cada atividade. Estes recursos so de vrios tipos e envolvem principalmente os custos mais diretos, como, por exemplo, matrias-primas, mo-de-obra, hora de equipamento etc. Sendo conhecidos os custos unitrios para cada recurso envolvido, chega-se facilmente ao custo final unitrio de cada atividade. A este custo so acrescidos os percentuais de custos indiretos (administrativos), impostos, depreciao de equipamentos, leis sociais etc., totalizando o preo final para a execuo de cada fase. Este procedimento bsico adotado em vrias empreiteiras de obras e o objetivo deste trabalho fazer um algoritmo que execute estes clculos para auxiliar o analista de custos de uma empreiteira. Supondo-se que na execuo do prdio so realizados quatro tipos de atividades e que cada uma consome os recursos especificados na tabela dada a seguir e que as despesas indiretas (administrao) so levantadas a cada ms, fazer um programa que: Leia o percentual de adminstrao do ms; Leia os custos unitrios dos sete recursos envolvidos; Leia um conjunto de 4 atividades contendo os quantitativos de recursos envolvidos em cada atividade; Calcule e imprima: i. O preo unitrio de custo (direto + administrao) de cada atividade; ii. O preo unitrio que a empreiteira deve cobrar em cada atividade, para que tenha 36% de lucro; iii. Considerando o percentual de 16% para leis sociais, incidentes sobre a mode-obra, quanto deve ser recolhido para cada unidade de atividade; iv. Considerando o percentual de administrao fornecido + 36% de lucro + 16% de leis sociais, qual ser o preo a ser cobrado pela empreiteira para a construo de uma obra que envolva as seguintes atividades: 50 m3 de fundao; 132 m2 de alvenaria, 200 m3 de estrutura e 339 m2 de acabamento; v. Para a mesma obra acima, qual ser a quantidade total de cada recurso envolvido? Cimento (Kg) 50 20 70 40 Areia (m3) 0,4 0,3 0,3 0,2 Brita (m3) 0,6 0 0,7 0 Pedreiro (h) 5 2 6 9 Servente (h) 3 1 3 5 Tijolo (un) 0 100 0 0 Betoneira (h) 3 1 35 1

Recurso Atividade Fundao m3 Alvenaria m2 Estrutura m3 Acabamento m2

22. Escreva um algoritmo que leia uma matriz quadrada A de dimenso N x N (N<=20)
de valores inteiros, calcule e imprima a soma dos elementos da diagonal secundria. Coloque os elementos da diagonal secundria em um vetor V. Seu algoritmo deve pedir ao usurio para informar a dimenso da matriz a ser digitada, considerando a restrio para N definida anteriormente.
80

Algoritmos e Linguagens Lucilia Ribeiro

23. Dada uma matriz A de dimenso N x M (N<=20 e M<=20), calcule sua transposta.
Imprima a matriz original e a sua transposta. Seu algoritmo deve pedir ao usurio para informar a dimenso da matriz a ser digitada, considerando as restries para N e M definidas anteriormente.

24. Fazer um programa que carregue o relacionado abaixo. O programa deve mostrar
para cada produto, a loja que tem o menor preo Um vetor com oito posies com os cdigos das lojas; Um outro vetor com quatro posies com os cdigos dos produtos; Uma matriz com os preos de todos os produtos em cada loja;

25. Faa um programa que carregue uma matriz 3 x 4, calcule e mostre:


A quantidade de elementos pares; A soma dos elementos mpares; A mdia de todos elementos.

26. Faa um programa que:


Receba o preo de 10 produtos e armazene-os em um vetor; Receba a quantidade estocada de cada um desses produtos em cinco armazns diferentes, utilizando uma matriz 5 x 10. Calcule e mostre: a) A quantidade de produtos estocados em cada um dos armazns; b) A quantidade de cada um dos produtos estocados em todos os armazns juntos; c) O preo do produto que possui maior estoque em um nico armazm; d) O menor estoque armazenado; e) O custo de cada armazm.

27. Faa um programa que carregue uma matriz 4 x 5, calcule e mostre um vetor com

cinco posies, onde cada posio contm a soma dos elementos de cada coluna da matriz. Mostre apenas os elementos do vetor maiores que 10. se no existir nenhum elemento maior que 10 mostre uma mensagem.

28. Faa um programa que receba a idade de 8 alunos e armazene-as em um vetor, em

um outro vetor armazene o cdigo de 5 disciplinas e em uma matriz armazene a quantidade de provas que cada aluno fez em cada disciplina. Calcule e mostre: a) A quantidade de alunos com idade entre 18 e 25 anos e que fizeram mais de duas provas em uma disciplina com cdigo digitado pelo usurio. O usurio pode digitar um cdigo que no est cadastrado; nesse caso, mostrar mensagem. b) Uma listagem com o nmero do aluno e o cdigo da disciplina dos alunos que fizeram menos de trs provas. Analisar cada disciplina. c) A mdia de idade dos alunos que no fizeram nenhuma prova em alguma disciplina. Cuidado para no contar duas vezes o mesmo aluno.

29. Escreva um algoritmo que receba uma matriz de nmeros inteiros NxN, com N no mximo 100, e mostre uma mensagem dizendo se a matriz digitada simtrica. Uma matriz simtrica possui A[i,j] = A[j,i]. 30. Escreva um algoritmo que receba uma matriz de nmeros inteiros NxN, com N no mximo 100, e verifique se essa matriz forma o chamado quadrado mgico. Um quadrado mgico formado quando a soma dos elementos de cada linha igual soma dos elementos de cada coluna e igual soma dos elementos da diagonal principal e igual, tambm, soma dos elementos da diagonal secundria.

[
Algoritmos e Linguagens Lucilia Ribeiro
81

LISTA 8: REGISTROS
01. Considere as seguintes definies em seu algoritmo. Usando tais definies, escreva um algoritmo que imprima o produto de maior sada. Registro = regProduto inteiro: baixa[4,6], cod; caracter: nome; real: preco; fimregistro; regProduto: produto[500]; 02. Considerando as definies apresentadas para o exerccio anterior, elabore um algoritmo que imprima um relatrio com a semana de maior sada de cada produto. 03. Uma determinada biblioteca possui obras de cincias exatas, humanas e biolgicas,
totalizando 300 volumes, 100 de cada rea. O proprietrio resolveu informatiz-la e, para tal, agrupou as informaes sobre cada livro do seguinte modo: Cdigo de Catalogao: ______ Doado: _______ Nome da Obra: _______________________________________________________ Nome do Autor: ______________________________________________________ Editora: _______________________________________ Nmero de pginas: _____ a) Construa um algoritmo que declare tal estrutura e rena todas as informaes de todas as obras em 3 vetores distintos para cada rea. Faa com que o cdigo de catalogao seja gerado automaticamente (iniciando pelo cdigo = 1). Cuidado com dados invlidos para doao e para nmero de pginas. b) Elabore um trecho de algoritmo que, usando como premissa o que foi feito no item a), realize uma consulta s informaes. O usurio fornecer o cdigo da obra e sua rea. Existindo tal livro, o algoritmo informa os dados da obra. Caso contrrio, ele imprime uma mensagem informando a no-existncia ou o no-cadastramento do livro naquela rea. A consulta repete-se at que o usurio fornea o cdigo finalizador com valor -1.

04. Utilizando o exerccio anterior sobre biblioteca, escreva um programa que liste todas
as obras de cada rea que representem livros doados.

05. Faa um programa que realize o cadastro de contas bancrias com as seguintes
informaes: nmero da conta, nome do cliente e saldo. O banco permitir o cadastramento de apenas 15 contas e no pode haver mais de uma conta com o mesmo nmero. Crie o menu de opes a seguir: Menu de opes: 1. Cadastrar contas 2. Visualizar todas as contas de um determinado cliente 3. Excluir a conta com menor saldo (supondo a no existncia de saldos iguais) 4. Sair

Algoritmos e Linguagens Lucilia Ribeiro

82

LISTA 9: MODULARIZAO
01. A avaliao de aproveitamento de uma certa disciplina feita atravs de 4 provas
mensais no valor de 20 pontos e uma prova final no valor de 40 pontos. A nota final obtida somando-se as 3 melhores notas, dentre as provas mensais, com a nota da prova final. O conceito final dados atendendo-se ao seguinte critrio:
Faixa 90 a 100 80 a 89 70 a 79 60 a 69 40 a 59 0 a 39 Conceito A B C D E F

Fazer uma sub-rotina que, recebendo como parmetro 4 (quatro) nmeros inteiros, devolva ao mdulo que a chamou a soma dos 3 maiores nmeros dentre os 4 nmeros recebidos. Fazer um algoritmo que: Leia um conjunto de 80 registros contendo, cada um, o nmero do aluno, as 4 notas mensais e a nota da prova final Calcule, para cada aluno, sua nota final, utilizando a sub-rotina anterior Verifique o conceito obtido por cada aluno Escreva, para cada aluno, o seu nmero, sua nota final e seu conceito.

02. Construir uma funo que receba como parmetro de entrada um nmero inteiro

positivo e devolva um dgito verificador conforme o processo de clculo descrito a seguir. Utilize como exemplo o nmero 811057, que usado como 8110573: Cada algarismo do nmero multiplicado por um peso comeando de 2 e crescendo de 1, da direita para a esquerda: 8x7 , 1x6 , 1x5 , 0x4 , 5x3 , 7x2; Somam-se as parcelas obtidas: 56 + 6 + 5 + 0 + 15 + 14 = 96; Calcula-se o resto da diviso desta soma por 11: 96 / 11 = 8, e sobra resto 8 Subtrai-se de 11 o resto obtido: 11 8 = 3 Se o valor encontrado for 10 ou 11, o dgito verificador ser 0; nos outros casos, o dgito verificador o prprio valor encontrado. Escrever um algoritmo capaz de: a) ler um conjunto de 100 registros contendo, cada um, o nome de uma pessoa e seu nmero de CPF b) imprimir, para cada pessoa, os seus dados de entrada mais a mensagem vlido ou invlido, conforme a situao do nmero de CPF. c) utilize a funo acima para calcular os dgitos verificadores.

OBS.: um n de CPF validado atravs de seus dois ltimos dgitos (dgitos verificadores, denominados controle). Por exemplo, o CPF 230.860.256-20 validado pelos dgitos verificadores 20. o esquema de verificao o seguinte: 230860256 (funo) dgito verificador igual a 2 2308602562 (funo) dgito verificador igual a 0

03. Fazer uma sub-rotina, cujo cabealho dado por: QUANTOSDIAS(dia,ms,ano,n), onde dia, ms e ano so parmetros de entrada; n um parmetro de sada que conter o nmero de dias do ano at a data fornecida.
Para calcular quantos dias tem o ano at uma data fornecida, preciso verificar o nmero de dias de cada ms. O ms de fevereiro pode ter 28 ou 29 dias, dependendo de o Algoritmos e Linguagens Lucilia Ribeiro
83

ano ser bissexto ou no. Um ano bissexto se for divisvel por 400, ou se for divisvel por 4 e no o for por 100. Fazer um algoritmo que: a) leia um conjunto de registro contendo, cada um, duas datas. O ltimo registro, que ser utilizado como flag, conter os valores 0,0,0,0,0,0; b) verifique se as datas esto corretas (ms entre 1 e 12, dia de acordo com o ms e se ambas esto dentro do mesmo ano). Se alguma das datas no estiver correta, escreva data invlida; c) verifique, se as datas estiverem corretas, qual a diferena, em dias, entre essas duas datas

04. Fazer uma funo que converta graus para radianos. 05. Criar uma funo que possa calcular a raiz de um nmero em qualquer ndice. Esta
uma funo importante, pois a maioria das linguagens s oferece a funo raiz quadrada. Lembrando que An = exp(n * log(A)

06. Criar uma funo que verifique se um nmero primo (500 PG.410 EX.470) 07. Foi realizada uma pesquisa de algumas caractersticas fsicas de cinco habitantes de uma certa regio. De cada habitante foram coletados os seguintes dados: sexo, cor dos alhos (A azuis ou C castanhos), cor dos cabelos (L louros, P pretos ou C castanhos) e idade. a) Faa uma funo que leia esses dados em um vetor. Determine, por meio de outra funo, a mdia de idade das pessoas com olhos castanhos e cabelos pretos. Mostre esse resultado no programa principal. b) Faa uma funo que determine e devolva ao programa principal a maior idade entre os habitantes. c) Faa uma funo que determine e devolva ao programa principal a quantidade de indivduos do sexo feminino cuja idade est entre 18 e 35 (inclusive) e que tenham olhos azuis e cabelos louros 08. Criar um algoritmo que funcione de acordo com o menu a seguir, sabendo-se que os
vetores tm dimenso 5. Os itens 1 a 5 so funes. Lembre-se de exibir uma mensagem se a opo 3, 4 ou 5 for digitada antes da 1 e 2, pois so dependentes: 1 2 3 4 5 6 Dados do vetor A Dados do vetor B Imprime vetores Soma vetores Subtrai vetores Sai do programa

Algoritmos e Linguagens Lucilia Ribeiro

84

Bibliografia
"S sei que nada sei (Scrates)

Esta apostila foi totalmente baseada nos livros:

FORBELLONE, A. L. V. e EBERSPACHER, H. F. Lgica de Programao A Construo de Algoritmos e Estrutura de Dados. 2 Edio. Makron Books. 2000 FARRER, Harry e outros. Algoritmos Estruturados. 3 Edio. LTC. 1999.

Algoritmos e Linguagens Lucilia Ribeiro

85

Você também pode gostar