Você está na página 1de 33

Universidade Paulista - Unip

2011

Programao de computadores

Introduo Um computador simplesmente uma mquina que executa ordens. Assim, para que ele apresente a soluo de um problema, necessrio que execute um programa, o qual far com que se obtenha a soluo. Como uma definio preliminar, pode-se dizer que programar um computador consiste na elaborao de uma sequncia de instrues, de forma que, ao ser executada, o computador obtenha a soluo de um determinado problema. Esta sequncia de instrues chamada de algoritmo. Por exemplo, deseja-se calcular a mdia das duas notas obtida por um aluno do curso de Engenharia em uma determinada disciplina. Sabemos que para este clculo, basta somarmos as notas e dividirmos o resultado por dois. Mas como deveramos proceder ao recorrer programao? Neste caso precisamos montar um algoritmo que acesse as duas notas do aluno. Estes valores (a primeira e a segunda nota) so denominados de Entradas. A mdia calculada ser o resultado deste problema e apresentado ao usurio, a Sada. Assim, para cada problema considerado, temos os valores que acessaremos e os resultados apresentados, ou seja, as entradas e as sadas. Para que o computador calcule a mdia das notas deste aluno, este precisa primeiro acessar estas notas. Mas como este processo se realiza? Primeiramente, entenda o computador como uma mquina que saiba:  Ler;  Escrever;  Efetuar operaes aritmticas bsicas: adio, subtrao, multiplicao e diviso. Portando, para resolvermos o nosso problema de clculo da mdia do aluno, utilizaremos exatamente estas funes bsicas:
inicio leia leia NOTA_1 NOTA_2

MEDIA <- (NOTA_1 + NOTA_2)/2 escreva fim MEDIA

Observe que o exemplo acima tem um inicio e um fim. Estes comandos indicam, respectivamente, o incio e o fim do corpo lgico do algoritmo, onde estaro contidos todos os comandos executados pelo computador.

A execuo da instruo:
leia NOTA_1

faz com que o computador fique aguardando at o usurio digite um valor. Este valor digitado ento lido pelo computador e armazenado na posio de memria denominada NOTA_1. O mesmo processo ocorre quando a instruo
leia NOTA_2

executada. A instruo:
MEDIA <- (NOTA_1 + NOTA_2)/2

faz com que o computador copie os valores contidos nas posies de memria NOTA_1 e NOTA_2, some-as e divida o resultado por 2. O resultado final deve ser armazenado na posio de memria MEDIA, conforme determina a instruo. Observe que nesta instruo utilizamos os caracteres + e / para representar as operaes adio e diviso, respectivamente. J o smbolo <- usado para indicar que o resultado da expresso direita deve ser armazenado na posio de memria especificada esquerda, ou seja, na posio de memria MEDIA. Com a execuo da instruo:
escreva MEDIA

o valor armazenado na posio de memria MEDIA ser copiado e mostrado na tela.

Tipos de dados Um algoritmo pode manipular vrios tipos de dados. Estes dados podem ser os valores apresentados pelo problema, os valores gerados durante a execuo do algoritmo ou mesmo os valores que representam a soluo do problema. Por exemplo:
Ficha de inscrio Nome: Joo Carneiro Idade: 22 Salrio (R$): 1200.00 Sexo: M

Neste caso, vrios tipos de informaes so utilizados. Note que Joo Carneiro (o nome do indivduo) uma informao diferente de 22 (a idade deste indivduo).

Programao de computadores

Assim como, M (o sexo do indivduo) uma informao diferente de 1200.00 (o salrio deste indivduo). Portanto podemos concluir que informaes manipuladas dentro de um algoritmo podem ser classificadas em vrios tipos de dados. So eles:  Inteiro: toda informao numrica que pertena ao conjunto dos nmeros inteiros (negativo, nulo ou positivo). Por exemplo, idade, nmero de filhos por casal, nmero de alunos na sala de aula, nmero de pginas de um livro, etc.  Real: toda informao numrica que pertena ao conjunto dos nmeros reais (valores que podem ser fracionados, sendo negativos, nulos ou positivos). Por exemplo, salrio, altura, a mdia das notas dos alunos de uma sala de aula, etc. Vamos assumir que tais dados sero sempre representados utilizando-se o ponto decimal (3.6, -1.2, 1200.00).  Caractere: toda informao que possui somente um caractere alfanumrico, ou seja, pode ser composto de um nmero (0, ..., 9) ou de uma letra (a, b, ...., z). Um dado tipo caractere tambm pode armazenar caracteres especiais, tais como #, @, $, %, ?, entre outros. Vamos assumir que tais dados devem ser sempre apresentados entre aspas (M, F, $, 10, ).  Literal: toda informao composta por um conjunto de caracteres alfanumricos e/ou especiais. Vamos assumir, novamente, que tais dados devem ser sempre apresentados entre aspas (Joo Carneiro, Rua Arajo Leite 13-35).  Lgico: toda informao que assume apenas dois valores: verdadeiro e falso. So utilizados na representao do valor de uma expresso lgica ou um sentena, tais como 4<7 (verdadeiro) ou o Sol gira em torno da Terra (falso).

 Exerccios: 1. Indique com um X quais dos tipos de dados abaixo do tipo Inteiro. ( ) 1000 ( ) 0 ( ) -90 ( ) verdadeiro ( ) -436 ( ) 34 ( ) casa 8 ( ) 0 ( ) -1.56

2. Indique com um X quais dos tipos de dados abaixo do tipo Real. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso

3. Indique com um X quais dos tipos de dados abaixo do tipo Literal. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso

4. Indique com um X quais dos tipos de dados abaixo do tipo Lgico. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso

Programao de computadores

Variveis Uma posio de memria sempre armazena um determinado valor. Se outro valor for atribudo posio, ento o valor anterior ser descartado. Assim o contedo de uma posio de memria pode variar durante a execuo de um algoritmo. Por isso denominamos esta posio de memria de varivel. Cada linguagem de programao tem suas prprias regras para formao do nome de uma varivel. Vamos assumir aqui as regras da linguagem C:  O nome de uma varivel pode ser composto por letras, nmeros e o caractere sublinhado ( _ ), sendo que o primeiro caractere deve ser sempre uma letra ou o _.  Nunca use espao em branco, acentos ou caracteres especiais nos nomes das variveis.  Na linguagem C, letras maisculas e minsculas so tratadas como diferentes. Assim, cont, Cont e CONT so trs variveis distintas nesta linguagem. Cada varivel utilizada em um algoritmo dever ser declarada (definida) de um determinado tipo, de acordo com o tipo de dado que ir armazenar. Desta forma, uma varivel definida como sendo do tipo inteiro s poder receber dados do tipo inteiro. Faremos da seguinte maneira:
<nome_da_varivel> : <tipo_da_varivel>

como, por exemplo:


NOME IDADE SEXO : literal : inteiro : caractere

SALARIO : real

 Exerccios: 1. Assinale com um X os nomes vlidos para uma varivel. ( ) ENDEREO ( ) 21BRASIL ( ) FONE$COM ( ) NOMEUSURIO ( ) NOME_USURIO ( ) NOME*USUARIO ( ) END*A-6 ( ) CIDADE3 ( ) #CABEC

Comando de atribuio A atribuio uma notao utilizada para atribuir um valor a uma varivel, ou seja, para armazenar um determinado contedo em uma varivel. , normalmente, representada por uma seta apontando para a esquerda (<-). Existem outros smbolos para representar a atribuio, dependendo da linguagem de programao. Na tabela a seguir, so apresentados alguns exemplos de atribuies possveis: Atribuies possveis
<varivel> <- <constante> <varivel> <- <varivel> <varivel> <- <expresso>

Exemplo
NOTA_1 <- 5 NOTA_1 <- NOTA_2 MEDIA <- (NOTA_1 + NOTA_2)/2

Operadores aritmticos Utilizamos os operadores aritmticos para o clculo de expresses matemticas. So eles: Operador + * / div mod ** Significado Adio Subtrao Multiplicao Diviso real Diviso inteira Resto da diviso inteira Exponenciao Exemplo A + B A B A * B A / B A div B A mod B A ** B Tipo de dados Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Inteiros Inteiros Reais e/ou inteiros

Vejamos o exemplo a seguir:


programa Exemplo variaveis A, B, D, SOBRA C, F : real inicio A <- 22 B <- 4 C <- A/B // // // // este comando faz a diviso real do contedo da varivel A pelo contedo da varivel B. A varivel C armazena o resultado desta diviso, ou seja, 5.5 // armazena o valor 22 na varivel A : inteiro

Programao de computadores

D <- A div B

// // // //

este comando faz a diviso inteira do contedo da varivel A pelo contedo da varivel B. A varivel D armazena ento o valor 5. este comando apresenta o resto da diviso inteira do contedo da varivel A pelo contedo da varivel B. A v arivel sobra armazena ento o valor 2.

SOBRA <-A mod B

// // // // // // // // //

F <- 2.0 ** B

este comando eleva o valor 2.0 potncia do valor armazenado pela varivel B. A varivel f armazena ento o valor 16.0

fim

Expresses matemticas e frmulas Dentro de uma expresso numrica podem aparecer vrios operadores aritmticos. As operaes sero executadas de acordo com a seguinte ordem: 1 2 3 4 o que estiver entre parnteses; exponenciao; multiplicao, diviso real, diviso inteira ou resto da diviso inteira; adio ou subtrao.

Quando aparecem duas ou mais operaes de mesma hierarquia, estas so executadas na ordem em que aparecem na expresso, da esquerda para a direita. Por exemplo, considere a expresso: 2a  3 3  c  2. 4b O comando para calcular esta expresso :

2 * a  3 4  b  c * *3  2.
Neste caso, no clculo do valor desta expresso, de acordo com a hierarquia, as operaes sero executadas na seguinte ordem: 1 2 2*a (2 * a + 3)

10

3 4 5 6 7

(4 b) c ** 3 diviso do resultado de 2 com o resultado de 3 adio do resultado de 5 com o resultado de 4 subtrao do resultado de 6 com 2

 Exerccios: 1. Quais os valores das expresses a seguir: a. 2 + 3 * 6 b. 12 / 3 * 2 5

c. 31 div 4 d. 31 mod 4

2. Em cada linha do algoritmo abaixo, fornea os valores armazenados em cada uma das variveis aps a execuo de cada comando.
programa Exercicio_2 variaveis X <- C div 4 A, B : real C <- C mod 2 C, X : inteiro B <- 5.4 inicio C <- C + 1 A <- 6.0 A <- B + 2 B <- A/2 fim C <- 11

3. Considere o seguinte trecho de algoritmo:


programa Exercicio_3 variaveis VALOR_A, X : real PIG, VARI, TOTAL, A, I inicio VARI <- 2 TOTAL <- 10 VALOR_A <- 7.0 A <- -4 I <- 80 X <- 4.0 : inteiro

Programao de computadores

11

Diga quais os valores armazenados em cada uma das variveis aps a execuo de cada um dos comandos a seguir:
X <- TOTAL / VARI X <- X + 1 A <- A + I PIG <- 10 A <- I div pig A <- A + I mod 6 VALOR_A <- PIG * VALOR_A + X

4. Considerando a, b, c e d como variveis, escreva os comandos para calcular o valor de x das frmulas a seguir. Use a diviso real. b  b  b 3  4ac  2a 2  4a b. x ! 2a a. x ! a  c d  2a b  1 2 3 c

5. Diga qual o valor armazenado em cada varivel aps a execuo de cada um dos comandos do algoritmo a seguir:
programa Exercicio_5 variaveis EX inicio Q <- 10 Q <- Q + 30 W <- -1 W <- W + Q Q <- Q mod W Q <- W div (Q + 40) EX <- 2 * Q / W R <- 0 R <- R + 1 R <- R + 1 fim : real : inteiro Q, W, R

12

Operadores relacionais Expressam operaes de relao. Avaliam o relacionamento entre duas expresses e retornam o resultado 1 se verdadeiro ou 0 se falso. So eles: Operador > >= < <= = <> Significado Maior que Maior ou igual a Menor que Menor ou igual a Igual a Diferente de Exemplo Idade > 18 x >= 2 Nota < 7 Y <= 10 Nome = Joo Carneiro Sexo <> F

Operadores lgicos Expressam operaes lgicas. Usados normalmente com expresses que retornam verdadeiro ou falso (1 ou 0), para fins de testes em declaraes condicionais. Operador e ou no Significado Conjuno Disjuno Negao Exemplo (A = B) e (B = C) (A = B) ou (B = C) no A

Considere, por exemplo, duas sentenas A e B. Vejamos quais so os valores retornados ao usarmos estes operadores lgicos: A Verdadeiro Verdadeiro Falso Falso B Verdadeiro Falso Verdadeiro Falso AeB Verdadeiro Falso Falso Falso A ou B Verdadeiro Verdadeiro Verdadeiro Falso no A Falso Falso Verdadeiro Verdadeiro

 Exerccios: 1. Considerando o contedo das variveis abaixo, diga qual o valor lgico de cada uma das expresses a seguir: NOME APELIDO QQUER AUX RESP K KAROL ANA flor ana 10 FALSO 3 2 a. b. c. d.
NOME = APELIDO (NOME = QQUER) e (NOME <> ANa) NOME = NOME (K >= KAROL + 1) ou (QQUER = ana)

Programao de computadores

13

e. no RESP f. (no RESP) e (K < AUX) g. (AUX <= AUX / K + K) flor)) h. K > KAROL + (K KAROL)
i.

((RESP)

ou

(APELIDO

((no RESP e RESP) ou (no RESP)) e (RESP ou (no RESP))

2. Determine os resultados obtidos na avaliao das expresses lgicas seguintes, sabendo que A, B, C, D e E contm respectivamente 2, 7, 3.5, noite e frio e que existe uma varivel lgica L cujo valor falso. a. (B = A * C) e L ou verdadeiro b. (dia= D) ou (E = frio) c. L e (B div A >= C) ou no(A <= C)

14

Algoritmo. Diagramas de blocos e fluxogramas Um diagrama de blocos, tambm denominado fluxograma, estabelece a sequncia de operaes a se efetuar em um programa. Facilita na preparao de um programa, pois demonstra a linha de raciocnio lgico do programador. Esta tcnica permite uma posterior codificao, praticamente em qualquer linguagem de programao, pois na elaborao do fluxograma no se atinge um detalhamento de instrues ou comandos especficos, os quais caracterizam uma linguagem. Como um primeiro exemplo, vamos considerar novamente o problema de uma escola qualquer no qual o clculo da mdia semestral realizado por duas notas bimestrais que determinam a aprovao ou reprovao de seus alunos no semestre. Para que haja a aprovao destes alunos, suas mdias devem ser maiores ou iguais a sete. O algoritmo bsico que resolve este problema : calcular a mdia das duas notas e determinar a aprovao. O diagrama abaixo representa este algoritmo.
Incio

Calcular a mdia das 2 notas e determinar a aprovao

Fim

A segunda etapa apresenta um detalhamento no que se refere entrada e sada de dados, ou seja, 1 2 3 Acessar as duas notas bimestrais; Efetuar o clculo da mdia; Determinar a aprovao e apresent-la.

Este algoritmo est representado nos diagramas de blocos a seguir:

Programao de computadores

15

Incio

Entrada das 2 notas

Calcular a mdia e determinar a aprovao

Apresentar se houver ou no aprovao

Fim

A terceira etapa consiste em trabalhar o termo determinar a aprovao. Para ser possvel determinar algo necessrio estabelecer uma condio. Assim sendo, uma condio envolve uma deciso a ser tomada segundo um determinado resultado, neste caso, a mdia. Desta forma, a condio de aprovao (mdia maior ou igual a sete) deve ser considerada no algoritmo: 1 2 3 Acessar as duas notas bimestrais; Efetuar o clculo da mdia; Se a mdia for maior ou igual a sete, apresente a aprovao. Caso contrrio, apresente a reprovao.

Este algoritmo est representado nos diagramas de blocos abaixo:


Incio Incio

Duas representaes do mesmo problema

Entrada das 2 notas

Entrada das 2 notas

Calcular a mdia

Calcular a mdia

Mdia >= 7

V
APROVADO

F
REPROVADO Fim

Mdia >= 7

F
REPROVADO

APROVADO

Fim

Fim

16

Muitas vezes prefervel construir o fluxograma trabalhando com as variveis que sero utilizadas.
Incio

Duas representaes do mesmo problema

Incio

N1, N2

N1, N2

Mn

N1  N 2 2

Mn

N1  N 2 2

M >= 7

V
APROVADO

F
REPROVADO Fim

M >= 7

F
REPROVADO

APROVADO

Fim

Fim

Nos fluxogramas acima alguns smbolos geomtricos foram utilizados. Cada smbolo tem um significado: Terminal smbolo usado como ponto para indicar o incio e/ou fim do fluxo de um programa. Seta de fluxo de dados permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os smbolos ou blocos existentes. Processamento smbolo que se utiliza para indicar clculos (algoritmos) a efetuar, atribuies de valores ou qualquer manipulao de dados que tenha um bloco especfico para sua descrio. Entrada de dados utilizado para ler os dados necessrios ao programa fora de linha sem interveno de dispositivos mecnicos. Entrada e sada de dados smbolo em funo de um dispositivo qualquer de entrada ou sada de dados, como fornecedor de informaes para processamento, gravao e outros. Deciso indica a deciso que deve ser tomada, indicando a possibilidade de desvios para diversos outros pontos do fluxo, dependendo do resultado de comparao e de acordo com situaes variveis.

Programao de computadores

17

Preparao refere a um determinado grupo de operaes no includas na diagramao, bom como na elaborao de uma chave que modificar a execuo de um determinado programa. Conector utilizado quando preciso particionar o diagrama. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao. Conector fora de pgina utilizado quando preciso particionar o diagrama em mais de uma pgina. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao.

Algoritmo em portugus estruturado O fluxograma (diagrama de bloco) a primeira forma de notao grfica. Mas existe outra, a qual uma tcnica narrativa denominada pseudocdigo, tambm conhecida como portugus estruturado. Esta tcnica baseia-se em uma linguagem de projeto de programao que tem como finalidade mostrar uma notao para elaborao de algoritmos os quais sero utilizados na definio, criao e desenvolvimento de uma linguagem computacional e sua documentao. Abaixo, apresentado o exemplo anterior neste tipo de estrutura.
programa Media variaveis N1, N2, MEDIA RESULTADO inicio leia N1, N2 MEDIA <- (N1 + N2)/2 se (MEDIA >= 7) ento RESULTADO <- APROVADO seno RESULTADO <- REPROVADO fim_se : real

: literal

18

escreva Nota 1: , N1 escreva Nota 2: , N2 escreva Mdia: , MEDIA escreva Resultado: , RESULTADO fim

Obs.: o fluxograma (diagrama de blocos) e o pseudocdigo (portugus estruturado) so duas tcnicas importantes para a documentao da soluo de um problema computacional.

 Exerccios: Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos seguintes exerccios: 1. Para ler dois valores reais do teclado, calcular e imprimir na tela: a. A soma destes valores. b. O produto deles. c. O quociente entre eles. 2. Desenvolver a lgica de um programa que efetue o clculo da rea de uma circunferncia e apresente este resultado. 3. Ler uma temperatura em graus Centgrados e apresent-la convertida em graus 9C  160 , sendo F a temperatura em Fahrenheit (a frmula de converso F ! 5 Fahrenheit e C a temperatura em Centgrados). 4. Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: vol ! T r 2 h , Sendo, vol o volume, r o raio e h a altura da lata. 5. Uma pessoa comprou dois artigos em uma loja. Para cada artigo, tem nome, -se preo e percentual de desconto. Faa um algoritmo que imprima nome, preo e preo com desconto de cada artigo. Imprima tambm o total a pagar. 6. Suponha que voc foi ao supermercado e comprou: N quilos de caf, cujo custo unitrio Q; L litros de leite, cujo custo unitrio P; B quilos de banana, cujo custo unitrio T.

Programao de computadores

19

Faa um algoritmo que imprima: nome do produto, total gasto com cada produto e o total gasto no mercado. 7. Escreva um algoritmo que determine o nmero de dias que uma pessoa j viveu, a partir dos anos, meses e dias fornecidos pelo usurio. Considere que um ms tenha 30 dias. 8. Ler dois valores para as variveis A e B, efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o valor da varivel A. Apresentar os valores trocados. 9. Ler dois nmeros inteiros, x e y, e imprimir o quociente e o resto da diviso inteira entre eles. 10. Calcular a quantidade de dinheiro gasta por um fumante. Dados: o nmero de anos que ele fuma, o n de cigarros fumados por dia e o preo de uma carteira. 11. Construa um algoritmo que calcula a quantidade de litros de combustvel gastos em uma viagem utilizando-se um automvel que faz 12 Km por litro. Para realizar esse clculo, o usurio dever fornecer o tempo gasto da viagem e a velocidade mdia durante a mesma. O algoritmo dever apresentar como resultado os valores da velocidade mdia, o tempo gasto na viagem, a distncia percorrida e a quantidade de litros utilizada nesta viagem.

20

Desvios condicionais  Desvio condicional simples (comando if) Para solucionar alguns problemas propostos ser necessrio trabalhar uma nova instruo, o desvio condicional simples: se...ento...fim_se. Esta instruo tem por finalidade tomar uma deciso. Se a condio for verdadeira, as instrues existentes entre o comando se...ento e o comando fim_se sero executadas. Caso contrrio, ou seja, se a condio for falsa, estas instrues sero desconsideradas. A estrutura do desvio condicional simples (se...ento...fim_se) em diagrama de blocos e em portugus estruturado apresentado a seguir:
F V
Instrues executadas quando condio verdadeira

Condio

se <condio> ento <instruo para condio verdadeira> fim_se <instruo para condio falsa ou aps ser verdadeira>

Instrues executadas quando a condio for falsa ou aps ser verdadeira

Como exemplo, considere o seguinte problema: Ler dois valores numricos, efetuar a adio e apresentar seu resultado caso o valor somado seja maior que 10. O algoritmo para resolver este problema : 1 2 3 Conhecer os dois valores numricos, que podem ser denominados A e B; Efetuar a soma dos valores numricos A e B, obtendo o valor da soma X; Apresentar o valor da soma contido na varivel X, caso X > 10.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

programa Soma_numeros
A, B

variaveis A, B, X : real inicio leia A, B X <- A + B se (X > 10) ento


X

X <- A + B

X >10

escreva X fim_se fim

Fim

Programao de computadores

21

 Desvio condicional composto (comando if them else) Novamente, para solucionar alguns problemas propostos ser necessrio trabalhar outra instruo, o desvio condicional composto: se...ento... seno...fim_se. Nesta instruo, se a condio for verdadeira, as instrues existentes entre o comando se...ento e o comando seno sero executadas. Caso contrrio, ou seja, se a condio for falsa, sero executadas as instrues existentes entre o comando seno e o comando fim_se.
se <condio> ento

Condio

V
seno

<instruo para condio verdadeira>

Instrues executadas quando condio falsa

Instrues executadas quando condio verdadeira

<instruo para con dio falsa> fim_se

Como exemplo, considere o seguinte problema: Ler dois valores numricos, efetuar a adio. Caso o valor somado seja maior ou igual a 10, este dever ser apresentado somando-se a ele o valor 5. Caso contrrio, o valor somado deve ser apresentado subtrado do valor 7. Os passos para resolver este problema so: 1 2 3 Conhecer os dois valores numricos, que podem ser denominados A e B; Efetuar a soma dos valores numricos A e B, obtendo o valor da soma X; Verificar se X maior ou igual a 10. Caso sim, mostrar X + 5. Caso no, apresentar X - 7.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

programa Teste_soma_numeros variaveis A, B, X inicio : real

A, B

X <- A + B

leia A, B X <- A + B

F
X-7

X >=10

V
X+5

se (X >= 10) ento escreva (X + 5) seno escreva (X 7) fim_se fim

Fim

22

 Estrutura de controle com mltipla escolha (comando caso fim_caso) Quando houver a necessidade de se construir um programa em que seja necessrio utilizar uma sequncia grande de instrues do tipo se, seja esta uma aps a outra ou mesmo encadeadas, poder ser simplificada com a utilizao da instruo: caso...fim_caso.

VAR = VLR1

Instrues 1

caso <varivel>
VAR = VLR2

seja <valor 1> faa <instrues 1>


Instrues 2

seja <valor 2> faa <instrues 2> ... seja <valor n> faa <instrues n>
VAR = VLR n

Instrues n

seno <instrues > fim_caso

F
Instrues

Como exemplo, considere o seguinte problema: 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. Os passos para resolver este problema so: 1 Apresentar um menu de seleo com cinco opes: 1 Adio 2 Subtrao 3 Multiplicao 4 Diviso Ao ser selecionado um valor, a rotina da operao solicitada dever ser executada, Ler dois valores; Efetuar a operao escolhida com os valores lidos no item 3; Apresentar o resultado da operao, obtido no item 4; Finalizar o programa.

correspondendo aos passos 4 e 5; 3 4 5 6

Programao de computadores

23

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


programa Calculadora variaveis A, B, R OP inicio escreva 1 Adio escreva 2 Subtrao escreva 3 Multiplicao escreva 4 Diviso escreva Escolha uma opo: leia OP escreva Digite o primeiro valor: leia A
Inicio

: real

: caractere

escreva Digite o segundo valor: leia B caso OP

Menu: 1 Adio 2 Subtrao 3 Multiplicao 4 Diviso

seja 1 ento R <- A + B escreva R seja 2 ento R <- A - B

OP

escreva R seja 3 ento R <- A * B escreva R seja 4 ento


R

A, B

OP = 1

R <- A + B

R <- A / B escreva R seno escreva Opo invlida fim_caso fim

F
OP = 2

R <- A - B

F
OP = 3

R <- A * B

F
OP = 4

R <- A / B

F
Opo invlida

Fim

24

 Exerccios: 1. Indique a sada dos trechos de programa em portugus estruturado mostrado abaixo. Para as entradas, considere os seguintes valores: A = 2, B = 3, C = 5 e D = 9. a. Resposta: b. Resposta:
se no(D > 5) ento X <- (A + B )* D seno X <- (A - B )/ C fim_se escreva X fim_se escreva X seno X <- (A + B)/ D * (C + D) se (A > 2) e (B < 7) ento X <- (A + 2 )* (B - 2)

c. Resposta:
se (A > 2) ou no(B < 7) ento X <- A + B - 2 seno X <- A - B fim_se escreva X

2. Efetuar os algoritmos, diagramas de blocos e codificao em portugus estruturado dos seguintes problemas: a. Ler 3 nmeros reais do teclado e verificar se o primeiro maior que a soma dos outros dois. b. Ler dois valores numricos e apresentar a diferena do maior pelo menor. c. Efetuar a leitura de um valor inteiro positivo ou negativo e apresentar o nmero lido como sendo um valor positivo, ou seja, o programa dever apresentar o mdulo de um nmero fornecido. d. Ler quatro valores referentes a quatro notas esco lares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado se o valor da mdia escolar for maior ou igual a cinco. Se o aluno no foi aprovado, indicar uma mensagem informando esta condio. Apresentar junto das mensagens o valor da mdia do aluno para qualquer condio. e. Ler 4 nmeros inteiros e calcular a soma dos que forem par.

Programao de computadores

25

f. Efetuar a leitura de trs valores (variveis A, B e C) e efetuar o clculo da equao de segundo grau, apresentado as duas razes, se para os valores informados for possvel efetuar o referido clculo. g. Efetuar a leitura de trs valores (variveis A, B e C) e apresent-los em ordem crescente. h. Ler trs valores do teclado e dizer se eles formam um tringulo. Caso afirmativo, dizer seu tipo (equiltero, issceles ou escaleno). i. Construa um algoritmo que leia o salrio de 3 pessoas, escreva o maior valor e a diferena percentual para o menor valor. j. Crie um algoritmo que determine se um ponto (X,Y) est dentro de um crculo ou no. Para tanto o programa dever ler os seguintes dados de teclado:  coordenadas do centro do crculo;  raio do crculo;  ponto a ser testado. O programa dever imprimir na tela mensagens perguntado ao usurio os dados necessrios e a seguir permitir que este os digite.

26

Estruturas de repetio Existem situaes em que, para se obter a soluo do problema, necessrio fazer com que um grupo de instrues seja executado vrias vezes. As estruturas de repetio caracterizam-se por efetuar um teste lgico no incio ou no final de um conjunto de instrues, verificando se permitido executar ou re-executar este trecho de instrues subordinado a este looping.  Comando enquanto (while) A estrutura em questo possui a estrutura enquanto...faa...fim_enquanto. Esta estrutura tem seu funcionamento controlado por deciso. Sendo assim poder executar um determinado conjunto de instrues enquanto a condio verificada for verdadeira. No momento em que a condio se tornar falsa, o processamento da rotina desviado para fora do looping. Se a condio for falsa logo no incio, as instrues contidas no looping so ignoradas.

Condio

enquanto <condio> faa <instruo para condio verdadeira> fim_enquanto

S
Instrues executadas enquanto condio verdadeira

Como um primeiro exemplo, considere o problema: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. Observe que, neste problema, um trecho do programa ser executado cinco vezes. Assim, o programa deve controlar o nmero de vezes que a rotina desejada dever ser executada. Para tanto, dever ser utilizado um contador controlado pela instruo enquanto...faa...fim_enquanto. Este contador ser uma varivel inteira definida com valor inicial 1 logo antes de iniciar o looping e somada de uma unidade a cada repetio deste looping. O algoritmo para resolver o problema acima : 1 2 Criar uma varivel para servir como contador com valor inicial 1; Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4, 5 e 6; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R;

3 4

Programao de computadores

27

5 6 7

Apresentar o valor calculado contido na varivel R; Acrescentar 1 varivel do tipo contador, definida no processo 1; Quando o contador for maior que 5, encerrar o processamento do looping.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

programa Loopoing_1
Cont <-1

variaveis CONT : inteiro : real

Cont <=5

F
inicio

X, R

V
X

CONT <- 1 enquanto (CONT <= 5) faa leia X R <- 3*X escreva R
R

R <- 3*X

CONT <- CONT + 1 fim_enquanto

Cont

<- Cont + 1

fim

Fim

Para ilustrar de forma um pouco diferente, imagine que o problema anterior dever ser executado enquanto o usurio queira. Desta forma, em vez de possuir dentro da rotina um contador de vezes, pode-se possuir uma instruo pedindo ao usurio que informe se deseja continuar ou no. Os passos para resolver este novo problema so: 1 2 3 4 5 6 7 Criar uma varivel para ser utilizada como resposta; Enquanto a resposta for sim, processar os passos 3, 4, 5 e 6; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Perguntar se o usurio deseja continuar; Quando a resposta for diferente de sim, encerrar o processo.

28

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

Resp <- sim

programa Loopoing_2 variaveis RESP X, R inicio : literal : real

Resp = sim ou Resp = s

V
X

RESP <- sim enquanto (RESP = sim) ou(RESP=s) faa leia X R <- 3*X escreva R
R

R <- 3*X

escreva Deseja continuar? leia RESP fim_enquanto fim

Deseja continuar?

Resp

Fim

 Comando para (for) Vimos uma forma de elaborar um looping usando a estrutura do comando enquanto para contadores finitos. Porm existe outra possibilidade de facilitar o uso de contadores finitos, sem fazer uso desta estrutura. Os loopings que possuem um nmero finito de execues podero ser processados atravs de instrues para...de...at...passo...faa...fim_para. Esta estrutura tem seu funcionamento controlado por uma varivel contador. Sendo assim, poder executar um determinado conjunto de instrues um determinado nmero de vezes.
Var = incio, fim, incremento

para <varivel> de <incio> at <fim> passo <incremento> faa <instrues >

Instrues

fim_para

Programao de computadores

29

Como exemplo, considere o mesmo problema anterior: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. Os passos para resolver o problema acima so: 1 2 3 4 5 Definir um contador variando de 1 a 5; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Repetir os passos 2, 3 e 4 at que o contador seja encerrado.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

programa Loopoing_3 variaveis CONT X, R inicio para CONT de 1 at 5 passo 1 faa leia X R <- 3*X escreva R fim_para fim : inteiro : real

Cont = 1, 5, 1

R <- 3*X

Fim

 Comando repita (repeat) Caracteriza-se por uma estrutura que efetua um teste lgico no fim de um looping, parecida com a estrutura enquanto. Esta estrutura denominada repita, sendo conseguida com a utilizao do conjunto de instrues repita...at_que. A estrutura em questo tem o seu funcionamento controlado por deciso, porm ir efetuar a execuo de um conjunto de instrues pelo menos uma vez antes de verificar a validade da condio estabelecida.
repita
Instrues

<instrues >

Condio

at_que <condio>

30

Como exemplo, vamos continuar com o problema: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. O algoritmo para resolver este problema : 1 2 3 4 5 6 Criar uma varivel contador; Ler um valor para a varivel X ; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Acrescentar um ao contador; Repetir os passos 2, 3, 4 e 5 at que o contador seja maior que 5.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


programa Loopoing_4
Inicio

variaveis CONT : inteiro : real X, R inicio CONT <- 1 repita leia X R <- 3*X escreva R CONT <- CONT + 1

Cont

<-1

R <- 3*X

Cont <- Cont + 1

F
Cont > 5

V
Fim

at_que (CONT < 5) fim

A seguir apresentado o exemplo em que no se utiliza o contador como forma de controle de execuo de vezes de uma rotina em uma estrutura de repetio. Neste caso, recorreremos novamente vontade do usurio para continuar o processamento. Os passos para resolver este problema so: 1 2 3 4 Criar uma varivel para ser utilizada como resposta; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R;

Programao de computadores

31

5 6

Perguntar se o usurio deseja continuar; Repetir os passos 2, 3, 4 e 5 at que a resposta seja no.

Assim, o diagrama de blocos e a codificao em portugus estruturado ficam da seguinte maneira:


Inicio

programa Loopoing_5
Resp <- sim

variaveis RESP : literal : real X, R inicio RESP <- sim

R <- 3*X

repita leia X R <- 3*X escreva R

Deseja continuar?

escreva Deseja continuar? leia RESP at_que (RESP = no) ou (RESP = n) ou (RESP = nao) fim

Resp

Resp = no ou Resp = n ou Resp = nao

V
Fim

 Exerccios: 1. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos problemas abaixo. Usar na resoluo dos problemas a estrutura de repetio do tipo enquanto. a. Apresentar os resultados de uma tabuada de um nmero qualquer. Esta dever ser impressa no seguinte formato (considerando como exemplo o nmero 2): 2x1=2 2x2=4 2x3=6

32

2x4=8 (...) 2 x 10 = 20 b. Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1 + 2 + 3 + 4 + 5 + ... + 97 + 98 + 99 + 100). c. Apresentar todos os valores numricos inteiros mpares situados na faixa de 0 a 20. d. Apresentar as potncias de 3 variando de 0 a 15. Deve ser considerado que qualquer nmero elevado a zero 1, e elevado a um ele prprio. Dever ser apresentado observando a seguinte definio: 30 = 1 31 = 3 32 = 9 33 = 27 (...) 315 = 14348907 e. Elaborar um programa que apresente o valor de uma potncia de uma base qualquer elevada a um expoente qualquer, ou seja, de NM.

2. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos itens a at e do exerccio 1. Usar na resoluo dos problemas a estrutura de repetio do tipo repita. 3. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos itens a at e do exerccio 1. Usar na resoluo dos problemas a estrutura de repetio do tipo para. 4. Escreva um algoritmo que leia a idade de 20 pessoas, escrevendo a menor idade e a quantidade de pessoas que possuem essa idade (a menor). 5. Construa um algoritmo para entrar com um nmero de 1 a 10 e imprimi-lo o nmero de vezes correspondente ao seu valor. 6. Faa um algoritmo que escreva todos os nmeros mltiplos de 7 entre 1 e N, sendo N um valor introduzido pelo utilizador. Por exemplos: 7, 14, 21, 28, 35.

Programao de computadores

33

Bibliografia

CARBONI, I. F. Lgica de Programao. 1 edio. Thomson, 2003. FORBELLONE, A. L. EBERSPCHER, H. F. Lgica da Programao: a construo de algoritmos e estruturas de dados. 3 edio. Prentice Hall Brasil, 2005. SENNE, E. L. F. Primeiro curso de programao em C 3 ed. Visual Books, 2009. ISBN: . 9788575022450 MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lgica para desenvolvimento de programao. 4 edio. rica, 2004. ARAJO, E. C. Algoritmos: fundamento e prtica. 1 ed. Visual Books, 2007. BORATTI, I.; OLIVEIRA, A. Introduo Programao: Algoritmos. 3 edio. Visual Books, 2007. SCHILDT H. C: Completo e Total. 3 ed. Makron Books, 1997. ZIVIANI, N. Projeto de algoritmos com implementaes em Pascal e C 2 ed. Thomson . Pioneira, 2004.