Вы находитесь на странице: 1из 39

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

1. INTRODUO A LGICA DE PROGRAMAO 1.1. Noes de Lgica


Antes de aprendermos a desenvolver algoritmos, ou programas, precisamos entender um conceito muito utilizado em nosso cotidiano: Lgica. Lgica algo que no se discute, por exemplo: Pela manh, o sol vai nascer e a tarde se por.... Esta afirmao bvia, lgica e indiscutvel. No importa a crena, inteligncia ou gosto, todos concordam com esta afirmao. Aristteles, filsofo grego, foi o criador da cincia da lgica, onde ele estabeleceu critrios para resolver os problemas com respostas binrias (opostas); a partir de premissas chegava-se as concluses.

1.2.

Lgica de Programao
A arquitetura magntica do computador, onde se processam

as informaes, lgica; ou seja, uma combinao de passar ou no corrente eltrica caracteriza a informao. Teoricamente representado pelos algarismos 0 e 1. Partindo deste princpio a concepo de um algoritmo deve ser tratada da mesma forma, logicamente. A lgica de programao extremamente necessria para quem quer, de fato, aprender a programar em qualquer linguagem de programao. Ela nos ajuda a pensar pela razo e no pela emoo, como em muitas situaes fazemos. Vamos dar um exemplo: Um casal de namorados se amam, a garota pergunta ao garoto: Voc no me ama?, ele, pela emoo, responderia que sim; mas pela razo,

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

se responder sim, ele est confirmando a negao questionada por ela, de no amar. Esta situao pode ser bem resolvida em nosso cotidiano, porm, para o computador quer dizer que o garoto no ama a garota, lembremse, o computador raciocina logicamente. Devemos ento entendermos e nos acostumarmos com a forma de pensar do computador, para que no cometamos equvocos que possam ser fatais para o bom funcionamento do algoritmo.

1.2.1.

Algoritmo
Algoritmo um termo usado em diversas disciplinas exatas,

como: Matemtica, clculo, fsica, qumica, entre outras. Nestas disciplinas Algoritmo seria a resoluo integral de um problema proposto. Algoritmos na nossa rea (computao) tem o mesmo significado. Muitos confundem e pensam que algoritmos apenas a soluo final do problema, mas no, alm de chegar a soluo, so especificados todos os passos. Geralmente, criada uma linguagem hipottica

normalmente em portugus para a padronizao do algoritmo. Os critrios empregados so similares aos das linguagens de programao reais. Didticamente para o aluno, o fato da linguagem ser em portugus facilita o aprendizado do algoritmo, at que ele tenha a disciplina necessria para encarar uma linguagem real.

1.2.2.

Programa
Todos os conceitos empregados ao algoritmo servem para o

programa. O programa, na verdade, nada mais do que um algoritmo

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

desenvolvido em uma linguagem de programao real, ou seja, que de fato funcione no computador.

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

2. TIPOS DE INFORMAES
Como vimos no captulo anterior, para fazermos o programador interagir com o computador precisamos definir critrios. O computador uma mquina de processar informaes(dados), logo, estes dados devero seguir algumas propriedades que caracterize e diferencie-o dos demais. Por estarmos tratando genericamente os padres, os citados nesta literatura, no obedece em cem por cento o critrio das linguagens de programao reais.

2.1.

Caracteres
So dados alfanumricos1 que serve para armazenar

informaes que contenham qualquer tipo de smbolo do teclado; por exemplo: Endereo: Rua Ataliba Vieira, 1025. Repare que no exemplo acima os bytes (caracteres) que compem o endereo so alfanumricos, algarismos e smbolos especiais. Os dados do tipo caracteres ocupam na memria RAM o nmero de bytes nele contido, por exemplo: computador - 10 bytes, casa - 4 bytes e Bom dia! 8 bytes.

2.2.

Numricos
So informaes que s podem ser representadas por

nmeros, algarismos de 0 (zero) a 9 (nove).

Algarismos, letras e caracteres especiais (vrgula, ponto, hfem, parnteses entre outros)

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

2.2.1.

Inteiros
Informaes numricas que tem a caracterstica de no

serem fracionrias, por exemplo, Quantidade de filhos: 5, Nmero de alunos: 40 e Total de rodas: 4. Os dados do tipo Inteiro ocupam na memria RAM 2 Bytes e pode armazenar nmeros at o limite de 65535 positivo ou negativo.

2.2.2.

Reais
Informaes numricas que tem a caracterstica de serem

fracionrias, por exemplo, Salrio: 1254.25, Inflao: 0.75842 e Nota: 7.5. Os dados do tipo Real ocupam na memria RAM 4 Bytes e podem armazenar nmeros com 9 dgitos significativos. Vale lembrar que as linguagens de programao tratam nmeros reais diferente do padro brasileiro. Eles usam o ponto para separar a parte fracionria do nmero inteiro, enquanto usamos a vrgula.

2.3.

Lgicos
Informaes lgicas, como diz o prprio nome, tem a

caracterstica binria2. Armazenam valores booleanos (verdade/falso) como muitos dados analisados para implementar um algoritmo. Por exemplo: Maior de idade? Verdade; casado? falso e dependentes? verdade. Fica mais fcil entender estes tipos de dados em forma de perguntas lgicas, como nos exemplos acima. Os dados do tipo Lgico ocupam na memria RAM 2 Bytes e s armazenam os valores .V. (verdade) e .F. (falso).

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

3. REPRESENTAES DO ALGORITMO
Existem diversas formas de representar um algoritmo, assim como, fazendo uma analogia, existem diversas formas de representar uma notcia: por jornal, pela internet, pelas revistas, televiso, entre outras. Apresentaremos neste captulo algumas das formas de representao do algoritmo. Vale lembrar, que no decorrer do curso nos apoiaremos no Diagrama de Blocos (fluxograma) na teoria e Linguagem de programao Turbo Pascal na prtica.

3.1.

Descrio Narrativa
Descrio narrativa a forma de representao do algoritmo

atravs de um texto que expresse os processos a serem executados para resoluo do problema. Nesta forma de representao do algoritmo no necessrio tcnicas, regras ou critrios; basta a expresso do algoritmo na forma escrita.

3.2.

Diagrama de blocos (Fluxograma)


Diagrama de blocos, ou fluxograma, a forma de

representao dos processos do algoritmo atravs de figuras geomtricas que representam as aes do processo (comandos ou instrues). Nesta forma de representao do algoritmo usamos regras particulares para cada uma das figuras/comandos. Comeamos a despertar no aprendiz a necessidade e importncia da disciplina na concepo de um algoritmo.

Somente duas respostas uma oposta da outra. Na teoria .V. simboliza verdade e .F. falso.

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

3.3.

Pseudocdigo (portugus estruturado)


O pseudocdigo, ou portugus estruturado, uma

linguagem de programao hipottica que usamos para representar os processos do algoritmo atravs de comandos pr-definidos. Estes comandos so padres para todos os algoritmos, da mesma forma que existem regras de um comando para um algoritmo, a mesma servir para um outro. O construo do algoritmo atravs do pseudocdigo fundamental no incio do aprendizado, porm, depois que o aluno acostumar-se com as regras dos comandos, ser mais interessante que o aluno desenvolva seus algoritmos em uma linguagem de programao (Pascal), para que no haja redundncia e confuso de regras entre pascal e pseudocdigo. Por este motivo, neste curso, sempre quando formos desenvolver a teoria de um algoritmo, utilizaremos o fluxograma, e , a partir deste, desenvolveremos o programa em Pascal.

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

4. ARMAZENAMENTO DE INFORMAES 4.1. Variveis de memria Conceito


Varivel o meio magntico que o computador utiliza para armazenar na memria RAM informaes dadas pelo programador ou operador do algoritmo. Uma varivel, analogamente, como um papel que armazena uma informao escrita para algum fim. Por ser um meio magntico, na falta de energia, por quaisquer motivos, acarretar na perda da informao nela armazenada. Como diz o prprio nome, uma varivel pode ter seu contedo mudado no decorrer do algoritmo.

4.1.1.

4.1.2.

Nomeao
Toda varivel de memria devem ter um nome que

identifique-a, diferenciando-a das demais contidas no mesmo algoritmo. Cada linguagem de programao tem regras semelhantes - ou no - para nomear variveis. Usaremos as regras da linguagem Pascal, afinal, ele ser usada no curso. Comear com letra; No conter caracteres especiais, exceto o sublinhado( _ ) e No ser palavra reservada da linguagem.

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

4.1.3.

Atribuio
Atribuio nada mais do que preencher o contedo de

uma varivel com valores definidos pelo usurio do algoritmo ou pelo programador.

4.2.

Constantes de memria Conceito


Tudo o que dissemos no item 4.1.1 tambm serve para

4.2.1.

constantes de memria. Exceto o ltimo pargrafo. Uma constante de memria no pode ter o seu contedo alterado pelo operador do algoritmo, ou seja, a partir do momento que o algoritmo est em modo de execuo, o valor atribudo a constante no se altera. S utilizaremos constantes de memria em algoritmos se nesta informao houver um carter imutvel, como o valor de PI na matemtica: 3,141519.

4.2.2.

Iniciao
Para atribuirmos um valor numa constante, basta em sua

definio, no ambiente CONST, colocarmos o valor desejado. Mostraremos na prtica o funcionamento mais adiante.

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

5. PROCESSAMENTO DE DADOS 5.1. Operadores Lgicos


Operadores lgicos, como diz o prprio nome, serve para avaliar expresses lgicas. Foram tirados do portugus trs palavras chaves E, OU, e NO na comunicao entre as pessoas e implementadas no computador, para uma comunicao entre o homem e a mquina. Cada uma destas palavras tem o seu significado e regra, tanto no portugus quanto no algoritmo. Veja a tabela abaixo: Operando 1 Operando 2 .E. .OU. .NO. operando 1 .NO. operando 2

5.1.1.

.V. .V. .F. .F.

.V. .F. .V. .F.

.V. .F. .F. .F.

.V. .V. .V. .F.

.F. .F. .V. .V.

.F. .V. .F. .V.

OPERADOR LGICO .E. Conjuno. O operador lgico .E. s resulta verdade se todos os operandos forem verdadeiros, nos demais casos, resulta falso. Em C disjuno se escreve && e no Pascal AND. OPERADOR LGICO .OU. Disjuno. O operador lgico .OU. s resulta falso se todos os operandos forem falsos, nos demais casos, resulta verdade. Em C disjuno se escreve || e no Pascal OR. OPERADOR LGICO .NO. Negao. O operador lgico .NO. inverte o valor lgico do operando. Em C disjuno se escreve ! e no Pascal NOT.

10

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

No importa o nmero de operandos envolvidos numa expresso, as regras so as mesmas. Em algumas linguagens de programao, existem outros operadores lgicos, como ou exclusivo; porm os estes foram concebidos a partir dos descritos acima.

5.1.2.

Aritmticos
Os operadores aritmticos servem para efetuar clculos

matemticos em um algoritmo. Alguns smbolos so iguais aos da matemtica, outros no. Veja a tabela Operador Descrio Prioridade

+ * / DIV % ou MOD ^ ()

Adio Subtrao Multiplicao Diviso Diviso inteira Mdulo Exponenciao3 Parnteses

4 4 3 3 3 3 2 1

Se em uma expresso aritmtica houverem operadores de prioridades diferentes, sero executados, primeiro, os de prioridade menor da esquerda para a direita.

Diferentemente dos demais, este operador no existe na Linguagem C.

11

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

5.1.3.

Caracteres
Teoricamente, existe apenas um operador de caracteres: o

sinal de adio (+). Sua funo concatenar (juntar) as cadeias de caracteres (strings). O turbo Pascal, alm de usar este sinal, tambm usa o caractere vrgula, dentro do comando write, com a mesma funo.

5.1.4.

Relacionais
Este tipo de operador tem como objetivo comparar os

operandos, veja a tabela: Operador Descrio

> < >= <= != ou <>

Maior Menor Maior ou igual Menor ou igual Diferente

Estes operadores podem ser utilizados com qualquer tipo de dados, no importando a classificao ou o tipo.

5.2.

Expresses
A combinao dos operadores, no importando o tipo, com

os operandos4 formam as expresses que o algoritmo ir calcular, retornando o resultado.

Valores e informaes(dados) contidas no algoritmo

12

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Esta informao geralmente armazenada em uma varivel de memria, podendo tambm ser exibidas diretamente nos dispositivos de sada do computador (monitor ou impressora).

5.2.1.

Matemticas
Os tipos de expresses matemticas envolvem dados

numricos (inteiros e reais) e operadores aritmticos. A precedncia dos clculos na expresso, obedece a mesma ordem da matemtica. Porm, uma expresso computacional s pode ser escrita em uma linha, diferentemente de uma expresso aritmtica. Exemplo: Expresso Aritmtica Y = 4.63+94 5 Expresso Computacional Y=(4*6*6*6+9-4)/5;

5.2.2.

Lgicas
As expresses lgicas, para o aprendiz, so mais

complicadas do que as matemticas; mais pela novidade do que pela dificuldade. As expresses matemticas, no computador, so parecidas com as expresses da matemtica. Ento, no uma grande novidade, diferentemente das expresses lgicas onde tudo novidade. Como nas expresses matemticas, as lgicas, tambm tem uma prioridade a ser considerada. Desconsiderando os parnteses (que quebram a prioridade) os operadores lgicos so executados na seguinte ordem: .NO., .E. e .OU.. Exemplo: .NO.((.V..OU..F.).E.(.NO..F..E..V.)) Resulta .F.

13

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

5.2.3.

Caracteres
A nica operao que podemos montar em uma expresso

caractere, a concatenao (+). String o termo usado para identificar uma seqncia de valores caracteres, logo, concatenao nada mais do que juntar duas ou mais strings independentes. Exemplo: Bom Dia+Joo Carlos Bom DiaJoo Carlos Bom Dia +Joo Carlos Bom Dia Joo Carlos Bom Dia + + Joo Carlos Bom Dia Joo Carlos

5.2.4.

Mistas
Existem situaes, em programao, onde precisamos

montar expresses que envolvam dados de tipos diferentes. Apenas para ilustrar; Imagine um trecho do algoritmo em operao onde, para o usurio acess-lo, precisa entrar com o seu nome e senha. Para a validao do acesso ao algoritmo, o programador ter que montar uma expresso mista que envolva dados caracteres (Nome) e numricos (Senha). A seguir, um exemplo de expresso mista: Exemplo: (4+7<=6).OU.(.NO..V..E..F.).E.(ABC<>BCA) (11<=6).OU.(.F..E..F.).E.(.V.) .F..OU..F..E..V. .F..OU..F. .F.

Nota: Quando houverem operadores de classes diferentes na mesma expresso, devemos resolver na ordem: os aritmticos, os relacionais e, por fim, os lgicos.

14

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

6. COMANDOS SIMPLES
Antes de aprendermos os comandos precisamos saber a estrutura de um algoritmo e de um programa em pascal. Estrutura de um algoritmo

Pseudocdigo
programa <nome_programa> var <lista_variveis>:<tipos> inicio <corpo_do_programa> fim

Pascal
program <nome_programa>; var <lista_variveis>:<tipos>; begin <corpo_do_programa>; End.

6.1.

Entrada de dados Leia/Read


Usamos este comando quando houver a necessidade do

usurio do algoritmo entrar com informaes no mesmo.

Fluxograma

Pascal
Read(<varivel>);

Sintaxe Pseudocdigo
leia <varivel>

C
scanf(tipo, &<varivel>);

<varivel> Readln<varivel>);

Parmetro:
<varivel> o local onde ser armazenada a informao digitada pelo operador do algoritmo.

6.2.

Comando Processamento Atribuio


Este comando utilizado quando precisamos calcular,

atribuir ou manusear, de qualquer forma, as informaes em uma varivel.

15

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Fluxograma

Pascal

Sintaxe Pseudocdigo

<varivel> <expresso>

<var>:=<expresso>;

<var><expresso>

<var>=<expresso>;

Parmetro:
<varivel> o local onde ser armazenada o valor resultante da expresso. <expresso> clculo ou valor a ser atribudo varivel. Lembrete No existe um nome prprio para o comando processamento, como nos outros comandos, bastando assim colocar a expresso e atribu-la, obrigatoriamente e exclusivamente, em uma varivel.

6.3.

Sada de dados Escreva/Write


Utilizamos o comando de sada de dados quando

necessitamos exibir ao usurio informaes contidas no algoritmo, derivadas de clculos ou no.

Fluxograma

Pascal
write(<expresso>);

Sintaxe Pseudocdigo
Escreva <expresso>

C
printf(<expresso>);

<expresso> writeln(<expresso>);

Parmetro:
<expresso> so as informaes que podero ser exibidas. Estas

informaes podero ser constantes, variveis ou expresses. Lembrete No pascal, a diferena do comando write para o writeln o fato do ltimo mudar o cursor para a linha debaixo aps a apresentao da expresso, enquanto no primeiro, continua na mesma linha.

16

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

A seguir, daremos um exemplo do algoritmo construdo em suas trs representaes, e, tambm, o programa em pascal. Construir um algoritmo que calcule as frias (salrio+33,3%), incluindo a contribuio de INSS de 11%, de um funcionrio.

Descrio Narrativa: 1. Obter o salrio do funcionrio (SAL) 2. Calcular as Frias Bruta (FB) 3. Calcular o INSS (INSS) 4. Calcular as Frias Lquida. (FL) 5. Exibir um relatrio detalhado das frias. Fluxograma:
incio sal fbsal*1.333 inssfb*0.11 flfb-inss Frias Bru.,fb, INSS,inss, Frias liq.,fl fim

Pseudocdigo: programa ferias_1 var sal,fb:real fl,inss:real inicio leia sal fbsal*1.333 inssfb*0.11 flfb-inss escrevaFrias Bruta:,fb, INSS:,inss, Frias lquida:,fl fim

{passo {passo {passo {passo

1} 2} 3} 4}

{passo 5}

17

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Pascal: program ferias_1; var sal,fb:real; fl,inss:real; begin readln(sal); fb:=sal*1.333; inss:=fb*0.11; fl:=fb-inss; write(Frias Bruta:,fb, INSS:,inss, Frias lquida:,fl); end.

{passo {passo {passo {passo

1} 2} 3} 4}

{passo 5}

18

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

7. ESTRUTURAS DE DECISO 7.1. Comando Se/If


O comando Se/If, o primeiro dos comandos estruturados5. Este comando permite que sejam executados um ou mais blocos de comandos dependendo do resultado da condio lgica estabelecida. Este comando simula uma inteligncia no computador, fazendo-o tomar decises a partir de expresses montadas pelo programador. Temos diversas formas de usar este comando, so elas:

7.1.1.
Fluxo grama

Se...ento If...Then
Pseudocdigo
.F.

<Condio>
.V.

se <condio> ento <bloco1> fim_se


Pascal if <condio> then

<bloco1>

<bloco1> ;

Se a <condio> resultar um valor verdadeiro, ento executado o <bloco1> , e , depois continua o fluxo do algoritmo; seno, prossegue, somente, o fluxo do algoritmo. Esta variao do comando se/if serve para analisarmos um possvel caminho a ser seguido.

So comandos que tem um incio e fim prprio.

19

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

7.1.2.

Se...ento...seno If...then...else

Fluxograma .F.

Pseudocdigo .V.

<Condio>

<Bloco2>

<Bloco1>

se <condio> ento <bloco1> seno <bloco2> fim_se


Pascal

Observao: No Pascal o fim_se representado pelo ponto e vrgula.

if <condio> then <bloco1> else <bloco2> ;

Se a <condio> resultar um valor verdadeiro, ento executado o <bloco1> , seno, o <bloco2>. Independentemente do bloco a ser executado, segue o fluxo normal na seqncia do algoritmo. Esta variao do comando se/if serve para analisarmos dois caminhos distintos que podero ser seguidos. A seguir, mostraremos um algoritmo com o comando Se (IF): Elaborar um algoritmo que calcule as frias (salrio+33,3%), o imposto de renda (15%) para quem ganha mais de 900 e a contribuio de INSS de 11%, de um funcionrio.

Descrio Narrativa:
1. Obter o salrio do funcionrio (SAL) 2. Calcular as frias (F) 3. Verificar se as frias ultrapassaram o limite do imposto de renda (R$900,00). 3.1. Se sim, calcular o imposto de renda (IR)

20

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

3.2. Seno, iseno de IR 4. Calcular o INSS (INSS) 5. Calcular o saldo (S) 6. Exibir relatrio detalhado dos impostos e proventos

Fluxograma: inicio sal

fsal*1.333
f >= 900

ir0

irf*0.15

inssf*0.11 sf-inss-ir Frias:,f, Imp. R.:,ir, INSS:,inss, Saldo:,s fim Pseudocdigo:

programa ferias_2 var sal,ir,f,inss,s:real inicio leia sal fsal*1.333 se f>=900 ento irf*0.15

21

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

seno ir0 fim_se inssf*0.11 sf-inss-ir escreva Frias:,f,INSS:,inss, IR:,ir,Saldo:,s fim


Pascal:

program ferias_2; var sal,ir,f,inss,s:real; begin readln(sal); f:=sal*1.333; if f>=900 then ir:=f*0.15 else ir:=0 ; inss:=f*0.11; s:=f-inss-ir; writeln(Frias:,f,INSS:,inss, IR:,ir,Saldo:,s); fim.

7.1.3.

Se...ento...senoSe If...then...elseIf
Se a <condio> resultar um valor verdadeiro, ento

executado o <bloco1> , seno analisada a prxima condio, podendo resultar verdade ou falso caindo no prximo se...ento...seno. Esta variao do comando se/if serve para analisar diversos caminhos distintos que podero ser seguidos.

22

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

7.2.

Comando Escolha Case


Este comando derivado do comando Se (IF),

principalmente o visto no captulo 7.1.3. Este comando mais prtico do que o comando Se em situaes como menus, ou seja, diversas opes de escolha com condies simples. Na verdade, poderamos usar o Se para analisarmos diversas condies, porm, o inconveniente o fato de ter que fechar vrios fim_se, por exemplo, se for montada uma estrutura com quatro caminhos diferentes com o comando Se, obrigatoriamente fecharamos trs fim_se, ou ponto e vrgula no pascal. A desvantagem do comando escolha ao se, o fato de no analisar condies compostas6. Veja sua sintaxe:

<Cond_1>

.v.

<Bloco1>

.f.
<Cond_2>

.v.

<Bloco2>

.f.
<Cond_N>

.v.

<BlocoN>

.f. <Bloco_seno >

Pseudocdigo caso <expresso> faa <cond_1>:<bloco1> <cond_2>:<bloco2> ... <cond_N>:<blocoN> seno <bloco_seno> fim_caso
6

Mais de um operador

23

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Pseudocdigo case <expresso> of <cond_1>:<bloco1>; <cond_2>:<bloco2>; ... <cond_N>:<blocoN>; else <bloco_seno>; end;
O funcionamento deste comando : analisada a <cond_1>, se verdadeira, executa-se o <Bloco1> e sai da estrutura, seno, analisa-se a <cond_2> obedecendo o procedimento anterior e assim sucessivamente; at que esgotem-se as condies. O algoritmo a seguir, pede a digitao de um nmero que represente o dia da semana, exibindo-o por extenso.

incio dia

dia=1 .V. dia=2.F. .V. dia=7 .F.

rDOM

rSEG

rSAB

r
.V. incio .F. 24

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Pseudocdigo programa dia_semana var dia:inteiro inicio leia dia caso dia faa 1:r:=DOM 2:r:=SEG ... 7:r:=SAB seno escreva Dia invlido fim_caso escreva r fim. Pascal: Program dia_semana; var dia:integer; begin read(dia); case dia of 1:r:=DOM; 2:r:=SEG; 7:r:=SAB; else write(Dia invlido); end; write(r);
end.

25

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

8. ESTRUTURAS DE REPETIO
Estas estruturas so muito utilizadas em programao. So necessrias, principalmente, quando existem rotinas redundantes. Estas

estruturas esto divididas em trs, elas:

8.1.

Lao contado Comando Para/For


Este comando mais usual quando o programador sabe

previamente o nmero de repeties a serem aplicadas na rotina. Basta configurar o lao com os parmetros

preestabelecidos que o mesmo se encarregar de execut-lo devidamente. Sua sintaxe : Fluxograma

<contador>,<Valor Inicial>,<ValorFinal> ,<incremento>

<rotina_redundante>

Pseudocdigo
Para <contador> de <ValorInicial> at <ValorFinal> inc<incremento> <rotina_redundante> fim_para

26

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

Pascal
for <contador> := <ValorInicial> to <ValorFinal> do <rotina_redundante> ;

Reparem

que

em

pascal

no

existe

parmetro

<incremento>, porm, bom sabe-lo; pois todas as outras linguagens de programao trabalham com este parmetro. Tambm vale lembrar que a vrgula que fecha esta estrutura no pascal. O algoritmo a seguir escreve os nmeros de 1 a 100 na tela: Fluxograma inicio

cont, 1, 100, 1

fim

cont

Pseudocdigo programa exemplo_para var cont:inteiro inicio para cont de 1 at 100 inc 1 escreva cont fim_para fim Pascal program exemplo_para;

27

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

var cont:integer; begin for cont := 1 to 100 do escreva cont ; end.

8.2.

Lao condicional Enquanto/While


O lao condicional enquanto executa a rotina de repetio

condicionalmente, ou seja, a partir de uma condio lgica - definida pelo programador - analisa-se, se resultar verdade, executa a rotina de repetio e volta ao incio do lao, analisando a condio novamente; se falso, a rotina de repetio ignorada seguindo o fluxo do algoritmo normalmente. Primeiramente analisada a condio, depois executada a rotina. Sua sintaxe : Fluxograma .f. <condio> .v. <rotina de repetio> Pseudocdigo Enquanto <condio> faa <rotina de repetio> fim_enquanto Pascal While <condio> do <rotina de repetio> ;

28

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

O comando enquanto mais utilizado em situaes onde pode existir a possibilidade de no executar nenhuma vez a rotina de repetio.

8.3.

Lao condicional Repita/Repeat


O lao condicional repita executa a rotina de repetio

condicionalmente, como a estrutura enquanto. As diferenas so duas: 1 - primeiramente executada a rotina de repetio, independentemente do resultado da condio, que ainda no foi analizada. 2 - a rotina de repetio volta a ser executada se a condio resultar falso, ou seja, at que a condio seja verdadeira. Sua sintaxe : Fluxograma <rotina de repetio>

.f. <condio>

.v.

Pseudocdigo Repita <rotina de repetio> at que <condio> Pascal repeat <rotina de repetio> until <condio>;

29

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

O comando repita mais utilizado em situaes onde h a obrigatoriedade da execuo da rotina de repetio pelo menos uma vez.

30

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

9. VARIVEIS INDEXADAS
Sabemos a utilidade de variveis em um algoritmo, porm, em algumas situaes uma varivel simples no atende a nossa necessidade, pois a mesma guarda apenas uma informao por vez. Imaginemos a necessidade de guardarmos as vendas dirias dos dez vendedores de um comrcio, onde, as informaes armazenadas so: o nmero do vendedor e a venda. Criaramos vinte variveis? Fora de cogitao. Veremos ento o conceito de variveis indexadas.

9.1.

Vetor unidimensional
Utilizamos uma varivel do tipo vetor sempre que

precisarmos armazenar mais de uma informao do mesmo tipo - sobre a mesma entidade. A vantagem da varivel do tipo vetor o fato de darmos a ela um nome e podermos guardar diversas informaes, referenciando-as pelo seu ndice na cadeia. Ilustrao de um vetor com cinco posies preenchido com nomes
1 2 3 4 5

Joo

Marcio

Jos

Maria

Tiago

Faremos o pseudocdigo e o programa em pascal que preenche o vetor acima: Pseudocdigo Programa Exemplo_vetor Var VetorNome:conjunto[5] de caractere inicio VetorNome[1]Joo VetorNome[2]Marcio

31

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

VetorNome[3]Jos VetorNome[4]Maria VetorNome[5]Tiago fim Pascal Program Exemplo_vetor; Var VetorNome:array[1..5] of string; begin VetorNome[1]:=Joo; VetorNome[2]:=Marcio; VetorNome[3]:=Jos; VetorNome[4]:=Maria; VetorNome[5]:=Tiago; End.

9.2.

Matriz bidimensional
Utilizamos uma varivel do tipo matriz quando necessitamos

armazenar informaes do mesmo tipo em uma estrutura bidimensional, como uma tabela ou planilha, por exemplo. Referenciamos as posies da matriz pelo seu ndice, na ordem, linha e coluna. Ilustrao de uma matriz com 2 linhas e 3 colunas, preenchida com nmeros de 1 a 6, na ordem
1,1 1,2 1,3

1
2,1

2
2,2

3
2,3

Faremos o pseudocdigo e o programa em pascal que preenche a matriz acima: Pseudocdigo Programa Exemplo_matriz Var

32

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

MatrizNum:conjunto[2,5] de inteiro i,j,num:inteiro inicio num1 para i de 1 at 2 inc 1 faa para j de 1 at 3 inc 1 faa MatrizNum[i,j]num numnum+1 fim_para fim_para fim Pascal Program Exemplo_matriz; Var MatrizNum:array[1..2,1..5] of integer; i,j,num:integer; begin num:=1; for i:=1 to 2 do for j:=1 to 3 do begin MatrizNum[i,j]num; num:=num+1; end ; ; end.

33

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

10. SUBALGORITMOS
Vamos considerar que temos o domnio requerido na construo de um algoritmo; sabemos todos os comandos devidamente, e, ainda o manuseio de variveis indexadas. At o captulo anterior, os problemas que encontrvamos em algoritmos estavam relacionados a criao do algoritmo; as dvidas existem, e muitas, porm, elas s sero sanadas com a prtica e experincia. Quando no mais novidade a elaborao de um algoritmo, comeamos a perceber um outro tipo de problema. Por menor que seja um algoritmo razoavelmente complexo, ele tem umas 200 linhas de cdigo. Aonde est o problema? Quando precisarmos fazer uma manuteno no algoritmo ou descobrir um erro de lgica nele contido, extremamente horrvel. Um Subalgoritmo veio amenizar este problema. Ele otimiza a visualizao do cdigo principal, dividindo os problemas em problemas menores, resolvendo-os separadamente e dando um nome a cada subproblema. Temos dois tipos de subalgoritmo, eles:

10.1.

Procedimento
Utilizamos um procedimento quando desejamos executar

uma seqncia de comandos que atinjam um objetivo. Um procedimento no retorna, formalmente, valor algum ao programa que o chamou. Procedimento mais utilizado em situaes como contruo de layout de telas, manuseio de informaes contidas na tela, entre outras. A seguir, um procedimento junto com o programa principal que centraliza uma mensagem, digitada pelo usurio, no meio da tela; vale

34

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

lembrar que as tela do monitor, em modo DOS, tem 25 linhas e 80 colunas. Estas informaes so necessrias para a construo do procedimento. Program Exemplo_Procedimento; Uses crt; Procedure centraliza; var msg:string; tamanho:integer; begin write(Digite uma mensagem:); read(msg); clrscr; tamanho:=(80-length(msg)) div 2; gotoxy(tamanho,12); write(msg); end; begin centraliza; end. Reparemos que em pascal o subalgoritmo construdo no meio do programa principal. O procedimento est destacado, acima, em negrito e itlico.

10.2.

Funo
Utilizamos uma funo, tambm, quando desejamos

executar uma seqncia de comandos que atinjam o mesmo objetivo. Diferentemente do procedimento, uma funo retorna formal e obrigatoriamente um valor ao programa chamador. Uma funo mais usada para efetuarmos clculos, parecida com o conceito da funo matemtica, porm, no efetua apenas clculos matemticos.

35

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

A seguir, desenvolveremos uma funo que calcula o valor de delta, passando como parmetros os valores: a, b e c. (pr-requisitos para o desenvolvimento do clculo: Program Exemplo_funo; Uses crt; Var r,a,b,c:integer Function delta(pa,pb,pc:integer):integer; var resultado:integer; begin resultado:=pb*pb-4*pa*pc; delta:=resultado; end; begin read(a,b,c); r:=delta(a,b,c); Write(r); end. Na primeira linha, estamos passando trs informaes do algoritmo para a funo para que o clculo seja efetuado. No final da linha, estamos especificando o tipo de informao inteira que o funo retornar ao algoritmo, aps efetuado o clculo. Na Sexta linha da funo repare que o ato de retornar o valor ao algoritmo, consiste em atribuir um valor ao nome da funo. Na Sexta linha do programa principal a composio do nome da funo com os trs argumentos ser substitudo pelo valor retornado pela funo, e, atribudo a varivel r.

36

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

11. PARMETROS
Parmetros so informaes passadas ao subalgoritmo para que ele possa basear-se para efetuar uma operao, ou clculo, de acordo com a concepo do mesmo. Sem sabermos, j utilizamos parmetros no exemplo dado em Funo, porm, estamos agora formalizando este conceito.

11.1.

Real
So os parmetros que aparecem no algoritmo principal

quando na chamada do subalgoritmo; a partir dos valores, passados pelo parmetro real, que o subalgoritmo vai basear-se para se desenvolver. Abaixo, cortamos o corpo do programa principal do ltimo exemplo, para destacarmos - em negrito e itlico - o parmetro real. . . .

begin read(a,b,c); r:=delta(a,b,c); Write(r); end.

11.2.

Formal
So os parmetros localizados na primeira linha cabealho

do subalgoritmo. Sua funo caracterizar a informao que ser absorvida pelo subalgoritmo. Abaixo, cortamos da primeira linha do subalgoritmo do ltimo exemplo, para destacarmos - em negrito e itlico - o parmetro formal.

37

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

. . . Function delta(pa,pb,pc:integer):integer; . . .

11.3.

Passagem de parmetro Por valor


Na passagem de parmetro por valor, o parmetro formal

11.3.1.

criado a partir de uma cpia do parmetro real, no podendo assim, alterar o valor do parmetro real (e/ou variveis globais). Tecnicamente, no subalgoritmo no muda nada, continua sendo como sempre usamos o subalgoritmo. Vejamos o exemplo abaixo: Esta funo hipottica, est passando o parmetro por valor: Program pass_valor Var x:integer; Function teste(px:integer):integer; begin px:=px+2; teste:=px; end; begin x:=5; {x vale 5} write(x); {escreva 5} write(teste(x)); {escreva 7} write(x); {escreva 5} end. Repare, no exemplo acima, que a varivel global x no teve o seu valor alterado depois da chamada da funo no programa principal.

38

Dependncia a distncia ALGORITMOS E LGICA DE PROGRAMAO

UNINOVE

11.3.2.

Por referncia
Na passagem de parmetro por referncia, o mesmo espao

criado para o parmetro real ser do formal, logo, o parmetro real (ou varivel global) pode ter o seu valor alterado. Tecnicamente, no subalgoritmo, o que muda a palavra reservada var antes de cada parmetro formal. Vejamos o mesmo exemplo: Esta funo hipottica, est passando o parmetro por referncia: Program pass_referencia; Var x:integer; Function teste(var px:integer):integer; begin px:=px+2; teste:=px; end; begin x:=5; {x vale 5} write(x); {escreva 5} write(teste(x)); {escreva 7} write(x); {escreva 7} end. Perceba a existncia da palavra reservada var antes do parmetro formal. Veja tambm que a varivel global x teve o seu valor alterado aps a chamada da funo.

39

Вам также может понравиться