Você está na página 1de 78

CURSO TCNICO EM PROCESSAMENTO DE DADOS

APOSTILA DE LGICA DE PROGRAMAO

CAP Criao de Algoritmos e Programas

PROFESSOR RENATO DA COSTA

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

No estamos aqui para sobreviver e sim para explorar a oportunidade de vencer adquirindo o saber! R E N A T O D A C O S T A

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

SUMRIO
PREFCIO .......................................................................................................................................................... 5 ALGORITMO ..................................................................................................................................................... 6 ALGORITMO NO COMPUTACIONAL..................................................................................................... 6 PROGRAMA ....................................................................................................................................................... 7 LINGUAGENS DE PROGRAMAO........................................................................................................... 7 ALGORITMOS EM PORTUGOL ............................................................................................................... 8 TCNICAS DE PROGRAMAO ................................................................................................................. 9 MATEMTICA NA INFORMTICA .......................................................................................................... 11 OPERADORES ARITMTICOS................................................................................................................... 11 OPERADORES RELACIONAIS ................................................................................................................... 11 LINEARIZAO DE EXPRESSES ........................................................................................................... 12 MODULARIZAO DE EXPRESSES MATEMTICAS ..................................................................... 12 OPERADORES ARITMTICOS ESPECIAIS (MOD E DIV) .................................................................. 13 EXPRESSES LGICAS ............................................................................................................................... 15 OPERADORES LGICOS ............................................................................................................................. 15 TABELA VERDADE ....................................................................................................................................... 15 FUNES.......................................................................................................................................................... 18 BIBLIOTECAS DE FUNES ...................................................................................................................... 18 FUNES PR-DEFINIDAS ......................................................................................................................... 18 TABELA GERAL DE PRIORIDADES ......................................................................................................... 20 VARIVEIS....................................................................................................................................................... 22 VARIVEIS DE ENTRADA E SADA ......................................................................................................... 22 IDENTIFICADORES ....................................................................................................................................... 23 SINAL DE ATRIBUIO............................................................................................................................... 24 CONSTANTES.................................................................................................................................................. 24 SINAL DE IGUALDADE ................................................................................................................................ 24 TIPOS DE DADOS ........................................................................................................................................... 25 TIPOS PRIMITIVOS DE DADOS ................................................................................................................. 25

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

COMANDOS BSICOS DE ENTRADA E SADA(INPUT/OUTPUT).................................................... 26 FLUXO DE UM ALGORITMO ..................................................................................................................... 30 CORPO GERAL DE UM ALGORITMO ..................................................................................................... 30 ESTRUTURAS SEQNCIAIS ..................................................................................................................... 31 ; PONTO E VRGULA ; .................................................................................................................................. 31 PRIMEIRO ALGORITMO............................................................................................................................. 32 OUTROS ALGORITMOS DE EXEMPLO .................................................................................................. 33 {LINHAS DE COMENTRIO}...................................................................................................................... 35 ASPAS SIMPLES........................................................................................................................................... 36 ESTRUTURAS CONDICIONAIS SIMPLES ............................................................................................... 39 NINHOS DE SE................................................................................................................................................. 43 ALGORITMO CINCO...................................................................... ERRO! INDICADOR NO DEFINIDO. ESTRUTURAS DE CONDIO.................................................................................................................... 47 ALGORITMO SEIS .......................................................................... ERRO! INDICADOR NO DEFINIDO. ESTRUTURA DE REPETIO DETERMINADA .................................................................................... 52 ALGORITMO SETE......................................................................... ERRO! INDICADOR NO DEFINIDO. ALGORITMO OITO ....................................................................................................................................... 54 ESTRUTURA DE REPETIO INDETERMINADA COM VALIDAO INICIAL ......................... 57 ALGORITMO NOVE ...................................................................................................................................... 57 ESTRUTURA DE REPETIO INDETERMINADA COM VALIDAO FINAL ............................. 62 ALGORITMO DEZ.......................................................................................................................................... 62 ALGORITMO ONZE....................................................................................................................................... 63 PROGRAMAS EQUIVALENTES ................................................................................................................. 65 EXERCCIOS..................................................................................... ERRO! INDICADOR NO DEFINIDO.

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

PREFCIO
O trabalho a que me propus resultado de minha experincia em ministrar a disciplina CAP (criao de Algoritmos e Programas) desde 1996, motivado pela falta de texto relacionado s condies e necessidades do curso. O objetivo principal da Lgica de Programao demonstrar tcnicas para resoluo de problemas e, conseqentemente, automatizao de tarefas. O aprendizado da Lgica essencial para formao de um bom programador, servindo como base para o aprendizado de todas as linguagens de programao, estruturadas ou no. De um modo geral esses conhecimentos sero de supra importncia pois ajudaro no cotidiano, desenvolvendo um raciocnio rpido. Partindo do princpio que a nica coisa constante no mundo a mudana, forneo abaixo meu endereo eletrnico para que voc possa me ajudar, enviando crticas, elogios ou sugestes que serviro para o eterno aprimoramento desse trabalho.

informatica@renatodacosta.net www.renatodacosta.net

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ALGORITMO
Um Algoritmo uma seqncia de instrues ordenadas de forma lgica para a resoluo de uma determinada tarefa ou problema. Para criarmos um algoritmo iremos criar um texto esttico, ou seja, escrito em uma folha de papel sem sofrer alteraes, mas que possui um aspecto dinmico abrangendo qualquer situao relacionada ao problema em questo.

ALGORITMO NO COMPUTACIONAL
Podemos criar algoritmos para tarefas do cotidiano, no exemplo abaixo apresentado um Algoritmo no computacional cujo objetivo usar um telefone pblico. Incio 1. Tirar o fone do gancho; 2. Ouvir o sinal de linha; 3. Introduzir o carto; 4. Teclar o nmero desejado;

SEQUNCIAL

5. Se der o sinal de chamar

DESVIO
5.1 Conversar; 5.2 Desligar; 5.3 Retirar o carto; 6. Seno 6.1 Repetir; Fim.

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Para criamos um algoritmo devemos observar ou entender primeiro o padro de comportamento de um processo e depois passa-lo para o papel.

PROGRAMA
Um programa nada mais do que um algoritmo escrito em uma linguagem computacional. Aprender uma linguagem de programao sem dominar a criao de algoritmos no faz sentido, seria o mesmo que ter um vocabulrio vasto, mas no saber usar as palavras certas na hora certa. Sabendo algoritmo relativamente fcil criar um programa em qualquer linguagem, basta pesquisar qual comando realiza a ao desejada.

LINGUAGENS DE PROGRAMAO
So Softwares bsicos que permitem o desenvolvimento de programas em uma linguagem de alto nvel semelhante a que pensamos ou escrevemos e que posteriormente so convertidas para uma linguagem de mquina interpretada pelo computador. Possuem um poder de criao ilimitado, desde jogos, editores de texto, planilhas eletrnicas at sistemas operacionais. Existem vrias linguagens de programao, cada uma com suas caractersticas de linguagem prprias. Exemplos: Pascal, Clipper, C, Visual Basic, Delphi, Java entre outras. Observao:
7

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Existem linguagens que criam arquivos executveis e outras que criam programas interpretados pelo prprio ambiente de desenvolvimento, implicando sempre no uso do mesmo para execuo do programa. Ex: dBase

ALGORITMOS EM PORTUGOL
Durante nosso aprendizado, iremos aprender a desenvolver nossos algoritmos em uma pseudolinguagem conhecida como Portugol ou Portugus Estruturado. Portugol derivado da aglutinao de Portugus + Algol. Algol o nome de uma linguagem de programao usada no final da dcada de 50. Vale ressaltar que no existe um padro para os comandos usados nos algoritmos, cada professor, cada autor explica como acha mais fcil. Convenhamos que o mais importante a lgica, ou seja, o pensamento elaborado e no a linguagem utilizada. Eu particularmente gosto e adotei uma linguagem algortmica muito prxima de um Pascal traduzido. Por que? A linguagem Pascal didtica, dispe de todos os recursos para o desenvolvimento de bons hbitos para criao de programas, alm de ainda ser muito utilizada nas universidades atuais. Existem ainda outras formas de se criar algoritmos, como atravs de fluxogramas onde cada instruo representada por um desenho. Apesar dos fluxogramas darem uma boa visualizao

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

do processo torna-se muito confuso e de difcil implementao quando usados para detalhar tarefas muito complexas. Curiosidade: A linguagem Pascal foi criada no incio da dcada de 70 por Niklaus Wirth e possui esse nome em homenagem ao filsofo Blaise Pascal inventor da mquina de calcular mecnica em 1642.

Tcnicas de Programao
Programao seqencial: o programa descrito atravs de vrias linhas, executadas uma aps a outra. Programao estruturada: dispe da possibilidade de dividir o programa em subprogramas (procedimentos ou funes) diminuindo o tempo de programao para tarefas repetitivas, facilitando a manuteno do mesmo e minimizando os erros. Programao orientada a eventos: o programa na verdade dividido em vrias partes agregadas a objetos utilizados pelo ambiente da linguagem e esses trechos do programa so despertados por aes determinadas como um clique em um boto ou uma fatia de tempo.

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) 2) Por qu importante estudar algoritmo? Crie um algoritmo no computacional que descreva como trocar um pneu de um carro. 3) 4) 5) O que um programa? Cite 3 linguagens de programao atuais: necessrio ter um computador para criar Algoritmos? 6) Por que podemos dizer que um algoritmo esttico e possui aspecto dinmico?

10

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

MATEMTICA NA INFORMTICA
Como a maioria dos programas possui algum tipo de expresso matemtica, iremos comear a estudar seus operadores.

OPERADORES ARITMTICOS
+ * / ^ ou ** Adio Subtrao Multiplicao Diviso Exponenciao ex. 23 = 2 ^ 3 ou 2 ** 3

Qual o resultado da expresso abaixo? 2+2/2 Lembre-se que a prioridade dentre os operadores descritos anteriormente a mesma da matemtica, primeira a exponenciao seguido da multiplicao e diviso e por ltimo a soma e subtrao. Logo o resultado 3.

OPERADORES RELACIONAIS
> < >= <= = <> Maior que Menor que Maior ou Igual Menor ou Igual Igual Diferente
11

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LINEARIZAO DE EXPRESSES
Para a construo de Algoritmos todas as expresses aritmticas devem ser linearizadas, ou seja, colocadas em linhas. importante tambm ressalvar o uso dos operadores correspondentes da aritmtica tradicional para a computacional. Exemplo:

2 3

5 3

(2/3+(5-3))+1=

Tradicional

Computacional

MODULARIZAO DE EXPRESSES MATEMTICAS


A modularizao a diviso da expresso em partes, proporcionando maior compreenso e definindo prioridades para resoluo da mesma. Como pode ser observado no exemplo anterior, em expresses computacionais usamos somente parnteses ( ) para modularizao. Na informtica podemos ter parnteses dentro de parnteses. Exemplos de prioridades: (2+2)/2=2

12

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Primeiro resolve-se o que est em parnteses. 2+2/2=3

OPERADORES ARITMTICOS ESPECIAIS (MOD e DIV)


MOD ros. DIV Retorna o valor inteiro que resulta da diviso Retorna o resto da diviso entre 2 nmeros intei-

entre 2 nmeros inteiros. Exemplo: 13 2 1 MOD Observao: Como foi bem destacado acima nunca poderemos ter uma expresso tipo: 2,8 mod 2, pois 2,8 no um nmero inteiro. Observe: 8 * 3 + 7 mod 2 + 6 * 9 Calculando: 24 + 1 + 54 = 79 6 DIV

13 DIV 2 = 6 13 MOD 2 = 1

Observao: A prioridade dos operadores especiais igual a da multiplicao ou diviso.

13

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1)Calcule as expresses aritmticas abaixo: a) 75 / 5 * 3 + 6 mod 2 * 1,87 b) 7 div 2 +6 mod 2 *5 + 6 / 6 c) 5 * 2 ** 3 + 7 ** 2 * 3 2) Sabendo que A=3, B=7, C=8, D=42, G=5, H=-6, calcule: a) A * B * C div D + G + H

14

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

EXPRESSES LGICAS
As expresses compostas de relaes baseadas em uma proposio sempre resultam em um valor lgico do tipo Verdadeiro ou Falso. Exemplos: 2+5>4 Verdadeiro 3<>3 Falso

OPERADORES LGICOS
Atuam sobre expresses lgicas retornando resultados do tipo Falso ou Verdadeiro.

RETORNA VERDADEIRO, SE AMBAS AS PARTES DA EXPRESSO FOREM VERDADEIRAS.

OU BASTA QUE UMA PARTE DA EXPRESSO SEJA VERDADEIRA PARA


RETORNAR VERDADEIRO.

NO INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E


VICE-VERSA. Prioridades dos operadores Lgicos: a) NO b) E c) OU Negao Conjuno Disjuno

TABELA VERDADE
Supondo A e B como expresses lgicas vamos verificar os estados de cada linha da tabela abaixo:

15

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

A V V F F

B V F V F

A E B V F F F

A OU B V V V F

NO (A) F F V V

NO(3<>3) F

Verdadeiro

NO `

16

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1)Responda o resultado lgico (V ou F) das expresses abaixo, sabendo que A = V, B = V, C = F, D = V, G = V. a) A e B e C ou D e no G b) (A ou B) e C e D e no G ou H 2) Monte as tabelas verdade das expresses abaixo: a) A ou B e no C b) A ou no B e C c) A e B ou no A d) A e B ou C ou no B OBS: Quando temos uma coluna em uma tabela verdade com todos os valores verdadeiros chamamos de Tautologia e quando todos os valores so falsos chamamos de contradio.

17

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

FUNES
Uma funo um instrumento (Subalgoritmo) que tem como objetivo retornar um valor ou uma informao. A chamada de uma funo feita atravs da citao do seu nome seguido opcionalmente de seu argumento inicial entre parnteses. As funes podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse. Exemplos:

Valor Inicial X

X=9

Processamento

Valor Final Y

Y=3

BIBLIOTECAS DE FUNES
Armazenam um conjunto de funes que podem ser usadas pelos programas.

FUNES PR-DEFINIDAS
ABS( ) VALOR ABSOLUTO |x|

18

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

SQRT( ) SQR( ) TRUNC( )

RAIZ QUADRADA ELEVA AO QUADRADO VALOR TRUNCADO

(Square Root) x2

Ex.trunc(7,9)=7 ou trunc(7,1) =7 ROUND( ) VALOR ARREDONDADO Ex. Round() de 7,0 at 7,4 = 7 e de 7,5 at 7,9 = 8 LOG( ) SIN( ) COS( ) TAN( ) LOGARITMO SENO COSENO TANGENTE

As funes acima so as mais comuns e importantes para nosso desenvolvimento lgico, entretanto, cada linguagem possui suas funes prprias. As funes podem ser aritmticas, temporais, de texto etc.

19

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

TABELA GERAL DE PRIORIDADES


PRIMEIRO SEGUNDO PARNTESES E FUNES SINAIS DE MENOS E MAIS PARA OPERANDOS UNRIOS. TERCEIRO QUARTO EXPONENCIAL MOD, DIV, MULTIPLICAO E DIVISO QUINTO SEXTO STIMO OITAVO NONO SOMA E SUBTRAO OPERADORES RELACIONAIS NO E OU

20

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Associe as colunas abaixo: ( a ) Operador Aritmtico ( b ) Operador Aritmtico Especial ( c ) Operador Relacional ( d ) Operador Lgico ( ( ( ( ( ( ( ( )no )>= )= )mod )^ )div )<> )**

2) Assinale com X a expresso abaixo que est incorreta: ( ( ( ) A ou no B ) A no B ou C ) A ou no B e C

3) Escreva os Resultados: a) trunc(9.8888)*2 b) round(2.5)**3 c) (sqrt(81)*5)/5 d) (sqrt(1000)*2,5+72**4)/0 e) (10+5+9+7)/4 f) abs(-98)*2+6

21

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

VARIVEIS
Variveis so endereos de memria destinados a armazenar informaes temporariamente (durante a execuo do algoritmo). Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um nico valor a cada instante. * Todo Algoritmo ou programa deve possuir varivel! Por exemplo, imagine que eu quero saber o dobro da sua idade. A frmula seria: resposta=idade*2. Neste exemplo temos 2 variveis: a idade, que vai variar para cada leitor e a resposta que vai variar de acordo com a idade.

VARIVEIS DE ENTRADA E SADA


Variveis de Entrada armazenam informaes fornecidas por um meio externo, normalmente usurios ou discos. Variveis de Sada armazenam dados processados normalmente dados intermedirios ou resultados. Exemplo: A B C=A+B

De acordo com a figura acima A e B so Variveis de Entrada e C uma Varivel de Sada.

22

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

IDENTIFICADORES
So os nomes significativos dados a variveis, constantes e programas. Regras Para construo de Identificadores: No podem ter nomes de palavras reservadas (comandos da linguagem); Devem possuir como 1 caractere uma letra ou Underscore ( _ ); Ter como demais caracteres letras, nmeros ou Underscore; Ter no mximo 127 caracteres; No possuir espaos em branco; A escolha de letras maisculas ou minsculas indiferente. Exemplos: NOME NOTA1 TELEFONE SALARIO IDADE_FILHO PI

UMNOMEMUITOCOMPRIDOEDIFICILDELER UM_NOME_MUITO_COMPRIDO_E_FACIL_DE_LER

23

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

SINAL DE ATRIBUIO
Uma Varivel nunca eternamente igual a um valor, seu contedo pode ser alterado a qualquer momento. Portanto para atribuir valores a variveis devemos usar o sinal de := ou . Exemplos: A := B C := 2; 3; (l-se da seguinte forma: B recebe 3) A + B;

Obs.: Dependendo da linguagem de programa;ao em que o algoritmo for emplementada, esta pode utilizar como sianal de atribuio := ou simplesmente o sinal de =.

CONSTANTES
Assim como as variveis, as constantes so endereos de memria destinados a armazenar informaes, entretanto elas so fixas, inalterveis durante a execuo do programa. Exemplo: PI = 3.1416

SINAL DE IGUALDADE
As constantes so eternamente iguais a determinados valores, portanto, quando construmos um algoritmo, usamos o sinal de = para identifica-las. Exemplos:
24

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

PI = 3.1416; Empresa = Colgio de Informtica L.T.D.A. V = Verdadeiro

TIPOS DE DADOS
Todas as Variveis devem assumir um determinado tipo de informao. O tipo de dado pode ser: Primitivo Sub-Faixa Escalar Exemplos: A : INTEIRO TIPO NOTA=[1..10] DE INTEIRO TIPO SEMANA = (Segunda-feira, Tera-feira, Quarta-feira, Quinta-feira, Sexta-feira, Sbado, Domingo)
ESCALAR

Pr-definido pela linguagem; uma parte de um tipo j existente; Definidos pelo programador.
PRIMITIVO

SUB - FAIXA

TIPOS PRIMITIVOS DE DADOS INTEIRO


ADMITE SOMENTE NMEROS INTEIROS. GERALMENTE UTILIZADO PARA REPRESENTAR UMA CONTAGEM (QUANTIDADE).

REAL

ADMITE NMEROS REAIS (COM OU SEM CASAS DECIMAIS). GERALMENTE UTILIZADO PARA REPRESENTAR UMA MEDIO.

25

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

CARACTERE ADMITE CARACTERES ALFANUMRICOS. OS NMEROS QUANDO


DECLARADOS COMO CARACTERES TORNAM SE REPRESENTATIVOS E PERDEM A ATRIBUIO DE VALOR.

LGICO

ADMITE SOMENTE VALORES LGICOS(VERDADEIRO/FALSO).

COMANDOS BSICOS DE ENTRADA E SADA(INPUT/OUTPUT)


LER Comando de entrada que permite a leitura de Vari-

veis de Entrada. Alguns autores tratam esse comando com Receber, o resultado o mesmo. ESCREVER Comando de sada que exibe uma informao na

tela do monitor. Alguns autores tratam esse comando com Exibir. IMPRIMIR Comando de sada que envia uma informao

para a impressora. Exemplos: Imagine que queremos obter um nmero do usurio e guardar em uma varivel chamada NUM. Ler (num); Agora queremos pegar esse valor e calcular o dobro dele e guardar esse valor na varivel DOBRO. Dobro num * 2;

Para exibir o resultado seria:

26

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Escrever (dobro) At que no to difcil no mesmo?

27

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Responda: a) Represente a entrada de um dado pelo teclado guardando-o na varivel DADO. b) Represente a atribuio do valor 1000 para a varivel X. c) Defina um novo valor para varivel X, como sendo seu valor anterior acrescido de 1. d) Defina uma varivel K como sendo o resto da diviso de A por B. e) Represente a sada da questo anterior.

2) Assinale com X os identificadores vlidos: ( ) valor ( )nota aluno ( )3 x 9 ( ) oi ( )x2 ( )b248765 ( )Renato ( )MuitoFeio ( )salario-liquido ( )a1v7c9 ( )ah! ( )quase(x)

3) Identifique os tipos das variveis abaixo: a) nome b) cep c) telefone d) idade


28

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

e) quantidade f) peso g) altura h) salrio i) cor j) tem_carro

29

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

FLUXO DE UM ALGORITMO
Todo Algoritmo composto de um fluxo bsico: Entrada Processamento Sada

CORPO GERAL DE UM ALGORITMO


Iremos aprender o corpo geral de um algoritmo passo a passo, entendendo cada rea do mesmo. Todo algoritmo precisa ter a primeira linha como uma identificao (nome) de acordo com o objetivo proposto: ALGORITMO <<identificador>>; Em seguida podemos declarar as constantes, que so sempre opcionais. CONST Declaramos o nome da constante e seu valor: <<identificador>> = <<dado>>; A declarao de variveis praticamente obrigatria, pois um programa sem variveis s poderia existir para sada de informaes, o que no muito comum. VAR Devemos dar um nome a varivel e definir o seu tipo (inicialmente iremos aprender usando apenas tipos primitivos de dados). Podemos colocar uma varivel em cada linha ou declarar muitas em uma mesma linha separando as por vrgulas, desde que elas sejam de mesmo tipo.
30

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

<<identificador1>> : <<tipo>>; <<identificador1>> : <<tipo>>; Finalmente iremos colocar a palavra reservada que determina o incio do algoritmo, ela ir agrupar vrios comandos. NICIO Aqui podemos escrever os comandos de entrada e sada de dados, as frmulas e os demais procedimentos. <<comando1>>; <<comandoN>> Aps o bloco de comandos iremos fechar o algoritmo com a respectiva palavra reservada. FIM.

ESTRUTURAS SEQNCIAIS
Como pode ser analisado no tpico anterior, todo programa possui uma estrutura seqencial (seqncia de comandos) determinada por um NICIO e FIM.

; PONTO E VRGULA ;
O sinal de ponto e vrgula ; indica a existncia de um prximo comando (passa para o prximo). Na estrutura NICIO e no comando que antecede a estrutura FIM no se usa ;.

31

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

PRIMEIRO ALGORITMO
Segue um algoritmo que vai receber dois nmeros inteiros digitados pelo usurio e calcular a soma. ALGORITMO SOMA; VAR NUMERO1, NUMERO2, SOMA: INTEIRO; INICIO LER (NUMERO1); LER (NMERO2); SOMA NUMERO1+NUMERO2;

ESCREVER (SOMA) FIM. Observe que o algoritmo acima demonstra bem o fluxo definido anteriormente. Primeiro feito a entrada de dados (leitura de variveis), depois o processamento (clculo da soma) e em seguida a sada de dados (exibio da soma obtida no processamento). Agora se quisssemos criar um programa baseado nesse algoritmo precisaramos apenas estudar quais palavras reservadas da linguagem desejada exercem as funes desejadas pelo algoritmo. Observe os exemplos:

32

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Em Pascal: PROGRAM EXEMPLO: VAR NUMERO1, NUMERO2, SOMA: INTEGER; BEGIN READ (NUMERO1); READ (NMERO2); SOMA NUMERO1+NUMERO2;

WRITE (SOMA) END.

OUTROS ALGORITMOS DE EXEMPLO


Segundo exemplo: Segue um Algoritmo que l o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a mdia obtida. ALGORITMO MEDIA_FINAL; VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35] {podemos ou no definir o tamanho de caracteres que uma varivel desse tipo pode assumiR} INICIO
33

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LER (NOME); LER (NOTA1, NOTA2, NOTA3, NOTA4); MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; ESCREVER (NOME); ESCREVER (MEDIA); FIM. Observe, sempre mantendo o fluxo (envolvido pelos retngulos) entrada, processamento e sada. Agora vamos criar um algoritmo que utilize uma constante. Criaremos um Algoritmo que l o raio de uma circunferncia e calcula sua rea. Sabendo que a rea da circunferncia igual ao valor de sendo =3,1416. multiplicado pelo quadrado do raio,

ALGORITMO AREA_CIRCUNFERENCIA; CONST PI = 3.1416; VAR RAIO, AREA : REAL; INICIO LER (RAIO); AREA PI * RAIO**2;
34

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESCREVER (AREA) FIM. Para concluirmos nossos algoritmos seqenciais vamos fazer um quem tenha uma varivel auxiliar. Iremos criar um algoritmo que leia 2 nmeros inteiros A e B, troque seu contedo e os exiba. ALGORITMO TROCATUDO; VAR A,B, AUXILIAR: INTEIRO; INICIO LER(A); LER (B); AUX A; A B; B A; ESCREVER (A,B) FIM.

{LINHAS DE COMENTRIO}
Podemos inserir em um Algoritmo comentrios para aumentar a compreenso do mesmo, para isso bastam que os comentrios fiquem entre Chaves {}. Exemplo:
35

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LER (RAIO); {ENTRADA}

ASPAS SIMPLES
Quando queremos exibir uma mensagem para a tela ou impressora ela deve estar contida entre aspas simples, caso contrrio, o computador ir exibir o contedo de uma varivel ou identificar a mensagem como Varivel Indefinida. Exemplo: AREA 180 ESCREVER (AREA OBTIDA =, AREA) {COMANDO DE SADA} AREA OBTIDA = 180 {RESULTADO GERADO NA TELA}

36

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

EXERCCIOS: 1) Crie os algoritmos abaixo: a) Leia o lado de um quadrado e calcule sua rea. b) Leia a base e a altura de um tringulo e calcule sua rea. c) Leia 3 nmeros inteiros e calcule a soma dos mesmos. d) Leia uma despesa gasta em uma mesa de restaurante e calcule os 10%. e) Obtenha uma distncia percorrida por um carro em km e a quantidade de tempo gasta em horas e calcule a velocidade mdia em km/h. f) Leia uma temperatura dada em graus celsius e escreva a correspondente em graus farengheit. g) Obtenha os valores dos catetos de um tringulo retngulo em cm e escreva o valor de sua hipotenusa, tambm em cm. h) Leia um nmero, calcule e escreva seu cubo. i) Ler o nmero de balas que vem em um saco, o valor unitrio da bala e calcular o valor do saco. j) Ler o lado de um quadrado e escrever seu permetro.

37

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

k) Ler dois nmeros inteiros e exibir a sua soma, o mdulo da diferena entre eles, seu produto e o resto da diviso dos mesmos. 2) Dado o algoritmo abaixo, escreva o valor de X:

ALGORITMO DESAFIO1; VAR X,Y,Z: REAL; INICIO Y 10; Z 14; X 4; Y Z MOD X +Y * Z +2; X SQRT(Y) ; ESCREVER (X) FIM.

38

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURAS CONDICIONAIS SE
Executa uma seqncia de comandos de acordo com o resultado de um teste. A estrutura de deciso SE pode ser Simples ou Composta, baseada em um resultado lgico, a partir da uma alternativa ser executada. Simples: SE <<CONDIO>> ENTO <<COMANDO1>>; <<COMANDON>> FIM-SE Composta: SE <<CONDIO>> ENTO <<COMANDO1>>; <<COMANDON>> SENO <<COMANDO1>>; <<COMANDON>>; FIM-SE Obs.: Em algumas linguagens de programao no usa-se ponto e virgula(;) antes do comando ELSE, representado no algoritmmo pela instruo SENAO.
S so executados se a condio for FALSA!!! So executados se a condio for verdadeira!!! S so executados se a condio for verdadeira!!!

39

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exemplos: Segue um Algoritmo que l 2 nmeros e escreve o maior. ALGORITMO ACHA_MAIOR; VAR A, B: INTEIRO; INICIO LER (A, B); SE A>B ENTO ESCREVER (A) SENO ESCREVER (B) FIM-SE FIM. Segue um Algoritmo que l o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a mdia obtida pelo aluno escrevendo tambm se o aluno foi aprovado ou reprovado. Mdia para aprovao = 6 ALGORITMO MEDIA_FINAL; VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35] INICIO
40

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LER (NOME); LER (NOTA1, NOTA2, NOTA3, NOTA4); MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; SE MEDIA>=6 ENTO ESCREVER (APROVADO) SENO ESCREVER (REPROVADO) ; ESCREVER (NOME, MEDIA) FIM-SE FIM.

41

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Crie os algoritmos abaixo: a) leia um nmero inteiro e escreva se ele par ou mpar. b) Leia a idade de uma pessoa e escreva se ela uma criana, adolescente ou um adulto. Utilizando 3 estruturas condicionais simples. Observao:

criana at 12 anos, adolescente at 18 e acima disso iremos considerar todos como adultos. c) Fazer a entrada de um nmero via teclado e em seguida verificar se negativo. Se for trocar lhe o sinal. Calcular e exibir a raiz quadrada do nmero positivo. d) Ler o tempo de servio em anos e o salrio de um funcionrio de uma empresa, se ele tiver mais de 5 anos de tempo de servio e um salrio inferior a R$500,00 calcular o novo salrio com reajuste de 20%, caso contrrio dar um reajuste de 5%. Exiba o novo salrio do funcionrio.

42

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

NINHOS DE SE
Usados para tomadas de decises com mais de 2 opes. Forma Geral: SE <<CONDIO>> ENTO <<COMANDO1>>; <<COMANDON>> SENO SE <<CONDIO>> ENTO <<COMANDO1>> SENO <<COMANDO1>> FIM-SE FIM-SE Exemplos: Segue um Algoritmo que l 3 nmeros e escreve o maior. ALGORITMO ACHA_MAIOR; VAR A, B, C : INTEIRO; INICIO LER (A, B, C); SE (A>B) E (A>C)ENTO

43

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESCREVER (A) SENO SE (B>A) E (B>C)ENTO ESCREVER (B) SENO ESCREVER (C) FIM-SE FIM-SE FIM. Segue outro exemplo muito comum: Algoritmo que l os lados de um tringulo e escreve se ele eqiltero, isscele ou escaleno. ALGORITMO VAR L1,L2,L3;REAL; INICIO ESCREVER (DIGITE O PRIMEIRO LADO); LER (L1); ESCREVER (DIGITE O SEGUNDO LADO); LER (L2); ESCREVER (DIGITE O TERCEIRO LADO); TRINGULO;

44

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LER (L3); SE L1=L2 E L2=L3 ENTO ESCREVER (TRINGULO EQUILTERO); SENO SE L1=L2 OU L1=L3 OU L2=L3 ENTO ESCREVER (TRINGULO ISSCELE) SENO ESCREVER (TRINGULO ESCALENO) FIM-SE FIM-SE FIM. Observe a lgica do algoritmo: Se l1=l2 e l1=l3, os 3 lados so iguais, logo o tringulo Eqiltero. Se l1=l2 ou l1=l3 ou l2=l3, lembrando que essa deciso s vai acontecer se o tringulo no for escaleno. Caso qualquer uma dessas opes seja verdadeira o tringulo isscele. Logo se o tringulo no for eqiltero e nem issceles, lgico que ele s pode ser escaleno.

45

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Crie os algoritmos abaixo: a) Leia a idade de uma pessoa e escreva se ela uma criana, adolescente ou um adulto. Utilizando ninho de SE. Observao: criana at 12 anos, adolescente at 18 e acima disso iremos considerar todos como adultos. b) Leia 3 nmeros inteiros (A, B e C) e escreva seus respectivos valores ordenados de modo

crescente. Ex. ENTRADA: A=3, B=1, C=2; PROCESSAMENTO: Ordenar os valores; SADA: A=1, B=2 e C=3. c) Crie um algoritmo que leia o salrio de 1 funcionrio e de acordo com a tabela abaixo, calcule e escreva seu reajuste e novo salrio: Salrio At R$500.00 Acima de R$500.00 Percentual de Reajuste 20% at 15%

R$1000.00 Acima de R$1000.00 10%

Ex.

Salrio=R$100.00;

reajuste=R$20,00;

novo

sal-

rio=R$120.00.

46

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURA DE CONDIO CONFORME


A estrutura de condio CONFORME equivale a um ninho de SE, usada quando dispomos de mais de 2 opes para uma deciso. Seu modo mais fcil de ser compreendido: Forma Geral: CONFORME CASO <<CONDIO1>> <<COMANDO1>>; CASO <<CONDION>> <<COMANDO1>>; OUTROS CASOS <<COMANDO1>>; FIM CONFORME Iremos usar o mesmo exemplo do capitulo anterior para demonstrar a estrutura CONFORME. Observe como o algoritmo fica menor e de melhor compreenso. Segue um Algoritmo que l 3 nmeros e escreve o maior. ALGORITMO ACHA_MAIOR; VAR A, B, C : INTEIRO; INICIO LER (A, B, C);
47

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

CONFORME CASO (A>B) E (A>C) ESCREVER (A); CASO (B>A) E (B>C) ESCREVER (B); OUTROS CASOS ESCREVER (C); FIM CONFORME FIM. Podemos ter inmeras opes (CASOS) em uma estrutura conforme. A Condio OUTROS CASOS seria equivalente a um SENO, ou seja, se nenhuma das opes for verdadeira ela executada. Logo podemos concluir que a opo OUTROS CASOS pode ou no existir nessa estrutura (no h obrigatoriedade). Caso existam vrias condies que possam ser verdadeiras dentro da estrutura, somente a primeira ser executada, desprezando as demais.

48

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Crie um algoritmo que leia um nmero inteiro, verifique se ele pode representar um ms existente em nosso calendrio (1..12), caso positivo escreva o ms correspondente. 2) Reescreva os exerccios do captulo anterior utilizando a estrutura CASO. 3) Uma instituio filantrpica estabeleceu um nvel de donativos para seus membros, baseandose na categoria de renda. H 4 categorias: (1) no muito alta (2) suficiente (3) confortvel (4) alta. 4) Um membro se dirige ao computador da instituio que lhe pede um nmero correspondente ao nvel apropriado de renda. O computador usa o nmero para determinar o nvel de donativo. A doao recomendada para cada nvel a seguinte: Categoria 1 = R$ 10.00 Categoria 2 = R$ 20.00 Categoria 3 = R$ 50.00 Categoria 4 = R$ 100.00 O computador mostra na tela o total esperado.

49

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

A sua contribuio de: R$ xx.xx Escreva o algoritmo que permitir a criao do programa acima. 5) Observe e responda: Variveis com valores armazenados: A = VERDADEIRO B = FALSO C = FALSO D = VERDADEIRO Trecho do algoritmo: SE (A e B) ENTO ESCREVER (1) SENO SE D ENTO CONFORME CASO A ESCREVER (2); CASO B ESCREVER (3); CASO C ESCREVER (4);

50

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

CASO D ESCREVER (5); OUTROS CASOS ESCREVER (2); FIM CONFORME FIM SE FIM SE ESCREVER (7) Quais os valores sero exibidos de acordo com o trecho do algoritmo acima? 6) Crie um algoritmo que leia os coeficientes de uma equao de segundo grau (A, B e C), calcule o valor de Delta e caso possvel escreva suas razes. Lembrando que: = B2x4AC Se = 0 raz nica, se for maior que 0 ento rafor menor que 0 razes

zes distintas (X1 e X2), se imaginrias.


B 2A

51

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURA DE REPETIO PARA


Quando uma seqncia de comandos deve ser executada repetidas vezes, tem-se uma estrutura de repetio. A estrutura de repetio, assim como a de deciso, envolve sempre a avaliao de uma condio. Na repetio PARA, o algoritmo apresenta previamente a quantidade de repeties desejadas. Forma Geral: PARA
<<VARIAVEL INTEIRA>>

:=

<<VALOR INICIAL>>

AT

<<VALOR FINAL>>

FAA

<<COMANDO1>>; FIM PARA

A repetio por padro determina o passo do valor inicial at o valor final como sendo 1. Determinadas linguagens possuem passo 1 ou permitem que o programador defina o passo.

ALGORITMO SETE
Segue abaixo um algoritmo que vai exibir 10 vezes a frase Editora Brasport de maneira arcaica: ALGORITMO REPETE1;

52

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

INICIO ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); ESCREVER (EDITORA BRASPORT); FIM. Que algoritmo grande para algo to simples, no? Ainda bem que no Word existe Copiar e Colar caso contrrio no colocaria esse exemplo... Imagine ainda se fosse para exibir 100 vezes! Ufa... Vamos ver do modo mais simples agora:

ALGORITMO REPETE2; VAR I:INTEIRO;


VARIVEL IMPLEMENTADA DE 1 EM 1

INICIO PARA I=1 AT 10 FAA ESCREVER (EDITORA BRASPORT)


53

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

FIM PARA FIM. Desse modo se quisssemos repetir 100 vezes, bastava substituir o valor final da repetio de 10 por 100.

ALGORITMO OITO
Segue um algoritmo que escreve os 100 primeiros nmeros pares. PROGRAMA PARES; VAR I,PAR: INTEGER; INICIO PAR:=0; PARA I:=1 ATE 100 FACA ESCREVER (PAR); PAR := PAR+2 FIM PARA FIM.

ALGORITMO NOVE
Segue um algoritmo, quase que padro, exigido como exerccio pelos professores das universidades... Criar um algoritmo que leia um nmero N e calcule seu fatorial:

54

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ALGORITMO FATORIAL; VAR FAT, N, I :INTEIRO; INICIO FAT := 1; LER (N); PARA I DE 1 AT N FAA FATORIAL = FATORIAL * I FIM PARA FIM

55

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Crie um algoritmo que escreva os 100 primeiros nmeros mpares: 2) Crie um algoritmo que escreva os 15 primeiros nmeros mltiplos de 5. 3) Crie um algoritmo que leia um nmero inteiro N e escreva os N primeiros nmeros mltiplos de 3. 4) Crie um algoritmo que escreva os 17 primeiros termos da seqncia abaixo: 1, 1, 2, 3, 5, 8, 13, 21 ... 5) Crie um algoritmo que escreva os 20 primeiros termos da seqncia abaixo: 1, 3, 7, 15, 31, 63,127... 6) Ler as notas de 30 alunos de uma turma. Calcular e exibir a mdia da turma.

56

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURA DE REPETIO INDETERMINADA COM VALIDAO INICIAL


usada para repetir N vezes uma ou mais instrues. Tendo como vantagem o fato de no ser necessrio o conhecimento prvio do nmero de repeties. Forma Geral: ENQUANTO <<CONDIO>> FACA <<COMANDO1>>; FIM ENQUANTO

VALIDAO INICIAL

ALGORITMO NOVE
Segue um algoritmo que calcule a soma dos salrios dos funcionrios de uma empresa. O programa termina quando o usurio digitar um salrio menor que 0. PROGRAMA SOMA_SALARIOS; VAR SOMA, SALARIO : REAL; INICIO SOMA:=0; SALARIO:=0; ENQUANTO SALARIO>=0 FAA LER (SALARIO); SOMA:=SOMA+SALARIO

57

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

FIM ENQUANTO ESCREVER (SOMA) FIM. Se o primeiro valor testado for falso, a repetio terminar sem que suas instrues sejam executadas, pois o teste precede os comandos. Logo o nmero de repeties varia de 0 a N vezes. A estrutura de repetio ENQUANTO pode substituir a estrutura PARA, mas a recproca nem sempre verdadeira, lembrando que cada situao deve ditar a estrutura ideal. Abaixo segue um exemplo de calculo de fatorial utilizando a estrutura ENQUANTO. ALGORITMO FATORIAL; VAR FAT, N, I :INTEIRO; INICIO FAT := 1; LER (N); I=0; ENQUANTO I<=N FAA FATORIAL = FATORIAL * I I:=I+1 {CONTADOR}

58

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

FIM ENQUANTO FIM TODAS AS VARIVEIS QUE ACUMULAM VALORES DEVEM RECEBER UM VALOR INICIAL.

REPITA ENQUANTO FOR VERDADEIRO!

59

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Crie um algoritmo que leia a idade dos alunos de uma classe e calcule sua mdia. A leitura termina (Flag) quando a idade for igual a 999. OBS: Flag um termo utilizado para sinalizar algo, no nosso caso para sinalizar o fim da repetio. 2) Crie um algoritmo que escreva os 15 primeiros nmeros mltiplos de 5 utilizando a estrutura ENQUANTO. 3) Ler o preo unitrio de uma mercadoria e a quantidade comprada. Calcular e imprimir o total da compra. 4) Ler o preo de uma caixa de biscoitos, sabendo que a caixa contm 20 pacotes, calcular e exibir o preo de cada pacote. 5) Ler uma srie de nmeros do teclado. Exibir o maior e o menor nmero lido. O Flag um nmero negativo qualquer (que no deve ser considerado) 6) Ler o nome o sexo (codificado por M ou F) e a idade dos funcionrios de uma empresa. Exibir a quantidade de homens, de mulheres

60

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

e a idade mdia dos homens e das mulheres dessa empresa. A entrada de dados termina quando o nome do funcionrio for FIM.

61

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURA DE REPETIO INDETERMINADA COM VALIDAO FINAL


Assim como a estrutura ENQUANTO usada para repetir N vezes uma ou mais instrues. Sua principal caracterstica ter a validao fi-

nal,fazendo com que a repetio seja executada ao menos uma vez. Forma Geral; REPITA <<COMANDO1>>; <<COMANDON>>
VALIDAO FINAL

AT <<CONDIO>>

ALGORITMO DEZ
Segue um algoritmo que calcule a soma dos salrios dos funcionrios de uma empresa. O programa termina quando o usurio digitar um salrio menor que 0. ALGORITMO SOMA_SALARIOS; VAR SOMA, SALARIO : REAL; INICIO SOMA:=O; REPITA

62

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

LER (SALARIO); SOMA:=SOMA+SALARIO ATE SALARIO<0; ESCREVER (SOMA) FIM.

ALGORITMO ONZE
Segue um algoritmo que escreve os 100 primeiros nmeros pares. ALGORITMO PARES_2; VAR I, PAR, CONTADOR : INTEIRO; INICIO CONTADOR := 0; PAR := 0; REPITA ESCREVER (PAR); PAR := PAR+2; CONTADOR := CONTADOR+1; ATE CONTADOR=100 FIM.

REPITA AT SER FALSO!

63

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios: 1) Determine os valores de A, B e C que sero exibidos ao final da execuo do programa: ALGORITMO LOUCO; VAR A, B, C, CONT:INTEIRO; INICIO A:=8; B:=10; C:=7; PARA CONT DE 1 AT 9 FAA A:=A+B B:=B+1 FIM-PARA SE B>13 ENTO C:=C^2 SENO C:=C*2 FIM-SE EXIBIR (A,B,C) FIM.

64

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Programas Equivalentes
O algoritmo onze poderia ter sido criado com qualquer estrutura de repetio. Portanto como j foi citado anteriormente, estou ressaltando que podemos ter algoritmos que so escritos de maneiras diferentes, mas, funcionam realizando o mesmo objetivo. A esses damos o nome de Equivalentes.

Loop
Devemos ter ateno ao trabalharmos com estruturas de repetio indeterminada, para no cairmos no erro de Loop, ou seja, criarmos um programa com uma rotina que se torne eterna, pois o processamento ira causar quina. Trecho de algoritmo com exemplo de Loop Eterno: ENQUANTO 10>2 FAA ESCREVER (BRASIL) FIM ENQUANTO Como 10 ser sempre maior do que 2, a condio ser sempre verdadeira e o programa ir repetir a palavra VASCO eternamente. erro e travamento da m-

65

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ESTRUTURA DE DADOS
A Estrutura de Dados uma tcnica de programao que possibilita armazenar dados na memria ou em disco objetivando atingir o menor consumo de espao possvel no menor tempo.

TIPOS DE DADOS
Tipos Primitivos de Dados Como estudado anteriormen-

te, so pr-definidos pela linguagem e permitem a definio de novos tipos. Ex: Inteiro, Real, Caractere, Lgico etc.

Tipos da Dados Estticos

So gerados a partir de tipos

j existentes e no sofrem alteraes em suas caractersticas (escopo) durante a execuo do programa. Ex: Vetor, Matriz e Registro.

Tipos de Dados Dinmicos

So aqueles que sofrem alte-

raes durante a execuo do programa. Ex: Ponteiros (Pilha, Fila, Lista, rvore etc).

Os tipos de dados estticos e dinmicos sero estudados a seguir.

TIPOS DE DADOS ESTTICOS

66

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

VETOR
O vetor uma estrutura de dados homognea (de mesmo tipo) e unidimensional. Tambm conhecida como Varivel Indexada, Tabela ou Array. Imagine que queremos criar um algoritmo que leia 15 idades, calcule e escreva a soma, a mdia e depois exiba uma idade qualquer solicitada pelo usurio. Inicialmente poderamos pensar em usar apenas uma varivel, e acumular seus valores para calcular a soma e a mdia entretanto com isso a cada idade lida, a anterior seria apagada da memria no permitindo uma posterior consulta do usurio. Podemos ento criar um programa com 15 variveis de idade, soluo fcil, mas, nada prtica. Suponha que houvesse uma alterao no programa, e no fossem mais 15 idades e sim 150... que trabalheira seria s para declarar as variveis heim??? A necessidade de utilizar um Vetor surge nessa situao, ele nada mais que um conjunto de variveis de mesma caracterstica. Abaixo segue a representao de trs variveis: Idade1 Idade2 Idade3

Abaixo segue a representao de 1 vetor para substituir as variveis: Idade

Idade[1] Idade[2]

67

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Idade[3] O vetor possu um ndice que identifica a posio do dado armazenado, esse ndice do tipo Inteiro e fica representado entre colchetes. Podemos imaginar o vetor desta forma: Cidado N Idade 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 23 30 15 20 23 18 19 20 65 23 56 22 24 9

Onde a coluna cidado o ndice e a coluna Idade o Vetor. Forma geral para declarao do vetor: <<NOME>> : VETOR[1..N] DE <<TIPO>>;

Segue ento a resoluo do algoritmo exemplo:

ALGORITMO VETORIDADE; VAR IDADE:VETOR[1..15] DE INTEIRO; SOMA, CIDADAO, I: INTEIRO;

68

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

MEDIA:REAL; INICIO SOMA:=0; PARA I:=1 AT 15 FAA LER(IDADE[I]) SOMA:=SOMA+IDADE[I] FIM-PARA ESCREVER (SOMA); MEDIA := SOMA/15; ESCREVER (MEDIA); ESCREVER (DIGITE O NUMERO DO CIDADAO O QUAL DESEJA OBTER A IDADE); LER (CIDADAO); ESCREVER (IDADE[CIDADAO]) FIM.

Observao: A primeira estrutura de repetio carrega o vetor com dados do usurio, de modo muito mais prtico que seria a leitura de 15 variveis, calculando a soma...

69

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Matriz
A matriz uma estrutura de dados homognea multidimensional. <<NOME>>: MATRIZ [1 : N, 1:M] DE <<TIPO>> ALGORITMO LER_NOMES; VARIVEIS Nomes I,J BEGIN PARA I PARA 1 ATE 4, PASSO 1, J FACA FACA : VETOR [1:4,1:4] DE CARACTERE; : INTEIRO;

1 ATE 4, PASSO 1,

LEIA (NOMES [ I , J] ) FIM PARA FIM PARA

PARA

I PARA

1 ATE 4, PASSO 1, J

FACA FACA

1 ATE 4, PASSO 1,

ESCREVA (===NOMES===); ESCREVA ([, I, :, J, ], NOMES[ I , J] ) FIM PARA FIM PARA

FIM Exerccios:

1)Seja VET um vetor com o seguinte contedo:

9 1 Considerando os

2 2

5 3

3 4

1 5

valores das posies de VET como dados de

entrada, verifique o que ser impresso pelo trecho do algoritmo abaixo:


70

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

VAR VET : VETOR [ 1 .. 5 ] DE INTEIRO I : inteiro INICIO PARA I DE 1 ATE 5 FAA INICIO LEIA ( VET [ I ] ) FIM PARA I DE 2 ATE 4 FAA INICIO ESCREVA ( VET [ I ] ) FIM FIM

2) Faa um programa que leia quatro nmeros inteiros, coloque-os em um vetor e mostre-os na ordem inversa da leitura.

3) Faa um programa que leia uma lista de 20 nmeros, colocando-os em um vetor e, aps o trmino da leitura, mostre os elementos com ndice maior ou igual a 10.

4) Crie um algoritmo que deve aceitar o nome e o salrio de 10 pessoas, reajustar cada salrio em 10% e exibir o nome de cada pessoa e o seu novo salrio.

5)Fazer um algoritmo que leia dez nmeros inteiros para um vetor de 10 posies e calcule ento a soma de todos os elementos do vetor. Ao final, imprima a soma dos elementos.

6) Fazer um algoritmo que leia dez elementos de um vetor A, e construa um vetor B, atravs da seguinte lei de formao: cada elemento de B deve ser o elemento correspondente em A multiplicado por 2. Ao final imprima todos os elementos de B.

71

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

7) Faa um algoritmo para ler e imprimir uma matriz 2x4 de nmeros inteiros.

8) Dado uma matriz de ordem 3x3 faa um algoritmo que: a) Calcule a soma dos elementos da primeira coluna; b) Calcule o produto dos elementos da primeira linha; c) Calcule a soma de todos os elementos da matriz; d) Calcule a soma do diagonal principal; e) Soma da diagonal secundria;

8) Dado uma matriz de ordem NxN faa um algoritmo que verifique se a matriz simtrica (aij=aji).

10) Dado uma matriz NxM de valores reais faa um algoritmo que faa a leitura destes valores e ao final da leitura de todos, imprimir o seguintes relatrio: a) Qual a Soma dos valores de cada coluna da matriz; b) Listar os valores que so menores que a mdia dos valores; c) Qual a soma dos elementos da diagonal secundria;

72

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

MODULARIZAO
uma tcnica de programao que consiste basicamente na diviso de um algoritmo complexo em diversos mdulos simples com funes bem definidas, gerenciados por um mdulo principal.

A modularizao aumenta a produtividade do algoritmo, uma vez que os mdulos de uso geral podem ser agrupados em bibliotecas para serem reaproveitados no futuro, sem a necessidade de um novo desenvolvimento e de uma nova bateria de testes para a eliminao de erros, pois os mesmos j foram eliminados quando da criao inicial dos mdulos.

Os mdulos classificam-se em dois tipos:

Procedimentos e Funes.

PROCEDIMENTO

um mdulo que ativado atravs da colocao de seu nome em alguma parte do programa. Desta forma, assim que o nome de um procedimento encontrado, ocorre um desvio no programa, para que os comandos do mdulo sejam executados. Ao trmino do mdulo, a execuo retornar ao ponto subsequente a chamada do procedimento.

Obs.: O Procedimento deve ser declarado ANTES do programa principal, uma vez que, ao ser ativado pelo programa principal, o computador j deve saber de sua existncia.

Alem de economizar memria de programa, mas tambm para estruturar a programao.

73

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

ALGORITMO PROCEDIMENTO; VAR A, B, M: REAL;

PROCEDIMENTO MEDIA INICIO M FIM (A + B)/2

INICIO ESCREVA (Informe dois nmeros:); LEIA (A, B); MEDIA FIM

Neste ponto caber uma explicao sobre variveis. Todas as variveis declaradas no incio do programa podem tambm ser usadas pelos procedimentos. Diz-se que o escopo daquelas variveis compreende todos os blocos do programa que foram definidos depois. Poderamos definir variveis cujo escopo se limitasse ao bloco de um ( ou mais ) procedimentos, bastando que uma declarao VAR seja codificada aps a declarao procedimento.

Damos o nome de variveis globais para aquelas variveis que so definidas logo aps o comando VAR do programa prin-

cipal, sendo desta forma visveis em qualquer parte do programa. Damos o nome de variveis locais s variveis que so declaradas dentro de uma sub-rotina (mdulo), sendo que as mesmas s podem ser manipuladas dentro da sub-rotina que as

declarou, no sendo visveis em nenhuma outra parte do programa.

74

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Obs.: possvel definir variveis globais e locais com o mesmo nome, sendo que qualquer mudana no contedo da varivel local no afetar o contedo da varivel global. ALGORITMO ORDENACAO; VAR A, B: INTEIRO PROCEDIMENTO ORDENAR VAR AUX : INTEIRO; INICIO SE ( A > B ) ENTAO INICIO AUX A B FIM FIM INICIO ESCREVA ( Informe dois nmeros: ); LEIA ( A, B ); ORDENAR; ESCREVA (Os nmeros ordenados so: , A, B ); FIM FUNO A; B; AUX;

Tambm um bloco de programa contendo INICIO e FIM e sendo identificada por um nome atravs do qual tambm ser referenciada em qualquer parte do programa principal.

Uma funo, embora seja bastante semelhante a um procedimento, tem a caracterstica especial de retornar ao programa que a chamou um nico valor associado ao nome da funo.

75

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

Exerccios:

1) Dever ser criado um programa que faa uso de uma subrotina de funo que retorne o valor da soma de dois nmeros fornecidos como parmetros.

2) Criar um programa Calculadora que apresente um menu de selees no programa principal. Este menu dever dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmticas. Escolhida a opo desejada, dever ser solicitada a entrada de dois nmeros e, processada a operao, dever ser exibido o resultado.

Obs: Este programa dever ser um conjunto de 7 mdulos, um principal e 6 secundrios. O mdulo principal efetuar o controle sobre os 6 mdulos secundrios, sendo eles: ENTRADA, SAIDA, SOMA, SUBTRACAO, MULTIPLICACAO e DIVISAO.

Utilize PROCEDIMENTOS.

3)Refaa o algoritmo anterior utilizando FUNES onde for possvel.

76

Livro de Algoritmo Autor:

Renato da Costa informtica@renatodacosta.net

PROFESSOR RENATO DA COSTA Educao: Ps Graduao em Docncia do Ensino Superior UCAM Licenciatura Plena em Informtica UCAM Curso Superior de Tecnologia em Processamento de Dados UniverCidade Licenciando em Matemtica UniSUAM Curso Tcnico em Processamento de Dados GAP Tamandar Autor do livro:

77

This document was created with Win2PDF available at http://www.win2pdf.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only. This page will not be added after purchasing Win2PDF.

Você também pode gostar