You are on page 1of 61

Lgica de Programao

ESCOLA

Lgica de Programao

Sumrio

Escola Alcides Maya - Primeiro Mdulo

LGICA DE PROGRAMAO
1.1 Definies bsicas. ......................................................................................................................................................... 4 1.2 Necessidade do uso da lgica......................................................................................................................................... 4 1.3 Uso da lgica no desenvolvimento de programas.......................................................................................................... 4 1.4 Diferenciao de nomenclaturas..................................................................................................................................... 5 2.1 Princpios de resoluo de problemas. ........................................................................................................................... 6 2.2 Particularidades entre lgicas......................................................................................................................................... 6 2.2.1 Tcnica Modular.......................................................................................................................................................... 7 2.2.2 Portugs Estruturada.................................................................................................................................................... 7

1 INTRODUO................................................................................................................................ 4

2 INTRODUO LGICA........................................................................................................... 6

3.1 Tipos de Informao....................................................................................................................................................... 8 3.2 Tipos de Dados............................................................................................................................................................... 8 3.3 O Uso de Variveis......................................................................................................................................................... 8 3.4 O Uso de Constantes. ..................................................................................................................................................... 9 3.5 Os Operadores Aritmticos............................................................................................................................................. 9 3.6 As Expresses Aritmticas ou Frmulas Matemticas.................................................................................................. 9 3.7.1 Entrada, Processamento e Sada................................................................................................................................ 10 3.8 Exerccios de Aula....................................................................................................................................................... 13 3.9 Exerccios de Fixao................................................................................................................................................... 15 4.1 Desvio Condicional Simples. ....................................................................................................................................... 17 4.1.1 Exerccio de Aula. ..................................................................................................................................................... 18 4.2 Operadores Relacionais............................................................................................................................................... 18 4.3 Desvio Condicional Composto.................................................................................................................................... 18 4.3.1 Exerccio de Aula. ..................................................................................................................................................... 19 4.4 Exerccios de Fixao................................................................................................................................................... 20 4.5 Desvio Condicional Encadeado.................................................................................................................................... 21 4.5.1 Exerccio de Aula. ..................................................................................................................................................... 22 4.6 Exerccios de Fixao................................................................................................................................................... 23 4.7 Operadores Lgicos...................................................................................................................................................... 23 4.7.1 Operador Lgico: .e................................................................................................................................................... 24 4.7.1.1 Exerccio de Aula. .................................................................................................................................................. 24 4.7.2 Operador Lgico: .ou................................................................................................................................................. 25 4.7.2.1 Exerccio de Aula. .................................................................................................................................................. 26 4.7.3 Operador Lgico: .no............................................................................................................................................... 27 4.7.3.1 Exerccio de Aula. .................................................................................................................................................. 27 4.8 Exerccios de Fixao................................................................................................................................................... 29 5.1 Repetio do tipo: Teste Lgico no incio do looping.................................................................................................. 33 5.1.1 Exerccio de Aula. ..................................................................................................................................................... 34 5.1.1.1 Exerccios de Fixao............................................................................................................................................. 35 5.1.2 Exerccios de Fixao................................................................................................................................................ 36 5.2 Repetio do tipo: Teste Lgico no fim do looping...................................................................................................... 37 5.2.1 Exerccio de Aula. ..................................................................................................................................................... 37 5.2.1.1 Exerccios de Fixao............................................................................................................................................. 38 5.2.2 Exerccio de Aula. .................................................................................................................................................... 38 5.2.2.1 Exerccios de Fixao............................................................................................................................................. 38 5.3 Repetio do tipo: Varivel de Controle....................................................................................................................... 39 5.3.1 Exerccio de Aula. ..................................................................................................................................................... 39 5.3.2 Exerccios de Fixao................................................................................................................................................ 40 5.4 Exerccios de Fixao................................................................................................................................................... 41 6.1 Matrizes de uma dimenso ou vetores.......................................................................................................................... 43

3 Tcnicas Bsicas de Programao.................................................................................................. 8

3.7 Instrues Bsicas....................................................................................................................... 10

4 Estruturas de Controle A Tomada de Decises........................................................................ 16

5 Estruturas de Controle Laos de Repetio............................................................................ 32

6 Estruturas de Dados Homogneas I............................................................................................. 42 2

6.2 Operaes bsicas com Matrizes de uma dimenso.................................................................................................... 44 6.2.1 Atribuio de uma Matriz......................................................................................................................................... 45 6.2.2 Leitura de dados de uma Matriz................................................................................................................................ 45 6.2.3 Escrita dos dados de uma Matriz............................................................................................................................ 45 6.3 Exerccio de Aula. ........................................................................................................................................................ 46 6.4 Exerccios de Fixao................................................................................................................................................... 48 7.1 Matrizes com mais de uma dimenso........................................................................................................................... 49 7.2 Operaes bsicas com matrizes de duas dimenses. ................................................................................................. 50 7.2.1 Atribuio de uma Matriz....................................................................................................................................... 51 7.2.2 Leitura de dados de uma Matriz............................................................................................................................. 51 7.3 Exerccio de Aula. ........................................................................................................................................................ 52

Lgica de Programao

7 Estruturas de Dados Homogneas II........................................................................................... 49

7.4 Exerccios de Fixao. ................................................................................................................. 53 8 Procedimentos e Funes ............................................................................................................. 54

1 INTRODUO

Escola Alcides Maya - Primeiro Mdulo

1.1 Definies bsicas


Muitas pessoas gostam de falar ou julgar que possuem e sabem usar o raciocnio lgico, porm, quando necessitam do mesmo, perdem esta linha de raciocnio, pois este depende de inmeros fatores para completlo, tais como: calma, conhecimento, vivncia, versatilidade, experincia, criatividade, ponderao, responsabilidade, entre outros. Para usar a lgica, necessrio ter domnio sobre o pensamento, bem como saber pensar, ou seja, possuir a Arte de Pensar. Lgica a cincia que estuda as leis e critrios de validade que regem o pensamento e a demonstrao, ou seja, cincia dos princpios formais do raciocnio.

1.2 Necessidade do uso da lgica


Usar a lgica um fator a ser considerado por todos, principalmente pelos profissionais da rea de tecnologia de informao, ou seja, pelos profissionais de informtica. Estes profissionais, no seu dia-a-dia dentro das organizaes, tm a incumbncia de solucionar problemas e atingir os objetivos apresentados por seus usurios com eficincia e eficcia, utilizando recursos computacionais e/ou automatizados. Neste treinamento vamos mostrar como desenvolver e aperfeioar melhor esta tcnica, lembrando que para isto voc dever ser persistente e pratic-la constantemente, chegando exausto sempre que julgar necessrio.

1.3 Uso da lgica no desenvolvimento de programas


comum aos bons programadores, na preparao de um novo programa, iniciar com um diagrama de blocos para demonstrar sua linha de raciocnio lgico. Este diagrama tambm chamado de fluxograma, e estabelece a seqncia de operaes a se efetuar em um programa. Esta tcnica permite uma posterior codificao em qualquer linguagem de programao. A tcnica mais importante no projeto de lgica de programas chamada Programao Estruturada, a qual consiste em uma Metodologia de Projeto, objetivando: Agilizar a codificao do programa; Facilitar a depurao do programa; Permitir a verificao de possveis falhas; Facilitar as alteraes e atualizaes dos programas.

E deve ser composta por quatro passos fundamentais: Escrever as instrues em seqncias lgicas; Escrever instrues em grupos pequenos; Distribuir mdulos de programa entre diferentes programadores para que trabalhem sob a superviso de um programador snior; Revisar o trabalho executado, em reunies regulares.

1.4 Diferenciao de nomenclaturas

Lgica de Programao

Vamos identificar as diferenas entre as seguintes nomenclaturas: Fluxograma: uma ferramenta usada e desenvolvida pelo profissional que est envolvido diretamente com programao, tendo como objetivo descrever o mtodo e a seqncia do processo dos planos num computador. Portugus Estruturado: uma ferramenta de representao textual de um determinado algoritmo computacional. Este mtodo utilizado com a finalidade de apresentar uma codificao simples que seja de fcil traduo para outras linguagens de programao de computador. Algoritmo: um processo de clculo matemtico ou de resoluo de um grupo de problemas semelhantes. Pode-se dizer, tambm, que so regras formais para obteno de um resultado ou da soluo de um problema, englobando frmulas de expresses aritmticas. 1.5 Formas de representao grfica uma maneira simples e concisa de representar dados sobre uma superfcie plana, por meio de diferentes formas, de modo a facilitar a visualizao completa e imediata de dados ou fenmenos tabulados. 1.6 Simbologias bsicas Estes so alguns dos smbolos mais utilizados ao longo dos anos pelos profissionais de Processamento de Dados:

Terminal smbolo utilizado como ponto para indicar o incio e/ou fim do fluxo de um programa Seta de fluxo de dados permite indicar o sentido do fluxo de dados.

Processamento Smbolo ou bloco que se utiliza pra indicar clculos a efetuar, atribuies de valores ou qualquer manipulao de dados que tenha um bloco especfico para sua descrio.

Entrada e sada de dados smbolo em funo de um dispositivo qualquer de entrada ou sada de dados, como fornecedor de informaes para processamento, gravao e outros.

Deciso indica a deciso que deve ser tomada indicando a possibilidade de desvio para outros pontos do fluxo, dependendo do resultado de comparao e de acordo com situaes variveis.

Escola Alcides Maya - Primeiro Mdulo


Conector utilizado quando preciso particionar o fluxograma. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao.

Conector especfico para indicar conexo do fluxo em outra pgina.

Mdulo de sub-rotina

2 INTRODUO LGICA
2.1 Princpios de resoluo de problemas
Ns programadores que somos solucionadores de problemas, devemos entender que problema uma questo que foge a uma determinada regra, ou melhor, o desvio de um percurso, o qual impede de atingir com sucesso um determinado objetivo com eficincia e eficcia. Portanto para resolver um problema de lgica usamos um procedimento de desenvolvimento para o fluxo de informaes. Vamos usar como exemplo uma Escola Tcnica de Informtica, em que o clculo da mdia realizado por quatro notas bimestrais que determinam a aprovao ou reprovao dos seus alunos. Considere que o valor da mdia deva ser maior ou igual a 7 para que ocorra a aprovao. A primeira etapa apresenta um detalhamento no que se refere entrada e sada, ou seja, deve-se entrar com as quatro notas bimestrais para se obter, como resultado, o clculo da mdia e assim definir a aprovao ou reprovao do aluno. A segunda etapa consiste em trabalhar o termo: determinar a aprovao. Para ser possvel determinar algo, necessrio estabelecer uma condio. Assim sendo, uma condio envolve uma deciso a ser tomada segundo um determinado resultado. No caso, a mdia. Desta forma, a condio de aprovao: mdia maior ou igual a 7 deve ser considerada no algoritmo.

2.2 Particularidades entre lgicas


Como um Arquiteto desenha e escreve especificaes para descrever como uma construo de um edifcio dever ser efetuada e o engenheiro de projeto desenvolve um esquema detalhado das atividades de construo, um especialista em informao desenvolve um plano, que ser comunicado a outros, de como o problema de processamento de dados deve ser resolvido. Para auxiliarmos na sua compreenso, mostraremos como estes conceitos de estruturas, bem como as particularidades de conexes e dos procedimentos entre o mtodo lgico, encaixam-se ou no para resoluo dos problemas de processamento de dados. A seguir, so apresentados alguns tipos de procedimentos individualmente.

2.2.1 Tcnica Modular

Lgica de Programao

Esta tcnica deve ser elaborada como uma estrutura de partes independentes, denominada de mdulos, cujo procedimento controlado por um conjunto de regras, onde suas metas so as seguintes: Decompor o problema em partes independentes; Dividir um problema complexo em problemas menores e mais simples; Verificar a correo de um mdulo de blocos, independentemente de sua utilizao como uma unidade em processo maior. A modularizao deve ser desenvolvida, se possvel, em diferentes nveis. Ela pode ser utilizada para separar um problema em sistemas, um sistema em programas e um programa em mdulos. O modelo padro de um mdulo consiste em trs partes: Entrada, Processamento e Sada.
Dados de Entrada Processo de transformao Dados de Sada

2.2.2 Portugs Estruturada


uma tcnica narrativa denominada pseudocdigo, tambm conhecida como portugus estruturado ou chamado por alguns de portugol. Esta tcnica de baseada em uma PDL Program Design Language (Linguagem de Projeto de Programao) e utilizada como referncia genrica para uma linguagem de projeto de programao, tendo como

finalidade mostrar uma notao para elaborao de algoritmos, os quais sero utilizados na definio, criao e desenvolvimento de uma linguagem computacional (Clipper, C, Pascal, Delphi) e sua documentao. A seguir, apresentado um exemplo deste tipo de algoritmo:
incio caractere: resultado; real: n1, n2, n3, n4; real: soma, media; leia n1, n2, n3, n4; soma n1 + n2 + n3 + n4; media soma / 4; se ( media >= 7 ) ento resultado Aprovado; seno resultado Reprovado; fim_se escreva Nota 1: , n1; escreva Nota 2: , n2; escreva Nota 3: , n3; escreva Nota 4: , n4; escreva Soma: , soma; escreva Mdia: , media; escreva Resultado: , resultado; fim

Escola Alcides Maya - Primeiro Mdulo


A diferena entre uma linguagem de programao de alto nvel utilizada em computao e uma PDL que esta no pode ser compilada em um computador.

3 TCnICAS BSICAS DE PROGRAMAO


A partir deste momento vamos ter um contato direto com a parte prtica da Lgica de Programao. Na parte anterior tivemos uma introduo terica bsica de alguns pontos e desta parte em diante teremos um contato mais com a aplicao prtica dos algoritmos, testes de mesa e por fim a codificao em pseudocdigo: Portugus estruturado. Mas ainda so necessrios alguns conceitos.

3.1 Tipos de Informao


Antes de iniciar o estudo de programao, necessrio considerar que um computador nada mais do que uma ferramenta utilizada para solucionar problemas que envolvam a manipulao de informaes, sendo que essas informaes classificam-se em dois tipos bsicos: dados e instrues.

3.2 Tipos de Dados


Os dados so representados pelas informaes a serem tratadas (processadas) por um computador. Essas informaes esto caracterizadas por trs tipos de dados, a saber: dados numricos (inteiros e reais), dados caracteres e dados lgicos. Tipo de Dado Inteiro Descrio So caracterizados como tipos inteiros os dados numricos positivos ou negativos, excluindo-se deste qualquer nmero fracionrio. So caracterizados como tipos reais os dados numricos positivos, negativos e nmeros fracionrios. So caracterizados como tipos caracteres s seqncias contendo letras, nmeros e smbolos especiais. Uma seqncia de caracteres deve ser indicada entre aspas (). Este tipo de dado tambm conhecido como: alfanumrico, string, literal ou cadeia. So caracterizados como tipos lgicos os dados com valores verdadeiro e falso, sendo que este tipo de dado poder representar apenas um dos dois valores. Ele tambm chamado de tipo booleano. Para facilitar a citao de um dado do tipo lgico, fica declarado que estes devero ser apresentados e delimitados pelo caractere ponto (.). Exemplos 35 0 -56 35 1.2 -45.897 PROGAMAO, Rua Alfa, 52 apto 1 Fone: 574-9988 90387-456 77 .Falso. .F. .Verdadeiro. .V.

Real

Caracteres

Lgicos

3.3 O Uso de Variveis


Tem-se como definio de varivel tudo aquilo que sujeito a variaes, que incerto, instvel ou inconstante. E quando se fala de computadores, temos que ter em mente que o volume de informaes a serem tratadas grande e diversificado. Desta forma, os dados a serem processados sero bastante variveis. Todo dado a ser armazenado na memria de um computador deve ser previamente identificado, ou seja, primeiro necessrio saber qual o seu tipo para depois fazer o seu armazenamento adequado. Estando armazenado o dado desejado, ele poder ser utilizado e manipulado a qualquer momento.

Para utilizar o conceito de varivel, imagine que a memria de um computador um grande arquivo com vrias gavetas, sendo que cada gaveta pode armazenar apenas um nico valor (Seja ele: numrico, lgico ou caractere). Se for um grande arquivo com vrias gavetas voc h de concordar que necessrio identificar com um nome a gaveta que se pretende utilizar. Desta forma o valor armazenado pode ser utilizado a qualquer momento. O nome de uma varivel utilizado para sua identificao e posterior uso em um programa. Sendo assim, necessrio estabelecer algumas regras de utilizao de variveis: Nomes de uma varivel podero ser atribudos com um ou mais caracteres; O primeiro caractere do nome de uma varivel dever ser uma letra; O nome de uma varivel no poder possuir espaos em branco; No pode ser uma palavra reservada a uma instruo de programa; No podero ser utilizados outros caracteres a no ser letras e nmeros.

Lgica de Programao

So nomes vlidos de variveis: nomeusuario, nome_cliente, fone1, delta25, z4, entre outros. Devemos ainda considerar que dentro de um programa uma varivel pode exercer dois papis. Um de ao, quando modificada ao longo de um programa para apresentar um determinado resultado, e o segundo de controle, a qual poder ser vigiada e controlada durante a execuo de um programa.

3.4 O Uso de Constantes


Tem-se como definio de constante tudo aquilo que fixo ou estvel. Existiro vrios momentos em que este conceito dever estar em uso. Por exemplo, o valor 1.23 da frmula seguinte uma constante: resultado = entrada * 1.23

3.5 Os Operadores Aritmticos


Tanto variveis como constantes podero ser utilizadas na elaborao de clculos matemticos, ou seja, na elaborao de expresses aritmticas, desde que sejam estabelecidas como do tipo real ou inteira, e para que isto ocorra necessrio utilizao de operadores aritmticos. Veja a seguir a tabela dos operadores aritmticos Operador
h

Operao Exponenciao Diviso Diviso Multiplicao Adio Subtrao

Tipo de resultado Inteiro ou Real Real Inteiro Inteiro ou Real Inteiro ou Real Inteiro ou Real

/ Div * + -

3.6 As Expresses Aritmticas ou Frmulas Matemticas


Ser muito comum trabalharmos com expresses aritmticas ou frmulas matemticas, uma vez que a maior parte do trabalho computacional est relacionada com a utilizao de clculos. Estas expresses so definidas pelo relacionamento existentes entre variveis e constantes numricas por meio da utilizao dos operadores aritmticos. Considere a frmula: area = PI . raio para o clculo da rea de uma circunferncia, em que esto presentes as variveis rea e raio, a constante PI (pi = 3.14159) e os operadores aritmticos de multiplicao e tambm a operao de potncia, elevando o valor da varivel raio ao quadrado. As expresses aritmticas em computao so escritas de uma forma um pouco diferente da forma conhecida em matemtica, por exemplo, a expresso: x = {43 . [55 : (30 + 2) ] } ser escrita na forma computacional como: x (43 * (55 / (30 +2))).

Perceba que as chaves e colchetes so abolidos, utilizando-se em seu lugar apenas os parnteses. tambm substitudo o sinal de (=) igual pelo sinal de () implicando ou atribuindo. O sinal de atribuio () utilizado para indicar que o valor de uma expresso aritmtica ou frmula est sendo armazenado em uma varivel. No caso da frmula para o clculo da rea de uma circunferncia, ela poderia ser escrita da seguinte maneira: area 3.14159 * raio h2 ou area 3.14159 * raio * raio

Escola Alcides Maya - Primeiro Mdulo

3.7 InStRuES BSICAS


As instrues so representadas pelo conjunto de palavras-chave de uma determinada linguagem de programao, que tem por finalidade comandar o computador. Para a lgica de programao podemos utilizar o Portugus Estruturado. Agora teremos contato com algumas instrues como: incio, fim, var, programa, enquanto, se, ento, seno, escreva, leia, etc.

3.7.1 Entrada, Processamento e Sada


Para criar um programa que seja executvel dentro de um computador, deve-se ter em mente trs pontos de trabalho: a entrada de dados, o seu processamento e a sada deles. Sendo assim todo programa estar trabalhando com estes trs conceitos. O processo de execuo de um programa ocorre aps a entrada de dados com a instruo leia e a sua sada com a instruo escreva. O processamento ser uma conseqncia da manipulao das variveis de ao. Uma entrada e uma sada podero ocorrer dentro de um computador de diversas formas. Por exemplo, uma entrada poder ser feita via teclado, modem, leitores ticos, disco, entre outros. Uma sada poder ser feita em vdeo, impressora, disco, entre outras formas. Devido a esta grande variedade, nossos programas escritos em portugus estruturado faro meno s instrues leia e escreva. Considere o seguinte exemplo de um problema: Dever ser criado um programa que efetue a leitura de dois valores numricos. Faa a operao de soma entre os dois valores e apresente o resultado obtido. Note: Sempre estaremos diante de um problema, o qual dever ser resolvido primeiro por ns, para que depois seja resolvido por um computador. O que queremos dizer que primeiro voc deve entender bem o problema, para depois buscar a sua soluo dentro de um computador, ou seja, voc dever ensinar a mquina a resolver o seu problema, por meio de um programa. Desta forma, o segredo de uma boa lgica est na compreenso adequada do problema a ser solucionado. Com relao ao problema proposto, dever ser primeiro muito bem interpretado. Isto ocorre com o auxlio de uma ferramenta denominado algoritmo, que dever estabelecer todos os passos necessrios a serem cumpridos na busca de uma soluo para um problema. Lembre-se de que um algoritmo na verdade uma receita de como fazer. Para tanto, observe a estrutura do algoritmo com relao ao problema da leitura dos dois valores (que no conhecemos e tambm no precisamos conhecer, pois neste caso utilizaremos duas variveis para trabalhar estas incgnitas A e B) e a sua respectiva soma (conseqncia dos valores informados, a qual tambm uma incgnita e depende dos valores fornecidos; utilizaremos para esta a varivel X). Algoritmo 1 Ler dois valores, no caso as variveis A e B; 2 Efetuar a soma das variveis A e B, atribuindo o seu resultado para a varivel X; 3 Apresentar o valor da varivel X aps a operao de soma dos dois valores fornecidos Perceba que o algoritmo a interpretao passo a passo de um determinado problema. como ter um problema matemtico: Joo foi feira com R$ 20,00, comprou uma dzia de laranjas por R$ 5,00. com quanto Joo voltou para casa?. Na verdade, o que interessa no o fato ocorrido com Joo e sim efetuar os clculos necessrios para se saber quanto sobrou na mo de Joo. Em processamento de dados parecido, pois precisamos somente efetuar o levantamento das variveis e saber o que fazer com elas.

10

Lgica de Programao
FluxOGRAMA Completada a fase de interpretao do problema e da definio das variveis a serem utilizadas, passa-se para a fase de diagramao do algoritmo, que o fluxograma.
Inicio

Ler A Ler B

X <-- A + B

Escrever X

Fim

Figura 3.1 Fluxograma para leitura, soma de dois valores e apresentao do resultado. Observe a indicao de Incio e Fim do fluxograma com o smbolo Terminal. Este smbolo dever estar sempre presente, indicando o ponto de incio e fim de um fluxograma. Note tambm a existncia de uma seta na linha que liga um smbolo ao outro. Isto necessrio, pois desta forma sabe-se a direo que o processamento de um programa dever seguir. O smbolo retngulo significa Processamento e ser utilizado para representar diversas operaes, principalmente os clculos matemticos executados por um programa. PORtuGuS EStRutuRADO Podemos utilizar outra forma de representao da lgica do programa, atravs de uma representao textual chamada: Portugus Estruturado. A seguir escrevemos o programa nesta forma de representao: incio inteiro: A, B, X; leia A; leia B; X A + B; escreva X; fim

11

Desta forma, so utilizadas trs variveis: A, B e X, estabelecendo-se assim o seu respectivo tipo. Tendo relacionado todas as variveis que sero utilizadas no programa, passa-se para a fase de montagem do que est estabelecido no fluxograma, ou seja, de tudo que est relacionado entre os smbolos Terminal (Indicao de incio e fim do fluxograma) Observe que o bloco de instrues de programa, indicado entre as instrues incio e fim apresentado deslocado um pouco para a direita. Este estilo de escrita deve ser obedecido, para facilitar a leitura de um bloco de programa, recebendo o nome de endentao. Aps a leitura dos valores para as variveis A e B, eles sero somados e atribudos na varivel X, a qual ser apresentada com o valor da soma processada. CODIfICAO EM PASCAl Para exemplificar vamos codificar o algoritmo que soma os nmeros na linguagem Pascal: program soma_num; var X : integer; A : integer; B : integer; begin readln (A); readln (B); X := A + B; writeln (X); end. Depois de codificar o programa (escrever o programa em uma linguagem) voc deve compilar o programa fonte. O que significa compilar? Compilar : Transformar a linguagem fonte do programa em um programa executvel, ou seja, transformar o programa na linguagem de mquina. Como compilamos? Compilamos utilizando um programa especial que faz este trabalho Observao: Se houver problemas de sintaxe, se voc escreveu alguma instruo errada, o compilador no ir gerar o programa executvel, ele apenas ir emitir uma mensagem de erro de sintaxe. Se no houver erro na compilao, teremos o programa executvel, tambm chamado de aplicativo, que ser utilizado para testar o programa, verificando se o mesmo faz o que o fluxograma determinou. Resumindo: Para fazer o computador resolver um problema qualquer temos que: 1 Fazer o algoritmo do problema 2 Codificar o programa em uma linguagem de programao 3 Compilar este programa para verificar erros de sintaxe e criar o programa executvel 4 Testar o programa executvel

Escola Alcides Maya - Primeiro Mdulo

12

Lgica de Programao
CODIfICAO EM LInGuAGEM C Agora vamos codificar o algoritmo que soma os nmeros na linguagem C. main( ) { int X; int A; int B; scanf(%d, &A); scanf(%d, &B); X = A + B; printf(%d, X); } Depois de codificar este programa, voc dever tambm compilar, para verificar possveis erros de sintaxe, e testar o programa.

3.8 Exerccios de Aula


Abaixo so apresentados exemplos que aplicam os conceitos at aqui estudados. Sendo assim, olhe atentamente cada exemplo para perceber os seus detalhes. Trabalharemos apenas com o Portugus Estruturado, pois na disciplina de Fundamentos de Programao voc ir codificar o programa na linguagem C. PRIMEIRO ExEMplO Desenvolver a lgica para um programa que efetue o clculo da rea de uma circunferncia, apresentando a rea calculada. AlGORItMO Para efetuar o clculo da rea de uma circunferncia necessrio conhecer a frmula que executa este clculo sendo esta: A = pR, em que A a varivel que conter o resultado do clculo da rea, p o valor de pi (3.14159), sendo uma constante na frmula e R o valor do raio. Sendo assim, basta estabelecer: 1 Ler um valor para o raio, no caso a varivel R; 2 Estabelecer que PI possua o valor 3,14159; 3 Efetuar o clculo da rea, elevando ao quadrado o valor de R e multiplicando por PI; 4 Apresentar o valor da varivel A. A frmula para o clculo da rea passar a ser escrita como: A 3.14159 * Rh2 ou se voc preferir poder escrever da seguinte forma: A 3.14159 * R * R.

13

Escola Alcides Maya - Primeiro Mdulo


PORtuGuS EStRutuRADO incio real: A, R; escreva Digite o valor do raio: ; leia R; A 3.14159 * R * R; escreva A rea : , A; fim SEGunDO ExEMplO Construir um programa que efetue o clculo do salrio lquido de um professor. Para fazer este programa, voc dever possuir alguns dados, tais como: valor da hora aula, nmero de horas trabalhadas no ms e percentual de desconto do INSS. Em primeiro lugar, deve-se estabelecer qual ser o seu salrio bruto para efetuar o desconto e ter o valor do salrio lquido. AlGORItMO 1 Estabelecer a leitura da varivel HT (Horas trabalhadas no ms); 2 Estabelecer a leitura da varivel VH (valor hora aula); 3 Estabelecer a leitura da varivel PD (Percentual de desconto de INSS); 4 Calcular o salrio bruto (SB), sendo este a multiplicao das variveis HT e VH; 5 Calcular o total de desconto (TD) com base no valor de PD dividido por 100; 6 Calcular o salrio lquido (SL), deduzindo o desconto do salrio bruto; 7 Apresentar os valores dos salrios bruto e lquido: SB, TD e SL. PORtuGuS EStRutuRADO incio inteiro: HT; real : VH, PD, TD, SB, SL ; escreva Digite a quantidade de horas trabalhadas: ; leia HT; escreva Digite o valor da hora: ; leia VH; escreva Digite o percentual de desconto do INSS: ; leia PD; SB HT * VH; TD ( PD / 100 ) * SB; SL SB TD; escreva Valor do salrio bruto....................: , SB; escreva Total de desconto de INSS...........: , TD; escreva Valor do salrio lquido..................: , SL; fim

14

3.9 Exerccios de Fixao


1 Indique com um X quais dos dados abaixo so do tipo Inteiro. ( ) 1000 ( ) 0 ( ) -900 ( ) .Verdadeiro. ( ) -456 ( ) 34 ( ) Casa 8 ( )0 ( ) .Falso. ( ) 1.56 2 Indique com um X quais dos dados abaixo so do tipo Real. ( ) -678 ( ) 0.87 ( ) -9.12 ( ) .Verdadeiro. ( ) -456 ( ) 99.8 ( ) Cinco ( ) 45.8976 ( ) .Falso. ( ) 1.56 3 Indique com um X quais dos dados abaixo so do tipo Literal. ( ) 678 ( ) 0.87 ( ) -9.12 ( ) Verdadeiro ( ) -456 ( ) 99.8 ( ) Cinco ( ) 45.8976 ( ) .Falso. ( ) 1.56

Lgica de Programao

4 Indique com um X quais dos dados abaixo so do tipo Lgico. ( ) -678 ( ) 0.87 ( ) -9.12 ( ) .Verdadeiro. ( ) -456 ( ) .V. ( ) Cinco ( ) .Falso. ( ) .F. ( ) 1.56

15

Escola Alcides Maya - Primeiro Mdulo


5 Desenvolva os programas a seguir em portugus estruturado: a) Ler dois valores numricos. Calcular e apresentar o produto entre eles. b) Ler trs valores numricos. Calcular e apresentar a mdia entre eles. c) Ler a idade de uma pessoa. Calcular e apresentar a existncia desta pessoa em nmero de dias, em nmero de horas, em nmero de minutos e em nmero de segundos. d) Ler uma temperatura em graus Fahrenheit e apresenta-la convertida em graus Celsius. A frmula de converso C ( F 32 ) * ( 5 / 9 ), sendo F a temperatura em Fahrenheit e C a temperatura em Celsius. e) Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: VOLUME 3.14159 * RAIO h 2 * ALTURA. f) Efetuar o clculo da quantidade de litros de combustvel gasta em uma viagem, utilizando um automvel que faz 12 KM por litro. Para obter o clculo, o usurio deve fornecer o tempo gasto (TEMPO) e a velocidade mdia (VELOCIDADE) durante a viagem. Desta forma, ser possvel obter a distncia percorrida com a frmula DISTNCIA TEMPO * VELOCIDADE. Possuindo o valor da distncia, basta calcular a quantidade de litros de combustvel utilizada na viagem com a frmula LITROS_USADOS DISTNCIA / 12. Ao final o programa deve apresentar os valores da velocidade mdia (VELOCIDADE), tempo gasto na viagem (TEMPO), a distncia percorrida (DISTNCIA) e a quantidade de litros (LITROS_USADOS) utilizada na viagem. g) Efetuar o clculo e a apresentao do valor de uma prestao em atraso, utilizando a frmula PRESTAO VALOR + (VALOR * (TAXA / 100) * TEMPO). h) Ler dois valores (inteiros, reais ou caracteres) para as variveis A e B, e efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e a varivel B passe a possuir o valor da varivel A . Apresentar os valores trocados. i) Elaborar um programa que calcule e apresente o volume de uma caixa retangular por meio da frmula VOLUME COMPRIMENTO * LARGURA * ALTURA. j) Efetuar a leitura de um nmero inteiro e apresentar o resultado do quadrado desse nmero k) Elaborar um programa que leia as 4 notas escolares de um aluno. Calcular e apresentar a mdia do aluno. l) Elaborar um programa que leia a idade de duas pessoas. Calcular e apresentar a diferena das idades. m) Elaborar um programa que leia de um vendedor o salrio fixo, o valor total de vendas por ele efetuadas na loja e o percentual de comisso que ganha pelas vendas. Calcular e apresentar o valor da comisso que ele vai receber e o salrio total. n) Elaborar um programa que calcula a rea de um tringulo. O programa deve ler o valor da base e o valor da altura do tringulo. A frmula da rea : area = (base * altura) / 2. Aps o calculo apresentar a rea.

4 EStRutuRAS DE COntROlE A TOMADA DE DECISES


Foi visto anteriormente como trabalhar com entrada, processamento e sada utilizando variveis, constantes e operadores aritmticos. Apesar de j se conseguir solucionar problemas e transform-los em programas, os recursos at aqui estudados so limitados, pois haver momentos em que um determinado valor dentro de um programa necessitar ser tratado para se efetuar um processamento mais adequado. Imagine a seguinte situao: Um programa que apresente a mdia de um aluno e a informao se ele est aprovado ou reprovado. Observe que ser necessrio verificar a mdia do aluno para tomar uma deciso no sentido de apresentar a sua real situao: aprovado ou reprovado.

16

4.1 Desvio Condicional Simples

Lgica de Programao

Para solucionar o problema proposto, necessrio trabalhar uma nova instruo: se...ento...fim_se. Fluxograma Observe no fluxograma a existncia das letras S e N, alm das linhas com seta indicando a direo do processamento, colocada juntamente com o smbolo de Deciso. O S representa o sim e est posicionado para indicar que um determinado bloco de operaes ser executado quando a condio atribuda for verdadeira. O N est para no e ser executado quando a condio for falsa. O smbolo do losango, ou melhor, dizendo, Deciso dever ser utilizado em situaes em que haja necessidade de usar uma deciso dentro do programa. Uma deciso ser tomada sempre com base em uma pergunta, como Resposta = sim, e esta pergunta que dever estar indicada dentro do smbolo de losango.

Condio N

Instrues executadas quando a condio for verdadeira

Instrues executadas quando a condio for falsa ou aps ser verdadeira

PORtuGuS EStRutuRADO se (condio) ento < instrues para condio verdadeira > fim_se Sendo a condio verdadeira, sero executadas todas as instrues que estejam entre a instruo se...ento e a instruo fim-se. Sendo a condio falsa, sero executadas as instrues que estejam aps o comando fim_se.

17

Escola Alcides Maya - Primeiro Mdulo 4.1.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que leia dois valores numricos. Efetuar a adio e apresentar o seu resultado caso o valor somado seja maior que 10. AlGORItMO 1 Ler um valor para a varivel A e outro valor para a varivel B; 2 Efetuar a soma dos valores incgnitos A e B, atribuindo o valor da soma na varivel X; 3 Apresentar o valor da soma contido na varivel X, caso o valor de X seja maior que 10. Portugus Estruturado incio inteiro: A, B, X; escreva Digite um nmero: ; leia A; escreva Digite outro nmero: ; leia B; X A + B; se ( X > 10 ) ento escreva X; fim se fim

4.2 Operadores Relacionais


Ao utilizarmos os desvios condicionais necessitamos dos operadores relacionais. Operador > >= < <= = <> Ao maior que maior ou igual a menor que menor ou igual a igual a Diferente Exemplo 5>2 5 >= 7 5<7 5 <= 7 5=7 5<>7 Resultado V F V V F V

4.3 Desvio Condicional Composto


Vamos aprender agora a fazer uso da instruo se...ento...seno...fim_se. Fluxograma.

18

Lgica de Programao
Instrues executadas quando condio verdadeira

Condio N

Instrues executadas quando condio for falsa

Figura 4.3 Estrutura do smbolo para instruo se...ento...seno...fim-se PORtuGuS EStRutuRADO se (condio) ento < instrues para condio verdadeira > seno < instrues para condio falsa > fim se Sendo a condio verdadeira, sero executadas todas as instrues que estejam posicionadas entre o se... ento e a instruo seno. Sendo a condio falsa, sero executadas as instrues que estejam entre o seno e a instruo fim se.

4.3.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que leia dois valores numricos e efetue a adio destes valores. Caso o valor somado seja maior ou igual a 10, dever ser apresentado somando a ele mais 5; caso o valor somado no seja maior ou igual a 10, este dever ser apresentado subtraindo 7. Algoritmo 1 Ler um valor para a varivel A e outro valor para a varivel B; 2 Efetuar a soma dos valores incgnitos A e B, atribuindo o valor da soma na varivel X; 3 Verificar se X maior ou igual a 10; caso seja verdadeiro, calcule R x + 5. Seno calcule R X 7

19

PORtuGuS EStRutuRADO incio inteiro: A, B, X, R;

Escola Alcides Maya - Primeiro Mdulo

escreva Digite um nmero: ; leia A; escreva Digite outro nmero: ; leia B; X A + B; se ( X >= 10 ) ento R X + 5; seno R X 7; fim se escreva O resultado : , R; fim Observe que aps a definio dos tipos de variveis, solicitada a leitura dos valores para as variveis A e B, depois esses valores so atribudos na varivel X, a qual possui o resultado da adio dos dois valores. Neste ponto, questionada no programa uma condio que permitir escrever o resultado da soma adicionado de 5, caso esta seja maior ou igual a 10, e no sendo, o programa apresentar o resultado subtraindo 7.

4.4 Exerccios de Fixao


Vamos fazer alguns exerccios: a) Faa um Programa que leia dois nmeros quaisquer, e escreva o maior deles. b) Faa um Programa que leia um nmero inteiro. Informar se o nmero PAR ou MPAR. c) Faa um Programa que leia dois nmeros quaisquer, e escreva o resultado do clculo do maior dividido pelo menor. d) Faa um Programa que leia a receita e a despesa de uma empresa e apresente se ela est com LUCRO ou com PREJUZO. e) Faa um Programa que leia 4 notas escolares de um aluno. Calcule e apresente a mdia. Sabendo-se que a mdia de aprovao da escola 7, apresente a informao se o aluno foi APROVADO ou REPROVADO. f) Faa um Programa que leia dois nmeros e apresente o sinal do produto entre eles. Considere que somente nmeros diferentes de zero sero digitados. g) Faa um Programa que leia um nmero e escreva maior do que 100, se o nmero digitado for maior que 100 e escreva menor do que 100, se o nmero for menor do que 100. h) Faa um Programa que leia um cdigo:1 sinal vermelho, 2 sinal verde. Baseado no cdigo digitado diga para o pedestre que est esperando no sinal:SIGA ou ESPERE i) Faa um Programa que leia a quantidade de vitrias e a quantidade de derrotas de um time de futebol. Escrever BOM se o nmero de vitrias for maior que o nmero de derrotas, caso contrrio escrever RUIM.

20

4.5 Desvio Condicional Encadeado

Lgica de Programao

Existem casos em que necessrio estabelecer a verificao de condies sucessivas, em que uma determinada ao poder ser executada se um conjunto anterior de instrues ou condies for satisfeito. Sendo a ao executada, ela poder ainda estabelecer novas condies. Isto significa utilizar uma condio dentro de outra condio. Este tipo de estrutura poder possuir diversos nveis de condio, sendo chamadas de encadeamentos. FluxOGRAMA

Condio1 N

Instrues executadas quando condio 1 verdadeira

Condio2 N

Instrues executadas quando condio 1 falsa, mas a condio 2 verdadeira

Instrues executadas quando condio 1 e condio 2 so falsas

21

Figura 4.5 Estrutura condicional composta ou encadeada. Portugus Estruturado se (condio 1) ento < instrues para condio 1 verdadeira > seno se (condio 2) ento < instrues para condio 2 verdadeira > seno < instrues para condio 1 e condio 2 falsa > fim se fim se

Escola Alcides Maya - Primeiro Mdulo

4.5.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio dever receber um reajuste de 15% caso seu salrio seja menor ou igual a 500. Se o salrio for maior que 500, mas, menor ou igual a 1000, seu reajuste ser de 10%; caso seja ainda maior que 1000, o reajuste dever ser de 5%. AlGORItMO Perceba que o problema em questo estabelece trs condies para calcular o reajuste do salrio do funcionrio, sendo: Salrio <= 500, reajuste de 15% Salrio > 500, mas <= 1000, reajuste ser de 10% Salrio > 1000, reajuste ser de 5% Estas condies devero ser encadeadas, pois todas as possibilidades de reajuste devero ser cercadas. Sendo assim, observe o algoritmo abaixo: 1 Definir uma varivel para o salrio reajustado: novo_salario; 2 Ler um valor para a varivel salrio; 3 Verificar se o valor de salario <= 500, se sim reajustar em 15%; 4 Verificar se o valor de salario <= 1000, se sim reajustar em 10%; 5 Verificar se o valor de salario > 1000, se sim reajustar em 5%; 6 Apresentar o valor reajustado, atribuindo a novo_salrio. PORtuGuS EStRutuRADO incio real: salrio, novo_salario; escreva Digite o valor do salrio: ; leia salario; se ( salario <= 500 ) ento novo_salrio salrio * ( 15 / 100 ); seno se ( salario <= 1000 ) ento novo_salrio salrio * ( 10 / 100 ); senao novo_salrio salrio * ( 5 / 100 );

22

Lgica de Programao
fim se fim se escreva O valor do novo salrio : ,novo_salario; fim

4.6 Exerccios de Fixao


Vamos fazer alguns exerccios a) Faa um Programa que leia o valor do salrio hora, a quantidade de horas trabalhadas e a quantidade de filho menores de 14 anos de um funcionrio. Calcular o valor do salrio bruto. Para calcular o valor do salrio famlia levar em considerao o seguinte: Se o salrio bruto for at R$ 500,00 o salrio famlia ser de R$ 10,50 por cada filho; Se o salrio bruto for acima de R$ 500,00 at R$ 1.000,00 o salrio famlia ser de R$ 6,50 por cada filho; Se o salrio bruto for acima de R$ 1.000,00 o salrio famlia ser de R$ 1,50 por cada filho. No final apresentar o valor do salrio bruto e o valor do salrio famlia a ser recebido. b) Faa um Programa que leia o salrio bruto de uma pessoa e calcule o desconto do INSS levando em considerao o seguinte: Para salrios at R$ 500,00 a alquota de INSS ser de 8% Para sal.acima de R$ 500,00 at R$ 1.000,00 a alquota de INSS ser de 10% Para sal.acima de R$ 1.000,00 a alquota de INSS ser de 12%. No final dever ser apresentado: Salrio bruto Taxa de INSS Valor de INSS Salrio lquido

c) Faa um Programa que leia o cdigo de uma mercadoria e que escreva o nome do produto conforme tabela abaixo: 1 Sabo 2 Vassoura 3 Detergente

4.7 Operadores Lgicos


Pode ser que voc necessite, em algum momento, trabalhar com o relacionamento de duas ou mais condies ao mesmo tempo na mesma instruo se, efetuando desta forma testes mltiplos. Para estes casos necessrio trabalhar com a utilizao dos operadores lgicos. Os operadores lgicos mais comuns so: .e., .ou. e .no., e sero representadores em portugus estruturado sempre entre pontos. Em alguns casos, o uso de operadores lgicos evita a utilizao de instrues se encadeadas.

23

Escola Alcides Maya - Primeiro Mdulo 4.7.1 Operador Lgico: .e.


O operador do tipo .e. utilizado quando dois ou mais relacionamentos lgicos de uma determinada condio necessitam ser verdadeiros. Condio 1 Falsa Verdadeira Verdadeira Condio 2 Falsa Falsa Verdadeira Resultado Falso Falso Verdadeiro

Para facilitar a compreenso deste operador imagine que voc possua dois fios ligados a uma lmpada e a uma bateria. A lmpada somente acender se voc tiver ligado ambos os fios aos plos da bateria. Acompanhe esse exemplo no seguinte diagrama: Fio Vermelho Ligado Falso Verdadeiro Falso Verdadeiro Fio Preto Ligado Falso Falso Verdadeiro Verdadeiro Lmpada Acende Falso Falso Falso Verdadeiro

PORtuGuS EStRutuRADO se (condio 1) .e. (condio 2) ento < instrues executadas se condio 1 e condio 2 verdadeiras > fim_se O operador .e. faz com que somente seja executada uma determinada operao se todas as condies mencionadas forem simultaneamente verdadeiras.

4.7.1.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que leia um nmero. Informar se o nmero digitado est na faixa de 20 a 90. AlGORItMO 1 Ler um valor para a varivel num; 2 Se o valor digitado estiver na faixa de 20 a 90 apresentar uma mensagem informando. PORtuGuS EStRutuRADO incio inteiro: num; escreva Digite um nmero: ; leia num; se ( num >= 20 ) .e. ( num <= 90 ) ento escreva O nmero est na faixa de 20 a 90; seno escreva O nmero est fora da faixa de 20 a 90; fim se fim

24

Lgica de Programao
O exemplo mostra, por meio da utilizao do operador .e. que somente ser apresentada a mensagem O nmero est na faixa de 20 a 90, caso o valor fornecido para a varivel num seja entre 20 e 90. Qualquer valor fornecido fora da faixa definida apresentar a mensagem O nmero no est na faixa de 20 a 90. Segundo exemplo Desenvolver a lgica para um programa que leia um ngulo (entre 0 e 360) e que escreva o quadrante ao qual pertence. Ignorar os eixos. Algoritmo 1 Ler um valor para a varivel angulo; 2 Verificar se o ngulo digitado > 0 e < 90, se for verdade: ngulo est no primeiro quadrante 3 Verificar se o ngulo digitado > 90 e < 180, se for verdade: ngulo est no segundo quadrante 4 Verificar se o ngulo digitado > 180 e < 270, se for verdade: ngulo est no terceiro quadrante 5 Verificar se o ngulo digitado > 270 e < 360, se for verdade: ngulo est no quarto quadrante Portugus Estruturado incio inteiro: ngulo; escreva Digite um ngulo: ; leia angulo; se ( angulo > 0 ) .e. ( angulo < 90 ) ento escreva ngulo est no primeiro quadrante; seno se ( angulo > 90 ) .e. ( angulo < 180 ) ento escreva ngulo est no segundo quadrante; seno se ( angulo > 180 ) .e. ( angulo < 270 ) ento escreva ngulo est no terceiro quadrante; seno se ( angulo > 270 ) .e. ( angulo < 360 ) ento escreva ngulo est no quarto quadrante; fim se fim se fim se fim se fim O programa acima no se preocupa se o usurio digitar um valor indevido, ou seja, se no estiver na faixa ou estiver em um dos eixos. Este exemplo foi feito desta forma para que possamos nos concentrar apenas no operador lgico .e.

4.7.2 Operador Lgico: .ou.


O operador do tipo .ou. utilizado quando pelo menos um dos relacionamentos lgicos (quando houver mais de um relacionamento) de uma condio necessita ser verdadeiro. Abaixo, apresentada a tabela de deciso para este tipo de operador: Condio 1 Falsa Verdadeira Falsa Verdadeira Condio 2 Falsa Falsa Verdadeira Verdadeira Resultado Falso Verdadeiro Verdadeiro Verdadeiro

Considere agora, como exemplo, que voc deseja escrever uma carta. Se voc tiver uma mquina de escrever

25

ou (OR) um microcomputador, pode tranqilamente satisfazer seu desejo. Acompanhe o diagrama em seguida: Tem Mquina Falso Verdadeiro Falso Verdadeiro Tem Computador Falso Falso Verdadeiro Verdadeiro Pode Escrever Falso Verdadeiro Verdadeiro Verdadeiro

Escola Alcides Maya - Primeiro Mdulo

PORtuGuS EStRutuRADO se (condio 1) .ou. (condio 2) ento < instrues executadas se condio 1 ou se condio 2 for verdadeiras > fim_se O operador .ou. faz com que seja executada uma determinada operao se pelo menos uma das condies mencionadas for verdadeira.

4.7.2.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que leia o cdigo relativo ao sexo (masculino=1 ou feminino=2). Se for digitado um cdigo correto informar que o cdigo vlido, caso contrrio informar que o cdigo invlido. AlGORItMO 1 Ler um cdigo numrico para a varivel codigo; 2 Se o cdigo digitado for igual a 1 ou igual a 2 apresentar uma mensagem informando que o cdigo vlido caso contrrio informar que o cdigo invlido. PORtuGuS EStRutuRADO incio inteiro: cdigo; escreva Digite um cdigo: ; leia cdigo; se ( codigo = 1 ) .ou. ( cdigo = 2 ) ento escreva O cdigo do sexo vlido; seno escreva O cdigo do sexo invlido ; fim se fim O exemplo mostra, por meio da utilizao do operador .ou. que somente ser apresentada a mensagem O cdigo do sexo vlido, caso o valor fornecido para a varivel codigo seja 1 ou 2. Qualquer outro valor fornecido apresentar a mensagem: O cdigo do sexo invlido.

26

4.7.3 Operador Lgico: .no.

Lgica de Programao

O operador do tipo .no. utilizado quando houver necessidade de estabelecer a inverso do resultado lgico de uma determinada condio. Se a condio for verdadeira, ser considerada falsa. Se a condio for falsa, ser considerada verdadeira. Abaixo, apresentada a tabela de deciso para este tipo de operador: Condio Falsa Falsa Resultado Verdadeiro Verdadeiro

Considere agora, como exemplo, que se voc possui um carro e o pneu est furado, voc no (NOT) pode viajar. o que mostra a tabela abaixo: Peneu Est furado Falso Verdadeiro Resultado Verdadeiro Falso

Portugus Estruturado se .no. (condio) ento < instrues executadas se condio no for verdadeira > fim se O operador .no. faz com que seja executada uma determinada operao se a condio no for verdadeira, portanto, considerada falsa ou vice-versa.

4.7.3.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que somente efetue o clculo de C (A + B) * X, se o valor da varivel X no for maior que 5. Qualquer valor de 5 para baixo efetuar o clculo C (A + B) * X. Se forem informados os valores 5, 1 e 2, respectivamente, para as variveis A, B e X, resultar para a varivel C o valor 12, pois o valor 2 da varivel X controlado pela instruo se .no. (X > 5) ento, como sendo verdadeiro, uma vez que no maior que 5. Sendo assim, os valores 5 e 1 so somados resultando 6 e multiplicados por 2 resultando 12. Mas se forem informados os valores 5, 1 e 6, respectivamente, para as variveis A, B e X, resultar para a varivel C o valor 24, pois o valor 6 da varivel X controlado pela instruo se. no. (X > 5) ento, como sendo falso. Sendo assim, os valores 5 e 1 so subtrados resultando 4 e multiplicados por 6 resultando 24. AlGORItMO 1 Ler um valor numrico para a varivel A ,B, X; 2 Se .no. (X > 5) ento calcular: C (A + B) * X caso contrrio calcular: C (A B) * X 3 - Apresentar o valor do resultado do clculo. Portugus Estruturado incio inteiro: A, B, C, X; leia A, B, X; se .no. ( X > 5 ) ento C (A + B) * X; seno C (A B) * X; fim se

27

escreva C; fim

Escola Alcides Maya - Primeiro Mdulo

SEGunDO ExEMplO Ler trs valores para os lados de um tringulo, considerando lados como: A, B e C. Verificar se os lados fornecidos formam realmente um tringulo, e se for esta condio verdadeira, dever ser indicado qual tipo de tringulo foi formado: issceles, escaleno ou eqiltero. AlGORItMO Para estabelecer este algoritmo, necessrio em primeiro lugar saber o que realmente um tringulo. Se voc no souber o que um tringulo, conseqentemente no conseguir resolver o problema. Tringulo uma forma geomtrica (polgono) composta por trs lados, sendo que cada lado menor que a soma dos outros dois lados. Perceba que isto uma regra (uma condio) e dever ser considerada. um tringulo quando A<B+C, quando B<A+C e quando C<A+B. Tendo certeza de que os valores informados para os trs lados formam um tringulo, sero ento analisados os valores para estabelecer qual tipo de tringulo ser formado: issceles, escaleno ou eqiltero. Um tringulo issceles quando possui dois lados iguais e um diferente, sendo A=B ou A=C ou B=C; escaleno quando possui todos os lados diferentes, sendo A<>B e B<>C e eqiltero quando possui todos os lados iguais, sendo A=B e B=C. 1 Ler trs valores para os lados de um tringulo: A, B e C; 2 Verificar se cada lado menor que a soma dos outros dois lados. Se sim, saber se A=B e B=C, sendo verdade o tringulo eqiltero. Se no, verificar se A=B ou A=C ou B=C, sendo verdade o tringulo issceles; caso contrrio, o tringulo escaleno. 3 Caso os lados fornecidos no caracterizem um tringulo, avisar a ocorrncia. PORtuGuS EStRutuRADO incio real: A, B, C ; leia A, B, C; se ( A < B + C ) .e. ( B < A + C ) .e. ( C < A + B ) ento se ( A = B ) .e. ( B = C ) ento escreva Tringulo Eqiltero; seno se ( A = B ) .ou. ( A = C ) .ou. ( C = B ) ento escreva Tringulo Issceles; seno escreva Tringulo Escaleno; fim se fim se seno escreva As medidas no formam um tringulo; fim se fim

28

4.8 Exerccios de Fixao

Lgica de Programao

1. Faa um Programa que leia as coordenadas de um ponto no plano (x,y) e escreva o quadrante ao qual pertence o ponto no plano. No primeiro quadrante x e y so positivos. No segundo quadrante y positivo. No terceiro quadrante nem x nem y positivo. No quarto quadrante x positivo.
Y Segundo Quadrante Primeiro Quadrante

Terceiro Quadrante

Quarto Quadrante

2. Faa um Programa que leia o QI de uma pessoa e escreva uma mensagem baseada na tabela abaixo. Observe que os colchetes identificam um intervalo fechado e os parnteses identificam um intervalo aberto. [ 000, 030 ) - [ 030, 050 ) - [ 050, 070 ) - [ 070, 100 ) - [ 100, 150 ] - Outros - Ameba Dbil Mental Regular Normal Gnio QI invlido

3. Faa um Programa que leia trs notas de uma pessoa. Calcular a mdia e apresentar um conceito conforme a tabela abaixo: [ 10, 09 ] - ( 09, 07 ] - ( 07, 04 ] - ( 04, 00 ] - A B C D

4. A empresa XYZ & Cia Ltda decidiu conceder um aumento de salrios a seus funcionrios de acordo com a tabela abaixo: SALRIO ATUAL De 0 at 400 Acima de 400 at 700 Acima de 700 at 1000 Acima de 1000 at 1800 Acima de 1800 at 2500 Acima de 2500 NDICE DE AUMENTO 15% 12% 10% 7% 4% 0%

29

Faa um Programa que leia o nmero do funcionrio, o seu salrio atual. Calcular e apresentar o valor do salrio j corrigido. 5. Determine o resultado lgico das expresses mencionadas, assinalando se so verdadeiras ou falsas.. Considere para as repostas os seguintes valores: X = 1, A = 3, B = 5, C = 8 e D = 7. a) .no. ( X > 3 ) Verdadeiro ( ) Falso ( ) b) ( X < 1 ) .e. ( B > D) Verdadeiro ( ) Falso ( ) c) ( D < 0 ) .e. ( C > 5 ) Verdadeiro ( ) Falso ( ) d) ( X > 3 ) .ou. ( C < 7 ) Verdadeiro ( ) Falso ( ) e) ( A > B ) .ou. ( C > B ) Verdadeiro ( ) Falso ( ) f) ( X >= 2 ) Verdadeiro ( ) Falso ( ) g) ( X < 1 ) .e. ( B >= D ) Verdadeiro ( ) Falso ( ) h) ( D < 0 ) .ou. ( C > 5 ) Verdadeiro ( ) Falso ( ) i) .no. ( D > 3 ) Verdadeiro ( ) Falso ( ) j) ( A > B ) .ou. ( C < B ) Verdadeiro ( ) Falso ( ) 6. Indique a sada dos trechos de programa em portugus estruturado, mostrado abaixo. Para as sadas considere os seguintes valores: A=2, B=3, C=5 e D=9. No necessrio calcular os valores de X. Marque na resposta apenas a frmula que ser executada de acordo com a condio. a Resposta: ____________________________________________________________________ se ( D > 5 ) ento X(A+B)*D seno X(AB)/C fim se escreva X

Escola Alcides Maya - Primeiro Mdulo

b Resposta: ____________________________________________________________________ se ( A > 2 ) .e. ( B < 7 ) ento X(A+2)*(B2) seno X(A+B)/D*(C+D) fim se escreva X

c Resposta: ____________________________________________________________________ se ( A = 2 ) .ou. ( B < 7 ) ento X(A+2)*(B2) seno X(A+B)/D*(C+D) fim se escreva X

30

Lgica de Programao
d Resposta: ____________________________________________________________________ se ( A > 2 ) .ou. ( B < 7 ) ento X A+B -2 seno X AB fim se escreva X

e Resposta: ____________________________________________________________________ se .no. ( A > 2 ) .ou. .no. ( B < 7 ) ento XA+B seno XA/B fim se escreva X

f Resposta: ____________________________________________________________________ se ( A > 3 ) .e. ( B < 5 ) ento XA+D seno XD/B fim se escreva X

g Resposta: ____________________________________________________________________ se ( C >= 2 ) .e. ( B <= 7 ) ento X(A+B)/2 seno XD*C fim se escreva X

h Resposta: ____________________________________________________________________ se ( A >= 2 ) .ou. ( C <= 1 ) ento X(A+D)/2 seno X A*C fim se escreva X

31

Escola Alcides Maya - Primeiro Mdulo


7. Desenvolva os algoritmos em portugus estruturado dos seguintes programas: a) Ler dois valores numricos inteiros e apresentar o resultado da diferena do maior pelo menor valor. b) Efetuar a leitura de um valor inteiro positivo ou negativo e apresentar o nmero lido como sendo um valor positivo, ou seja, o programa dever apresentar o mdulo de um nmero fornecido. Lembre-se de verificar se o nmero fornecido menor que zero; sendo, multiplique-o por 1. c) Ler quatro valores referentes a quatro notas escolares de um aluno e escrever uma mensagem dizendo que o aluno foi aprovado, se o valor da mdia escolar for maior ou igual a 7. Se o aluno no for aprovado indicar uma mensagem informando esta condio. Apresentar junto das mensagens o valor da mdia do aluno para qualquer condio. d) Ler quatro valores referentes a quatro notas escolares de um aluno e escrever uma mensagem dizendo que o aluno foi aprovado, se o valor da mdia escolar for maior ou igual a 7. Se o valor da mdia for menor do que 7, solicitar a nota de exame, somar com o valor da mdia e obter nova mdia. Se a nova mdia for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame. Se o aluno no foi aprovado, indicar uma mensagem informando esta condio. Apresentar com as mensagens o valor da mdia do aluno, para qualquer condio. e) Efetuar a leitura de trs valores (variveis A, B e C) e efetuar o clculo da equao completa de segundo grau, apresentando as duas razes, se para os valores informados for possvel efetuar o referido clculo. Lembrese de que a varivel A deve ser diferente de zero. f) Efetuar a leitura de trs valores (variveis A, B e C) e apresenta-los dispostos em ordem crescente. Para solucionar o problema, utilizar os conceitos da propriedade distributiva e troca de valores entre variveis. g) Efetuar a leitura de quatro nmeros inteiros e apresentar os nmeros que so divisveis por 2 e 3. h) Efetuar a leitura de cinco nmeros inteiros e identificar o maior e o menor valores. i) Elaborar um programa que efetue a leitura de um nmero inteiro e apresentar uma mensagem informando se o nmero par ou mpar. j) Elaborar um programa que efetue a leitura de um valor que esteja entre a faixa de 1 a 9. Aps a leitura do valor fornecido pelo usurio, o programa dever indicar uma de duas mensagens: O valor est na faixa permitida, caso o usurio fornea o valor nesta faixa, ou a mensagem O valor est fora da faixa permitida, caso o usurio fornea valores menores que 1 ou maiores que 9. k) Elaborar um programa que efetue a leitura de um nmero inteiro e efetue a sua apresentao, caso o valor no seja maior que trs.

5 Estruturas de Controle Laos de Repetio


Existem ocasies em que necessrio efetuar a repetio de um trecho de programa um determinado nmero de vezes. Neste caso, poder ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes quantas forem necessrias. Os loopings tambm so chamados de laos de repetio. Supondo que um programa deva executar um determinado trecho de instrues por cinco vezes. Com o conhecimento adquirido at este momento, voc iria escrever o mesmo trecho, repetindo-o o nmero de vezes necessrias. Por exemplo, imagine um programa que pea a leitura de um valor para a varivel num, multiplique esse valor por 3, colocando a resposta na varivel result e apresente o valor obtido, repetindo esta seqncia por cinco vezes, conforme mostrado abaixo: PORtuGuS EStRutuRADO incio inteiro: num, result; leia num; result num * 3; escreva result; leia num;

32

Lgica de Programao
result num * 3; escreva result; leia num; result num * 3; escreva result; leia num; result num * 3; escreva result; leia num; result num * 3; escreva result; fim Para estes casos existem comandos apropriados para efetuar a repetio de determinados trechos de programas o nmero de vezes que for necessrio. A principal vantagem deste recurso que o programa passa a ter um tamanho menor, podendo sua amplitude de processamento ser aumentada sem alterar o tamanho do cdigo de programao. Desta forma, pode-se determinar repeties com nmeros variados de vezes.

5.1 Repetio do tipo: Teste Lgico no incio do looping


Caracteriza-se por uma estrutura que efetua um teste lgico no incio de um looping, verificando se permitido executar o trecho de instrues subordinado a esse looping. A estrutura em questo denominada de enquanto, sendo conseguida com a utilizao do conjunto de instrues enquanto...faa...fim_enquanto. A estrutura enquanto...faa...fim_enquanto tem o seu funcionamento controlado por deciso. Sendo assim, poder executar um determinado conjunto de instrues enquanto a condio verificada for Verdadeira. No momento em que esta condio se torna Falsa, o processamento da rotina desviado para fora do looping. Se a condio for Falsa logo de incio, as instrues contidas no looping so ignoradas.

33

No incio desta aula fizemos um programa que fazia a leitura de um valor para a varivel num, multiplicava esse valor por 3, colocando a resposta na varivel result e apresentava o valor obtido, repetindo esta seqncia por cinco vezes, porque no conhecamos a estrutura enquanto...faa...fim_enquanto, agora vamos fazer o mesmo exemplo utilizando a estrutura para o controle do lao de repetio. FluxOGRAMA Cuidado para no confundir esta nova estrutura com a estrutura de deciso usada anteriormente. Aqui existe um retorno condio aps a execuo do bloco de operaes, at que a condio se torne falsa.

Escola Alcides Maya - Primeiro Mdulo

Condio S

Instrues executadas enquanto a condio verdadeira

Figura 5.2 Fluxograma da instruo enquanto...faa...fim_enquanto

5.1.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que faa a leitura de um valor para a varivel num, multiplique esse valor por 3, colocando a resposta na varivel result e apresentar o valor obtido, repetindo esta seqncia por cinco vezes. AlGORItMO 1 Criar uma varivel para servir de contador com valor inicial 1; 2 Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4, 5 e 6 3 Ler um valor para a varivel num; 4 Efetuar a multiplicao do valor de num por 3, atribuindo o resultado em result; 5 Apresentar o valor calculado contido na varivel result; 6 Acrescentar +1 a varivel do tipo contador, definida no passo 1; 7 Quando contador for maior que 5, encerrar o processamento do looping.

34

Lgica de Programao
PORtuGuS EStRutuRADO incio inteiro: num, result; inteiro: cont; cont 1; enquanto ( cont <= 5 ) faa leia num; result num * 3; escreva result; cont cont + 1; fim enquanto fim Alm da utilizao das variveis num e result, foi necessrio criar uma terceira varivel (cont) para controlar a contagem do nmero de vezes que o trecho de programa dever ser executado. Logo aps o incio do programa, a varivel contador atribuda com o valor 1 (cont 1). Em seguida, a instruo enquanto (cont <= 5) faa efetua a checagem da condio estabelecida, verificando que a condio verdadeira, pois o valor da varivel cont que neste momento 1, realmente menor ou igual a 5, e enquanto for dever processar o looping. Sendo assim, tem incio a execuo da rotina de instrues contidas entre as instrues enquanto e a instruo fim enquanto. Depois de efetuar a primeira leitura, clculo e apresentao do valor calculado, o programa encontra a linha cont cont + 1, reinicializando o contedo da varivel contador. Observe que a varivel cont possui neste momento o valor 1 e somado a mais 1 esta passa a ter o valor 2, ou seja, cont cont + 1, sendo assim cont 1 + 1 que resultar cont = 2. Agora que a varivel cont possui o valor 2, o processamento do programa volta para a instruo enquanto (cont <= 5 ) faa, uma vez que o valor da varivel cont menor ou igual a 5. Ser ento executada a rotina de instrues, s que desta vez a varivel cont passar a possuir o valor 3. Desta forma o programa processar novamente a rotina de instrues, passando o valor de cont para 4 que ser verificado e sendo menor ou igual a 5, ser executada mais uma vez a mesma rotina de instrues. Neste ponto, a varivel cont passa a possuir o valor 5. Perceba que a instruo enquanto (cont <= 5) faa ir efetuar a checagem do valor da varivel cont que 5 com a condio cont <= 5. Veja que 5 no menor que 5, mas igual. Sendo esta condio verdadeira, dever a rotina ser executada mais uma vez. Neste momento, o valor da varivel cont passa a ser 6, que resultar para a instruo enquanto uma condio falsa. E por conseguinte, desviar o processamento para a primeira instruo aps a instruo fim_enquanto que no caso a instruo fim, dando o encerramento do programa.

5.1.1.1 Exerccios de Fixao


Vamos fazer alguns exerccios 1. Faa um Programa que escreva na tela os nmeros de 0 at 20. 2. Faa um Programa que escreva na tela os nmeros pares de 0 at 20. 3. Faa um Programa que escreva na tela os nmeros de 20 at 0 4. Faa um Programa que leia 10 valores inteiros e escreva no final a soma dos valores lidos. 5. Faa um Programa que leia 10 valores inteiros e escreva no final a mdia dos valores lidos. 6. Faa um Programa que leia 20 valores e escreva no final a soma dos valores positivos e a mdia dos negativos. 5.1.2 Exerccio de Aula

35

SEGunDO ExEMplO Para ilustrar de forma um pouco diferente, imagine que o primeiro exemplo dever ser executado enquanto o usurio queira. Desta forma, em vez de possuir dentro da rotina um contador de vezes, pode-se possuir uma instruo pedindo que o usurio informe se deseja continuar ou no. AlGORItMO 1 Criar uma varivel para ser utilizada como resposta; 2 Enquanto a reposta for sim, executar os passos 3, 4 e 5. 3 Ler um valor para a varivel num; 4 Efetuar a multiplicao do valor de num por 3, atribuindo o resultado em result; 5 Apresentar o valor calculado contido na varivel result; 6 Quando a resposta for diferente de sim, encerrar o processamento do looping. PORtuGuS EStRutuRADO incio inteiro: num, result; caractere: resp; resp S; enquanto ( resp = S ) faa leia num; result num * 3; escreva result; escreva Deseja continuar ?; leia resp; fim enquanto fim Veja que o contador foi substitudo pela varivel resp, que enquanto for igual a S executar a rotina existente entre as instrues enquanto e fim_enquanto. Neste caso, o nmero de vezes que a rotina ir repetir ser controlado pelo usurio e ser encerrada somente quando alguma informao diferente de S for fornecida para a varivel resp.

Escola Alcides Maya - Primeiro Mdulo

5.1.2 Exerccios de Fixao


Vamos fazer alguns exerccios 1. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores lidos. 2. Faa um Programa que leia nmeros at que o usurio no queira escrever a mdia dos valores lidos. 3. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores positivos e a soma dos valores negativos. 4. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores positivos e a mdia dos valores negativos. mais digitar os nmeros. No final mais digitar os nmeros. No final mais digitar os nmeros. No final mais digitar os nmeros. No final

36

5.2 Repetio do tipo: Teste Lgico no fim do looping

Lgica de Programao

Caracteriza-se por uma estrutura que efetua um teste lgico no fim de um looping. Esta estrutura parecida com a enquanto. A estrutura em questo denominada de repita, sendo conseguida com a utilizao do conjunto de instrues repita...at_que. A estrutura repita...at_que tem o seu funcionamento controlado por deciso. Porm, ir efetuar a execuo de um conjunto de instrues pelo menos uma vez antes de verificar a validade da condio estabelecida. Diferente da estrutura enquanto que executa somente um conjunto de instrues, enquanto a condio verdadeira. Desta forma repita tem seu funcionamento em sentido contrrio a enquanto, pois sempre ir processar um conjunto de instrues no mnimo uma vez at que a condio se torne verdadeira. Para a estrutura repita um conjunto de instrues executado enquanto a condio se mantm Falsa at que ela seja Verdadeira.

5.2.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que faa a leitura de um valor para a varivel num, multiplique esse valor por 3, colocando a resposta na varivel result e apresentar o valor obtido, repetindo esta seqncia por cinco vezes. o mesmo exemplo utilizado na estrutura enquanto para que voc possa fazer uma comparao entre as estruturas. AlGORItMO 1 Criar uma varivel para servir de contador com valor inicial 1; 2 Ler um valor para a varivel num; 3 Efetuar a multiplicao do valor de num por 3, atribuindo o resultado em result; 4 Apresentar o valor calculado contido na varivel result; 5 Acrescentar +1 a varivel do tipo contador, definida no passo 1; 6 Repita os passos 2, 3, 4 e 5 at que o contador seja maior que 5. PORtuGuS EStRutuRADO incio inteiro: num, result; inteiro: cont; cont 1; repita leia num; result num * 3; escreva result; cont cont + 1; at que ( cont > 5 ) fim Logo aps o incio do programa, a varivel contador atribuda com o valor 1 ( cont 1 ). Em seguida a instruo repita indica que todo trecho de instrues situado at a instruo at_que dever ter o seu processamento repetido at que a condio cont > 5 seja satisfeita. Sendo assim, tem incio a execuo da rotina de instrues contidas em ter as instrues repita e at_que. Depois de efetuar a primeira execuo das instrues, o programa encontra a linha cont cont + 1 ; neste momento a varivel cont somada a mais 1, passando a ter o valor 2. Em seguida encontrada a linha com a instruo at_que ( cont > 5 ) , que efetuar o retorno instruo repita para que seja reprocessada a seqncia de comandos, at que o valor da varivel cont seja maior que 5 e encerre o looping.

37

Escola Alcides Maya - Primeiro Mdulo 5.2.1.1 Exerccios de Fixao


Vamos fazer alguns exerccios 1. Faa um Programa que escreva na tela os nmeros de 0 at 10. 2. Faa um Programa que escreva na tela os nmeros mpares de 0 at 20. 3. Faa um Programa que escreva na tela os nmeros de 10 at -5 4. Faa um Programa que leia 10 valores inteiros e escreva no final a soma dos valores lidos. 5. Faa um Programa que leia 10 valores inteiros e escreva no final a mdia dos valores lidos. 6. Faa um Programa que leia 20 valores e escreva no final a soma dos valores positivos e a mdia dos negativos.

5.2.2 Exerccio de Aula


SEGunDO ExEMplO A seguir, apresentado o exemplo em que no se utiliza o contador como forma de controle de execuo de uma rotina em uma estrutura de repetio. Considere que ser o usurio que encerrar o processamento segundo a sua vontade. AlGORItMO 1 Criar uma varivel para ser utilizada como resposta; 2 Ler um valor para a varivel num; 3 Efetuar a multiplicao do valor de num por 3, atribuindo o resultado em result; 4 Apresentar o valor calculado contido na varivel result; 5 Repetir os passos 2, 3, 4 e 5 at que a resposta do usurio seja no. PORtuGuS EStRutuRADO incio inteiro: num, result; caractere: resp; repita leia num; result num * 3; escreva result; escreva Deseja continuar ?; leia resp; at que ( resp < > S ) fim Veja que a varivel resp no precisou ser inicializada com algum valor, pois mesmo que o tivesse feito, no exerceria influncia direta sobre a estrutura repita, uma vez que no mnimo so sempre executadas as instrues constantes no looping, para somente no final ser verificada a condio, no caso resp <> S

5.2.2.1 Exerccios de Fixao


Vamos fazer alguns exerccios 1. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores lidos. 2. Faa um Programa que leia nmeros at que o usurio no queira escrever a mdia dos valores lidos. 3. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores positivos e a soma dos valores negativos. 4. Faa um Programa que leia nmeros at que o usurio no queira escrever a soma dos valores positivos e a mdia dos valores negativos. mais digitar os nmeros. No final mais digitar os nmeros. No final mais digitar os nmeros. No final mais digitar os nmeros. No final

38

5.3 Repetio do tipo: Varivel de Controle

Lgica de Programao

Anteriormente, foram vistas duas formas de elaborar looping. Uma usando o conceito enquanto e a outra usando o conceito repita. Foi visto tambm como elaborar rotinas que efetuaram a execuo de um looping um determinado nmero de vezes com a utilizao de um contador (por meio de uma varivel de controle). Porm, existe uma possibilidade de facilitar o uso de contadores finitos sem fazer uso das duas estruturas anteriores, deixando-as para utilizao de loopings em que no se conhece de antemo o nmero de vezes que uma determinada seqncia de instrues dever ser executada. Os loopings que possuem um nmero finito de execues podero ser processador por meio de estrutura de laos contados do tipo para, sendo conseguida com a utilizao do conjunto de instrues para...de...at...passo...faa...fim_para. A estrutura para...de...at...passo...faa...fim_para tem o seu funcionamento controlado por uma varivel denominada contador. Sendo assim, poder executar um determinado conjunto de instrues um determinado nmero de vezes. FluxOGRAMA Com relao ao fluxograma, ser indicada a varivel a ser controlada com a implicao dos valores de incio, fim e incremento, separados por vrgula. Para representar esta operao em um fluxograma, ser utilizado o smbolo denominado Processamento predefinido ou Preparao, representado pela figura de um hexgono. Figura 5.7 Estrutura do smbolo da instruo para...fim_para Portugus Estruturado para <varivel> de <incio> at <fim> passo <incremento> faa <instrues> fim_para

5.3.1 Exerccio de Aula


PRIMEIRO ExEMplO Desenvolver a lgica para um programa que faa a leitura de um valor para a varivel num, multiplique esse valor por 3, colocando a resposta na varivel result e apresentar o valor obtido, repetindo esta seqncia por cinco vezes. o mesmo exemplo utilizado na estrutura enquanto para que voc possa fazer uma comparao entre as estruturas. AlGORItMO 1 Definir um contador, variando de 1 a 5; 2 Ler um valor para a varivel num; 3 Efetuar a multiplicao do valor de num por 3, atribuindo o resultado em result; 4 Apresentar o valor calculado contido na varivel result; 5 Repitir os passos 2, 3, 4 e 5 at que o contador seja encerrado. PORtuGuS EStRutuRADO incio inteiro: num, result; inteiro: cont; para cont de 1 at 5 passo 1 faa leia num; result num * 3; escreva result; fim para fim

39

Ser executado o conjunto de instrues entre a instruo para e a instruo fim_para, sendo a varivel cont (varivel de controle) inicializada com valor 1 e incrementada de mais 1 por meio da instruo passo at o valor 5. Esse tipo de estrutura de repetio poder ser utilizada todas as vezes que houver a necessidade de repetir trechos finitos, em que se conhecem os valores inicial e final. SEGunDO ExEMplO Desenvolver a lgica para um programa que escreva na tela os nmeros de 1 at 10. Repare que estamos desejando escrever os nmeros na seguinte seqncia: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Vamos utilizar a estrutura para...de...at...passo...faa...fim_para mas com o passo incrementando o valor da varivel contadora. Algoritmo 1 Definir um contador, variando de 1 a 10; 2 Apresentar o valor contido na varivel contador; 5 Repitir o passo 2 at que o contador seja encerrado. Portugus Estruturado incio inteiro: cont; para cont de 1 at 10 passo 1 faa escreva cont; fim para fim TERCEIRO ExEMplO Desenvolver a lgica para um programa que escreva na tela os nmeros de 10 at 1. Repare que estamos desejando escrever os nmeros na seguinte seqncia: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1. Vamos utilizar a estrutura para...de...at...passo...faa...fim_para mas com o passo decrementando o valor da varivel contadora. Algoritmo 1 Definir um contador, variando de 10 a 1; 2 Apresentar o valor contido na varivel contador; 5 Repitir o passo 2 at que o contador seja encerrado. Portugus Estruturado incio inteiro: cont; para cont de 10 at 1 passo -1 faa escreva cont; fim para fim

Escola Alcides Maya - Primeiro Mdulo

5.3.2 Exerccios de Fixao


Vamos fazer alguns exerccios 1. Faa um Programa que escreva na tela os nmeros de 0 at 50. 2. Faa um Programa que escreva na tela os nmeros pares de 0 at 20. 3. Faa um Programa que escreva na tela os nmeros de 20 at 0. 4. Faa um Programa que escreva na tela os nmeros de 50 at 0. 5. Faa um Programa que escreva na tela os nmeros pares de 20 at 0. 6. Faa um Programa que escreva na tela os nmeros mpares de 20 at 0.

40

Lgica de Programao 5.4 Exerccios de Fixao


Desenvolva a codificao em portugus estruturado dos seguintes programas: 1. Faa um Programa que escreva a soma dos nmeros de 1 at 100, ou seja, quanto 1+2+3+...+98+99+100. 2. Faa um Programa que leia 10 valores e escreva no final a soma dos valores lidos. 3. Faa um Programa que leia 10 valores e escreva no final a soma dos valores positivos e a mdia dos negativos. 4. Faa um Programa que leia valores e escreva no final a soma dos valores positivos e a mdia dos negativos. Neste programa o usurio quem vai determinar o fim da leitura dos nmeros, ou seja, voc dever perguntar ao usurio se ele deseja continuar digitando valores. 5. Faa um Programa que leia 4 notas escolares de 15 alunos. Para cada um dos alunos calcular e apresentar a mdia. 6. Faa um Programa que leia 4 notas escolares de n alunos. Para cada um dos alunos calcular e apresentar a mdia. Sabendo-se que a mdia da escola 7, informar tambm se o aluno foi Aprovado ou Reprovado. Neste programa o usurio quem vai determinar o fim da leitura das notas, ou seja, voc dever perguntar ao usurio se ele deseja continuar digitando notas. 7. Faa um Programa que leia dois nmeros inteiros quaisquer. No final escrever os nmeros entre eles. Por exemplo, se forem digitados 6 e 2, dever escrever 6, 5, 4, 3 , 2. Mas se forem digitados 2 e 6, dever escrever 2, 3, 4, 5, 6. 8. Faa um Programa que leia 20 vezes o cdigo de um produto. Os produtos podem ser: 1 Panela 2 Chaleira 3 Prato Outro Cdigo invlido Ao final escrever o total digitado de cada cdigo, inclusive a quantidade de cdigos invlidos digitados. 9. Faa um Programa que leia 4 notas escolares dos alunos de uma escola. Para cada um dos alunos calcular e apresentar a mdia e informar o conceito do aluno baseado na informao abaixo: [0 4) - Conceito D [4 7) - Conceito C [7 9) - Conceito B [9 10] - Conceito A Os colchetes marcam o intervalo fechado e os parnteses marcam um intervalo aberto. Neste programa o usurio quem vai determinar o fim da leitura das notas, ou seja, voc dever perguntar ao usurio se ele deseja continuar digitando notas. 10. Faa um Programa que leia cdigos e execute tarefas, conforme tabela abaixo: 0 Encerra o programa 1 Inclui uma unidade no estoque 2 Exclui uma unidade no estoque 3 Mostra o total disponvel no estoque 4 Mostra o total de entradas no estoque 5 Mostra o total de sadas no estoque Outro cdigo escrever: Cdigo Invlido 11. Faa um Programa para controlar o acesso de pessoas a um restaurante. O restaurante possui uma capacidade de 40 vagas, que no poder ser ultrapassada. O controle se dar atravs de cdigos, conforme a tabela: 0 FIM 1 ENTRA UMA PESSOA (escrever: Entrou)

41

2 SAI UMA PESSOA (escrever: Saiu) 3 MOSTRAR QUANTOS LUGARES ESTO DISPONVEIS 4 MOSTRAR O TOTAL DE PESSOAS QUE ENTRARAM 5 MOSTRAR O TOTAL DE PESSOAS QUE SARAM Outro cdigo escrever: Cdigo Invlido 12. Faa um Programa que calcule o desconto do imposto de renda. O programa dever perguntar quando a pessoa deseja encerrar o programa (Deseja fazer outro clculo? (S/N)). O programa deve pedir o valor do salrio, calcular e apresentar o valor do desconto baseado na seguinte informao: Salrio at R$ 900,00 isento (No paga imposto de renda) Salrio acima de R$ 900,00 at R$ 1.800,00 para 15% de imposto de renda Salrio acima de R$ 1.800,00 para 27% de imposto de renda 13. Faa um Programa que leia o peso das pessoas que querem entrar em um elevador. A capacidade mxima do elevador de 15 pessoas ou 800 Kg, o que ocorrer primeiro. O programa deve ler o peso da pessoa que deseja entrar, se a sua entrada no fizer com que seja ultrapassado qualquer um dos limites, dever escrever: PODE ENTRAR, caso contrrio, ou seja, ultrapassando os limites, dever escrever: NO PODE ENTRAR: ELEVADOR LOTADO e encerrar o programa, mostrando o nmero de pessoas transportadas e o peso total transportado. 14. Faa um Programa que leia dois nmeros e a operao desejada ( + , - , * , / ) e que escreva na tela o resultado da operao. O programa depois de apresentar o resultado dever perguntar quando a pessoa deseja encerrar o programa (Deseja fazer outro clculo? (S/N)). Se a reposta for S dever pedir outros nmeros e a operao desejada, se a resposta for N dever encerrar o programa. 15. Em uma fbrica de chocolates, foi designado ao programador, fazer um programa que calcule o desconto de INSS dos funcionrios. Este programa deve ler o nome do funcionrio e o valor do salrio bruto. Calcular o desconto do INSS levando em considerao o seguinte: a) Para salrios at R$ 500,00 a alquota de INSS ser de 8% b) Para salrios acima de R$ 500,00 at R$ 1.000,00 a alquota de INSS ser de 10% c) Para salrios acima de R$ 1.000,00 a alquota de INSS ser de 12% Para cada funcionrio dever ser apresentado na tela: a) Nome do Funcionrio b) Salrio Bruto c) Taxa de INSS d) Valor de INSS e) Salrio Lquido Aps estas apresentaes o programa dever fazer uma pergunta: Deseja fazer mais algum clculo? (S/N), se a resposta for afirmativa o programa dever continuar com os dados do prximo funcionrio, caso contrrio dever ser terminado. 16. Faa 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 que NO, o programa deve apresentar o valor total acumulado da rea residencial.

Escola Alcides Maya - Primeiro Mdulo

6 EStRutuRAS DE DADOS HOMOGnEAS I


Durante os pontos estudados em Desvios condicionais e Estruturas de repetio, percebeu-se que o poder de programao tornou-se maior, antes limitado somente ao que foi estudado em tcnicas bsicas de programao. Porm, tendo o domnio das tcnicas anteriores, ainda correr-se- o risco de no conseguir resolver alguns tipos de problemas, pois foram trabalhadas at aqui apenas variveis simples que somente armazenam um valor por vez. Vamos agora apresentar uma tcnica de programao que permitir trabalhar como o agrupamento de vrias informaes dentro de uma mesma varivel, sendo sempre do mesmo tipo de dado, e por esta razo chamado de estrutura de dados homognea.

42

Lgica de Programao
A utilizao deste tipo de estrutura de dados recebe diversos nomes, como: variveis indexadas, variveis compostas, variveis subscritas, arranjos, vetores, matrizes, tabelas em memria ou arrays (do ingls). So vrios os nomes encontrados, a que ns iremos tratar por matrizes. Vamos trabalhar com estes dados direcionados para a linguagem C, pois a escola ir tratar na disciplina de Fundamentos de Programao com esta linguagem. Portanto vamos adaptar a estrutura lgica para esta linguagem, facilitando assim o entendimento de nossos alunos.

6.1 Matrizes de uma dimenso ou vetores


Este tipo de estrutura conhecida como matrizes unidimensionais ou tambm de vetor. Caracteriza-se por ser definida uma nica varivel dimensionada com um determinado tamanho. A dimenso de uma matriz constituda por uma constante inteira positiva. Os nomes dados s matrizes seguem as mesmas regras de nomes utilizados para identificar as variveis simples. Para ter uma idia de como utilizar matrizes em uma determinada situao considere o seguinte problema: Em uma Escola Tcnica de Informtica, h um professor que faz 6 avaliaes durante o semestre. Gostaramos de fazer um programa que leia as 6 notas de um aluno. No final calcular e apresentar a mdia do aluno. Desta forma ser necessrio somar as 6 notas de cada aluno e calcular a sua mdia. A tabela a seguir apresenta um aluno, suas notas bimestrais e a coluna da mdia do aluno que dever ser calculada. Aluno 1 Nota 1 4.0 Nota 2 5.0 Nota 3 5.0 Nota 4 3.0 Nota 5 7.5 Nota 6 4.0 Mdia ?

Agora basta escrever um programa para efetuar o clculo da mdia de cada aluno. Vamos comear pelo clculo da mdia de cada aluno, iremos representar as notas de cada aluno pelas variveis: nota1, nota2, nota3, nota4, nota5, nota6, e para o clculo da mdia a varivel media, todas do tipo real. Algoritmo 1 Ler as notas do aluno para as variveis nota1, nota2, nota3, nota4, nota5, nota6; 2 Efetuar a soma das notas e a diviso delas por 6, atribuindo o seu resultado para a varivel media; 3 Apresentar o valor da varivel media aps a operao de soma e diviso dos valores fornecidos. Com o conhecimento adquirido at este momento, seria ento elaborado um programa que efetuaria a leitura de cada nota, a soma delas e a diviso do valor da soma por 6, obtendo-se desta forma a mdia do aluno.

43

PORtuGuS EStRutuRADO incio real: nota1; real: nota2; real: nota3; real: nota4; real: nota5; real: nota6; real: nota7; real: soma; real: media; leia nota1; leia nota2; leia nota3; leia nota4; leia nota5; leia nota6;

Escola Alcides Maya - Primeiro Mdulo

soma nota1 + nota2 + nota3 + nota4 + nota5 + nota6; media soma / 6; escreva media; fim Perceba que para receber as notas foram utilizadas 6 variveis. Com a tcnica de matrizes poderia ter sido utilizada apenas uma varivel com a capacidade de armazenar 6 valores.

6.2 Operaes bsicas com Matrizes de uma dimenso


Uma matriz de uma dimenso ou vetor ser representada por seu nome e seu tamanho (dimenso) entre colchetes. Desta forma seria uma matriz nota[6], sendo seu nome nota, possuindo um tamanho de 6. Isto significa que podero ser armazenados em nota at 6 elementos. Perceba que na utilizao de variveis simples existe uma regra: uma varivel somente pode conter um valor por vez. No caso das matrizes, podero armazenar mais de um valor por vez, pois so dimensionadas exatamente para este fim. Desta forma poderse- manipular uma quantidade maior de informao com pouco trabalho de processamento. Deve-se apenas considerar que com relao manipulao dos elementos de uma matriz, eles ocorrero de forma individualizada, pois no possvel efetuar a manipulao de todos os elementos do conjunto ao mesmo tempo. No caso do exemplo do clculo da mdia do aluno, ter-se-ia ento uma nica varivel indexada (a matriz) contendo todos os valores das 8 notas. Isto seria representado da seguinte forma: nota[0] = 4.0 nota[1] = 6.0 nota[2] = 5.0 nota[3] = 3.0 nota[4] = 7.5 nota[5] = 4.0 Observe que o nome um s. O que muda a informao indicada dentro dos colchetes. A esta informao d-se o nome de ndice, sendo este o endereo em que o elemento est armazenado. necessrio que fique bem claro que o elemento o contedo da matriz, neste caso os valores das notas. No caso de nota[0] = 4.0, o nmero 0 o ndice; o endereo onde cujo elemento 4.0 est armazenado.

44

6.2.1 Atribuio de uma Matriz

Lgica de Programao

Anteriormente, foram utilizadas vrias instrues para poder definir e montar um programa. No caso da utilizao de matrizes, ser definida a instruo conjunto que indicar em portugus estruturado a utilizao de uma matriz, tendo como sintaxe: <tipo de dado> conjunto[<dimenso>], sendo que <dimenso> ser a indicao do tamanho do vetor e <tipo de dado> se o vetor em questo utilizar valores reais, inteiros, lgicos ou caracteres.

6.2.2 Leitura de dados de uma Matriz


A leitura de uma matriz processada passo a passo, um elemento por vez. A instruo de leitura leia seguida da varivel mais o ndice. A seguir, apresentado a codificao em portugus estruturado da leitura das notas dos alunos, clculo da mdia e a sua apresentao. PORtuGuS EStRutuRADO incio real: nota[6]; real: soma, media; inteiro: ndice; soma 0; para ndice de 0 at 5 passo 1 faa leia nota[ndice]; soma soma + nota[ndice]; fim para media soma / 6; escreva media; fim Veja que o programa ficou mais compacto, alm de possibilitar uma mobilidade maior, pois se houver a necessidade de efetuar o clculo para um nmero maior de alunos, basta dimensionar a matriz e mudar o valor final da instruo para. Observe que a leitura processada uma por vez. Desta forma, a matriz controlada pelo nmero do ndice que faz com que cada entrada acontea em uma posio diferente da outra. Assim sendo, a matriz passa a ter todas as notas. A tabela a seguir, mostra como ficaro os valores armazenados na matriz: Matrcula: Indice 0 1 2 3 4 5 Elemento 4.0 6.0 5.0 3.0 7.5 4.0

6.2.3 Escrita dos dados de uma Matriz


O processo de escrita de uma matriz bastante parecido com o processo de leitura de seus elementos. Para esta ocorrncia dever ser utilizada a instruo escreva seguida da indicao da varivel e seu ndice.

45

Supondo que aps a leitura das 6 notas, houvesse a necessidade de apresenta-las antes da apresentao do valor da mdia. Abaixo apresentada a codificao em portugus estruturado da escrita das 6 notas antes de ser apresentado o clculo da mdia. PORtuGuS EStRutuRADO incio real: nota[6]; real: soma, media; inteiro: ndice; soma 0; para ndice de 0 at 5 passo 1 faa leia nota[ndice]; soma soma + nota[ndice]; fim para media soma / 6; para ndice de 0 at 5 passo 1 faa escreva nota[ndice]; fim_para escreva media; fim

Escola Alcides Maya - Primeiro Mdulo

6.3 Exerccio de Aula


Para demonstrar a utilizao de uma matriz em um exemplo um pouco maior, considere como problemas os exemplos apresentados em seguida: PRIMEIRO ExEMplO Desenvolver um programa que efetue a leitura de dez elementos de uma matriz A tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formao: se o valor do ndice for par, o valor dever ser multiplicado por 5, sendo mpar, dever ser somado com 5. Ao final mostrar o contedo da matriz A e B AlGORItMO Este exemplo de resoluo estar mostrando como fazer o tratamento da condio do ndice. 1 Iniciar o contador de ndice, varivel ndice como 0 em um contador at 9; 2 Ler os 10 valores, um a um; 3 Verificar se o ndice par se sim multiplica por 5, se no soma 5. Criar a matriz B; 4 Apresentar o contedo das duas matrizes. Dever ser verificado se o valor do ndice em um determinado momento par (ele ser par quando dividido por 2 obtiver resto igual a zero). Sendo a condio verdadeira, ser atribudo na matriz B[ndice] a multiplicao do elemento da matriz A[ndice] por 5. Caso o valor do ndice seja mpar, ser atribudo na matriz B[ndice] a soma do elemento da matriz A[ndice] por 5.

46

Lgica de Programao
PORtuGuS EStRutuRADO incio inteiro: matrizA[10]; inteiro: matrizB[10]; inteiro: indice, resp; para ndice de 0 at 9 passo 1 faa leia matrizA[ndice]; fim_para para ndice de 0 at 9 passo 1 faa resp indice mod 2; se ( resp = 0 ) ento matrizB[ndice] matrizA[ndice] * 5; seno matrizB[ndice] matrizA[ndice] + 5; fim_se fim_para para ndice de 0 at 9 passo 1 faa escreva matrizA[ndice]; fim_para para ndice de 0 at 9 passo 1 faa escreva matrizB[ndice]; fim_para fim

SEGunDO ExEMplO Desenvolver um programa que efetue a leitura de dez elementos de uma matriz A do tipo vetor. No final, apresente o total da soma de todos os elementos que sejam mpares. AlGORItMO Perceba que em relao ao primeiro exemplo, este apresenta uma diferena: o primeiro pedia para verificar se o ndice era par ou mpar. Neste exemplo, est sendo solicitado que analise a condio do elemento e no do ndice. J foi alertado anteriormente para se tomar cuidado para no confundir elemento com ndice. Vamos a soluo: 1 Iniciar o contador de ndice, varivel ndice como 0 em um contador at 9; 2 Ler os 10 valores, um a um; 3 Verificar se o elemento mpar; se sim efetuar a soma dos elementos; 4 Apresentar o total somado de todos os elementos mpares da matriz. Observe que quando se faz meno ao ndice indica-se a varivel que controla o contador de ndice, e no caso do exemplo anterior, a varivel ndice. Quando se faz meno ao elemento, indica-se matrizA[ndice] pois desta forma est se pegando o valor armazenado e no a sua posio de endereo.

47

PORtuGuS EStRutuRADO inicio inteiro: matriz[10]; inteiro: indice, resp, soma; soma 0;

Escola Alcides Maya - Primeiro Mdulo

para indice de 0 at 9 passo 1 faa leia matrizA[ndice]; fim_para para indice de 0 at 9 passo 1 faa resp matrizA[indice] mod 2; se ( resp = 1 ) ento soma soma + matrizA[indice] ; fim_se fim_para

escreva soma; fim

6.4 Exerccios de Fixao


1 Desenvolva a codificao em portugus estruturado dos seguintes programas: a) Faa um programa para ler 10 elementos de uma matriz tipo vetor e apresenta-los. b) Faa um programa para ler duas matrizes A e B com 20 elementos. Construir uma matriz C, onde cada elemento de C a soma do elemento correspondente de A com B. Apresentar a matriz C. c) Faa um programa que leia 15 elementos de uma matriz A do tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formao: Todo elemento de B dever ser o quadrado do elemento de A correspondente. Apresentar as matrizes A e B. d) Faa um programa para ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo, sendo que cada elemento da matriz B seja o fatorial do elemento correspondente da matriz A. Apresentar as matrizes A e B. e) Faa um programa para ler duas matrizes A e B com 15 elementos cada. Construir uma matriz C, sendo esta a juno das duas outras matrizes. Desta forma C dever ter o dobro de elementos, ou seja, 30. Apresentar a matriz C. f) Faa um programa para ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimenso com os mesmos elementos da matriz A, sendo que devero estar invertidos. Ou seja, o primeiro elemento de A passa a ser o ltimo de B, o segundo elemento de A passa a ser o penltimo de B e assim por diante. Apresentar as matrizes A e B. g) Faa um programa para ler uma matriz A tipo vetor com 10 elementos. Construir uma matriz B de mesmo tipo, sendo que cada elemento de B dever ser a metade de cada elemento de A . Apresentar os elementos das matrizes A e B. h) Ler 20 elementos (valores reais) para temperaturas em graus Celsius em uma matriz A de uma dimenso do tipo vetor. O programa dever apresentar a menor, a maior e a mdia das temperaturas lidas. i) Ler 25 elementos (valores reais) para temperaturas em graus Celsius em uma matriz A de uma dimenso do tipo vetor. Construir uma matriz B de mesmo tipo e dimenso, em que cada elemento da matriz B dever ser a converso da temperatura em graus Fahrenheit do elemento correspondente da matriz A . Apresentar os elementos das matrizes A e B. j) Ler 12 elementos inteiros para uma matriz A de uma dimenso do tipo vetor. Construir uma matriz B de mesmo tipo e dimenso, observando a seguinte lei de formao: Todo elemento da matriz A que for mpar dever

48

Lgica de Programao
ser multiplicado por 2 e armazenado na matriz B; caso contrrio, o elemento da matriz A dever ser armazenado na matriz B sem nenhum clculo. Apresentar os elementos das matrizes A e B. k) Faa um programa que leia uma matriz numrica de 10 elementos. No final apresentar quantos nmeros so positivos e quantos so negativos l) Faa um programa que leia uma matriz numrica de 10 elementos. No final encontrar nesta matriz o maior valor lido, apresentando a sua posio na matriz e o seu valor. m) Faa um programa que leia uma matriz numrica de 10 elementos. No final encontrar nesta matriz o maior valor lido e o menor valor lido n) Em uma Escola Tcnica de Informtica, h um professor que faz 6 provas. Faa um programa que leia as notas destas provas para um vetor notas. No final calcular e apresentar a mdia do aluno e o resultado obtido conforme a tabela a seguir: [00,05) - Reprovado [05,07) - Recuperao [07,09) - Satisfatrio [09,10] - timo

7 EStRutuRAS DE DADOS HOMOGnEAS II


No captulo anterior trabalhamos com o agrupamento de vrias informaes dentro de uma mesma varivel, de mesmo tipo de dado, chamada de estrutura de dados homognea, ou seja, matrizes, do tipo vetor. Agora iremos trabalhar com uma estrutura um pouco mais complexa, tambm chamada de matrizes, mas de mais de uma dimenso.

7.1 Matrizes com mais de uma dimenso


Anteriormente, houve contato com o uso de uma nica varivel indexada com apenas uma dimenso (uma linha e vrias colunas), quando foi utilizado o exemplo para efetuar o clculo da mdia do aluno. A partir deste ponto, sero apresentadas tabelas com mais colunas, sendo assim, teremos variveis no sentido horizontal e vertical. Com o conhecimento adquirido at este ponto, voc tem condies suficientes para elaborar um programa que leia as notas dos alunos, calcule a mdia de cada aluno e no final apresente a mdia de toda a turma, utilizando-se de matrizes bidimensionais. Porm, cuidado, necessrio manter um controle de cada ndice em cada matriz para um mesmo aluno. Para facilitar o trabalho com estruturas deste porte que sero utilizadas matrizes com mais dimenses. A mais comum a matriz de duas dimenses por se relacionar diretamente com a utilizao de tabelas. Matrizes com mais de duas dimenses so utilizadas com menos freqncia, mas podero ocorrer em momentos em que se necessite trabalhar com um nmero maior de dimenses, porm estas so fceis de utilizar, se estivermos dominando bem a utilizao de uma matriz com duas dimenses. importante considerar que na manipulao de uma matriz unidimensional utilizada uma nica instruo de looping. No caso de matrizes com mais dimenses, devero ser utilizadas o nmero de loopings relativo ao tamanho de sua dimenso. Desta forma, uma matriz de duas dimenses dever ser controlada com dois loopings de trs dimenses dever ser controlada por trs loopings e assim por diante. Em matrizes de mais de uma dimenso os seus elementos so tambm manipulados de forma individualizada, sendo a referncia feita sempre por meio de dois ndices; o primeiro para indicar a linha e o segundo para indicar a coluna. Para voc ter uma idia de como utilizar matrizes de duas dimenses vamos utilizar o mesmo exemplo que usamos no captulo anterior, mas agora com um nmero maior de alunos: Em uma Escola Tcnica de Informtica, h um professor que faz 4 avaliaes durante o semestre. Gostaramos de fazer um programa que leia as 4 notas de cada aluno da turma (turma com 8 alunos), calcule e apresente a mdia de cada aluno..

49

Veja como ficaria nossa tabela com as notas e as mdias de cada aluno: Aluno 1 2 3 4 5 6 7 8 NOTA 1 4.0 6.0 9.0 3.0 4.0 7.0 8.0 6.0 NOTA 2 6.0 7.0 8.0 5.0 6.0 7.0 7.0 7.0 NOTA 3 5.0 5.0 9.0 4.0 6.0 7.0 6.0 2.0 NOTA 4 3.0 8.0 6.0 2.0 8.0 7.0 5.0 9.0

Escola Alcides Maya - Primeiro Mdulo

7.2 Operaes bsicas com matrizes de duas dimenses


Uma matriz de duas dimenses est sempre fazendo referncia a linhas e a colunas e representada por seu nome e seu tamanho (dimenso) entre colchetes. Desta forma uma matriz de duas dimenses nota[8][4], onde seu nome nota, possuindo um tamanho de 8 linhas e 4 colunas, ou seja, uma matriz de 8 por 4 (8 x 4). Isto significa que podem ser armazenados em nota at 32 elementos. Para armazenar as 4 notas do primeiro aluno deveramos fazer algo como visto abaixo: nota[0] [0] = 4.0 nota[0] [1] = 6.0 nota[0] [2] = 5.0 nota[0] [3] = 3.0 Observe que o nome um s. O que muda a informao indicada dentro dos colchetes. No primeiro colchete est a informao da linha e no segundo colchete est a informao da coluna. Para armazenar as 4 notas do segundo aluno deveramos fazer o seguinte: nota[1] [0] = 6.0 nota[1] [1] = 7.0 nota[1] [2] = 5.0 nota[1] [3] = 8.0 Para armazenar as 4 notas do terceiro aluno deveramos fazer o seguinte: nota[2] [0] = 9.0 nota[2] [0] = 8.0 nota[2] [0] = 9.0 nota[2] [0] = 6.0 E assim sucessivamente at que se armazene as notas de todos os oito alunos.

50

7.2.1 Atribuio de uma Matriz

Lgica de Programao

Uma matriz de duas dimenses atribuda pela instruo conjunto j utilizada para definir o uso de uma matriz de uma dimenso, sendo bastante parecidas em sua referncia. A sintaxe : <tipo de dado> : conjunto[<dimenso1>][<dimenso2>], sendo que <dimenso1> e <dimenso2> so a indicao do tamanho da tabela e <tipo de dado> o tipo da matriz, que poder ser formada por valores reais, inteiros, lgicos ou caracteres.

7.2.2 Leitura de dados de uma Matriz


A leitura de uma matriz de duas dimenses, assim como das matrizes de uma dimenso processado passo a passo, um elemento por vez. A instruo de leitura leia seguida da varivel mais os seus ndices. A seguir, so apresentados o fluxograma e a codificao em portugus estruturado da leitura das notas dos alunos, clculo da mdia e a sua apresentao. Observe que est sendo considerada a leitura de 4 notas de 8 alunos. Assim sendo, a tabela em questo armazena 32 elementos. Um detalhe a ser considerado a utilizao de duas variveis para controlar os dois ndices de posicionamento de dados na tabela. Anteriormente, utilizamos a varivel ndice para controlar as posies dos elementos dentro da matriz, ou seja, a posio em nvel de linha. Neste exemplo a varivel ndice passa a ser tratada como lin, controlando a posio da linha, e a segunda varivel ser tratada como col, controlando a posio da coluna. Muitos programadores utilizam i no lugar de lin e utilizam j no lugar de col. Analisando o fluxograma, temos a inicializao das variveis lin e col como 0, ou seja, a leitura ser efetuada na primeira linha da primeira coluna. Em seguida iniciado em primeiro lugar o looping da varivel lin para controlar a posio em relao s linhas e depois iniciado o looping da varivel col para controlar a posio em relao s colunas. Veja que, ao serem iniciados os valores para o preenchimento da tabela, eles so colocados na posio nota[0][0], lembrando que o primeiro valor dentro dos colchetes representa a linha e o segundo representa a coluna. Ser digitado ento, para o primeiro aluno a primeira nota. Depois incrementado mais 1 em relao coluna, sendo colocada para a entrada a posio nota[0][1], linha 0 coluna 1. Desta forma, ser digitado para o primeiro aluno a segunda nota. Quando o contador de coluna atingir o valor 4, ele ser encerrado e ser efetuado o clculo e a apresentao da mdia. Em seguida o contador da varivel lin ser incrementado com mais 1, tornando-se 1. Ser ento inicializado novamente o contador col em 0, permitindo que seja digitado um novo dado na posio nota[1][0]. O mecanismo de preenchimento estender-se- at que o contador de linhas atinja o seu ltimo valor, no caso 8. Esse looping o principal, tendo a funo de controlar o posicionamento na tabela por aluno. O segundo looping, mais interno, controla o posicionamento das notas. PORtuGuS EStRutuRADO incio real : nota[8][4]; real : soma, media; inteiro : lin, col ; para lin de 0 at 7 passo 1 faa soma 0; para col de 0 at 3 passo 1 faa leia nota[lin][col]; soma soma + nota[lin][col]; fim_para media soma / 4; escreva media; fim_para fim

51

7.3 Exerccio de Aula

Escola Alcides Maya - Primeiro Mdulo

Para demonstrar a utilizao de uma matriz de duas dimenses, considere o exemplo apresentado a seguir: Primeiro exemplo Desenvolver um programa que efetue a leitura das receitas e despesas dos primeiros 6 meses de uma empresa. Calcular e armazenar o resultado mensal da empresa. Algoritmo 1 Ler as receitas de cada ms 2 Ler as despesas de cada ms 3 Calcular o resultado de cada ms subtraindo a receita da despesa 4 Apresentar as receitas, as despesas e o resultados de cada ms Pela caracterstica do programa a ser desenvolvido, seria ideal utilizarmos uma matriz 3 x 6, para armazenar estes dados. Nas colunas teremos os meses, nas linhas teremos respectivamente receitas, despesas e resultados, veja o desenho a seguir: Janeiro Receitas Despesas Resultados PORtuGuS EStRutuRADO incio real : caixa[3][ 6]; inteiro: lin, col; lin 1; para col de 0 at 5 passo 1 faa escreva Digite a receita do ms; leia caixa[lin][col]; fim_para lin 2; para col de 0 at 5 passo 1 faa escreva Digite a despesa do ms; leia caixa[lin][col]; fim_para para col de 0 at 5 passo 1 faa caixa[2][col] caixa[0][col] - caixa[1][col]; fim_para para col de 0 at 5 passo 1 faa escreva A receita do ms, caixa[0][col]; escreva A despesa do ms,caixa[1][col]; escreva O resultado do ms,caixa[2][col]; fim_para fim Fevereiro Maro Abril Maio Junho

52

Lgica de Programao

7.4 ExERCCIOS DE FIxAO


1 Desenvolva a codificao em portugus estruturado dos seguintes programas: a) Faa um programa para ler duas matrizes A e B, cada uma de duas dimenses com 5 linhas e 3 colunas. Construir uma matriz C de mesma dimenso, que formada pela soma dos elementos da matriz A com os elementos da matriz B. Apresentar a matriz C. b) Faa um programa para ler duas matrizes A e B, cada uma com 7 elementos. Construir uma matriz C, de duas dimenses, em que a primeira coluna dever ser formada pelos elementos da matriz A e a segunda coluna dever ser formada pelos elementos da matriz B. Apresentar a matriz C. c) Faa um programa para ler 20 elementos para uma matriz qualquer, considerando que ela tenha o tamanho de 4 linhas por 5 colunas, em seguida apresentar a matriz. d) Faa um programa para ler uma matriz A de uma dimenso com 10 elementos. Construir uma matriz C de duas dimenses com trs colunas, em que a primeira coluna da matriz C formada pelos elementos da matriz A somados com mais 5, a segunda coluna formada pelo valor do clculo da fatorial de cada elemento correspondente da matriz A e a terceira e ltima coluna dever ser formada pelos quadrados dos elementos correspondentes da matriz A . Apresentar a matriz C. e) Faa um programa para ler duas matrizes A e B, cada uma com uma dimenso pra 12 elementos. Construir uma matriz C de duas dimenses, sendo que a primeira coluna da matriz C dever ser formada pelos elementos da matriz A multiplicados por 2 e a segunda coluna dever ser formada pelos elementos da matriz B subtrados de 5. Apresentar a matriz C. f) Faa um programa para ler uma matriz A de duas dimenses com 5 linhas e 4 colunas. Construir uma matriz B de mesma dimenso, onde cada elemento da matriz B dever ser o fatorial de cada elemento correspondente da matriz A . Apresentar ao final as matrizes A e B. g) Faa um programa para ler uma matriz A de duas dimenses com 5 linhas e 5 colunas. Construir uma matriz B de mesma dimenso, sendo que cada elemento da matriz B dever ser o dobro de cada elemento correspondente da matriz A, com exceo para os valores situados na diagonal principal (posies B[1,1], B[2,2], B[3,3], B[4,4] e B[5.5] ) os quais devero ser o triplo de cada elemento correspondente da matriz A . Apresentar ao final a matriz B. h) Faa um programa para ler uma matriz A de duas dimenses com 7 linhas e 7 colunas. Construir uma matriz B de mesma dimenso, sendo que cada elemento da matriz B dever ser o somatrio de cada elemento correspondente da matriz A, com exceo para os valores situados na diagonal principal (posies B[1,1], B[3,3], B[5.5] e B[7,7] ) os quais devero ser o fatorial de cada elemento correspondente da matriz A . Apresentar ao final a matriz B. i) Faa um programa para ler uma matriz A de duas dimenses com 6 linhas e 5 colunas. Construir uma matriz B de mesma dimenso, que dever ser formada do seguinte modo: para cada elemento par da matriz A dever ser somado 5 e para cada elemento mpar da matriz A dever ser subtrado 4. Apresentar ao final a matriz A e B. j) Faa um programa para ler uma matriz A de duas dimenses com 4 linhas e 4 colunas. Apresentar o somatrio dos elementos situados na diagonal principal (posies A[1,1], A[2,2], A[3,3], A[4.4] ) da referida matriz. k) Faa um programa que leia uma matriz A de duas dimenses com 15 linhas e 15 colunas. Apresentar o somatrio dos elementos pares situados na diagonal principal da referida matriz. l) Faa um programa que leia uma matriz A de duas dimenses com 7 linhas e 7 colunas. Ao final apresentar o total de elementos pares existentes dentro da matriz. m) Faa um programa que leia uma matriz de duas dimenses com 7 linhas e 7 colunas. Ao final apresentar o total de elementos positivos, o total de elementos negativos e o total de elementos cujo valor zero. n) Faa um programa que leia uma matriz numrica de duas dimenses de 5 linhas e 8 colunas. No final encontrar e apresentar desta matriz o maior valor lido e o menor valor lido. o) Faa um programa que leia uma matriz de duas dimenses com 5 linhas e 5 colunas. Apresentar o somatrio dos elementos positivos situados na diagonal principal da referida matriz.

53

8 PROCEDIMEntOS E FunES
A partir deste momento vamos aprender o conceito da tcnica de sub-rotinas. Estas sub-rotinas tambm so conhecidas pela denominao de mdulos, sub-programas, ou subalgoritmos. Na linguagem C as sub-rotinas so tratadas como FUNES. Na realidade, no importa como so chamadas, o que importa a forma como funcionam e como devem ser aplicadas em um programa, e isto que iremos aprender a partir deste momento. Iremos rever o conceito de criao estruturada de programas, pois para escrever um programa de computador necessita-se de estudo (levantamento de todas as necessidades e detalhes do que dever ser feito) e metodologia (regras bsicas que devero ser seguidas). Sem a aplicao de mtodos no ser possvel resolver grandes problemas; quando muito, pequenos problemas. As Sub-rotinas No geral, problemas complexos exigem algoritmos complexos. Mas sempre possvel dividir um problema grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples, e esse trecho menor que chamado de sub-rotina. Uma sub-rotina na verdade um programa, e sendo um programa poder efetuar diversas operaes computacionais (entrada, processamento e sada) e dever ser tratada como foram os programas projetados at este momento. As sub-rotinas so utilizadas na diviso de algoritmos complexos, permitindo assim possuir a modularizao de um determinado problema, considerado grande e de difcil soluo. Quando trabalhamos com esta tcnica, pode-se deparar com a necessidade de dividir uma sub-rotina em outras tantas quantas forem necessrias, buscando uma soluo mais simples de uma parte do problema maior. O processo de dividir sub-rotinas em outras denominado Mtodo de Refinamento Sucessivo. O Mtodo Top-Down Desde muito tempo este um dos processos mais simples e mais utilizados pelos programadores. O processo de programar um computador torna-se bastante simples quando aplicado o mtodo de utilizao de sub-rotinas (mdulos de programas). Porm, a utilizao dessas sub-rotinas dever ser feita com aplicao do mtodo top down. Um mtodo bastante adequado para a programao de um computador trabalhar com o conceito de programao estruturada, pois a maior parte das linguagens de programao utilizadas atualmente tambm , o que facilita a aplicao deste processo de trabalho. O mtodo mais adequado para a programao estruturada o Top-Down (De cima para baixo) o qual se caracteriza basicamente por: Antes de iniciar a construo do programa, o programador dever ter em mente as tarefas principais que este dever executar. No necessrio saber como funcionaro, somente saber quantas so. Conhecidas todas as tarefas a serem executadas, tem-se em mente como dever ser o programa principal, o qual vai controlar todas as outras tarefas distribudas em suas sub-rotinas. Tendo definido o programa principal, iniciado o processo de detalhamento para cada sub-rotina. Desta forma so definidos vrios algoritmos, um para cada rotina em separado, para que se tenha uma viso do que dever ser executado em cada mdulo de programa. Existem programadores que estabelecem o nmero mximo de linhas de programa que uma rotina dever possuir. Se o nmero de linhas ultrapassa o limite preestabelecido, a rotina em desenvolvimento dividida em outra sub-rotina ( neste ponto que se aplica o mtodo de refinamento sucessivo). O mtodo Top-Down faz com que o programa tenha uma estrutura semelhante a um organograma. A utilizao do mtodo de cima para baixo permite que seja efetuado cada mdulo de programa em separado. Desta forma, cada um pode ser testado separadamente garantindo que o programa completo esteja sem erro ao seu trmino. Outro detalhe a ser considerado que muitas vezes existem em um programa trechos de cdigos que so repetidos vrias vezes. Esses trechos podero ser utilizados como sub-rotinas, proporcionando um programa menor e mais fcil de ser alterado num futuro prximo.

Escola Alcides Maya - Primeiro Mdulo

54

Lgica de Programao

A utilizao de sub-rotinas e o uso do mtodo Top-Down na programao permitem ao programador elaborar rotinas exclusivas. Por exemplo, uma rotina somente para entrada, outra para a parte de processamento e outra para sada dos dados. Aplicao prtica do uso de Sub-Rotinas As sub-rotinas podem ser subdivididas em dois tipos: Procedimentos e Funes. Entre estes dois tipos de sub-rotinas existem algumas diferenas, mas o conceito o mesmo para ambas. Um Procedimento um bloco de programa contendo incio e fim e ser identificado por um nome, por meio do qual ser referenciado em qualquer parte do programa principal ou do programa chamador da rotina. Quando uma sub-rotina chamada por um programa, ela executada e ao seu trmino o controle de processamento retorna automaticamente para a primeira linha de instruo aps a linha que efetuou a chamada de sub-rotina. Uma funo tambm um bloco de programa, como so os procedimentos, contendo inicio e fim e sendo identificada por um nome, por meio do qual tambm ser referenciada em qualquer parte do programa principal. Uma sub-rotina de funo na verdade muito parecida com uma sub-rotina de procedimento. A sua principal diferena est no fato de uma funo retornar um determinado valor. As funes formam o alicerce da programao em C. Voc faz toda a programao C dentro de uma funo, porque todos os programas devem incluir main, que uma funo. Em outras linguagens como Pascal, so utilizados procedimentos e funes, FORTRAN utiliza somente funes e a linguagem Assembly utiliza somente procedimentos. A linguagem C utiliza somente funes com e sem retorno de valores, tornando-se um pouco diferente na qualificao de sub-rotinas e funes, conforme a lgica de programao. Mas, no se preocupe, isto no ir mudar a forma como voc vai trabalhar na linguagem C. Exerccio de Aula Vamos criar um programa de calculadora que apresente um menu de selees no programa principal. Esse menu dever dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmticas. Escolhida a opo desejada, dever ser solicitada entrada de dois nmeros e depois de processada a operao, dever ser exibido o resultado. Este programa dever ser um conjunto de cinco rotinas, sendo uma principal e quatro secundrias. A rotina principal efetuar o controle das quatro rotinas secundrias que, por sua vez, pediro a leitura de dois valores, faro a operao e apresentaro o resultado obtido. A figura a seguir apresenta um organograma com a idia de hierarquizao das rotinas do programa. A quinta opo no se caracteriza por ser uma rotina, apenas a opo que vai encerrar o looping de controle do menu. Tendo uma idia da estrutura geral do programa, ser escrito em separado cada algoritmo com os seus detalhes de operao. Primeiro o programa principal e depois as outras rotinas, de preferncia na mesma ordem em que esto mencionadas no organograma. ideal que voc codifique o programa aos poucos, como por exemplo: na definio do programa acima, primeiro vamos testar o menu e ver se a interao entre as partes funciona. Veja no programa a seguir:

55

inicio character: opcao;

Escola Alcides Maya - Primeiro Mdulo

opcao <- 0; enquanto opcao <> 5 faa escrever 1 Adio; escrever 2 - Subtracao; escrever 3 - Multiplicacao; escrever 4 Diviso; escrever 5 - Fim do programa; escrever Escolha uma opcao: ; leia opcao; se opcao = 1 entao somar; seno se opcao = 2 entao subtrair; seno se opcao = 3 ento multiplicar; seno se opcao = 4 ento dividir; seno se opcao = 5; ento escrever Encerrando o programa; seno escrever Opcao invalida; fim_se fim_se fim_se fim_se fim_se

fim_enquanto fim

procedimento somar inicio real: valorA, valorB, result; escrever Rotina de Soma; escrever Digite um valor para A: ; leia valorA; escrever Digite um valor para B: ; leia valorB;

56

Lgica de Programao
result <- valorA + valorB; escrever A soma de A com B e: , result; fim [somar]

procedimento subtrair inicio real: valorA, valorB, result; escrever Rotina de Subtrao; escrever Digite um valor para A: ; leia valorA; escrever Digite um valor para B: ; leia valorB; result <- valorA - valorB; escrever A subtrao de A com B e: , result; fim [subtrair]

procedimento multiplicar inicio real: valorA, valorB, result; escrever Rotina de Multiplicao; escrever Digite um valor para A: ; leia valorA; escrever Digite um valor para B: ; leia valorB; result <- valorA * valorB; escrever A multiplicao de A com B e: , result; fim [multiplicar] procedimento dividir inicio real: valorA, valorB, result; escrever Rotina de Diviso; escrever Digite um valor para A: ; leia valorA; escrever Digite um valor para B: ; leia valorB; result <- valorA / valorB;

57

Escola Alcides Maya - Primeiro Mdulo

escrever A subtrao de A com B e: , result; fim [dividir]

Funes As funes podem ser utilizadas da forma mais simples possvel, como as que no recebem nenhuma informao e tambm no retornam nenhuma informao. Mas podem ser um pouco mais sofisticadas podendo receber informaes de quem as chamou e se for necessrio retornar uma informao para a funo que a chamou. A principal diferena existente entre uma sub-rotina do tipo procedimento e uma sub-rotina do tipo funo a capacidade que uma funo tem de retornar sempre um valor. Vamos ver um exemplo atravs da funo somar: funo inteiro somar ( ) inicio real: valorA, valorB, result; escrever Rotina de Soma; escrever Digite um valor para A: ; leia valorA; escrever Digite um valor para B: ; leia valorB; result <- valorA + valorB; return result; fim [somar] No programa acima podemos perceber o comando return que retorna o valor da varivel result.

58

Lgica de Programao
ExERCCIOS DE FIxAO 1. Faa um programa que efetue o clculo de uma prestao em atraso. Para tanto, utilize a frmula PREST = VALOR + (VALOR * (TAXA / 100) * TEMPO). O programa dever chamar uma funo que faa a entrada dos dados e o clculo da prestao e retorne o valor deste clculo para a funo principal (main). Finalmente apresentar o valor da prestao. 2. Faa um programa que possua uma funo que efetue e permita apresentar o somatrio dos N primeiros nmeros inteiros. (1+2+3+4+5+6+...+N). Esta funo dever receber da funo principal (main) o nmero N e no final esta mesma funo dever retornar o valor do somatrio, que dever ser apresentado ao usurio pela funo principal (main). 3. Faa um programa que possua uma funo para calcular e apresentar o valor de uma potncia de um nmero qualquer. Ou seja, ao informar para a funo o nmero e sua potncia, dever ser apresentado o seu resultado. Por exemplo, se for mencionado no programa principal a funo POTENCIA(2,3), dever ser apresentado o valor 8. 4. Faa um programa que possua uma funo para calcular e apresentar a srie de Fibonacci de N termos. A srie de Fibonacci formada pela seqncia: 1, 1, 2, 3, 5, 8, 13, 21, 34,...etc. Est srie caracteriza-se pela soma de um termo posterior com o seu anterior subseqente. A funo main deve apenas chamar a funo que calcula a srie de Fibonacci. 5. Faa um programa que efetua a leitura de um nmero inteiro e apresente uma mensagem informando se o nmero par ou mpar. Usar uma funo que identifique se o nmero par ou mpar. 6. Faa um programa que apresente um menu com as seguintes opes de clculos: Calcular a rea do quadrado Calcular a rea do retngulo Calcular a rea do circulo Encerrar o programa Estes clculos devem ser realizados em funes, ou seja, dever ter uma funo para cada tipo de clculo. Cada funo dever ter entrada de dados (digitao dos dados para o clculo), processamento dos dados (clculos propriamente ditos) e a sada de dados (apresentao dos resultados dos clculos). 7. Faa um programa que apresente um menu com as seguintes opes e efetue os respectivos clculos atravs de funes: Calcular o volume de uma lata de leo Calcular o volume de uma caixa Encerrar o programa 8. Em uma Escola Tcnica de Informtica, h um professor que faz 6 provas. Faa um programa para calcular a mdia dos alunos de uma escola. O programa dever ter um menu com as seguintes informaes: Calcular a mdia Encerrar o programa O clculo da mdia dever ser realizado em uma funo onde dever ser solicitado o valor das 6 notas escolares, efetuar o clculo da mdia e apresentar no final o resultado obtido conforme a tabela a seguir: [00,05) - Reprovado [05,07) - Recuperao [07,09) - Satisfatrio [09,10] - timo

59

9. Faa um programa para ler uma temperatura em graus Celsius. Criar uma funo que converte a temperatura de Celsius para Fahrenheit. A frmula de converso F ( 9 * C + 160 ) / 5, sendo F a temperatura em Fahrenheit e C a temperatura em Celsius. A funo de converso deve receber como entrada de dados a temperatura em Celsius em tipo de dado float, fazer a converso e retornar o valor convertido em graus Fahrenheit. 10. Faa um programa para ler uma temperatura em graus Fahrenheit. Criar uma funo que converte a temperatura de Fahrenheit para Celsius. A frmula de converso C ( F 32 ) * ( 5 / 9 ), sendo F a temperatura em Fahrenheit e C a temperatura em Celsius. A funo de converso deve receber como entrada de dados a temperatura em Fahrenheit em tipo de dado float, fazer a converso e retornar o valor convertido em graus Celsius. 11. Faa um programa que leia um caracter do teclado. Criar uma funo que ir converter esta letra para uma letra minscula e retorna-la. 12. Faa um programa que leia dois nmeros. Criar uma funo chamada potencia que eleva o primeiro nmero a uma potncia inteira do segundo nmero e retorna o valor calculado. Por exemplo, se for lido os nmeros 2 e 3, a funo ir calcular 2 ou seja 2 * 2 * 2 13. Faa um programa que leia e calcule a rea de um retngulo. O programa dever ter uma funo que leia a base e a altura do retngulo, calcule a rea e retorne o valor do resultado que dever ser apresentada na funo main. Frmula: rea do retngulo = base * altura. 14. Faa um programa que leia e calcule a rea de um tringulo. O programa dever ter uma funo que leia a base e a altura do retngulo, calcule a rea e retorne o valor do resultado que dever ser apresentada na funo main. Frmula: rea do tringulo = (base * altura) / 2. 15. Faa um programa que leia e calcule a rea de um trapzio. O programa dever ter uma funo que leia a base maior, a base menor e a altura do trapzio, calcule a rea e retorne o valor do resultado que dever ser apresentada na funo main. Frmula: rea do trapzio = ((base maior + base menor) /2) * altura. 16. Faa um programa que leia e calcule a rea de um crculo. O programa dever ter uma funo que leia o raio do crculo, calcule a rea e retorne o valor do resultado que dever ser apresentada na funo main. Frmula: rea do crculo = * r.

Escola Alcides Maya - Primeiro Mdulo

Anotaes:____________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________ _____________________________________________________________________________________

60

Lgica de Programao

Bibliografia utilizada: 1. MANZANO, JOS AUGUSTO N. G. Algoritmos: Lgica para Desenvolvimento de Programao, Editora rica, So Paulo, 2000. 2. MANZANO, JOS AUGUSTO N. G. Lgica estruturada para Programao, Editora rica, So Paulo, 2001. 3. BOHI, MARILYN Guia para programadores, Editora Campus, Rio de Janeiro, 1988. 4. ALCIDES MAYA - Polgrafo Tcnicas de Programao Porto Alegre, 2001 5. ALCIDES MAYA - Polgrafo Algoritmo Porto Alegre, 2001 6. REIS, ANTONIO Manual Bsico de Linguagem C, Porto Alegre, 2000. 7. Outras fontes Internet, Revistas e Peridicos.

61

You might also like