Você está na página 1de 66

Faculdade FORTIUM

Curso de Sistemas de Informao

Algoritmos e Lgica de Programao

Prof. Giselle Barbosa Gomes Machado

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

A automatizao de tarefas um aspecto marcante da sociedade moderna. O aperfeioamento tecnolgico alcanado, com respeito a isto, teve como elementos fundamentais a anlise e a obteno de descries da execuo de tarefas em termos de aes simples o suficiente, tal que pudessem ser automatizadas por uma mquina especialmente desenvolvida para este fim, O COMPUTADOR. Em Cincia da Computao houve um processo de desenvolvimento simultneo e interativo de mquinas (hardware) e dos elementos que gerenciam a execuo automtica (software) de uma dada tarefa. E essa descrio da execuo de uma tarefa, como considerada acima, chamada algoritmo. O objetivo dessa matria a Lgica de Programao dando uma base terica e prtica, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma linguagem de programao. Ser mostrado tambm um grupo de algoritmos clssicos para tarefas cotidianas, tais como: ordenao e pesquisa.

1- INTRODUO

2- DEFINIES DE ALGORITMO
"O conceito central da programao e da Cincia da Computao o conceito de algoritmos, isto , programar basicamente construir algoritmos." a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa. "O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de tarefas independente do desejo de automatiz-las, mas em geral est associado ao processamento eletrnico de dados, onde representa o rascunho para programas (Software)." "Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e s linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de tarefas a serem automatizadas." "Um algoritmo uma receita para um processo computacional e consiste de uma srie de operaes primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas so as variveis." Como qualquer modelo, um algoritmo uma abstrao da realidade. A abstrao o processo de identificar as propriedades relevantes do fenmeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes para ns, dependendo da finalidade da abstrao, e ignorar as irrelevantes. a forma pela qual descrevemos solues de problemas do nosso mundo, de forma que possam ser implementadas utilizando os recursos do mundo computacional. Como o mundo computacional possu severas limitaes em relao ao nosso mundo, necessrio que sejam impostas algumas regras bsicas na forma de solucionar os problemas, para que possamos utilizar os recursos de hardware e software disponveis. Algoritmos apesar de servirem para representar a soluo de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras bsicas de programao para que sejam compatveis com as linguagens de programao.

~1~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

*** ATENO ***


Algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria um nico algoritmo. Algoritmo um caminho para a soluo de um problema, e em geral, os caminhos que levam a uma soluo so muitas. O aprendizado de algoritmos como aprender a jogar futebol, no se consegue a no ser atravs de muitos exerccios. Algoritmos no se aprendem: - Copiando Algoritmos - Estudando Algoritmos Algoritmos s se aprendem: - Construindo Algoritmos - Testando Algoritmos

2.1- Fases de um Algoritmo


Quando temos um problema e vamos utilizar um computador para resolv-lo inevitavelmente temos que passar pelas seguintes etapas: a) Definir o problema. b) Realizar um estudo da situao atual e verificar quais a(s) forma(s) de resolver o problema. c) Terminada a fase de estudo, utilizar uma linguagem de programao para escrever o programa que dever a princpio, resolver o problema. d) Analisar junto aos usurios se o problema foi resolvido. Se a soluo no foi encontrada, dever ser retornado para a fase de estudo para descobrir onde est a falha.

2.2- Conceitos
Algoritmo uma seqncia finita de aes que descrevem como um problema pode ser resolvido. Instruo So frases que indicam as aes a serem executadas. So compostas de um verbo no imperativo/infinitivo mais um complemento. Ex. Bata(bater) duas claras em neve Ligue os faris Abra a porta Programa Aes de um algoritmo obedecendo sintaxe de uma linguagem de programao.

~2~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

2.3- Como Construir um algoritmo


a) Anlise Preliminar Entenda o problema, identifique os dados envolvidos e os resultados esperados. b) Soluo Desenvolver algoritmo para resolver o problema c) Teste de qualidade (Teste de mesa) Ideal testar o algoritmo com o mximo de combinaes possveis d) Alterao Caso o resultado do algoritmo no seja satisfatrio, altere-o e submeta a um novo teste. e) Produto Final Algoritmo concludo e testado.

2.4- Decomposio (Top-Down)


Dividir o problema em problemas menores. Exemplo. 1. Troque o pneu furado.

Detalhamento Pequeno Um pouco mais de Detalhes

1. Pegue o material necessrio (Inicio) 2.Troque o pneu furado (Meio) 3.Guarde o material (Fim)

Abra o porta-malas Retire o macaco, o estepe e a chave em cruz e o sinalizador Coloque o sinalizador atrs do carro Afrouxe as porcas do pneu furado Coloque o macaco na posio correta Levante o carro Retire as porcas Retire o pneu Coloque o estepe

Operaes Detalhadas

~3~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Coloque as porcas Desa o carro Retire o macaco Aperte as porcas do pneu trocado Guarde o macaco, o pneu furado , o sinalizador e a chave em cruz. Feche o porta-malas Obs. Algumas instrues poderiam ser dividas mais uma vez.

2.5- Desenvolvimento Estruturado


So tcnicas que permitem sistematizar e ajudar no desenvolvimento de algoritmos para a resoluo de grandes e complexos problemas computacionais. Objetivos destas tcnicas - Facilitar o desenvolvimento do algoritmo - Facilitar o seu entendimento pelos humanos - Antecipar a comprovao de sua correo - Facilitar a sua manuteno e modificao - Permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas

2.6- Formas de representao


a) Descrio Narrativa Ex. Clculo da mdia de um aluno: Obter as notas da primeira e da segunda prova Calcular a mdia aritmtica entre as duas Se a mdia for maior ou igual a 7, o aluno foi aprovado, seno ele foi reprovado

~4~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

b) Fluxograma Representao grfica de algoritmos, ou seja, das instrues e/ou mdulos do processamento. Conhecido tambm como diagrama de blocos utiliza modelagem visual para especificar o conjunto de instrues atravs de formas geomtricas, facilitando a compreenso da lgica utilizada pelo profissional. Existem atualmente vrios padres para definir as formas geomtricas a serem utilizadas para as diversas instrues (passos) a serem seguidos pelo sistema, o padro utilizado nesta disciplina, ser definido pelo professor durante as aulas. Abaixo, veja alguns smbolos que so utilizados no fluxograma: SMBOLO Inicio Idade A idade , Idade Idade >= 18 .F. Nasc <- Ano - Idade - Processamento I de 1 at 10 passo 1 - Lao de repetio Fim DESCRIO - Marcador de Inicio ou fim do fluxograma - Entrada de dados - Sada de dados

.V.

- Estrutura condicional (Se Ento Seno)

- Conector

Vamos a seguir, exibir um fluxograma que teria o objetivo de calcular o valor dirio de um salrio mnimo. Seguindo uma lgica simples, teramos que dividir o valor do salrio mnimo (que sabemos ser equivalente a R$ 360,00) e dividir este total por 30 (nmero de dias de um ms).

~5~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Observe como ficaria este fluxograma:

Inicio VlrDia <- 360,00 / 30

O valor dirio :, VlrDia Fim

A princpio marcamos o incio do fluxograma; Em seguida, armazenamos em uma posio de memria (varivel), o resultado do clculo 360,00 dividido por 30; Em seguida, apresentamos a frase O valor dirio seguido do valor constante na posio de memria (varivel) VlrDia O valor dirio : 32,00 Em seguida, finalizamos o fluxo. c) Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol. A representao de um algoritmo na forma de pseudocdigo a seguinte: Algoritmo Nome_Do_Algoritmo Variveis Declarao das variveis Procedimentos Declarao dos procedimentos Funes Declarao das funes Incio Corpo do Algoritmo Fim

~6~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Exemplo. Algoritmo Mdia Variveis N1, N2, Mdia: real Incio Escreva (informe o primeiro valor) Leia (N1) Escreva (informe o segundo valor) Leia (N2) Mdia <- (N1+N2)/2 Se Mdia >= 7 Ento Escreva (Aprovado!!) Seno Escreva (Reprovado!!) Fim se Fim. A identao (deslocamento para a direita) de uma instruo significa que tais instrues esto subordinadas a instruo anterior e facilita em muito a compreenso e manuteno do algoritmo e dos cdigos fontes em uma linguagem de programao.

~7~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

2.7- Tipos de processamento


a) Processamento Seqencial As instrues do algoritmo so executadas uma aps a outra, sem que haja desvio na seqncia das instrues, sendo cada instruo executada uma nica vez. Ex. Obter a mdia aritmtica das quatro notas 1. Inicio 2. Some as duas primeiras notas 3. Some a terceira nota com o resultado da instruo 2 4. Some a Quarta nota com o resultado da instruo 3 5. Divida resultado da instruo 4 por 4 6. Fim Se as quatro notas so 10,5,8,1 a execuo das instrues ficara da seguinte forma 1. Inicio 2. 10+5 = 15 3. 15+8 =23 4. 23+1 =24 5. 24 / 4=6 6.Fim

b) Processamento Condicional Um conjunto de instrues (pode ser apenas uma instruo) executado ou no dependendo de uma condio. Se a condio que estiver sendo testada tiver resposta afirmativa, o conjunto de instrues executado.

Ex. Obter a mdia aritmtica das quatro notas. Se a mdia for maior ou igual a sete, o aluno est aprovado, caso contrrio, est reprovado.

~8~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

1. Inicio 2. Some as duas primeiras notas 3. Some a terceira nota com o resultado da instruo 2 4. Some a Quarta nota com o resultado da instruo 3 5. Divida resultado da instruo 4 por 4 6. Se o resultado da instruo 5 for maior ou igual a 7 7. Aprove o aluno 8. Se o resultado da instruo 5 for menor que 7 9. Reprove o aluno 10.Fim Se as quatro notas so 10,5,8,1 a execuo das instrues ficara da seguinte forma 1. Inicio 2. 10+5 = 15 3. 15+8 =23 4. 23+1 =24 5. 24 / 4=6 6. Resposta negativa 7. Resposta afirmativa ento 6. Fim Note que a instruo 6 foi executada. Como a resposta foi negativa (a mdia foi inferior a sete), o aluno foi reprovado no sendo executada a instruo sete. c) Processamento com repetio Conjunto de instrues (pode ser apenas uma) que executado um determinado nmero de vezes. Sendo determinada uma condio de parada. resultado < 7 aluno reprovado

~9~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Ex. Obter a mdia aritmtica das quatro notas de todos os alunos da sala. 1. Inicio 2. Para cada aluno da sala 3. Some as duas primeiras notas 4. Some a terceira nota com o resultado da instruo 3 5. Some a Quarta nota com o resultado da instruo 4 6. Divida o resultado da instruo 5 por 4 7. Fim Se existem dois alunos na sala e suas notas so: 10, 5, 8, 1 e 4, 6, 7, 3 a execuo das instrues ficar da seguinte forma 3. 10+5 = 15 4. 15+8 =23 5. 23+1 =24 6. 24/4 = 6 3. 4+6 = 10 4. 10+7=17 5. 17+3=20 6. 20/4 = 5 Observe que um lao de repetio necessita sempre de uma condio de parada que seja vlida, caso contrrio o programa entrar em um lao infinito.

~ 10 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

2.8- Tipos de dados


Os dados so representados pelas informaes a serem processadas por um computador. Estas informaes esto caracterizadas por quatro tipos de dados: inteiros, reais, caracteres e lgicos. a) Tipo Inteiro Dados numricos positivos ou negativos, excluindo-se qualquer nmero fracionrio. Ex. 35, 0, -56 b) Tipo Real Dados numricos positivos, negativos e nmeros fracionrios. Ex. 1.2, -45.897 c) Tipo Caractere So do tipo caractere as seqncias contendo letras, nmeros e smbolos especiais. Uma seqncia de caracteres deve ser indicada entre aspas. Sendo tambm conhecido como: alfanumrico, string, literal ou cadeia. Ex. PROGRAMAO, Rua Alfa, 52 apto 1, 7, 249-4455 d) Tipo Lgico So do tipo lgico ou booleano os dados com valores verdadeiro/true (.T.) e falso/false (.F.), sendo que este tipo poder representar um dos dois valores.

2.9- Variveis (identificadores)


Podemos imaginar uma varivel como sendo um local onde se pode colocar qualquer valor do conjunto de valores possveis para o tipo definido para a varivel. Toda varivel possui um Nome, um Tipo e um valor associado. O nome de uma varivel utilizado para sua identificao e posterior uso dentro de um programa, sendo assim, necessrio estabelecer algumas regras de utilizao das mesmas. O nome de uma varivel pode conter um ou mais caracteres; O primeiro caractere do nome de uma varivel deve ser sempre uma letra;

~ 11 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

No pode possuir espaos em branco; No pode ser uma palavra reservada a uma instruo de programa; No podero ser utilizados outros caracteres que no sejam letras e nmeros. Os nomes escolhidos devem explicitar seu contedo. Qualquer caminho seguido no diagrama abaixo levara a um nome de varivel valido:

Onde:

Letra: Qualquer letra do alfabeto [a..z, A..Z] Digito: Dgitos de [0..9]

So identificadores vlidos: NOMEUSUARIO, FONE1, X, DELTA25, Z4, Idade, X1, mODELoDeVeiculo, So identificadores invlidos: *nome, 2Fone, NOME/USUARIO, mODELO-DE-VEICULO, Nota do Aluno

2.10- Declarao de variveis


Para que os programas manipulem valores, estes devem ser armazenados em variveis e para isso, devemos declar-las de acordo com a sintaxe: NomeVarivel : Tipo Ex.: VARIVEIS SalMes, Inss: REAL Nome: CARACTER[30] // Cadeia de caracteres Sexo: CARACTER // Caractere Nesta definio, deveremos seguir as regras seguintes:

~ 12 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

VARIVEIS a palavra chave, que dever ser utilizada uma nica vez na definio das variveis e antes do uso das mesmas; Variveis de tipos diferentes devero ser declaradas em linhas diferentes; Em uma mesma linha, quando quisermos definir variveis de mesmo tipo, deveremos usar o smbolo de vrgula (,) para separar as mesmas.

2.11- Constantes
Tudo aquilo que fixo ou estvel Ex. o valor do EXERCCIOS: 1 - Identifique os atributos e declare variveis para um objeto automvel 2 - Identifique os Atributos e declare variveis para um objeto Pessoa 3 - Identifique os atributos e declare variveis para um objeto Eleitor 4 - Assinale com C os nomes corretos de varivel e com I os incorretos. Explique o que est errado nos nomes incorretos. (a) ( (c) ( (e) ( (g) ( (i) ( ) certo ) oi! ) soda# ) Nota do Aluno ) arquivox11 (b) ( (d) ( (f) ( (h) ( (j) ( ) *oi ) 'Lucio' ) i123453 )o ) 1ate - 3.14159

5 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo inteiro, com R os reais, com C os caracteres (literais), com B os lgicos (booleanos), e com N aqueles para os quais no possvel definir o tipo de dado. (a) ( (c) ( (e) ( (g) ( (i) ( (l) ( ) -988786,987 ) "Casa do Titio" ) site ) ".V". ) .'V'. ) 12,89 (b) ( (d) ( (f) ( (h) ( (j) ( (m) ( ) "34,50" ) .F. ) -33 ) 0,5 ) ".F." ) 215333

~ 13 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

2.12- Operaes Bsicas:


a) Expresses Na lgica de programao uma expresso tem o mesmo objetivo/conceito do termo expresso da matemtica comum, ou seja, um conjunto de variveis e constantes que se relacionam por meio de operadores aritmticos. Este conjunto de expresso e operadores aritmticos (soma por exemplo), formam uma frmula que, aps solucionada fornecem um resultado em especfico. Observe o grfico a seguir:

Neste caso, a frmula para se calcular a rea de um retngulo igual ao produto de sua altura por sua base, poderemos ento montar a frmula como se segue: AREA <- altura * base Observe que no exemplo acima, utilizamos trs variveis: altura, base e rea, sendo que o resultado final armazenado na varivel AREA, ou seja, local de memria onde ser armazenado o resultado da avaliao da expresso e o operador o sinal de * que em linguagem de computador representa a multiplicao. J que falamos em operadores, vamos ser um pouco mais claros neste tpico. Os operadores so elementos ativos que tem influncia sobre os operandos e atravs de sua ao resultam em um determinado valor. No exemplo acima, os operandos seriam as variveis altura e base e o operador de multiplicao o *. Em lgica de programao, os operadores podem ser classificados em dois grupos: Binrios: quando trabalham sobre os operandos em uma expresso. Os mais conhecidos so os smbolos + - * /, que representam a soma, subtrao, multiplicao e diviso respectivamente. Unrios: quando tem influncia sobre um nico operando, indicando, por exemplo, que este se trata de um nmero negativo e no vem acompanhado nenhum outro operando. Exemplo: ao representar o nmero quatro negativo podemos utilizar (-4). Isso no quer dizer que queremos subtrair o nmero quatro de outro valor.

~ 14 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Assim como classificamos os operadores, podemos tambm classificar as expresses quanto ao seu tipo, conforme mostra a lista a seguir: Expresso aritmtica: quando o resultado de sua avaliao for um nmero, podendo este ser positivo ou negativo assim como inteiro ou real; Expresso lgica: quando o resultado de sua avaliao for um valor lgico, ou seja, verdadeiro (.T.) ou falso (.F.); Expresso literal: quando o resultado de sua avaliao for um valor literal. Cada uma das expresses vistas acima possui seus operadores em especfico. A seguir, vamos mostrar uma tabela contendo esses operadores: b) Operadores Na soluo da grande maioria dos problemas necessrio que as variveis tenham seus valores consultados ou alterados e para isto devemos definir um conjunto de OPERADORES, sendo eles: OPERADOR DE ATRIBUIO:

NomeDaVariavel Valor ou Expresso Atribuda. ATENO!! Em nossa disciplina usaremos o smbolo para atribuio. OPERADORES ARITMTICOS:

+ Adio a Div b Diviso Inteira * Multiplicao a Resto b Resto da diviso de inteiros - Subtrao ou inversor do sinal. ^ Exponenciao ab (^ ou **) / Diviso FUNES PRIMITIVAS: SEN(x); COS(x); TG(x); ABS(x); INT(x); Raizq(x).

OPERADORES RELACIONAIS: So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdadeiro ou Falso), sendo eles: = - igual (==) < - menor <= - menor ou igual <> - diferente (!=) > - maior >= - maior ou igual

~ 15 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

OPERADORES LGICOS: So utilizados para avaliar expresses lgicas, sendo eles: .E. - e lgico ou conjuno. .Ou. - ou lgico ou disjuno. No - negao. A B A .E. B A .OU. B

VERDADEIRO/TRUE/.T./.V./1 VERDADEIRO/TRUE/.T./. VERDADEIRO/TRUE/.T./.V. VERDADEIRO/TRUE/.T./.V./ V./1 /1 1 VERDADEIRO/TRUE/.T./.V./1 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./. V./1 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./ 1 VERDADEIRO/TRUE/.T./.V./ 1 FALSO/FALSE/.F./0

Tabela verdade dos operadores .E. e .OU. APROVADO?? (Media >= 60) .E. (Frequencia > 0.75) REPROVADO?? (Media < 60) .OU. (Frequencia < 0.75) TABELA VERDADE DO OPERADOR .E. A B A .E. B
1 1 0 0 1 0 1 0 1 0 0 0

TABELA VERDADE DO OPERADOR .OU. A B A .OU. B


1 1 0 0 1 0 1 0 1 1 1 0

TABELA VERDADE DO OPERADOR .No. A No(A)


1 0 0 1

~ 16 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

PRIORIDADE DE OPERADORES: Durante a execuo de uma expresso que envolve vrios operadores, necessrio a existncia de prioridades, caso contrrio poderemos obter valores que no representam o resultado esperado. A maioria das linguagens de programao utiliza as seguintes prioridades de operadores: 1 - Efetuar operaes embutidas em parnteses "mais internos" 2 - Efetuar Funes 3 - Efetuar multiplicao e/ou diviso 4 - Efetuar adio e/ou subtrao 5 - Operadores Relacionais 6 - Operadores Lgicos OBS: O programador tem plena liberdade para incluir novas variveis, operadores ou funes para adaptar o algoritmo as suas necessidades, lembrando sempre, que estes devem ser compatveis com a linguagem de programao a ser utilizada. Exerccios: Na expresso A*B-C, qual ser a seqncia de execuo? Na expresso (A*B)-C, qual ser a seqncia de execuo? Na expresso A*(B-C), qual ser a seqncia de execuo? Na expresso ( A*(B-C*(D/E))), qual ser a seqncia de execuo? A lgica para se montar uma expresso ponto determinante na questo do resultado ser ou no verdadeiro, ou seja, de ser o resultado esperado.

2.13- Primeiras instrues


Aps dominarmos os assuntos anteriormente tratados, passaremos a estudar as instrues primitivas, ou seja, comandos bsicos que executam tarefas consideradas essenciais para a execuo de qualquer programa de computador. Um exemplo deste tipo de instruo so aquelas responsveis pela comunicao do operador com o computador por meio do teclado (entrada de dados) ou ainda a impresso de um relatrio (sada de dados sem contar com a parte esttica do relatrio, alinhamento de colunas, etc...). Toda linguagem de programao tem por obrigao possuir instrues primitivas, pois sem estas no existiria comunicao com os perifricos. Antes de qualquer coisa, voc saberia diferenciar perifricos de entrada e de sada de dados? A resposta simples, perifricos de entrada so aqueles responsveis pela

~ 17 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

passagem de dados do mundo externo para a memria do computador, como por exemplo, o teclado, unidade de CD-ROM, etc... J os perifricos de sada recebem os dados do computador para outro equipamento externo, como por exemplo, o monitor de vdeo, impressora, etc... Toda instruo, primitiva ou no possui uma sintaxe, ou seja, uma regra que dever ser seguida para a construo de seu cdigo e caso esta no seja obedecida, o seu programa pode simplesmente no funcionar. Devemos saber tambm que o conjunto de aes que sero realizadas pelo computador aps a execuo de um determinado comando conhecida como semntica. EXERCCIOS: 1) Quais os valores das expresses a seguir: 2+3*6 12 / 3 * 2 5 31 / 4 31 div 4 31 Resto 4 9 ** (3-1) 3 ** 3 2) Considere o seguinte trecho do algoritmo: Algoritmo Exercicio2 Variaveis Pig,Vari, Total, A, I : Inteiro ValorA, X : Real Inicio Vari 2 Total 10 ValorA 7.0 A -4 I 80 X 4.0 X Total / Vari XX+1 AA+I Pig 10 A I div Pig A A + I Resto 6 ValorA Pig * ValorA + X Fim

Pig Vari Total A I ValorA X

Mostre quais os valores armazenados em cada uma das variveis aps a execuo de cada um dos comandos do algoritmo acima.

~ 18 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

3) Considerando o contedo das variveis conforme a seguir, diga qual o valor de cada uma das expresses: Nome ANA Apelido flor Qquer ana Aux 10 Resp .F. K 3 Karol 2

a) Nome == Apelido b) (Nome == Qquer) .E. (Nome <> ANa) c) Nome == Nome d) (K >= Karol + 1) .OU. (Qquer == ana) e) No Resp f) (No Resp) .E. (K < Aux) g) (Aux <= Aux / K + K) .E. ((Resp) .OU. (Apelido == flor)) h) K > Karol + (K Karol) i) ((No Resp .E. Resp) .OU. (No Resp)) .E. (Resp .OU. (No Resp)) 4) Faa o teste de mesa do algoritmo a seguir: Algoritmo exercicio4 Variaveis Q, W, R : inteiro Ex : Real Inicio Q 10 Q 10 + 30 W -1 WW +Q Q Q Resto W Q W div (Q + 4) Ex 2 * Q / W R0 RR+1 RR+1 Fim 5) Considerando as variveis abaixo, indique o resultado de cada uma das expresses a seguir: X Y Z W Q .V. 2 4 1,50 PROVA ( ( ( ( ( ) ) ) ) )

a) (2 * (5 resto 3) + Y + W * 2) > Z .OU. (Y < Z -1) .E. no((Z * (Y 1) + Y) < 100) b) (X .OU. .V.) .OU. (Z * 2 div Y < W * Y) c) .F. .E. X = no(.V.) .OU. Y < Z d) Y + 4 * (Z RESTO 3 + 1) e) (3 + W (Y + 1) / 2) + 1,5

~ 19 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

6) Dada a declarao de variveis: variveis I1, I2, I3 : inteiro R1, R2, R3 : real L1, L2 : literal B1, B2 : lgico Para as variveis declaradas acima, s quais so dados os valores seguintes: I1 9 I2 7 I3 6 R1 5.5 R2 3.92 R3 6.0 L1 'Ol' L2 'A1' B1 .V. B2 .V.

Determine o resultado da avaliao das expresses abaixo. Se caso no for possvel resolver a expresso responda Expresso Invlida: (a) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1) (b) (I1^2) + (I3^ 2) (c) L1 <> L2 (d) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1) .E. (I1>=I3) .E. (R1 >= I3) (e) (R1 * I1) / (R3^B1) - B2 (na sintaxe do VisuAlg) 7) Faa o teste de mesa do algoritmo a seguir: algoritmo "horas" var ht:inteiro sm,a,a1,b,c,d:real inicio escreval("informe o salario minimo:") leia(sm) escreval("informe as horas trabalhadas:") leia(ht) a <- sm /2 b <- ht*a c <- b*3/100 d <- b - c escreval("Uma hora trabalhada corresponde a :",a) escreval("o salario bruto :",b) escreval(" imposto :",c) escreval("salario bruto menos imposto:",d) fimalgoritmo

~ 20 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

8) Faa o teste de mesa do algoritmo a seguir: algoritmo "peso" var idade,pesideal,altura:real sexo:caracter inicio escreval("Informe o sexo: ") leia(sexo) escreva("Informe a altura: ") leia(altura) se sexo = "M"entao pesideal <-(72.7 * altura)-58 senao pesideal<-(62.1 * altura)-44,7 fimse escreval("Peso ideal : ",pesideal) fimalgoritmo

~ 21 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

3- COMANDOS DE ENTRADA E SADA:


No algoritmo preciso representar a troca de informaes que ocorrer entre o mundo da mquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e sada. Em nvel de algoritmo esses comandos representam apenas a entrada e a sada da informao, independe do dispositivo utilizado (teclado, discos, impressora, monitor,...), embora nas linguagens de programao essa independncia no existe, ou seja, nas linguagens de programao temos comandos especficos para cada tipo de unidade de Entrada/Sada. Comando de Entrada de Dados Leia (varivel_1, varivel_2,...) Comando de Sada de Dados Escreva (expresso_1, expresso_2,...) Algoritmo media Variveis quilometragem,litros,media: REAL Inicio ESCREVA (Entre com a quilometragem inicial e a Quantidade de litros gastos) LEIA (quilometragem) LEIA (litros) Media quilometragem/litros ESCREVA (A mdia :, media) Fim. Observe que no pseudocdigo, quando queremos enviar uma expresso como sada, a mesma colocada dentro de aspas, porm quando queremos enviar o contedo de uma varivel, esta dever estar fora de aspas. EXERCCIOS: 01 - Construa o fluxograma e o algoritmo que receba um nmero, calcule o seu quntuplo e mostre o nmero recebido e o resultado. 02 - Construa o fluxograma e o algoritmo que receba um nmero, calcule a sua metade, mostre o resultado. 03 - Construa o fluxograma e o algoritmo que receba dois nmeros, calcule o produto entre eles, mostre o resultado e os nmeros recebidos. 04 - Construa o fluxograma e o algoritmo que receba trs nmeros, calcule a diferena do primeiro pelo segundo, o resultado deve ser multiplicado pelo terceiro nmero e mostre os resultados obtidos.

~ 22 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

05 - Construa o fluxograma e o algoritmo que receba dois nmeros, calcule: a diviso, a multiplicao, a soma, a diferena entre eles e mostrar os resultados. 06 - Construa o fluxograma e o algoritmo que receba, a idade de trs pessoas, calcule e mostre a mdia das idades. 07 - Construa o fluxograma e o algoritmo que receba a matrcula, o nome e o salrio-base de um funcionrio, calcule o salrio lquido a receber e o total do desconto, sabendo que: o imposto a ser descontado de 12% sobre o salrio-base. Mostre os resultados e os dados do funcionrio. 08 - Uma Empresa de Energia Eltrica calcula o valor da conta de luz de acordo com o consumo em Kw/h. Faa o fluxograma e o algoritmo que receba o nmero da conta, a leitura anterior e a leitura atual, calcule o valor a ser pago, sabendo que a tarifa do Kw/h de 0.20725. Mostre o nmero da conta, o valor da conta e o consumo de luz de um usurio. 09 - Faa o fluxograma e o algoritmo que receba a matrcula e trs notas do aluno, calcule a sua mdia sabendo que a primeira nota tem peso dois, a segunda peso trs e a terceira peso quatro. Mostre a matrcula e a mdia do aluno. 10 -. Uma loja est vendendo os seus produtos a prazo com juros de 10% e a vista com desconto de 5%. Faa o fluxograma e o algoritmo que receba o valor da compra, calcule o valor vista, a prazo e mostre os resultados. 11 - Faa o fluxograma e o algoritmo que receba a matrcula, o nome e o salrio-base de um funcionrio, calcule os descontos com vale transporte (vt) 3% e vale refeio (vr) 5%. Mostre o nome, a matrcula e os valores descontados separadamente. 12 - Um comrcio est vendendo os seus produtos com um desconto de 25%. Faa o fluxograma e o algoritmo que calcule e mostre o valor do desconto obtido em uma determinada compra, valor da compra com e sem desconto. 13 - Uma firma paga a seus vendedores o salrio-base e uma comisso de 20% sobre o valor das vendas do ms. Faa o fluxograma e o algoritmo que calcule e mostre, a comisso e o lquido a receber de um vendedor. 14 - Faa o fluxograma e o algoritmo que receba a matrcula, o salrio-base de um funcionrio, calcule 7% de gratificao sobre as vendas da loja, mostre a matrcula, o total dos vencimentos, a gratificao e o salrio-base do funcionrio. 15 - O custo ao consumidor de um carro novo a soma do custo de fbrica, a percentagem do distribuidor e a percentagem da concessionria (aplicados ao custo de fbrica). Faa o fluxograma e o algoritmo que receba o custo de fbrica de um carro, informe o custo ao consumidor. Sabendo que: a percentagem do distribuidor de 28% e a percentagem da concessionria de 48%. Mostre os valores separadamente.

~ 23 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

16 - Construa o fluxograma e o algoritmo que receba o cdigo, o preo unitrio, a quantidade e o desconto em percentual de um produto, calcule o valor total, o total a pagar com desconto e o valor do desconto. Mostre o cdigo do produto e os resultados.

4- COMANDOS DE CONTROLE DE FLUXO:


Para representar a soluo de um problema devemos escrever o conjunto de passos a serem seguidos, sendo que a maioria dos problemas exige uma dinmica na sua soluo, impondo assim que os algoritmos executem o conjunto de instrues de acordo com as possveis situaes encontradas no problema original. De acordo com a Programao Estruturada os mecanismos utilizados para esse controle so: Seqncia, Seleo e Repetio. SEQUNCIA: usada para executar comandos passo a passo, sabendo que todos eles sero executados na ordem de escrita, sem nenhum desvio. Uma seqncia pode possuir um ou vrios comandos, os quais devem ser delimitados pelos identificadores Incio e Fim.

Inicio Comando_1 ... Comando_n Fim SELEO: usada para tomar decises, ou seja, desviar a execuo do algoritmo de acordo com uma condio, podendo ser simples ou composta. Composta Se (Expresso Lgica) Ento Seqncia_1 Seno Seqncia_2 Fim se

Simples Se (Expresso Lgica) Ento Seqncia_1 Fim se

Imagine a seguinte situao: em uma empresa, ser solicitado o salrio de um determinado funcionrio para se calcular seu novo salrio, sendo que, se este tiver um salrio superior a R$ 1500,00, o reajuste ser de 5%, caso contrrio o reajuste ser de 8%. Observe que teremos que testar o valor do salrio, para saber o ndice a ser aplicado. Vamos criar ento um pseudocdigo com este objetivo:

~ 24 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Algoritmo testa_salario Variveis Salario: REAL Salario_final: REAL Inicio Escreva(Informe o salario) Leia (salario) Se salario <= 1500 ento Salario_final=(salario*1,08) seno Salario_final=(salario*1,05) Fim se Escreva(Salario final = ,Salario_final) Fim. Observe que, durante a execuo do pseudocdigo, aps obtermos, atravs de uma instruo de entrada de dados, o valor do salrio do funcionrio, efetuamos um teste Se, que possui duas condies, uma verdadeira e uma falsa. As instrues que sero executadas no caso de um teste verdadeiro devem estar abaixo da clusula Ento, j as instrues que sero executadas no caso de um teste falso, devem estar abaixo da clusula seno. A instruo Fim_se termina o bloco de testes. Observe a sintaxe de uma estrutura de deciso a seguir: Se <teste> Ento

Lista de comandos a serem executados caso teste=verdadeiro Seno Lista de comandos a serem executados caso teste=falso. Fim se Em fluxograma, uma estrutura de deciso representada pelo smbolo:

teste

.T.

.F.

Os smbolos que estiverem na direo de True sero executados caso o teste seja verdadeiro. J os smbolos que estiverem na direo de false sero executados caso o teste tenha um resultado falso.

~ 25 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Observe o trecho do pseudocdigo acima, representado no fluxograma:

salario <= 300

True

salario_final = salario * 1,08

False salario_final = salario * 1,05 salario_final

Existem casos em que no basta ter apenas as direes verdadeiro e falso para tomar uma determinada deciso, e sim, uma srie de testes sobre um mesmo bloco. Este tipo de estrutura chamado de estrutura de deciso do tipo ESCOLHA.

Observe a seguir a sintaxe da estrutura de deciso do tipo escolha em pseudocdigo:

Faa Caso Caso <condio 1> Lista de instrues caso condio 1 = verdadeira Caso <condio 2> Lista de instrues caso condio 2 = verdadeira Caso <condio 3> Lista de instrues caso condio 3 = verdadeira Outro caso Lista de instrues caso todas as condies = falsa Fim_Caso

~ 26 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

No fluxograma, o smbolo que representa cada uma das condies acima, o mesmo que o smbolo que representa a estrutura de deciso. Veja a sintaxe da estrutura de deciso de escolha no fluxograma: Teste1 False Teste2 False Teste3 False True Instrues Condio 03 True Instrues Condio 02 True Instrues Condio 01

Vamos imaginar um exemplo parecido, de reajuste de salrio, porm teremos as seguintes situaes para reajuste: Salrios inferiores a R$ 400,00 = reajuste de 9% Salrios iguais a R$ 400,00 e inferiores a R$ 800,00 = reajuste de 7% Salrios iguais a R$ 800,00 e inferiores a R$ 1000,00 = reajuste de 5% Fora das faixas supracitadas = reajuste de 3% Veja o pseudocdigo do exemplo citado: Algoritmo testa_salario2 Variveis Salrio , Salario_final: REAL Inicio Ler salario Faca caso Caso salario < 400 Salario_final=(salario*1.09) Caso salario >= 400 .e. salario<800 Salario_final=(salario*1.07) Caso salario>=800 .e. salario<1000 Salario_final=(salario*1.05) Outro caso Salario_final=(salario*1.03) Escrever Salario_final Fim.

~ 27 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Observe que, temos aqui uma novidade, ou seja, em uma nica condio, estamos na verdade realizando dois testes, isto porque usamos o operador lgico AND. e., ou seja, se salrio menor ou igual a 400 e salrio menor que 800 faa isso... assim sucessivamente. Quando usamos o operador lgico .e., os testes, neste caso dois, que formam o caso, devem ser verdadeiros. O outro operador lgico .ou., retorna verdadeiro caso um dos testes que formam o conjunto satisfaa a uma determinada condio. Como exerccio, crie o fluxograma do pseudocdigo visto acima. A seguir iremos estudar as estruturas de repetio e desenvolver mais exemplos sobre o que estudamos neste mdulo. EXERCCIOS: Seleo Simples: 01 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o seu quntuplo somente quando o nmero digitado for maior que trinta. 02 - Construa o fluxograma e o algoritmo que receba um nmero e mostre a sua metade somente quando ela for maior que cinqenta. 03 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o nmero e o seu dobro somente quando o nmero for maior que noventa e menor que cem. 4 - Construa o fluxograma e o algoritmo que receba. um nmero e mostre a sua quinta parte somente quando ela for menor que cinqenta ou maior que mil. 05 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o seu sxtuplo somente quando o resultado no for menor que trezentos. 06 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o nmero e o sxtuplo somente quando o nmero for maior que noventa. 07 - Construa o fluxograma e o algoritmo que receba dois nmeros e mostre a diferena somente quando o primeiro for maior que o segundo. 08 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o nmero somente quando o nmero for par. 09- Construa o fluxograma e o algoritmo que receba um nmero e mostre o nmero se ele estiver entre quinze(inclusive) e quarenta. 10 - Construa o fluxograma e o algoritmo que receba um nmero e mostre o nmero somente se ele estiver entre trinta e duzentos e oitenta e um (inclusive).

~ 28 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

11 - Faa o fluxograma e o algoritmo que receba nome, idade e a altura, exiba somente o nome da pessoa com 1, 70m e idade acima de 17 anos. 12 - Faa o fluxograma e o algoritmo que receba o cdigo, o valor unitrio e a quantidade de mercadoria adquirida. Calcule 6% de descontos somente para o total da compra que ultrapassar a R$ 100,00. Ao final mostre o cdigo, o total a pagar com, sem desconto e o valor do desconto. 13 - Faa o fluxograma e o algoritmo que receba o nmero da conta, o nome, o endereo e o consumo em kw/h, informe o nmero da conta, o nome e o endereo da conta de luz em que o consumo for inferior a 100 kw/h. 14 - Faa o fluxograma e o algoritmo que receba Nome, Turma e Trs Notas do aluno. Calcule a mdia ponderada considerando: primeira nota peso um, segunda nota peso dois e terceira nota peso trs, informar o nome, a turma e a mdia do aluno que a mdia for inferior a sete. 15 - Construa o fluxograma e o algoritmo que receba um nmero e mostre se o nmero recebido mpar. 16 - Faa o fluxograma e o algoritmo que receba o salrio de um funcionrio, calcule e mostre o novo salrio, sabendo-se que este sofreu um aumento de 25%. Este aumento vlido para os funcionrios com mais de cinco anos de servio. 17 - Faa o fluxograma e o algoritmo que receba o salrio de um funcionrio, calcule e mostre o salrio a receber, sabendo-se que esse funcionrio tem gratificao de 5% sobre o salrio-base. Pagar imposto de 7% sobre o salrio, o funcionrio cujo salrio mais a gratificao ultrapassar a R$1.000,00. Seleo Composta: 01 - Construa um algoritmo que receba dois nmeros e mostre quando o primeiro for maior e quando for menor que o segundo. 02 - Construa um algoritmo que receba dois nmeros e mostre quando o primeiro for maior, quando for menor e quando for igual ao segundo. 03 - Construa um algoritmo que receba trs nmeros e mostre quando o nmero estiver na situao de maior nmero digitado. 04 - Faa um algoritmo que receba dois nmeros e informe a diferena do maior pelo menor. 05 - Faa um algoritmo que receba a matrcula e duas notas do aluno. Calcular a mdia e mostrar a matrcula do aluno com as seguintes mensagens de acordo com a tabela abaixo: mdia> 7,0 - "Aluno Aprovado" mdia = 7,0 - "Aluno em Recuperao" mdia < 7,0 -" Aluno Reprovado"

~ 29 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

06 - Faa um algoritmo que receba o cdigo, o preo e o tamanho da camiseta. Sabe-se que de acordo com o tamanho h um desconto conforme tabela abaixo. Informar o cdigo, e o valor do desconto. tamanho "G" - 1 0% tamanho "M" - 20% tamanho "P" - 30% 07 - Faa um algoritmo que receba o nome e o salrio do funcionrio, calcule os descontos conforme a tabela e informe o nome, o salrio a receber e os descontos (separados) do funcionrio. SALARIO At 500,00 500,01 a 950,00 Acima de 950,00 INSS 3,00% 5,00% 7,00% IR 2,00% 4,00% 6,00%

08- Faa um algoritmo que receba o cdigo e o total de vendas do vendedor, calcule a comisso conforme a tabela e informe o cdigo e a comisso do vendedor. TOTAL DAS VENDAS At 100,00 Acima 100,00 at 350,00 Acima 350,00 COMISSO 0,00% 5,00% 10,00%

09 - Faa um algoritmo que receba a matrcula e o salrio do funcionrio, calcule a gratificao conforme a tabela e informe a matrcula, salrio a receber e o valor da gratificao do funcionrio. SALRIO at 500,00 500,01 a 1.000,00 Acima 1.000,00 GRATIFICAO 15,00% 10,00% 5,00%

10 - Faa um algo ritmo que receba um nmero e informe quando ele for maior e menor que o nmero 100. 11 - Faa um algoritmo que receba dois pesos e mostre quando o primeiro peso for maior que o segundo peso.

~ 30 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

12 - Faa um algoritmo que receba duas idades e mostre quando a primeira idade for maior, quando for igual e quando for menor que a segunda idade (mostrar separadamente) 13 - Faa um algoritmo que receba trs alturas e informe quando a altura quando ela estiver na situao de maior altura. 14 - Faa um algoritmo que receba o nome e o sexo de uma pessoa. Informar o nome quando masculino e quando feminino. 15 - Faa um algoritmo que receba a matrcula e o salrio do funcionrio. Sabe-se que de acordo com o salrio h uma gratificao conforme tabela abaixo. Informar a matrcula e a gratificao. Acima de R$300,OO - 5% Abaixo de R$ 300,00 - 10% R$ 300,00 - 6%

~ 31 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

5- ESTRUTURAS DE REPETIO
Vamos falar um pouco sobre as estruturas de repetio, ou seja, uma parte do cdigo que dever ser executada n vezes. Em linguagem de programao, as estruturas de repetio so conhecidas como laos (loops). Trabalhamos basicamente com dois tipos de estruturas de repetio: 1. LAOS CONTADOS: Quando se tem, de forma prvia, o nmero de vezes que uma determinada seqncia de comandos ser executada. 2. LAOS CONDICIONAIS: Aqueles que no possuem um nmero pr-determinado de vezes que a estrutura de comandos ser executada, porm este nmero estar vinculado a uma determinada condio. Laos Contados (PARA): Em pseudocdigo, utilizamos a seguinte sintaxe para laos contados: Para <varivel> = <valor inicial> at <valor final> Passo <numero> faca <Comandos> Fim para Onde: A varivel aquela que ir receber a contagem. Os valores iniciais e finais representam onde comea e termina a contagem da repetio. O nmero de Passo (incremento) estipula a forma da contagem, como por exemplo, incrementos de 1 em 1, 2 em 2 .... e aps , a seqncia de comandos que ser executada durante o lao. No fluxograma, utilizamos a seguinte sintaxe para representar laos contados:

~ 32 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

A lgica de trabalho do lao contado apresentada a seguir: 1. No inicio da leitura do cdigo/fluxo, o valor inicial atribudo varivel; 2. O valor da varivel comparado ao valor final; 3. Se o valor da varivel for maior que o valor final, a seqncia de comandos que faz parte do lao no executado e o controle do processo passa para a prxima linha aps o final do lao (FIM PARA) ou para o smbolo ao lado (no caso de fluxograma); 4. Se o valor da varivel for menor ou igual ao do valor final, a seqncia de comandos executada e, ao final do ltimo comando, o valor do incremento adicionado a varivel e retorna-se comparao entre varivel e valor_final, repetindo todo o processo anterior. Vale lembrar que o incremento no de declarao obrigatria, e, caso no seja declarado, assume automaticamente o valor 1. laos Condicionais ENQUANTO/REPITA ATE: J os laos condicionais so aqueles cujo conjunto de comandos em seu interior executado at que uma determinada condio seja satisfeita. ENQUANTO: O pseudocdigo mais comum utilizado neste sentido (enquanto) o apresentado a seguir: Enquanto <condio> Faa <seqncia de comandos> Fim enquanto A sintaxe de execuo deste :

~ 33 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

1. No inicio da execuo do enquanto, a condio testada; 2. Se o resultado do teste for verdadeiro, a seqncia de comandos executada e ao trmino desta, retorna-se ao teste da condio; 3. Sendo a condio falsa, o controle da aplicao passa para a prxima linha aps o Fim_enquanto.

No fluxograma, poderemos representar este tipo de operao da forma que segue:

Em resumo, neste tipo de operao, a execuo somente abandonar o lao quando a condio for falsa e neste caso a condio de parada deve ser elaborada com todo o cuidado para evitar laos infinitos na execuo do algoritmo. REPITA ATE: Outro tipo de lao condicional o REPITA ATE, apresentado a seguir: Repita <seqncia de comandos> Ate <condio> A sintaxe de execuo deste : 1.Executa a primeira iterao do lao;

~ 34 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

2.Se o resultado do teste for verdadeiro, a seqncia de comandos executada e ao trmino desta, retorna-se ao teste da condio; 3.Se a condio for falsa, executa nova iterao do lao, se a condio de parada for verdadeira encerra a execuo do lao

No fluxograma, poderemos representar este tipo de operao da forma que segue:

Veja um exemplo a seguir, utilizando-se de pseudocdigo, onde iremos apresentar a soma de uma contagem de nmeros de 1 5: Algoritmo soma Variveis Soma: REAL // Acumulador Contador: INTEIRO // Contador Inicio Soma = 0 EscreverA soma dos nmeros de 1 10 igual a Para contador = 1 at 10 faca Soma = soma + contador Fim para Escrever soma Fim. No exerccio acima, teremos como resultado a expresso :

~ 35 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

A soma dos nmeros de 1 10 igual a 55 Desenhe o fluxograma do pseudocdigo acima descrito.

EXERCCIOS: Laos contados: 01 - Construa um algoritmo que receba trinta nmeros e mostre a soma total dos nmeros recebidos. 02 - Construa um algoritmo que receba cinqenta nmeros e mostre a mdia dos nmeros que foram digitados. 03 - Construa um algoritmo que receba a idade de cem pessoas e mostre a mdia das idades destas pessoas. 04 - Construa um algoritmo que leia cem nmeros e mostre qual o maior nmero que foi lido. 05 - Construa um algoritmo que leia cinqenta nmeros e mostre qual o menor nmero lido. 06 - Construa um algoritmo que leia cento e cinqenta nmeros e mostre qual o maior e o menor nmero lido. 07 - Construir um algoritmo que receba cem nmeros e informe a mdia e a soma entre os nmeros positivos. 08 - Construa um algoritmo que receba quinze nmeros quaisquer e informe qual o maior e o menor entre os nmeros que foram lidos. 09 - Escrever um algoritmo que receba 100 nmeros, e contar quantos deles esto no intervalo [10,20] e quantos deles esto fora do intervalo, escrevendo estas informaes. 10 - Faa um algoritmo que receba o peso, a idade e a altura de cem pessoas, calcule e informe os valores de: maior peso, menor peso, maior altura, menor altura, maior idade e menor idade deste grupo. 11 - Escrever um algoritmo que l 50 nmeros e informar quantos destes valores so negativos.

~ 36 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

12 - Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondncia a cada um deles anunciando um bnus especial. Escreva um algoritmo que leia o nome, o endereo do cliente e o valor de suas compras e calcule um bnus de 10% se o valor das compras for menor ou igual a 500.000 e de15 %, se superior a este valor. 13 - Faa um algoritmo que receba o salrio-base dos1200 funcionrio de uma fbrica, calcular os descontos com vale transporte (vt) 2% e vale refeio (vr) 3%.Mostrar o total dos descontos efetuados separadamente. 14 - Faa um algoritmo que receba o nmero do apartamento e o consumo em kw/h dos setenta e dois apartamentos deste edifcio. Informe os apartamentos com. o consumo inferior ou igual a 100 kw/h(inclusive} e os que ultrapassaram este consumo.. 15 - Faa um algoritmo que receba o tamanho de 500 camisetas existente no almoxarifado e ao final informe quantas camisetas de cada tamanho P, M, G, GG.

Laos condicionais: 1 - Construa um algoritmo para somar os nmeros recebidos. O algoritmo encerra quando digitado o nmero zero. 2 - Construa um algoritmo que leia vrios nmeros e mostre quantos nmeros foram lidos. O algoritmo encerra quando digitado o nmero O. 3 - Faa um algoritmo que receba vrios nmeros e mostre a mdia dos nmeros recebidos. O final conhecido pelo nmero zero. 4 - Faa um algoritmo que receba vrios nmeros, calcule e informe a mdia, a soma e a quantidade de nmeros recebidos. O algoritmo encerra quando digitado o nmero O. 5 - Faa um algoritmo que receba a sigla da cidade de origem de um grupo de pessoas, ao final informe quantas foram digitadas das cidades do Rio de Janeiro, Belo Horizonte e Santa Catarina (separadamente). O algoritmo encerra quando digitado "fim". 6 - Elabore um algoritmo que recebe o sexo dos alunos de um determinado colgio e informe o nmero de alunas e alunos separados e o nmero de digitaes invlidas. O algoritmo encerra quando digitado o sexo "fim". 7 - Construa um algoritmo que receba o estado civil (cl sI v) de um grupo de pessoas, calcular e informar a quantidade de solteiros, casados, vivos, o nmero de digitaes vlidas e invlidas. O algoritmo encerra quando digitado o estado civil "Fim" 8 - Foi feita uma pesquisa entre os habitantes de uma regio. Foi coletado o salrio de cada habitante. Calcule e informe: a) a mdia de salrio; b) o maior e o menor salrio: Encerre a entrada de dados quando for digitado o salrio O.

~ 37 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

9 - Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa regio, a qual coletou os seguintes dados referente a cada habitante para serem analisados: - sexo (masculino e feminino) - olhos (claros e pretos) - cabelos ( louros, castanhos ou pretos) Faa um algoritmo que calcule e informe a quantidade de pessoas do sexo feminino, com olhos claros e cabelos louros. O final do conjunto de habitantes reconhecido pelo sexo em branco" " 10 - Faa um algoritmo que receba a idade e a altura de um conjunto de pessoas. Calcule e informe mdia de altura e da idade das pessoas. Para encerrar a entrada de dados, digite a idade igual a O. 11 - Construa um algoritmo que receba o peso dos bois de uma determinada Fazenda. Calcular e informar a quantidade de bois, o maior peso e o menor peso. Encerra quando digitado o peso o. 12 - Faa um algoritmo que receba a altura de um grupo de pessoas. Calcule e informe a maior altura e a menor altura. 13 - Foi feita uma pesquisa de audincia de canal de televiso em vrias casas de uma determinada cidade. Ser fornecido o nmero da casa e o do canal de televiso que estiver ligado no momento, caso a televiso estiver desligada fornecido o nmero zero, bem como para a residncia fechada. Calcular e informar: A quantidade de residncias fechadas, televises desligadas e a quantidade de residncias com a televiso sintonizada no canal dois. Encerra a pesquisa quando fornecido para o nmero da residncia um valor negativo.

~ 38 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

6- ANINHAMENTOS
Vamos falar sobre aninhamentos, ou seja, ter um conjunto de comandos de outra construo dentro de qualquer um dos tipos de construes apresentadas at este momento, para isso, ter que ter a construo interna embutida dentro da construo externa. O conjunto de comandos um conjunto de comandos simples, podem ser inclusive de instrues primitivas. Por exemplo, temos uma determinada situao: Vamos testar a regio na qual um determinado cliente tem o seu domiclio e, dentro do estado na qual este cliente reside naquela regio, teremos uma tarifa de postagem diferenciada. Na verdade, teremos testes dentro de testes e cada um com um determinado procedimento. Vamos passar ento para os exerccios propostos. Exerccio 001 :

Escreva um pseudocdigo que ir receber a entrada de dois nmeros e ir retornar como sada a entrada (nmero) de maior valor. Exerccio 002 :

Escreva um pseudocdigo na qual o usurio ir ter a oportunidade de entrar com 5 nmeros e o sistema ir gerar como resultado a soma dos 5 nmeros entrados pelo usurio. Exerccio 003 :

Uma empresa ir oferecer um reajuste salarial, cujo percentual ser decidido atravs das seguintes situaes: Funcionrios do sexo masculino com tempo de casa superior ou igual a 10 anos tero direito a um reajuste de 5%; Funcionrios do sexo masculino com tempo de casa inferior a 10 anos tero direito a um reajuste de 3%; Funcionrios do sexo feminino com tempo de casa superior ou igual a 8 anos tero direito a um reajuste de 5%; Funcionrios do sexo feminino com tempo de casa inferior a 8 anos tero direito a um reajuste de 3%; Funcionrios em qualquer uma das situaes acima, porm com mais de um dependente ter ainda um reajuste de 2% sobre o salrio reajustado anteriormente.

~ 39 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Exerccio 004 :

Escreva um fluxograma na qual o usurio dar a entrada de 10 nmeros e ao final o sistema ir exibir o maior nmero informado pelo usurio.

~ 40 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

7- ESTRUTURAS DE DADOS COMPOSTAS


O tema deste mdulo ser o das variveis indexadas. Com uso frequente na programao convencional, varivel indexada um conjunto de variveis do mesmo tipo, referenciadas pelo mesmo nome e que armazenam valores distintos. A sua distino se d pela diviso da varivel, possuindo esta uma posio de armazenamento dentro de seu conjunto, sendo que a alterao ou a leitura do seu valor realizada por meio de ndices, da o nome indexada. Existem dois tipos de variveis indexadas: Vetor: quando a varivel indexada possui um nico ndice (uma dimenso); Matriz: quando a varivel indexada possui dois ndices (duas dimenses X,Y/Coluna,Linha) O nmero de ndices dentro de uma varivel denominado dimenso. Para se definir uma varivel indexada, utilizamos a seguinte sintaxe: Tipos tipo Nome_tipo = Vetor[numero de elementos] : tipo de dado Variveis Nome_varivel_Vetor : Nome_tipo ... ... Veja a seguir alguns exemplos de definio de variveis indexadas: Tipos tipo V = vetor[5] : CARACTER[30] Variveis Nome : V No exemplo acima, criamos na verdade cinco variveis nomes, porm elas esto divididas da seguinte forma: Nome[1], Nome[2], Nome[3], Nome[4], Nome[5] Sendo que cada uma das dimenses, poder armazenar um valor diferenciado para uma cadeia de caracteres de 30 posies. Tipos tipo V = vetor[5] : REAL Variveis Salario : V A varivel Salario um vetor de 5 posies do tipo Real, assim como a varivel Nome.

~ 41 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Os exemplos acima so do tipo Vetor, abaixo veremos uma varivel indexada do tipo matriz: Tipos tipo M = vetor[3,10] : Inteiro Variveis CodigoProduto : M No exemplo anterior, teremos a varivel CodigoProduto, dividida nas seguintes dimenses: CodigoProduto[1,1] CodigoProduto[1,2] CodigoProduto[1,3] CodigoProduto[1,4] CodigoProduto[1,5] CodigoProduto[1,6] CodigoProduto[1,7] CodigoProduto[1,8] CodigoProduto[1,9] CodigoProduto[1,10] CodigoProduto[2,1] CodigoProduto[2,2] CodigoProduto[2,3] CodigoProduto[2,4] CodigoProduto[2,5] CodigoProduto[2,6] CodigoProduto[2,7] CodigoProduto[2,8] CodigoProduto[2,9] CodigoProduto[2,10] CodigoProduto[3,1] CodigoProduto[3,2] CodigoProduto[3,3] CodigoProduto[3,4] CodigoProduto[3,5] CodigoProduto[3,6] CodigoProduto[3,7] CodigoProduto[3,8] CodigoProduto[3,9] CodigoProduto[3,10]

Quando estamos trabalhando com variveis indexadas, temos que obrigatoriamente especificar o ndice da varivel na qual queremos trabalhar. Nos exemplos acima, no poderamos nos referir apenas varivel NOME, mas sim a NOME[n], onde o n seria uma dimenso vlida, neste caso de 1 5. Vamos fazer um pequeno exerccio: Seja a seguinte varivel indexada bidimensional A: A 1 2 3 4 5 a) b) c) d) e) f) 175 9,8 40 402 21 1 225 100 301 4211 3 2 10 363 30,2 7213 2 3 9000 432 6381 992 1 4 3,7 156 1 442 9000 5 4,75 18 0 7321 2000 6

Quantos elementos fazem parte do conjunto? Qual o contedo do elemento identificado por A [4,5] ? Qual o contedo de X aps a execuo do comando X := A [3,2] + A [5,1] ? O que aconteceria caso fosse referenciado o elemento A [6,2] no programa? Somar os elementos da quarta coluna: A [1,4] + A [2,4] + A [3,4] + A [4,4] + A [5,4]; Somar os elementos da terceira linha: (A [3, 1] + A [3,2] + A [3,3] + A [3,4]).

~ 42 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Agora vamos exibir um exemplo de algoritmo onde iremos preencher os valores para a varivel Nome em suas diversas dimenses e em seguida listar os mesmos: Algoritmo Nomes Tipos tipo V = vetor[5] : caracter[30] Variveis Nome : V Conta , Lista: INTEIRO Inicio Para conta = 1 at 5 passo 1faca Ler Nome[conta] Fim para Para lista = 1 at 5 passo 1 faca Escrever Nome[lista] Fim para

Fim.

Exerccio 001: Escreva um pseudocdigo que ir ler e armazenar em varivel indexada 10 nmeros e aps o final da leitura, ir exibir a soma dos 10 nmeros armazenados nas dez posies da varivel indexada. Exerccio 002: Escreva um pseudocdigo que ir ler e armazenar em varivel indexada 50 nmeros e aps o final de leitura, ir apresentar o nmero da posio e o valor armazenado na posio de varivel indexada que conter o maior valor lido. Quando trabalhamos com variveis indexadas, poderemos entre outros criar ndices, ou seja, ordenar os vetores para que eles sejam apresentados em uma determinada ordem. Este procedimento, tambm conhecido, em sua forma mais simples como Bolha de Classificao. Sua lgica consiste na leitura de todos os elementos de um vetor, comparando-se os valores de seus elementos vizinhos, e neste momento empregada a seguinte seqncia: 1. Sero realizadas varreduras a menos do total de elementos do vetor; 2. Na primeira varredura, verificamos que o elemento do vetor j se encontra em seu devido lugar; 3. Na segunda varredura, o procedimento anlogo primeira varredura e vai at o ltimo elemento; 4. Ao final do procedimento, o vetor estar classificado segundo o critrio escolhido. Vamos prtica, no exemplo a seguir, iremos realizar a leitura de 5 nmeros e em seguida classific-los em ordem crescente: Algoritmo classificao

~ 43 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Tipos

tipo V = vetor[50] : inteiro Variveis numero : V A,B: INTEIRO Aux: REAL Inicio Para A = 1 at 50 faa Ler numero[A] Fim para B=50 Enquanto B > 1 faa Para A = 1 at ( B-1 ) faa Se numero[A] > numero[A+1} Ento Aux=numero[A] numero[A]=numero[A+1] numero[A+1]=Aux Fim se Fim para B=B-1 Fim enquanto Escrever Abaixo, a listagem ordenada dos nmeros entrados Para A de 1 at 50 faa Escrever numero[A] Fim para Fim. Outro processo que poder ser utilizado em programao a pesquisa seqencial, ou seja, sero verificados todos os componentes de um vetor, para verificar se nestes esto armazenados um determinado valor. Exemplo: Iremos efetuar a leitura de 100 nomes, em seguida, ser solicitado um nome qualquer e, iremos verificar se, dentre os 100 nomes entrados, existe o nome na qual foi solicitada a pesquisa. Veja este algoritmo a seguir: Algoritmo pesquisa Tipos tipo V1 = vetor[100] : caracter[30] Variveis nome : V1 pesquisado : CARACTER[30] contador : INTEIRO encontrado : LOGICO Inicio Para contador = 1 at 100 faa Ler nome[contador] Fim para Ler pesquisado

~ 44 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Fim.

Escrever Aguarde ... pesquisando no banco de dados contador=1 encontrado=.F. Enquanto (contador<101) .E. (Encontrado = .F.) faa Se nome[contador]=pesquisado Ento Encontrado= .T. Seno Contador=contador+1 Fim se Fim enquanto Se encontrado = .T. Ento Escreva O valor est contido no banco de dados Seno Escreva O valor no existe no banco de dados Fim se

EXERCCIOS: Vetores e Matrizes 1 Faa o fluxograma e o algoritmo que carregue um vetor com 150 nmeros reais, determine e mostre o seu elemento mximo (maior valor) e a posio na qual ele se encontra. 2 Faa o fluxograma e o algoritmo que carregue um vetor com 150 nmeros inteiros, determine e mostre o seu elemento mnimo (menor valor) e a posio na qual ele se encontra. 3 - Escreva um algoritmo que armazene em um vetor os 100 primeiros nmeros mpares. Aps isso, o algoritmo deve imprimir todos os valores armazenados. 4 - Escreva um algoritmo que armazene em um vetor o quadrado dos nmeros mpares no intervalo fechado de 1 a 20. Aps isso, o algoritmo deve imprimir todos os valores armazenados. 5 - Escreva um algoritmo que receba dez nmeros inteiros e armazene em um vetor a metade de cada nmero. Aps isso, o algoritmo deve mostrar todos os valores armazenados. 6 - Escreva um algoritmo que receba dez nmeros do usurio e armazene em um vetor o quadrado de cada nmero. Aps isso., o. algoritmo. deve imprimir todos os valores armazenados.

~ 45 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

7 - Escreva um algoritmo que receba e armazene em um vetor, quinze nmeros. Ao final mostre todos os nmeros pares do vetor e sua respectiva posio. 8 - Fazer um algoritmo em que sejam carregados dois vetores de 25 nmeros inteiros: a) intercale os elementos destes dois vetores formando um novo vetor de 50 elementos; b) exiba os nmeros do novo vetor. 9 - Fazer um algoritmo que: a) leia um vetor A com 30 valores numricos: b) leia um outro vetor B com 30 valores numricos; c) leia o valor de uma varivel X; d) verifique qual o elemento de A que igual a X; e) exiba o elemento de B de posio correspondente do elemento de A igual a X, se existir. 10 - Dada uma matriz quadrada P, de ordem 10: Some os quadrados dos elementos da 1a coluna; Some os elementos da 2a linha; Some os elementos da diagonal principal; Some todos os elementos; Some os elementos de ndice mpar da 2a linha. 11 - Dadas as variveis indexadas A e B abaixo; A 7 2 8 1 4 7 9 3 6 32 B 9 19 11 3 15 4

Calcular o conjunto C = A + B. 12 Construa um fluxograma e o algoritmo que carregue 100 nmeros inteiros positivos (deve ser feito o teste para garantir a no incluso de nmeros invlidos utilize o lao repita at neste teste). O programa deve calcular a mdia dos nmeros do vetor, e ao final mostrar todos os nmeros que so maiores que a mdia. 13 Faa o fluxograma e o algoritmo que carregue um vetor com 50 nomes, ordene e mostre o vetor ordenado. 14 Faa o fluxograma e o algoritmo que carregue um vetor com 50 nomes, depois solicite ao usurio um nome e verifique se o mesmo existe no vetor ou no (mostrar o nome e a posio no vetor caso exista e uma mensagem indicativa, caso no exista). A solicitao deve ser repetida ate que o usurio digite a palavra fim. 15 Faa o fluxograma e o algoritmo que carregue um vetor com 100 nmeros inteiros, verifique cada nmero, se este for par, multiplique por 3 e atualize o seu valor no vetor. Ao final, mostre todos os elementos do vetor.

~ 46 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

16 Faa o fluxograma e o algoritmo que carregue um vetor com 150 nmeros inteiros, gere um segundo vetor com todos os nmeros do primeiro vetor multiplicados por 2. mostre ambos os vetores. 17 Faa o fluxograma e o algoritmo que carregue uma matriz de dimenso 5x5, calcule e mostre a soma de todos os elementos e uma listagem com cada um dos elementos da matriz. 18 Faa o fluxograma e o algoritmo que carregue duas matrizes de dimenso 6x6. Gere uma terceira matriz com a soma das duas anteriores e mostre seus valores. 19 Faa o fluxograma e o algoritmo que carregue um vetor com 60 posies, calcule e mostre a soma de todos os elementos das posies pares e impares do vetor. 20 Faa o fluxograma e o algoritmo que carregue uma matriz de dimenso 10x10, calcule e mostre a soma de cada uma das linhas e de cada uma das colunas da matriz. 21 - Faa um fluxograma e o algoritmo que: O usurio preencha com quaisquer valores inteiros um vetor de trinta posies. Calcule a mdia deles. Os valores menores que a mdia devem ser copiados em outro vetor, o qual deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos houverem no segundo vetor. Use mensagens claras para o usurio tomar conhecimento dos passos sendo executados. 22 - Faa um fluxograma e o algoritmo que: O usurio preencha com quaisquer valores inteiros um vetor de trinta posies. Calcule a mdia deles. Os valores maiores que a mdia devem ser copiados em outro vetor, o qual deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos houverem no segundo vetor. Use mensagens claras para o usurio tomar conhecimento dos passos sendo executados. O fluxograma e o portugol devem ser entregues passados a limpo. Consulte apenas o seu material. 23 - Faa um Fluxograma e o algoritmo que: O usurio insere em um vetor N 40 nmeros negativos, seguido da digitao de outros 40 nmeros maiores que zero em um P (faa o teste para permitir somente a entrada de valores vlidos). Faa um vetor V, de tal forma que cada elemento seu seja a soma dos elementos de P e N, de mesma i-sima posio, e caso a soma seja negativa transforme-a em positivo. Liste V, mostre a mdia, o maior e o menor valor do mesmo. Apresente ao usurio a opo de pesquisar um valor qualquer em V, informando a localizao do mesmo ou declarando que no existe tal valor no vetor. Repetir o procedimento de consulta, at que o usurio decida encerrar a execuo do algoritmo. 24 - Faa um fluxograma e o algoritmo que leia um vetor de 20 valores numricos e ordene esse vetor em ordem crescente. O programa tambm deve ler um nmero K e imprimir, antes e depois da ordenao, o K-simo termo da varivel composta.

~ 47 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

25 - Faa um fluxograma e o algoritmo que leia e armazene 30 valores reais positivos, determine a sua mdia e gere um segundo vetor, no qual cada elemento calculado a partir do elemento correspondente do primeiro vetor mais 30% caso seja menor que a mdia, seno mais 20% do mesmo. Mostre os dois vetores. O calculo de 30% corresponde a multiplicar por 1.3 e 20% por 1.2. 26 - Faa um fluxograma e o algoritmo que leia e armazene 70 valores reais positivos, determine a sua mdia e mostre-a. Gere um segundo vetor, no qual cada elemento calculado a partir do elemento correspondente do primeiro vetor subtrado da mdia determinada para o primeiro vetor. Calcule o somatrio dos valores negativos do segundo vetor e mostre . Mostre os dois vetores.

~ 48 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

8- MODULARIZANDO ALGORITMOS PROCEDIMENTOS E FUNES


Em determinadas situaes, devido complexidade de alguns algoritmos, necessria a diviso do mesmo em diversas partes, para que assim, o sistema tenha uma operao precisa. Essa diviso de tarefas denominada de Subalgoritmos. Os subalgoritmos nada mais so do que rotinas que possuem uma funo especfica. A modularizao consiste num mtodo para facilitar a construo de grandes programas, atravs de sua diviso em pequenas etapas, que so: mdulos, rotinas, subrotinas ou sub-programas. Permitindo o reaproveitamento de cdigo, j que podemos utilizar um mdulo quantas vezes forem necessrias, eliminando assim a necessidade de escrever o mesmo cdigo em situaes repetitivas. Vamos imaginar a seguinte situao: Em um sistema comercial, em vrias etapas temos que verificar se o nmero do CPF do cliente foi digitado de forma correta. Imaginando que tal situao se repete por 38 vezes no sistema. Teramos que escrever 38 vezes o mesmo trecho de cdigo? No, para isso teramos uma rotina subalgoritmo que teria esta funo. Este subalgoritmo teria um nome e, sempre que fosse necessria a verificao do CPF, bastaria invocar chamar este subalgoritmo. De um modo geral, os subalgoritmos so importantes devido aos seguintes aspectos: Estruturao de algoritmos, facilitando assim a deteco de erros. Imagine se a rotina de verificao do CPF do cliente tiver um erro lgico. Em uma primeira hiptese, teramos que corrigir a mesma em 38 pontos diferentes do sistema, porm utilizando subalgoritmo, teramos apenas que realizar uma correo em um ponto do sistema; Modularizao de sistemas, que justamente utilizada para a reutilizao de rotinas subalgoritmos em vrios pontos do algoritmo principal; Subdiviso de algoritmos extensos, facilitando assim a sua compreenso. O esquema de um algoritmo e seus subalgoritmos pode ser observado a seguir: Algoritmo (nome do algoritmo) Variveis Definio das variveis globais <definio dos subalgoritmos> Inicio <estrutura do algoritmo principal> Fim. Quando o sistema est executando o algoritmo principal e invocado algum subalgoritmo (atravs do nome dado ao mesmo), a execuo deste interrompida e o sistema passa a executar os comandos constantes do subalgoritmo. Ao final desta execuo, o sistema retorna automaticamente para o algoritmo principal a partir do ponto onde foi realizada a chamada do subalgoritmo.

~ 49 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Um subalgoritmo composto por: Cabealho: onde definido o nome do subalgoritmo e as variveis que sero utilizadas pelo mesmo; Corpo: onde so especificadas as instrues do subalgoritmo. Os subalgoritmos podem ser de dois tipos: Funes; Procedimentos. O subalgoritmo tipo funo aquele na qual um valor calculado com base em outros valores, normalmente passado pelo algoritmo principal. O subalgoritmo tipo procedimento aquele que retorna zero ou mais valores ao algoritmo que o invocou, sendo que, ao contrrio das funes, esses valores no so explcitos, ou seja, a chamada de procedimentos nunca realizada ao meio de expresses s realizada em comandos isolados dentro do algoritmo, como instrues de entrada e sada de dados. Veja a seguir um algoritmo e seu subalgoritmo para se calcular a raiz quadrada de um determinado nmero: (Por causa da didtica de variveis globais e locais, vamos manter uma estrutura um pouco diferente do que temos mostrado at agora, vamos nos aproximar uma pouco da estrutura do PASCAL) Algoritmo Raiz_quadrada Variveis num1, num2 : real Funo Raiz(numero:real) : real Var calc : real Inicio Calc = SQR(numero) Retorne Calc Fim Inicio Escreva Numero para Raiz Quadrada Leia num1 Num2 = Raiz(num1) Escreva Raiz quadrada igual a:, num2 Fim Com certeza, teria sido mais fcil executar o clculo de raiz quadrada diretamente no algoritmo principal, porm o fizemos assim para que voc tenha uma idia de como funciona um subalgoritmo, ou seja, a passagem de valores de uma rotina principal, para uma rotina secundria e o retorno do valor resultante deste processamento.

~ 50 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

No mdulo passado nos referamos aos subalgoritmos. Aqui vamos falar um pouco sobre variveis globais e locais. Como o prprio nome diz, uma varivel global pode ser utilizada em qualquer parte do algoritmo ou em seus subalgoritmos, ou seja, elas so visveis em todo o procedimento que engloba o processamento. Ao contrrio, as variveis locais so definidas exclusivamente dentro de um subalgoritmo e sua vida se restringe ao uso dentro do prprio subalgoritmo onde foi declarada. Imagine a seguinte situao: Um avio foi fabricado pela Embraer, porm este poder voar em qualquer parte do mundo. Este avio poderia ser comparado a uma varivel global. - O elevador do edifcio ABC, foi implantado naquele edifcio e sua vida, ou seja, sua utilidade est apenas naquele edifcio. Este elevador poderia ser comparado a uma varivel local. Veja o algoritmo utilizado no mdulo anterior: Algoritmo Raiz_quadrada Var num1, num2 : real Funo Raiz(numero:real) : real Var calc : real Inicio calc = SQR(numero) Retorne Calc Fim Inicio Escreva Numero para Raiz Quadrada Leia num1 Num2 = Raiz(num1) Escreva Raiz quadrada igual a:, num2 Fim Observe que as variveis NUM1 e NUM2 utilizadas no processo foram declaradas no inicio do algoritmo principal, ou seja, estas so variveis globais. J a varivel CALC, definida dentro da funo RAIZ uma varivel local, ou seja, opervel apenas dentro daquela funo. Pelo que observamos at este ponto, um subalgoritmo um nome dado a um determinado trecho do algoritmo principal, que na maioria das vezes responsvel pela execuo de uma nica tarefa dentro do contexto do sistema. Estudamos que existem dois tipos de subalgoritmos: 1. Funes: que retornam um nico valor para o algoritmo que a invocou; 2. Procedimentos: que retornam mais de um valor ou nenhum valor ao algoritmo que o invocou. Nas funes e procedimentos, temos as variveis globais, definidas no incio de um algoritmo e que podem ser utilizadas por todos os subalgoritmos assim como pelo

~ 51 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

algoritmo principal e as variveis locais, que so definidas dentro de um subalgoritmo e s podem ser utilizadas dentro deste. Para completar o nosso quebra-cabea, temos tambm o que chamados de parmetros, ou seja, as portas pelas quais se realiza a comunicao bidirecional entre o algoritmo principal e seus subalgoritmos e vice e versa. Possumos dois tipos de parmetros: 1. Parmetros formais: so aqueles que, de forma automtica substituem parmetros determinados por nomes simblicos por valores passados durante a execuo do processo. Veja o exemplo a seguir: Funo Raiz(numero:real) : real Variveis calc : real Inicio Calc = SQR(numero) Retorne Calc Fim Na verdade, o parmetro formal nmero ser substitudo por um parmetro real, ou seja, um valor numrico para o calculo da raiz quadrada de um determinado nmero. 2. Parmetros reais: quando no temos parmetros formais e sim valores pr estabelecidos que no sero alterados durante o processamento. Atravs desta lgica, devemos saber que, durante o processamento dos dados, quando so substitudos parmetros formais por valores reais, os parmetros reais so calculados e os parmetros formais recebem uma cpia dos valores resultantes do processamento. Seguindo esta lgica, iremos entender que os parmetros formais no afetam os parmetros reais.

~ 52 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

9- ALGORTMOS DE PESQUISA
A capacidade de armazenar informaes foi um passo decisivo na evoluo da cincia da computao e para o nvel generalizado de utilizao do computador. Com isso, a capacidade de recuperar informaes, para posterior processamento, assume papel de suma importncia na utilizao cotidiana do computador, existindo para isto inmeros exemplos, como: recuperao de dados de dados de transaes bancrias de um cliente atravs de um nmero de conta, no cadastro de cliente/operaes de um banco. Portanto, algoritmos de pesquisa devem ser projetados de forma a garantir a confiabilidade e eficincia exigidas pela importncia das aplicaes existentes. A pesquisa de dados pode ser efetuada tanto em unidades de memria secundrias (disco rgido, disquetes, fita), quanto na memria principal do computador. PESQUISA SEQUENCIAL O mtodo mais simples de determinar a presena, ou no, de um elemento numa seqncia, percorr-la a partir do seu incio, efetuando comparaes, at que o elemento seja encontrado ou o fim da seqncia seja alcanado. Este mtodo chamado de pesquisa seqencial. Dados : vetor de n elementos (n conhecido) elemento a ser pesquisado no vetor Resultado: Se o elemento existe, mostra-se a sua posio ou o total de ocorrncias deste no vetor. Se o elemento no existe, mostra-se uma mensagem de falha. As consideraes que podem ser feitas sobre os dados de entrada (vetor), so do tipo: o vetor esta ou no ordenado; o elemento ocorre uma nica vez (pesquisa nica) ou repetidas vezes no vetor (pesquisa mltipla). Isso acarreta os seguintes tipos de pesquisa: a. Desordenada nica b. Desordenada Mltipla c. Ordenada nica d. Ordenada Mltipla Pesquisa Binria O mtodo de pesquisa seqencial fcil de escrever e razoavelmente eficiente para seqncias com poucos elementos. Entretanto, para seqncias de tamanho considervel, que ocorrem na maioria das aplicaes existentes, a utilizao do mtodo torna-se invivel. Uma estratgia interessante e eficiente utilizada no mtodo de pesquisa binria. Descrio Geral do Mtodo: Definir intervalo inicial (i, f) de busca

~ 53 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Determinar a posio mdia do intervalo(m = (i+f) div 2) Comparar o elemento da posio mdia (v[m]) com o elemento E: Caso sejam iguais ento terminou as pesquisa Caso contrrio definir o novo intervalo de busca Aplicar sucessivamente o passo anterior at encontrar E ou no existir mais o intervalo de busca

So aspectos fundamentais do mtodo: vetor de entrada tem que estar ordenado intervalo de busca inicial (i,f) = (1,n) intervalo de busca, considerado a cada iterao, definido do seguinte modo: (i,m-1), se (E < v[m]) (m+1,f), se (E > v[m]) tendo a metade do tamanho do intervalo original O teste de repetio (i <= f) e No Achou Dados : vetor de n elementos (n conhecido) elemento a ser pesquisado no vetor Resultado Se o elemento existe, mostra-se a sua posio ou o total de ocorrncias deste no vetor. Se o elemento no existe, mostra-se uma mensagem de falha

10- ALGORTMOS DE ORDENAO


Os problemas de ordenao so comuns tanto em aplicaes comerciais quanto cientficas. Entretanto, raro so os problemas que se resumem pura ordenao de seqncias de elementos. Normalmente, os problemas de ordenao so inseridos em problemas de pesquisa, intercalao e atualizao. Isto torna ainda mais importante o projeto e a construo de algoritmos eficientes e confiveis para tratar o problema. O nosso objetivo analisar os seguintes tipos de ordenao: a. Selection Sort b. Bubble Sort c. Insertion Sort a. Selection Sort Este mtodo um dos mais simples e intuitivos dentre os mtodos existentes. Sua estratgia bsica selecionar o menor elemento da seqncia considerada e coloc-lo no incio da seqncia. Assim, dada uma seqncia de tamanho n, vrias iteraes so

~ 54 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

efetuadas, sendo que a cada vez que esta estratgia aplicada, uma nova seqncia gerada pela eliminao do menor elemento da seqncia original. Algoritmo SelectionSort (vet : vetor; n : inteiro); {ordenado crescente} var i, j, pmin : inteiro; begin para I de 1 at (n-1) faa pmin <- i; para j de (i+1) at n faa se vet[j] < vet[pmin] entao pmin <- j; trocar (vet[i], vet[pmin] ) ; fim-se fim-para fim-para fimalgoritmo b. Bubble Sort A estratgia utilizada pelo BubbleSort consiste de comparaes e trocas entre elementos consecutivos da seqncia, a fim de "empurrar" o maior elemento para a ltima posio. Assim, vrias iteraes so efetuadas e, para cada seqncia considerada, a aplicao da estratgia gera uma nova seqncia pela eliminao do maior elemento da seqncia original. Alm disto, uma varivel de controle (lgica) utilizada para registrar a ocorrncia ou no de troca entre elementos da seqncia. Quando nenhuma troca efetuada, temse que a seqncia considerada j estava ordenada. Esta particularidade determina, em alguns casos, um nmero menor de comparaes que o mtodo SelectionSort. Algoritmo BubbleSort (vet : vetor ; n inteiro) ; {ordem crescente} var i, limite : inteiro; trocou : booleano; begin limite = n; repita trocou = .f. para I de 1 at (limite - 1) faa se vet[i] > vet [i+1] entao trocar(vet[i], vet[i+1]) trocou = .t. fim-se fim-para limite = limite - 1 at not(trocou) fimalgoritmo

~ 55 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

c. Insertion Sort Este mtodo baseia-se no seguinte processo de insero controlada: Com o primeiro elemento da seqncia forma-se uma seqncia de tamanho 1, ordenada. Cada elemento restante da seqncia original inserido na seqncia, de modo que esta permanea ordenada. Isto feito atravs de uma pesquisa na seqncia ordenada que determina a posio que o novo elemento dever ser inserido. Quando um elemento inserido a frente de outro, estes devero ser deslocados de uma posio.

11- RECURSIVIDADE
Recurso um mtodo geral para resolver problemas reduzindo-os a problemas mais simples do mesmo tipo. A estrutura geral de uma soluo recursiva de um problema assim: Resolva de forma recursiva um problema. Se o problema trivial, faa o obvio (resolva-o) Simplifique o problema Resolva de forma recursiva (um problema mais simples) Combine (na medida do possvel) a soluo do(s) problemas mais simples em uma soluo do problema original

Um subprograma recursivo chama a si prprio constantemente, cada vez em uma situao mais simples, at chegar ao caso trivial, quando pra. Devemos lembrar que recursividade deve ser utilizada na soluo de problemas que tenham a natureza recursiva. Exemplos : a. Somatrio de inteiros - Se n =1; Somatrio = 1. Caso contrrio Somatrio = n + Somatrio(n-1) b. Fatorial - Se n=0 ou n=1 ; Fatorial = 1. Caso contrrio Fatorial = n*Fatorial(n-1) c. MDC - Se b divide a, ento o MDC b. Caso contrrio, MDC(a,b) = MDC(b,a div b) d. N-simo termo da srie de Finonacci . 1 e 2 = 1 e n-simo = (n1)+(n-2) e. Torre de hanoi

Bibliografia

INTRODUO AO DESENVOLVIMENTO DE ALGORITMOS WILSON SILVA PINTO ALGORITMOS JOSE AUGUSTO MANZANO - JAYR FIGUEIREDO OLIVEIRA

~ 56 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

ALGORITMOS E ESTRUTURAS DE DADOS NIKLAUS WIRTH ALGORITMOS E ESTRUTURAS DE DADOS ANGELO DE MOURA GUIMARAES - NEWTON A C LAGES ALGORITMOS ESTRUTURADOS H FARREL - C G BECKER - E C FARIA e MATOS, H F PROJETO DE ALGORITMOS NIVIO ZIVIANI

~ 57 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

ALGORITMO x LINGUAGEM C
TIPO DE DADOS ALGORITMO Inteiro Real Caractere Lgico

LINGUAGEM C-ANSI int float double char (No existe o tipo lgico em C, e sim expresses lgicas) Intervalo -128 a 127 -32768 a 32767 3.4e-38 a 3.4e38 1.7e-308 a 1.7e308 Uso nmero muito pequeno e caracter ASCII contador, controle de lao real (preciso de 7 dgitos) cientfico (preciso de 15 dgitos)

Tipo char int float double

Tamanho 1 byte 2 bytes 4 bytes 8 bytes

DECLARAO DE VARIVEIS ALGORITMO Variveis identificadores : nome do tipo EX: Variveis cdigo : inteiro Variveis nota, CPF : real Variveis nome : caractere[30] Variveis altura[30] : inteiro Variveis peso[30,5] : real

LINGUAGEM C-ANSI tipo lista de identificadores EX: int codigo; float nota; double CPF; char nome[30]; //string ou vetor de caracteres int altura[30]; float peso[30][5];

DEFINIO DE CONSTANTES ALGORITMO defina variveis valor EX: defina PI 3,14159 COMENTRIOS ALGORITMO delimitado por chaves { } ou // ou /* EX: Variveis nota inteiro {nota do aluno} Variveis nota inteiro //nota do aluno

LINGUAGEM C-ANSI #define PI 3.14159 #define ON 1 #define OFF 0 #define ENDERECO 0x378

*/

LINGUAGEM C-ANSI delimitado por // ou /* EX: float nota; float nota;

*/

/* nota do aluno */ // nota do aluno

~ 58 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

EXPRESSES ARITMTICAS ALGORITMO adio: + subtrao: multiplicao: * diviso: / radiciao: n Raiz(n) potenciao: ny Exp(n,y) quoc. da diviso: A Div B resto da diviso: A Resto B ATRIBUIO: EX: nota 10 EXPRESSES LGICAS ALGORITMO igual a: = diferente de: <> maior que: > menor que: < maior ou igual a: >= menor ou igual a: <= conjuno: .E. disjuno: .OU. negao: .NO. EXPRESSES LITERAIS ALGORITMO concatenao: | comparao: = atribuio: EX: A contm bola B contm preta A | B = bolapreta A = B a resposta ser falsa B A a resposta ser B = bola

LINGUAGEM C-ANSI + * / sqrt(valor) pow(n,y) A/B A%B ATRIBUIO: EX: nota = 10;

LINGUAGEM C-ANSI == != > < >= <= && || !

LINGUAGEM C-ANSI strcat(A,B); strcmp(A,B); strcpy(A,B); EX: A contm bola B contm preta strcat(A,B); retorna A = bolapreta strcmp(A,B); a resposta ser valor <> 0 strcpy(B,A); a resposta ser B = bola

COMANDOS DE ENTRADA DE DADOS ALGORITMO LINGUAGEM C-ANSI Leia (varivel) scanf(cdigo de formatao,&varivel) EX: EX:

~ 59 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

Leia (nota) scanf(%d, &nota); COMANDOS DE SADA DE DADOS ALGORITMO LINGUAGEM C-ANSI Escreva ( textos + variveis ) printf(textos + formatao,variveis) EX: Escreva (A nota do aluno foi:, nota)

cdigo

de

EX: printf(A nota do aluno foi %d, nota);

CDIGO DE FORMATAO (Usado no FORMATOS scanf e printf) %c caractere (apenas um - char) %d ou %i inteiro (int) %f real (float) %e real (double) %s String (cadeia de caracteres) %p ponteiro CONTROLE / CARACTER (Usado no printf) nulo (null) campainha (bell) retrocesso (backspace) tabulacao horizontal nova linha (new line) tabulacao vertical alimentacao de folha (form feed) retorno de carro (carriage return) aspas (") Apostrofo (') interrogacao (?) barra invertida (\) SEQUENCIA DE ESCAPE \0 \a \b \t \n \v \f \r \" \' \? \\

~ 60 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

ESTRUTURA BSICA DE PROGRAMAS EM C

1- Declaraes das Bibliotecas As bibliotecas em C, so arquivos que normalmente se localizam no diretrio include. Essas bibliotecas contm funes e comandos pr-definidos na linguagem. Ex: #include <stdio.h> #include <conio.h> 2- Declaraes de Variveis Globais As variavis aqui declaradas so reconhecidas em todas as funes. 3- Funes Auxiliares So mdulos criados com funes definidas pelo programador. chamada Por outras funes para ser executada. Tem a finalidade de retornar um valor ou apenas executar blocos de comandos. 4- Funo Principal Funo obrigatrio em TODOS os programas criados na linguagem C. apartir dessa funo que o programa comea a ser executado. Ex: main() { //incio da funo declarao de variveis locais; comandos; } //fim da funo

~ 61 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

ESTRUTURA SEQUENCIAL ALGORITMO Algoritmo clculo Variveis a, b, c : inteiro Incio Escreva (Digite dois numeros: ) Leia (a, b) c (a + b) * b Escreva (a, b, c) Fim

LINGUAGEM C-ANSI #include <stdio.h> #include <conio.h> main () { //incio do algoritmo (main) int a, b, c; printf(Digite o primeiro numero: ); scanf(%d,&a); printf(Digite o segundo numero: ); scanf(%d,&b); c = (a+b)*b; printf(A=%d, B = %d, C = %d,a,b,c); getch(); } //fim do algoritmo (main)

ESTRUTURA CONDICIONAL ALGORITMO Algoritmo menor Variveis a, b c, menor : inteiro Incio Escreva (Digite tres numeros: ) Leia (a, b, c) Se ( (a > b) .E. (a < c) ) Ento menor a Seno Se (b < c) Ento menor b Seno menor c Fim se Fim se Escreva (o menor valor :,menor) Fim

LINGUAGEM C-ANSI #include <stdio.h> #include <conio.h> main () { int a, b, c, menor; printf(Digite o primeiro numero:); scanf(%d,&a); printf(Digite o segundo numero:); scanf(%d,&b); printf(Digite o terceiro numero:); scanf(%d,&c); if ((a < b) && (a < c)) { //incio do ento menor = a; } //fim do ento else { //incio do seno if (b < c) { //incio do ento menor = b; } //fim do ento else { //incio do seno menor = c; } //fim do seno } //fim do seno printf(O menor valor e: %d,menor); system(pause);

~ 62 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

} ESTRUTURA DE REPETIO 1 FORMA: Nmero definido de repeties ALGORITMO LINGUAGEM C-ANSI Estrutura: FOR Estrutura: PARA for(inicializao;condio;incremento decremento) { ... //comandos a serem repetidos } Ex: Algoritmo soma Variveis i : inteiro Incio Para i de 1 at 100 passo 1 faa Escreva (O nmero :,i) Fim para Fim Ex: #include <conio.h> #include <stdio.h> main() { int i; for (i = 1; i <= 100; i++) { //incio do para(for) printf(O numero e: %d,i); // o \n no printf, escreve um pula linha }//fim do para(for) getch(); } Obs: Enquanto a condio for verdadeira repete os comandos da estrutura de repetio (for).

ou

~ 63 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

ESTRUTURA DE REPETIO 2 FORMA: Nmero indefinido de repeties e teste no incio ALGORITMO LINGUAGEM C-ANSI Estrutura: WHILE Estrutura: ENQUANTO while(condio) { ... //comandos a serem repetidos } Ex(1): Algoritmo soma Variveis i : inteiro Incio Enquanto (i <= 100) faa Escreva (O nmero :,i) ii+1 Fim enquanto Fim Ex(1): #include <conio.h> #include <stdio.h> main() { int i = 1; while (i <= 100) { //incio do enquanto(while) printf(O nmero e: %d,i); i = i + 1; // ou i++; } //fim do enquanto(while) getch(); } Ex(2): #include <conio.h> #include <stdio.h> #include <string.h> main() { char nome[11], sobrenome[11], nomec[22] system(cls); printf(Digite o nome: ); scanf(%s,&nome); while (strcmp(nome,fim) != 0) { printf(Sobrenome: ); scanf(%s,&sobrenome); strcpy(nomec, ); strcat(nomec,nome); strcat(nomec, ); strcat(nomec,sobrenome); printf(O nome completo da pessoa e: %s,nomec); printf(Digite o nome: ); scanf(%s,&nome);

Ex(2): Algoritmo nomes Variveis nome, sobrenome, nomec : caractere[20] Incio Escreva (Digite o nome: ) Leia (nome) Enquanto (nome <> fim) faa Leia (sobrenome) nomec nomec | nome nomec nomec | nomec nomec | sobrenome Escreva (O nome completo da pessoa :, nomec) Leia (nome) Fim enquanto Fim

~ 64 ~

Curso de Sistemas de Informao Algoritmos e Lgica de Programao


_______________________________________________________________________________________________________________________

} system(pause); } Obs: Enquanto a condio for verdadeira repete os comandos da estrutura de repetio (while). ESTRUTURA DE REPETIO 3 FORMA: Nmero indefinido de repeties e teste no final ALGORITMO LINGUAGEM C-ANSI Estrutura: DO WHILE Estrutura: REPITA do{ ... //comandos a serem repetidos }while(condio); Ex: #include <conio.h> #include <stdio.h> main() { int i = 0; do{ //incio do repita(do while) printf(O numero e: %d,i); i++; // i=i+1 } while (i <= 100); //fim do repita(do while) getch(); }

Ex: Algoritmo soma Variveis i : numrico Incio i1 Repita Escreva (O nmero :,i) ii+1 At (i > 100) Fim

Obs: Enquanto a condio for verdadeira repete os comandos da estrutura de repetio (do while). Ateno: Em relao a estrutura REPITA (DO WHILE), a lgica em C difere do lgica do algoritmo !

~ 65 ~