36
Índice 1. Introdução à lógica de programação 1 _______________________________________4 1.1.___________________________________________Noções de lógica4 1.2._________________________________________________Algoritmos4 1.2.1.________________________________Formas de Representação de Algoritmos5 1.2.2._______________________________________________Descrição Narrativa6 1.2.3.____________________________________________________Fluxograma6 1.2.4.___________________________________________________Pseudocódigo7 1.3._______________Linhas de Código de um Algoritmo ou Programa8 1.4._______________________________________Execução do Programa8 1.5.________________________________________________Comentários8 1.6._________________________________________________Constantes8 1.7.__________________________________________________Variáveis8 1.7.1._______________________________________________Nomes de variáveis8 1.7.2.___________________Tipos de Dados Definidos Para as Variáveis8 1.7.3.______________________________________Declaração de Variáveis9 1.8._____________________________________Estrutura do algoritmo11 1.9._____________________________________Operadores aritméticos11 1.10. Operadores relacionais__________________________________12 1.11. Operadores lógicos______________________________________12 1.12. Regras de precedência___________________________________12 1.13. Atribuição______________________________________________13 1.14. Comandos de entrada e saída_____________________________13 1.14.1._______________________________________________Entrada de dados13 1.14.2._________________________________________________Saída de dados13 1.15. Estruturas de controle__________________________________15 1.16. Estrutura seqüencial____________________________________15 1.17. Estruturas de seleção___________________________________15 1.17.1._____________________________________________Seleção simples15 1.17.2.____________________________________________Seleção composta15 1.17.3.____________________________________________Seleção Aninhada16 1.17.4._________________________________Seleção de múltipla escolha18 1.18. Estruturas de repetição_________________________________20 1.18.1._______________________________Repetição com teste no início20 1.18.2.________________________________Repetição com teste no final20 1.18.3.__________________________Repetição com variável de controle21

Introducao a Logica de Programacao (2)

Embed Size (px)

DESCRIPTION

Lógica de Programação

Citation preview

ndice

ndice

41.Introduo lgica de programao1

1.1.Noes de lgica41.2.Algoritmos41.2.1.Formas de Representao de Algoritmos51.2.2.Descrio Narrativa61.2.3.Fluxograma61.2.4.Pseudocdigo71.3.Linhas de Cdigo de um Algoritmo ou Programa81.4.Execuo do Programa81.5.Comentrios81.6.Constantes81.7.Variveis81.7.1.Nomes de variveis81.7.2.Tipos de Dados Definidos Para as Variveis81.7.3.Declarao de Variveis91.8.Estrutura do algoritmo111.9.Operadores aritmticos111.10.Operadores relacionais121.11.Operadores lgicos121.12.Regras de precedncia121.13.Atribuio131.14.Comandos de entrada e sada131.14.1.Entrada de dados131.14.2.Sada de dados131.15.Estruturas de controle151.16.Estrutura seqencial151.17.Estruturas de seleo151.17.1.Seleo simples151.17.2.Seleo composta151.17.3.Seleo Aninhada161.17.4.Seleo de mltipla escolha181.18.Estruturas de repetio201.18.1.Repetio com teste no incio201.18.2.Repetio com teste no final201.18.3.Repetio com varivel de controle211.19.Vetores241.20.Matrizes251. Introduo lgica de programao1

1.1. Noes de lgica

A lgica a ao do pensamento humano para a soluo de problemas do dia-a-dia mas, pode tambm, ser a origem de outros problemas. a caracterstica do pensamento correto. A lgica busca a correo do raciocnio, e determinante nas tomadas de decises. Por isso a lgica ensina a colocar ordem no pensamento. A lgica est presente nas aes da nossa vida: quando falamos ou escrevemos algo, por exemplo, devemos ordenar as palavras de forma lgica, de modo a expressar corretamente o que pensamos, o que sentimos e o que queremos.

Exemplo:

O carro est com o pneu vazio.

O macaco e a chave de rodas esto no porta-malas.

Preciso primeiro pegar o macaco e a chave de rodas, para depois tomar outro passo para trocar o pneu do carro.

1.2. Algoritmos

Algoritmo uma seqncia de aes, organizadas de forma lgica, que visam alcanar um objetivo bem definido.

Apesar do nome parecer estranho, algoritmos so comuns em nosso cotidiano, como por exemplo uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios, uma seqncia de diversos passos (aes) a serem executados para que se consiga fazer determinado tipo de bolo (objetivo bem definido).

Exemplo: Troca de uma lmpada.

pegue uma escada;

posicione-a embaixo da lmpada;

busque uma lmpada nova

suba na escada;

retire a lmpada velha;

coloque a lmpada nova;

Esse algoritmo tem um objetivo, trocar uma lmpada, e faz isso bem. Mas troca a lmpada mesmo que ela no esteja queimada.

Podemos melhorar esse algoritmo para que a lmpada no seja trocada caso esteja funcionando, incluindo um teste.

ligue o interruptor;

se o interruptor no acender, ento:

pegue uma escada;

posicione-a embaixo da lmpada;

busque uma lmpada nova;

suba na escada;

retire a lmpada velha;

coloque a lmpada nova;

Ainda pode ocorrer de a nova lmpada tambm no funcionar, podemos alterar o algoritmo para que as lmpadas continuem sendo trocadas at que alguma funcione.

ligue o interruptor;

se o interruptor no acender, ento:

pegue uma escada;

posicione-a embaixo da lmpada;

busque uma lmpada nova;

suba na escada;

retire a lmpada velha;

coloque a lmpada nova;

enquanto a lmpada no acender, faa:

retire a lmpada;

coloque outra lmpada;

Exerccios propostos 1

1) Um homem quer atravessar um rio com um barco que pode carregar ele mesmo e apenas mais uma de suas trs cargas: um lobo, um carneiro e um mao de alfafa. O que o homem deve fazer para atravessar o rio sem perder nenhuma de suas cargas?

2) Suponha que voc possua um rob e queira faz-lo trocar uma lmpada e depois conferir se a mesma acende, sendo que o mesmo foi programado para obedecer os seguintes comandos:

pegue

largue

pressione

gire garras 180 graus no sentido horrio (parafusar)

gire garras 180 graus no sentido anti-horrio

mova para/at < lugar>

desloque-se para O rob ainda capaz de :

perceber quando um comando no mais possvel

(Utilize escada, lmpada, interruptor, abaixo da lmpada, parte superior da escada, lixeira, etc...)

3) Elabore um algoritmo (descrever os passos) que permita mover 3 discos de uma torre de Hani, que consiste em 3 hastes (a-b-c), uma das quais serve de suporte para os trs discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, sendo que nunca deve ser colocado um disco maior sobre um menor. O objetivo transferir os trs discos da haste a para a haste c. Mova da haste para haste

1.2.1. Formas de Representao de Algoritmos

Existem diversas formas de representao de algoritmos. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado, existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a idia principal, o algoritmo, dificultando seu entendimento.

Dentre as formas de representao de algoritmo mais conhecidas, destacam-se:

A descrio narrativa;

O fluxograma convencional;

O pseudocdigo, tambm conhecido como linguagem estruturada ou Portugol.

1.2.2. Descrio Narrativa

Nesta forma de representao, os algoritmos so expressos em linguagem nativa, como o exemplo do algoritmo da troca de lmpada, discutido acima.

1.2.3. Fluxograma

Fluxograma uma ferramenta desenvolvida e usada pelos profissionais de anlise de sistemas, bem como, por alguns profissionais de Organizao, Sistemas e Mtodos. Tem como finalidade descrever o fluxo, seja manual ou mecnico, especificando os suportes usados para os dados e informaes. Usa smbolos convencionais, permitindo poucas variaes. Representado por alguns desenhos geomtricos bsicos, os quais indicaro os smbolos de entrada de dados, do processamento de dados e da sada de dados, acompanhados dos procedimentos requeridos pelo analista de sistemas e a serem realizados pelo programador por meio do desenvolvimento do raciocnio lgico, o qual dever solucionar o problema do programa a ser processado pelo computador. A tabela abaixo mostra alguns smbolos e seu significado.

SmboloSignificado

Terminal Indica incio ou fim do fluxo

Operao de entrada e sada. Genrica, sem indicar dispositivo.

Procedimentos. Comandos simples.

Operao de sada. Vdeo, impressora, etc.

Deciso. Indica que uma ou mais comparaes sero feitas com a possibilidade de desvio para outras partes do programa.

Conectores.

Sentido do fluxo.

Exemplo:

Incio

Ler notas

N1 e N2

Med = (N1+N2)/2

No Sim

Se Med >= 7.0

Escreva reprovado Escreva aprovado

Fim

Exerccios propostos 2

1) Elabore um fluxograma para ler duas notas, calcular a mdia semestral e informar ao aluno se ele est reprovado, em exame ou aprovado. Considerar a mdia para aprovao direta igual ou superior a 7,0. Para ficar de recuperao (exame), o aluno ter que ter mdia semestral mnima no inferior a 1,67.

2) Elabore um novo fluxograma a partir do desenvolvido para a questo anterior, informando se o aluno est aprovado ou no aps o exame. O aluno dever ter mdia semestral no inferior a 5,0 obedecendo ao seguinte clculo: mdia semestral aps exame = (media semestral antes do exame x 6 + nota do exame x 4)/10. Vide critrios de avaliao da UDESC no semestre 2003.2.

1.2.4. Pseudocdigo

A partir deste ponto, iniciaremos o estudo de algoritmos usando pseudocdigo (portugol). Um modelo de escrita para facilitar o desenvolvimento de algoritmos. O pseudocdigo usado aqui ter uma organizao (sintaxe) praticamente idntica da linguagem C, com as palavras chave traduzidas para o portugus e com algumas simplificaes. Este aspecto original, ou seja, no foi baseado em nenhuma referncia. Preferimos que o algoritmo seja ensinado com a sintaxe semelhante a linguagem C pela facilidade que se obter com este aspecto quando o C for estudado.

O objetivo de apresentar o pseudocdigo, tornar o aluno familiarizado com a lgica de programao, atravs de algoritmos simples, antes de efetivamente comear a programar com a linguagem C. extremamente importante compreender os assuntos aqui abordados pois sero necessrios quando estivermos programando em C. A lgica de programao fundamental para aprender a programar e muito importante para vrias disciplinas de um curso de cincia da computao, portanto, aproveite e estude muito.

1.3. Linhas de Cdigo de um Algoritmo ou Programa

Linhas de cdigo nada mais so do que a escrita do programa linha a linha, ou seja, a sintaxe do programa. Todas as linhas escritas de um programa definem o cdigo de comandos do programa, e, junto ao cdigo pode-se escrever comentrios sobre ele.

1.4. Execuo do Programa

Quando escrevemos um programa, para que ele mostre os efeitos (resultados) do que foi escrito e solicitado atravs das linhas de comando, necessrio que o programa seja executado. Para tanto basta que acionemos um comando para essa execuo comear. Em um algoritmo escrito em portugol ou similar, s possvel a execuo do mesmo a nvel do raciocnio lgico de ns mesmos com o crebro. Um algoritmo ou programa s executvel por uma mquina (computador) se nele tiver um outro programa (compilador) que transforme a linguagem usada no cdigo do programa para a linguagem que o computador entenda. Por isso importante que faamos um bom exerccio mental colocando o crebro para executar algoritmos. Fazendo assim, aprenderemos a lgica de programao e consequentemente aprenderemos a programar.

1.5. Comentrios

Comentrios so anotaes escritas nas proximidades das linhas de cdigo de um algoritmo ou programa, e so usados para explicar melhor alguma parte do cdigo para evitar confuses de entendimento na hora de sua anlise. Para podermos identificar um comentrio no cdigo do programa ou algoritmo usaremos o smbolo /* antes do comentrio e o */ aps terminar o comentrio. Nada do que for especificado como comentrio valer como cdigo de programa, portanto no interferir na execuo.

1.6. Constantes

Entendemos que uma informao constante quando no sofre nenhuma variao no decorrer do tempo na execuo do programa. Exemplo: Pi=3,141516. De fato, se o valor da constante Pi for utilizada em um programa, esta no deve ser modificada, portanto deve ser tratada como constante.

1.7. Variveis

Tem-se como definio de varivel toda informao que sujeita a variaes durante a execuo do programa ou algoritmo. No programa so requisitados espaos de memria que so alocados para armazenar o valor inicial da varivel e os demais valores que ela assumir at o fim da execuo do programa. Imagine que a memria de um computador um grande armrio com diversas gavetas, onde cada gaveta pode conter somente um valor. Deve-se concordar que necessrio identificar cada gaveta para sua utilizao posterior, atravs de um nome.

1.7.1. Nomes de variveis

O nome de uma varivel faz referncia ao endereo de memria onde essa varivel se encontra.

Existem algumas regras para a utilizao das variveis:

Nome de varivel pode ter 1 ou mais caracteres.

O primeiro caractere de uma varivel deve ser uma letra ou sublinhado ( _ ).

Nenhuma varivel pode ter espao em branco em seu nome.

Nenhum nome de varivel pode ser uma palavra reservada a uma instruo da linguagem usada.

Podero ser utilizados somente letras, nmeros e sublinhado;

Procure sempre utilizar variveis que tenham sentido Mnemnico.

1.7.2. Tipos de Dados Definidos Para as Variveis

Para definir uma varivel necessrio dar um nome para ela e definir o tipo de informao que ela ir guardar. Esse tipo pode ser um valor numrico inteiro, um valor real ou um caracter ou conjunto de caracter (string).

Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros. Exemplos: a) 100 b) 9 c) 318 d) 5900

Real: toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais. Exemplos: a) 100.99 b) 0.001 c) 1.5 d) 8.5056

Caractere: So caracterizadas com as seqncias contendo letras, nmeros e smbolos especiais, ou seja, qualquer smbolo existente um caracter. Uma seqncia de caracteres deve ser indicada entre aspas dupla (aqui 24), tambm denominada String. Um caracter deve ser colocado entre aspas simples (A). Exemplos: a) oi mundo! b) no pise na grama c) 1 d) a e)

1.7.3. Declarao de Variveis

Um programa, em muitas vezes, precisa utilizar variveis e constantes. Uma constante ser definida no cabealho do programa e, normalmente, no mudar seu valor durante o processamento/execuo do programa. As variveis podem ter o seu valor alterado durante a execuo do programa. As constantes, para o caso dos algoritmos que vamos construir sero definidas com letras maisculas. As variveis tero que ser declaradas logo no incio de cada programa.

As variveis devem ser declaradas antes de serem usadas e no local adequado para seu funcionamento. Uma declarao especifica um tipo, e pode ser seguida por uma ou mais variveis daquele tipo, separadas por virgulas. O fim da declarao indicada por ponto e vrgula.

Sintaxe:

tipo lista_de_nomes;

Exemplos:

inteiro dia, ms;

caracter sexo, escolha;

caracter nome[80], dia_semana[10];

real nota1, nota2, media;

Ao declarar variveis do tipo caracter com mais de um caracter, ou outro tipo com o objetivo de guardar mais de um valor, deve-se definir o seu tamanho entre colchetes, logo aps o nome da varivel, como no exemplo acima. Abaixo mostra-se um pequeno programa exemplo.

MAX = 80

NOME = Maria

Programa principal

Incio

Inteiro idade, ano, mes, dia;

Real media, notoa1, nota2;

Caracter sexo;

Caracter nome[80];

media = (nota1 + nota2)/2;

Fim

No pequeno programa acima, nota-se que MAX e NOME so constantes. As variveis declaradas so: idade, ano, mes e dia como inteiro; media, nota1, nota2 como real; sexo como caracter de uma letra e nome como caracter de oitenta (80) letras. Observem a posio em que cada uma escrita no programa. As constantes so definidas antes do incio do programa principal. As variveis so declaradas logo aps o incio do programa principal.

Exerccios propostos

1) Determine qual o tipo primitivo de informao presente nas sentenas abaixo:

a) A placa Pare! tinha dois furos de bala.

b) Josefina subiu 5 degraus para pegar uma ma boa.

c) Alberta levou 3 horas e meia para chegar ao hospital onde concebeu uma garota.

d) Felisberto recebeu sua 18 medalha por ter alcanado a marca de 57,3 segundos nos 100

metros rasos.

e) melhor seguir pela Rua A .

2a) Assinale os identificadores de tipos vlidos:

a) X

b) U2

c) Ah!

d) aluno

e) 55

f) km/l

g) UYT

h) Asdrubal

i) AB*C

j) 2.43

k) P{O}

l) B25

2b) Assinale os identificadores de variveis vlidas:

m) X

n) U2

o) Ah!

p) aluno

q) 55

r) km/l

s) UYT

t) Asdrubal

u) AB*C

v) 2.43

w) P{O}

x) B25

3) Suponha que as variveis NB, NA, NMat, SX sejam utilizadas para armazenar, respectivamente, a nota do aluno, o nome do aluno, um nmero inteiro para a matrcula e o sexo com uma letra, declare-as corretamente.

4) Encontre os erros ou inadequao em relao a mnemnicos nas seguintes declaraes de variveis:

a) inteiro endereo, nFilhos; b) caractere ida de, 1x; c) real cruzeiros, 9xpto, c, peso, out;

5) Se uma varivel armazenar nomes com o mximo de 90 letras, declare uma varivel para guardar um nome qualquer.

6) Defina uma constante e declare uma varivel para receber o valor da diviso da constante PI (3.141516) por 10.

7) Explique os termos: a) Algoritmos b) Cdigo c) Programa d) Varivel e) Constante

f) Comentrios g) Memria h) Execuo i) Compilao j) Tipos

1.8. Estrutura do algoritmo

Os algoritmos sero estruturados da seguinte maneira:

definio de constantes

/*Definio das funes para tarefas especficas*/

Nome_funo_1(lista de declaraes)

{

declaraes de variveis;

comandos;

.

.

.

retorno(valor);

}

.

.

.

Nome_funo_n(lista de declaraes)

{

declaraes de variveis;

comandos;

.

.

.

retorno(valor);

}

Programa principal( )

{

declarao de variveis;

comandos, inclusive as chamadas para funes, etc;

}

Onde o abrir chaves e o fechar chaves delimitam respectivamente onde o algoritmo comea e onde este termina. Nas declaraes sero definidos os nomes e os tipos das variveis usadas, no algoritmo. O corpo do programa conter todas as instrues que devero ser executadas. O nmero de mdulos (funes) do programa depender do programador. recomendvel para a portabilidade, clareza de cdigo e manuteno do algoritmo que os programas sejam feitos em mdulos e com endentao.

1.9. Operadores aritmticos

Os operadores so um conjunto de smbolos que indicam uma determinada operao a ser feita pelo programa.

OperadorSignificado

+Adio

-Subtrao

*Multiplicao

/Diviso

%Resto de diviso inteira

1.10. Operadores relacionais

Utilizamos os operadores relacionais para realizar comparaes entre dois valores de mesmo tipo. Tais valores so representados por constantes, variveis ou expresses aritmticas. Os operadores relacionais so:

OperadorSignificado

= =Igual a

!=, , Diferente de

>Maior que

>=, maior ou igual a

= 7)

escreva(aluno aprovado);

seno

escreva(aluno reprovado);

cont = cont + 1; /* aumenta em um o nmero de alunos que j tiveram a mdia calculada*/

}

}

1.18.2. Repetio com teste no final

Nesta estrutura de repetio, os seus comandos so executados antes de acontecer o teste, sendo o resultado do teste verdadeiro o bloco de comandos da estrutura ser executado novamente.

Sintaxe:

faa

{

comando_1;

comando_2;

comando_n;

}

enquanto (condio);

O bloco de comandos executado, ento, se a condio for verdadeira, o bloco executado novamente, at que a condio seja falsa.

Exemplo:

/* programa para calcular a mdia anual de uma turma de 50 alunos */

Programa principal ( )

{

real ma, /* mdia anual de um aluno */

acm, /* acumulador */

mat; /* mdia anual da turma */

inteiro cont; /* contador */

cont = 1;

acm = 0;

faa {

escreva(entre com a mdia anual do aluno: );

leia(ma);

/* acumula as mdias dos alunos */

acm = acm + ma;

/* conta para o prximo aluno */

cont = cont + 1;

} enquanto (con