Académique Documents
Professionnel Documents
Culture Documents
Sumrio
1. INTRODUO.................................................................................................................................................................4
2. VARIVEIS....................................................................................................................................................................5
2.1. A Memria RAM....................................................................................................................................................5
2.2. Nomeando Variveis.............................................................................................................................................6
2.3. Sintaxe do Comando de Declarao de Variveis................................................................................................6
2.4. Atribuio de Valores a Variveis.........................................................................................................................6
2.5. Sintaxe da Atribuio de Valores a Variveis.......................................................................................................7
3. ENTRADA E SADA DE DADOS..............................................................................................................................8
3.1. Sada de Dados.....................................................................................................................................................8
3.2. Entrada de Dados.................................................................................................................................................8
4. OPERADORES ARITMTICOS........................................................................................................................................10
5. COMANDOS DE SELEO............................................................................................................................................12
5.1. Seleo Simples...................................................................................................................................................12
5.2. Seleo Mltipla.................................................................................................................................................13
6. COMANDOS DE REPETIO OU LAO.........................................................................................................................16
6.1. Enquanto/While...................................................................................................................................................16
6.2. Execute ... Enquanto/Do ... While.......................................................................................................................19
6.3. Para/for...............................................................................................................................................................20
7. MATRIZ DE VARIVEIS / ARRAY.................................................................................................................................22
7.1. Declarao de uma Varivel Matricial...............................................................................................................22
7.2. Aplicao.............................................................................................................................................................23
8. ESTRUTURAS DE DADOS HETEROGNEAS..................................................................................................................27
9. FUNES.....................................................................................................................................................................28
9.1. Aplicao: Converso de temperatura...............................................................................................................28
9.2. Criao de funes..............................................................................................................................................31
9.3. Aplicao: Jogo da Velha....................................................................................................................................33
9.4. Escopo de Variveis............................................................................................................................................40
9.5. Funes Recursivas.............................................................................................................................................41
10. MTRICAS DE QUALIDADE DE PROGRAMAS.............................................................................................................42
11. COMPILADOR BORLAND C++ 3.1.............................................................................................................................43
11.1. Instrues para Editar/Compilar/Executar um Programa...............................................................................43
12. REFERNCIAS BIBLIOGRFICAS................................................................................................................................44
Lista de Exemplos
Exemplo 1: declarao e atribuio de valores a variveis..................................................................................................5
Exemplo 2: utilizao do comando escreva.........................................................................................................................8
Exemplo 3: utilizao do comando leia................................................................................................................................8
Exemplo 4: utilizao de operadores aritmticos...............................................................................................................10
Exemplo 5: utilizao do SE..............................................................................................................................................12
Exemplo 6: utilizao do comando MultiplasOpcoes........................................................................................................14
Exemplo 7: utilizao do comando Enquanto....................................................................................................................16
Exemplo 8: utilizao do comando Execute ... Enquanto..................................................................................................19
Exemplo 9: utilizao do comando "para".........................................................................................................................20
Exemplo 10: utilizao de variveis matriciais do tipo real...............................................................................................23
Exemplo 11: utilizao de variveis matriciais do tipo caracter........................................................................................23
Exemplo 12: rescrevendo o exerccio 4 da seo 6.1.........................................................................................................23
Exemplo 13: rescrevendo o exemplo anterior....................................................................................................................25
Exemplo 14: Celsius para Farenheit e vice-versa...............................................................................................................28
Lista de Figuras
Figura 1: representao da RAM como um vetor de bytes..................................................................................................5
Figura 2: representao da RAM aps a atribuio do valor 10 a varivel i........................................................................6
Figura 3: representao esquemtica de um vetor de inteiros na memria........................................................................22
Figura 4: representao esquemtica de um vetor de reais na memria............................................................................22
Figura 5: representao esquemtica de um varivel matricial bidimensional tipo caracter na memria.........................22
Figura 6: Representao esquemtica da matriz de preos de produtos............................................................................24
Figura 7: Representao esquemtica da matriz de nomes de produtos............................................................................26
Figura 8: Funo TransformarParaFarenheit (Caixa Preta)................................................................................................29
Figura 9: Funo TransformarParaCelsius (Caixa Preta)...................................................................................................29
l gica ap licad a - Pro f . Tacla
p g ( 2/48)
arq.: 262181617.doc
Lista de Tabelas
Tabela 1: tipos de dados x tamanho e domnio.....................................................................................................................5
Tabela 2: Operadores aritmticos.......................................................................................................................................10
Tabela 3: Operadores relacionais........................................................................................................................................12
Tabela 4: Operadores lgicos.............................................................................................................................................12
1.1. Introduo
Definio: Um algoritmo um conjunto de passos que pode ser executado
mecanicamente em uma quantidade finita de tempo e que resolve algum
problema.
Normalmente, algoritmos so especificados atravs de uma pseudolinguagem, ou seja, uma linguagem com alguma liberdade de sintaxe e
parecida com a linguagem corrente (portugus). Como desejamos
executar nossos algoritmos no computador, adotaremos uma linguagem
com sintaxe rgida. Estudaremos os elementos que constituem a
linguagem que ser utilizada na construo de algoritmos. So eles:
variveis
comandos de entrada e sada
operadores aritmticos
comandos de seleo
comandos de repetio/lao
matrizes de variveis
estruturas de dados hetergeneas
funes
1.2. Variveis
Na programao, assim como na lgica de predicados, uma varivel pode
assumir qualquer valor do seu conjunto domnio. As linguagens de
programao contm alguns conjuntos domnio predefinidos os quais
denominamos de tipos de dados nativos. Exemplificando:
Exemplo 1: declarao e atribuio de valores a variveis.
1. inteiro
2. i = 10;
i;
Linha 1:
declarao ou criao de uma varivel do tipo inteiro (um
tipo nativo da linguagem) chamada i. Portanto, i pode
"teoricamente" assumir qualquer valor do domnio Z.
Linha 2: a varivel i assume ou recebe o valor 10 (comando de atribuio)
Quando uma varivel declarada uma quantidade de memria lhe
reservada. A quantidade de memria alocada depende do tipo do dado
utilizado. Na linguagem que utilizaremos, um inteiro ocupar 2 bytes.
Portanto, poderemos representar inteiros no intervalo [-32.768, 32.767].
Num computador, existe limitao para os valores mximo e mnimo de
uma varivel dependente da quantidade de bytes reservado para o tipo da
varivel. A tabela seguinte mostra os tipos de dados que faremos uso com
os respectivos tamanhos:
tamanho
(bytes)
Tipo
caract
er
inteir
o
real
lgico
domnio
4
1
subconjunto de R
V ou F
0
1
2
..
.
n
<conted
o>
...
l gica ap licad a - Pro f . Tacla
p g ( 5/48)
arq.: 262181617.doc
endereo fsico
1
2
3
4
..
.
n
<conted
o>
0000
0000
0000
1010
...
10 em
binrio
No algoritmo:
inteiro i;
...
i = 10;
1.2.5.
Sintaxe da Atribuio de Valores a Variveis
<atrib> ::= <var> = <expr>;
<expr> ::= <cte> | <expr_aritm>;
...
Obs.: no sero detalhadas as categorias sintticas <expr_aritm>
(expresso aritmtica) e <cte> (constantes).
// Programa: saida.cpp
linha de comentrio
// Autor :
linha de comentrio
#include "tradutor.h"
traduz comandos de portugus para c++
programa
sempre segue o include acima
inicio
incio da parte principal do programa
inteiro iNrAluno;
escreva "Digite o numero do aluno";
fim
fim da parte principal do programa.
1.3.2.
Entrada de Dados
Sintaxe:
<ent>::=leia <var>;
<var>::= j definido em 2.3
Semntica:
Obtm informao do teclado e coloca o valor digitado na posio de
memria identificada pela varivel <var>.
Exemplo 3: utilizao do comando leia.
l gica ap licad a - Pro f . Tacla
p g ( 8/48)
arq.: 262181617.doc
1.
2.
3.
4.
5.
6.
7.
8.
9.
// Programa: entrada.cpp
linha de comentrio
// Autor
:
linha de comentrio
#include "tradutor.h"
traduz comandos de portugus para c++
programa
sempre segue o include acima
inicio
incio da parte principal do programa
inteiro iNrAluno;
escreva "Digite o numero do aluno";
leia iNrAluno;
fim
fim da parte principal do programa.
Exerccio:
Altere o algoritmo acima para mostrar o valor digitado aps a seguinte
mensagem:
"Voce digitou o nmero:
"
Obs.: utilize os caracteres \n num texto para fazer o cursor mudar de linha
(retorno de carro e mudana de linha).
// Programa: media.cpp
// Autor :
#include "tradutor.h"
programa
inicio
real rNota1, rNota2;
escreva "\nDigite a primeira nota:";
leia rNota1;
escreva "\nDigite a Segunda nota:";
leia rNota2;
escreva "\nMedia calculada: ";
escreva (rNota1 + rNota2) / 2;
fim
Exerccios:
1. Faa um algoritmo que transforme uma velocidade fornecida em m/s
pelo usurio para Km/h. Para tal, multiplique o valor em m/s por 3,6.
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include "tradutor.h"
programa
inicio
real rVelMS;
escreva "Digite velocidade em m/s: ";
leia rVelMS;
escreva "\nVelocidade m KM/H: ";
escreva rVelMS * 3.6;
fim
#include "tradutor.h"
programa
inicio
real rNota1, rNota2, rBim1, rBim2;
escreva "Bimestre 1\n";
escreva "==========\n";
escreva "Nota 1: ";
lgica aplicada - Prof. Tacla
p g ( 10/48)
arq.: 262181617.doc
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
leia rNota1;
escreva "\nNota 2: ";
leia rNota2;
rBim1 = (rNota1 + rNota2) / 2;
escreva "\nNota primeiro bimestre: ";
escreva rBim1;
escreva "\n\nBimestre 2\n";
escreva "===========\n";
escreva "Nota 1: ";
leia rNota1;
escreva "\nNota 2: ";
leia rNota2;
rBim2 = (rNota1 + rNota2) / 2;
escreva "\nNota segundo bimestre: ";
escreva rBim2;
escreva "\n\nNota semestral:
escreva (rBim1 + rBim2) / 2;
fim
Bimestre 2
===========
Nota 1: 8
Nota 2: 6
Nota segundo bimestre: 7
endereo fsico
1 byte
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rNota1
rNota2
rBim1
rBim2
Seleo Simples
Maior
Menor
Menor ou igual
Maior ou igual
Igual
Diferente
importante: no confunda o
smbolo de atribuio "=" com o
relacional "==".
// Programa: trafego.cpp
// Autor
:
// O programa verifica se dois avies esto na mesma pista.
// Caso estejam, emite mensagem de alerta.
//
#include "tradutor.h"
programa
inicio
inteiro iNrPista1, iNrPista2;
escreva "Informe a pista para o voo 1\n";
leia iNrPista2;
escreva "Informe a pista para o voo 2\n";
leia iNrPista2;
se ( iNrPista1 == iNrPista2) entao
inicio
escreva "ALERTA: possivel colisao\n";
fim
fim
Exerccios:
1. Altere o exemplo acima para que emita mensagem "Voo 1 e 2 liberados"
caso as pistas fornecidas sejam diferentes.
2. Altere o programa media.cpp para apresentar as seguintes mensagens:
"Reprovado" quando a mdia for menor que 4;
"Exame" quando a mdia estiver no intervalo [4, 7[
"Aprovado" caso nenhuma das situaes anteriores.
3. Faa uma pequena calculadora da seguinte forma. Pea ao usurio um
nmero real, em seguida a operao desejada e, finalmente, o segundo
nmero. Resolva a operao pedida (se existir) e apresente o resultado.
Veja abaixo a sada desejada:
Calculadora
===========
Digite o primeiro operando:10.5
Digite a operao: *
Digite o segundo operando: 2
Resultado: 21
1.5.2.
Seleo Mltipla
Sintaxe:
<sel_multi>::= MultiplasOpcoes( <expr_aritm> )
inicio
<lista_de_casos>
fim
<lista_de_casos> ::= <caso><lista_de_casos> |
<caso><lista_de_casos><caso_contrario> | <caso> |
<caso> ::= caso <cte>: <bloco_cmdos> saia; |
caso <cte>: <bloco_cmdos>
<caso_ contrario > ::= casoContrario <bloco_cmdos>
Semntica:
O comando MultiplasOpcoes permite executar um bloco de comandos
associado a um <caso> em funo do resultado da <expr_aritm>. Assim,
se o resultado da <expr_aritm> coincidir com o valor <cte> associado do
<caso> ento o <bloco_cmdos> respectivo executado. Os exemplos
seguintes elucidam a explicao.
Exemplo 6: utilizao do comando MultiplasOpcoes.
Este exemplo resolve o exerccio 3 da calculadora (item 5.1, seleo
simples).
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
// Programa: calc.cpp
// Autor
:
// O programa realiza operaes aritmticas entre dois operandos.
//
#include "tradutor.h"
programa
inicio
real rOper1, rOper2;
caracter cOperacao;
escreva "Digite o primeiro operando: "
leia rOper1;
escreva "\nDigite a operao: ";
leia cOperacao;
escreva "\nDigite o segundo operando: "
leia rOper2;
escreva "\nResultado: ";
multiplasOpcoes ( cOperacao )
inicio
caso '+':
escreva rOper1 + rOper2;
saia;
caso '-':
escreva rOper1 - rOper2;
saia;
caso '*':
escreva rOper1 * rOper2;
saia;
caso '/':
escreva rOper1 + rOper2;
saia;
casoContrario:
escreva "Operacao invalida";
fim
lgica aplicada - Prof. Tacla
p g ( 14/48)
arq.: 262181617.doc
37.
fim
Exerccios:
1. Leia do teclado nmeros inteiros de 1 a 7. Mostre o nome do dia da
semana correspondente por extenso.
2. Leia ms e ano do teclado e mostre o nmero de dias correspondente ao
ms lido.
3. Apresente o menu abaixo. Se o usurio escolher Aplicaes Financeiras,
apresente a mensagem "No h aplicaes financeiras", se escolher
Saldo apresente a mensagem "Saldo de conta corrente ou poupana?" e
caso seja Extrato, apresente a mensagem "Extrato de conta corrente ou
poupana?"
Banco Tabajara
===============
1. Saldo
2. Extrato
3. Aplicaes Financeiras
#include "tradutor.h"
programa
inicio
real rVelMS;
caracter cOpcao = 's'; // no esquea de inicializar a varivel.
escreva "Conversor m/s -> Km/h\n";
escreva "Deseja prosseguir [s/n]?";
leia cOpcao;
enquanto (cOpcao == 's')
inicio
escreva "Digite velocidade em m/s: ";
leia rVelMS;
lgica aplicada - Prof. Tacla
p g ( 16/48)
arq.: 262181617.doc
13.
14.
15.
16.
17.
18.
19.
Exerccios:
1. Faa um algoritmo que leia temperaturas at que o usurio decida em
contrrio. Voc identificar esta deciso quando ele digitar 999 para
uma temperatura. Calcule e mostre: a menor temperatura digitada, a
maior temperatura e a temperatura mdia.
2. Escreva um algoritmo para encontrar o n-simo termo de uma
Progresso Aritmtica (PA). Ler a1 (o primeiro termo), r (a razo) e n ( o
nmero de termos). O n-simo termo calculado pela frmula an = a1 +
r * (n - 1). Consistncias: no permitir que o usurio introduza para a1
valores superiores a 200 e inferiores a 0. Enquanto os valores estiverem
fora desta faixa apresente a mensagem "Primeiro termo deve estar no
intervalo [0, 200] e pea novamente por a1.
3. Faa um algoritmo para automatizar a caixa de uma pizzaria. A pizzaria
oferece as seguintes opes para os clientes:
Produto
Napolitana
Lombinho
Portuguesa
Coca
Guaran
Mdio(a)
R$5,00
R$5,50
R$5,50
R$0,80
R$0,70
Grande
R$6,00
R$6,50
R$6,00
R$1,20
R$1,25
Cada cliente que chega atendido por um caixa. Ele pode escolher
diversos produtos em diferentes quantidades. No final da compra, o
caixa apresenta o valor total da mesma. Consistncias: as quantidades
digitadas para cada produto devem ser maiores que zero e inferiores a
100. Caso seja fornecido um valor fora deste intervalo, apresente a
mensagem "Redigite a quantidade" e repita a leitura.
4. Altere o algoritmo acima para totalizar as vendas do caixa de um dia.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
rTotCaixa=0, rTotCliente=0;
iOpcao, iTam, iQtd, iContCliente=0;
execute
inicio
limpaJanela;
escreva "\nProduto
\tMedio \tGrande";
escreva "\n===========================================";
escreva "\n0. Napolitana\tR$5,00\tR$6,50";
lgica aplicada - Prof. Tacla
p g ( 17/48)
arq.: 262181617.doc
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
escreva
escreva
escreva
escreva
escreva
escreva
escreva
escreva
escreva
escreva
escreva
escreva
"\n-------------------------------------------";
"\n1. Lombinho \tR$5,50\tR$6,50";
"\n-------------------------------------------";
"\n2. Portuguesa\tR$5,50\tR$6,00";
"\n-------------------------------------------";
"\n3. Coca
\tR$0,80\tR$1,20";
"\n-------------------------------------------";
"\n4. Guarana
\tR$0,70\tR$1,25";
"\n-------------------------------------------";
"\n-1. Fechar a conta do cliente";
"\n-2. Fechar o caixa";
"\n-------------------------------------------";
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
1.6.2.
Execute ... Enquanto/Do ... While
Sintaxe:
<exec_equanto>::= execute
inicio
<bloco_cmdos>
fim
enquanto( <expr_cond > );
execute
<cmdo>
enquanto( <expr_cond > ) ;
<expr_cond> ::= /* no ser detalhada */
<bloco_cmdos>::=<cmdo> | <cmdo> <bloco_cmdos>
<cmdo> ::= <sada> | <ent> | <atrib> | <se> | <sel_multi> |
<enquanto> |
lgica aplicada - Prof. Tacla
p g ( 19/48)
arq.: 262181617.doc
Semntica:
O <bloco_cmdos> ou o <cmdo> executado uma vez. Depois, executado
enquanto a <expr_cond> for verdadeira. Quando ela torna-se falsa a
execuo do programa passa ao comando seguinte.
Exemplo 8: utilizao do comando Execute ... Enquanto.
Refazendo o exemplo anterior temos:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include "tradutor.h"
programa
inicio
real rVelMS;
caracter cOpcao; // note que no precisamos inicializar a varivel.
execute
inicio
escreva "Digite velocidade em m/s: ";
leia rVelMS;
escreva "\nVelocidade m KM/H: ";
escreva rVelMS * 3.6;
escreva "Deseja continuar [s/n]?";
leia cOpcao;
fim
enquanto (cOpcao == 's');
fim
Exerccios:
1. Faa uma algoritmo que converta temperaturas de graus Celsius para
Farenheit e vice-versa de acordo com a escolha do usurio. A frmula
para converso C = 5/9 * (F - 32), Onde F o valor em Farenheit e C
ser o valor em graus Celsius. O algoritmo deve ser executado pelo
menos uma vez, ou seja, depois que o programa for chamado o usurio
ter que fazer uma converso. Depois da primeira converso, perguntar
ao usurio se deseja prosseguir.
1.6.3.
Para/for
Sintaxe:
<para>::= para(<atrib>; <expr_cond >; <expr_aritm>)
inicio
<bloco_cmdos>
fim
|
para(<atrib>; <expr_cond >; <expr_aritm>)
<cmdo>
<atrib> ::= /* vide 1.2.4 */
<expr_cond> ::= /* no ser detalhada */
<bloco_cmdos>::=<cmdo> | <cmdo> <bloco_cmdos>
<cmdo> ::= <sada> | <ent> | <atrib> | <se> | <sel_multi> |
<enquanto> | ...
lgica aplicada - Prof. Tacla
p g ( 20/48)
arq.: 262181617.doc
Semntica:
1. O comando inicia com a execuo da atribuio <atrib>.
2. Se a <expr_cond> for verdadeira executa-se <bloco_cmdos> ou o
<cmdo>. Caso contrrio, o comando finalizado.
3. Depois, executa-se a expresso <expr_aritm> e volta-se ao passo 2.
Exemplo 9: utilizao do comando "para".
O programa abaixo imprime nmeros de 0 a 5.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include "tradutor.h"
programa
inicio
inteiro iContador;
para (iContador = 0; iContador < 6; iContador = iContador + 1)
inicio
escreva "\nLinha numero ";
escreva iContador;
fim
fim
Exerccios:
1. Faa um contador que apresente todos os inteiros compreendidos entre
um valor inicial e um final fornecidos pelo usurio. Consistncias: o
valor final deve ser maior que o inicial.
2. Faa um contador regressivo para o qual o usurio fornece um nmero
inicial e o programa apresenta todos os nmeros pares inferiores ao
nmero inicial. Consistncias: o nmero inicial deve ser maior ou igual a
2.
3. Pea ao usurio um valor inicial <vi>, um valor final <vf> e um outro
nmero, denominado <n>. Assegure que o <vf> maior que <vi> e que
<n> menor que <vf> - <vi>. Apresente todos os nmeros
compreendidos entre o valor inicial. A cada <n> mensagens imprima a
mensagem "--- Mais ? ---" e utilize a funo getch( ) para que o programa
s prossiga aps o usurio teclar algo.
4. Faa um contador que apresente todos os inteiros compreendidos entre
um valor inicial e um final fornecidos pelo usurio. Consistncias: o
valor final deve ser maior que o inicial. Pea ao usurio um nmero
<n> para um subcontador. Para cada valor apresentado, o programa
deve fazer uma subcontagem de <n> valores. Exemplo:
Contador
========
Fornea o valor inicial: 5
Fornea o valor final : 7
Fornea o valor de subcontagem: 3
Contagem
========
5
5.1
5.2
5.3
6
6.1
6.2
6.3
7
7.1
7.2
7.3
Exemplos:
a) inteiro iCodigo[3];
Declarao de uma varivel matricial com 3 elementos do tipo inteiro.
endereo fsico
1 byte
70
71
iCodigo[0]
72
73
iCodigo[1]
74
75
iCodigo[2]
endereo fsico
1 byte
70
71
72
73
74
75
76
77
rNota [0]
rNota [1]
Figura 4: representao esquemtica
de um vetor de reais na memria.
c) caracter cLetra[2][3]
Declarao de uma varivel matricial com 5 linhas e 3 colunas.
endereo fsico
1 byte
70
71
72
73
74
75
cLetra[0][0]
cLetra[0][1]
cLetra[0][2]
cLetra[1][0]
cLetra[1][1]
cLetra[1][2]
intervalo [0, 2] e os das colunas, no intervalo [0, 1]. Se estes limites forem
ultrapassados, o programa arruinar as variveis vizinhas ou at mesmo o
cdigo executvel.
1.7.2.
Aplicao
Seguem alguns exemplos de aplicao de variveis matriciais.
Exemplo 10: utilizao de variveis matriciais do tipo real.
Imagine que queremos calcular a mdia de vrios alunos. A mdia
resultado da mdia aritmtica entre 4 notas de provas e trabalhos.
Poderamos utilizar uma varivel matricial para armazenar estas notas ao
invs de criarmos 4 variveis reais com diferentes nomes:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
// Programa: media.cpp
// Autor
:
#include "tradutor.h"
programa
inicio
real rNota[4];
para (i=0; i < 4; i=i+1)
inicio
escreva "\nDigite a nota ";
escreva i;
escreva ": ";
leia rNota[i];
fim
escreva "\nMedia calculada: ";
escreva (rNota[0] + rNota[1] + rNota[3] + rNota[4]) / 4;
fim
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// Programa: velha.cpp
// Autor
:
#include "tradutor.h"
programa
inicio
caracter cPosicao[3][3] = {'X', 'O', 'O',
' ', 'X', 'O',
' ', ' ', 'X'};
inteiro
i, j;
para (i=0; i < 3; i=i+1)
inicio
para (j=0; j < 3; j=j+1)
inicio
escreva " ";
escreva cPosicao[i][j];
escreva " |";
fim
escreva "\n---+---+---+\n"
fim
fim
0
5
1
6
5.50
6.50
5.50
3
4
0.80
0.70
1.20
1.25
execute
inicio
limpaJanela;
escreva "\nProduto
\tMedio \tGrande";
escreva "\n===========================================";
escreva "\n0. Napolitana\tR$5,00\tR$6,00";
escreva "\n-------------------------------------------";
escreva "\n1. Lombinho \tR$5,50\tR$6,50";
escreva "\n-------------------------------------------";
escreva "\n2. Portuguesa\tR$5,50\tR$6,00";
escreva "\n-------------------------------------------";
escreva "\n3. Coca
\tR$0,80\tR$1,20";
escreva "\n-------------------------------------------";
escreva "\n4. Guarana
\tR$0,70\tR$1,25";
escreva "\n-------------------------------------------";
escreva "\n-1. Fechar a conta do cliente";
escreva "\n-2. Fechar o caixa";
escreva "\n-------------------------------------------";
escreva "\nOpcao: ";
leia iOpcao;
se ( iOpcao >= 0 && iOpcao < 5)
inicio
escreva "\nTamanho 0-Medio 1-Grande: ";
leia iTam;
lgica aplicada - Prof. Tacla
p g ( 25/48)
arq.: 262181617.doc
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
iOpcao = 0;
fim
senao
inicio
escreva "\n\n========================";
escreva "\nTotal do movimento: R$ ";
escreva rTotCaixa;
escreva "\n Total de clientes: ";
escreva iContCliente;
escreva "\n Gasto por cliente: R$ ";
se ( iContCliente > 0 )
escreva rTotCaixa / iContCliente;
escreva "\n========================";
fim
escreva "\ntecle [enter]";
getch( );
saia;
fim
fim
fim
enquanto ( iOpcao != -2 );
fim
//---------------------------------------------------------------------------
10
N
L
P
C
G
a
o
o
o
u
p
m
r
c
a
o
b
t
a
r
l
i
u
i
n
g
t
h
u
a
o
e
\0
\0
\0
\0
\0
cNomeProd[5][11] = { "Napolitana",
"Lombinho ",
"Portuguesa",
"Coca
",
"Guarana
" };
inteiro
execute
inicio
clrscr( );
escreva "\n
Produto
Medio Grande";
escreva "\n================================";
para ( iOpcao = 0; iOpcao < 5; iOpcao = iOpcao + 1)
inicio
escreva "\n ";
escreva iOpcao;
escreva ". ";
escreva cNomeProd[iOpcao];
escreva "
R$";
escreva rPrecoProd[iOpcao][0];
escreva "\tR$";
escreva rPrecoProd[iOpcao][1];
escreva "\n--------------------------------";
fim
escreva "\n-1. Fechar a conta do cliente";
lgica aplicada - Prof. Tacla
p g ( 27/48)
arq.: 262181617.doc
44.
45.
46.
Exerccios:
1. Leia 5 nmeros inteiros do teclado, coloque-os num vetor e apresente-os
em ordem crescente.
2. Leia do teclado nmeros inteiros de 1 a 7. Mostre o nome do dia da
semana correspondente por extenso. Armazene os nomes dos dias numa
matriz de caracteres.
3. Faa um programa que permita duas pessoas jogarem velha.
1.9. Funes
Quando temos um problema complexo para resolver geralmente utilizamos
a tcnica do dividir para conquistar, ou seja, dividimos o problema em
subproblemas e, se preciso for, decompomos os subproblemas em
problemas menores e assim por diante. Resolvendo cada um dos
subproblemas e fazendo-os trabalhar de forma coordenada, alcanamos a
soluo para todo o problema.
Um exemplo da vida real. Voc deseja fazer uma viagem para uma cidade
onde nunca esteve antes e onde no h conhecidos. O problema : como
chegar na cidade, l se instalar, visitar pontos interessantes e retornar.
Olhando o problema distncia vemos que os subproblemas a serem
resolvidos so:
1.
2.
3.
4.
1.
2.
3.
4.
Temperatura
Farenheit(real)
TransformarPara
Farenheit
Temperatura
Celsius (real)
TransformarPara
Celsius
Temperatura
Celsius (real)
Temperatura
Farenheit (real)
Temperatura
Farenheit(real)
TransformarPara
Farenheit
Temperatura
Celsius (real)
TransformarPara
Celsius
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
fim
//----------------------------------------------------------------------------//
Funcao: Principal
//----------------------------------------------------------------------------naoRetornaDado principal ( )
inicio
real rVlrTemp;
caracter cUnidade, cProsseguir;
execute
inicio
escreva "\nValor da temp.? ";
leia rVlrTemp;
escreva "\nUnidade [C/F] ? ";
leia cUnidade;
se ( cUnidade == 'c' ) entao
inicio
escreva "\nEm Farenheits: ";
escreva TransformarParaFarenheit( rVlrTemp );
fim
senao
inicio
escreva "\nEm Celsius: ";
escreva TransformarParaCelsius( rVlrTemp );
fim
escreva "\nProsseguir [s/n] ? ";
leia cProsseguir;
fim
enquanto ( cProsseguir == 's' );
fim
1.9.2.
Criao de funes
Para criar e utilizar corretamente funes, observar os seguintes pontos:
Prottipo
necessrio para que o compilador reconhea as funes que voc criou.
Aparece no incio do programa, antes da definio de qualquer funo. A
sintaxe a seguinte:
<prottipo>::= <tipo_dado_retorno> <NomeFuno>
(<lista_parmetros>);
< NomeFuno > ::= /* nome de at 32 caracteres que no inicie por
smbolos especiais (*, &, %, etc.), nem por nmeros e que no contenha
espaos */
<lista_parmetros> ::= | <parmetro> | <parmetro> ,
<lista_parmetros>
<parmetro> ::= <tipo_dado> <var> | <tipo_dado>
<tipo_dado_retorno >::= <tipo_dado> | naoRetornaDado
<tipo_dado> ::= inteiro |real | logico |caracter
Exemplos:
real TransformarParaFarenheit ( real );
logico MaiorQue (real, real);
logico MenorQue (inteiro iNum1, inteiro iNum2);
naoRetornaDado MostrarMenu( );
lgica aplicada - Prof. Tacla
p g ( 33/48)
arq.: 262181617.doc
Definio da funo
a funo em si. Realiza a transformao dos dados de entrada nos de
sada. A sintaxe a seguinte:
<funo> ::= <cabealho>
inicio
<bloco_cmdos>
fim
<cabealho>::= <tipo_dado_retorno> <NomeFuno>
(<lista_parmetros_ent>)
< NomeFuno > ::= /* nome de at 32 caracteres que no inicie por
smbolos especiais (*, &, %, etc.), nem por nmeros e que no contenha
espaos */
<lista_parmetros_ent> ::= | <parmetro_ent> | <parmetro_ent> ,
<lista_parmetros_ent>
<parmetro_ent> ::= <tipo_dado> <var>
<bloco_cmdos> ::= /* j definido anteriormente adicionado do comando
retorne */
<retorne> ::= retorne <expr_aritm>;
<expr_aritm> ::= /* j definido anteriormente */
<tipo_dado_retorno >::= <tipo_dado> | naoRetornaDado
<tipo_dado> ::= inteiro |real | logico |caracter
Note que a sintaxe do cabealho parecida com a do prottipo. Porm, no
cabealho no h ponto e vrgula no final e os parmetros de entrada
devem estar completamente definidos pelo tipo do dado e nome da varivel
(vide categoria sinttica <parmetro_ent>). importante que os tipos de
dados de retorno e dos parmetros de entrada declarados no prottipo
coincidam com os do cabealho, caso contrrio, ocorrer erro de
compilao. O comando retorne permite encerrar a funo e ao mesmo
tempo retornar o valor de sada que deve ser do mesmo tipo que o
<tipo_dado_retorno> declarado no cabealho e no prottipo da funo.
Exemplo:
Funo que compara dois inteiros e retorna verdadeiro caso o primeiro seja
menor que o segundo.
1.
2.
3.
4.
5.
6.
7.
naoRetornaDado MostarMenu(
inicio
escreva "1. Extrato\n";
escreva "2. Saldo\n";
escreva "3. Sair\n";
fim
Chamada de funo
Uma funo pode ser chamada de qualquer ponto do programa, inclusive
de outras funes ou a partir dela mesma. Faa com que os argumentos
passados na chamada coincidam com os parmetros de entrada da funo.
Se a funo espera receber um valor inteiro e voc passa um caracter
certamente ela no se comportar como desejado. Outro ponto importante
observar se est recebendo o valor retornado pela funo numa varivel
adequada, ou seja, uma varivel que tenha o mesmo tipo que o valor
retornado pela funo. importante ressaltar que quando utilizamos uma
varivel como argumento de uma funo estamos passando o contedo ou
o valor atual da mesma. Este tipo de chamada denominada chamada
com passagem por contedo.
Exemplos:
Para chamar a funo MenorQue definida anteriormente teramos vrias
possibilidades. Note em que todas elas foi respeitado o tipo de dado dos
parmetros de entrada e de sada.
Exerccio:
1. Utilizando a tcnica top-down faa um pseudo-cdigo e o diagrama de
funes para resolver o seguinte problema: calcular a diferena em dias
entre duas datas fornecidas pelo usurio. O usurio poder fazer vrias
vezes este clculo sem sair do programa. O programa deve verificar se as
datas fornecidas so vlidas e se a primeira data menor que a segunda.
S ento ele calcular a diferena em dias entre as duas e apresentar o
resultado. Obs: no preciso detalhar o clculo de diferena em dias e nem
as verificaes de datas.
1.9.3.
Aplicao: Jogo da Velha
Apresenta-se nesta seo o pseudo-cdigo, diagrama de funes e a
implementao para um problema mais complexo: o jogo da velha. O
jogador 1 sempre jogar com o smbolo 'X' e o 2, com 'O'. Os jogadores
podem jogar sucessivamente sem sair do programa. A cada final de partida
apresenta-se o resultado do jogo e pergunta-se a um dos jogadores se
desejam prosseguir. O placar das partidas disputadas at o momento
mostrado no topo da tela e nunca desaparece.
Pseudo-cdigo
Nvel 1 (+ alto-nvel)
lgica aplicada - Prof. Tacla
p g ( 35/48)
arq.: 262181617.doc
fazer
limpar tabuleiro
mostrar tabuleiro
fazer
pedir jogada ao jogador 1
enquanto jogada for incorreta
pedir jogada ao jogador 1
mostrar tabuleiro
verificar resultado do jogo
se jogador 1 ganhou entao
adicionar 1 ao total de partidas ganhas por ele
mostrar vencedor
senao
se no houve empate
pedir jogada ao jogador 2
enquanto jogada for incorreta
pedir jogada ao jogador 2
mostrar tabuleiro
verificar resultado do jogo
se jogador 2 ganhou entao
adicionar 1 ao total de partidas ganhas por ele
mostrar vencedor
enquanto jogo no acabar
perguntar Prosseguir ?
enquanto usurio quiser prosseguir
Observe que os trechos em azul so similares variando apenas o jogador.
Trechos de cdigo repetidos so bons candidatos a funes. Porm, tomar
cuidado para no colocar numa mesma funo comandos que estejam
agrupados apenas pela posio no cdigo e no pela tarefa que
desempenham. Por exemplo, apesar de todo o trecho em azul estar
repetido, parece mais conveniente separ-lo em duas funes ou tarefas:
uma para ler e verificar a validade de uma jogada e outra para fazer o
procedimento em caso de vitria. Outras candidatas a funes so as
tarefas especificas, tais como, verificar resultado do jogo, verificar se
jogada foi correta, limpar tabuleiro e mostrar tabuleiro. Em seguida,
apresenta-se nova verso do pseudo-cdigo acima, considerando as funes
identificadas.
Nvel 1 (reescrito)
fazer
limpar tabuleiro
mostrar tabuleiro
fazer
Obter jogada vlida do jogador 1
mostrar tabuleiro
Verificar resultado do jogo
lgica aplicada - Prof. Tacla
p g ( 36/48)
arq.: 262181617.doc
Se jogo no acabou
Obter jogada vlida do jogador 2
mostrar tabuleiro
Verificar resultado do jogo
enquanto jogo no acabar
caso resultado do jogo
jogador 1 venceu:
fazer procedimento vitria
jogador 2 venceu:
fazer procedimento vitra
empate:
fazer procedimento de empate.
perguntar Prosseguir ?
enquanto usurio quiser prosseguir
Ao reescrever o pseudo-cdigo notamos que no caso de empate o resultado
no estava sendo mostrado, ento, inserimos um novo trecho de cdigo (em
azul) executado ao final de cada partida. Uma modificao ainda pode ser
feita: alternar as jogadas do jogador 1 e 2. Veja abaixo o pseudo-cdigo
reescrito.
Nvel 1 (reescrito 2)
fazer
limpar tabuleiro
mostrar tabuleiro
jogador da vez = 2
fazer
jogador da vez = ( jogador da vez % 2 ) + 1
Obter jogada vlida do jogador da vez
mostrar tabuleiro
Verificar resultado do jogo
enquanto jogo no acabar
caso resultado do jogo
jogador 1 venceu:
fazer procedimento vitria
jogador 2 venceu:
fazer procedimento vitra
empate:
fazer procedimento de empate.
perguntar Prosseguir ?
enquanto usurio quiser prosseguir
Agora o pseudo-cdigo est bem enxuto. Veja que neste nvel, temos uma
boa viso da soluo do problema sem entrarmos em detalhes do tipo: o
lgica aplicada - Prof. Tacla
p g ( 37/48)
arq.: 262181617.doc
Diagrama de Funes
principal
result (int)
ptos jog1 (int),
ptos jog2 (int)
simbolo jog1 (car),
smbolo jog2 (car)
MostrarTabuleiro
simbolo(car)
LimparTabuleiro
VerificarResultado
jogador(int)
simbolo(car)
ObterJogadaVlida
linha (int)
ObterLinhaVlida
coluna (int)
ObterColunaVlida
Implementao
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Funes
MostrarTabuleiro( inteiro, inteiro );
VerificarResultado( );
ObterJogadaValida( inteiro, caracter );
ObterLinhaValida( );
ObterColunaValida( );
// Variveis Globais
caracter
tab[3][3];
// tabuleiro do jogo
//----------------------------------------------------------------------------//
Funcao: ObterLinhaValida
// Descricao: Pede ao usurio o nmero de uma linha. Quando fornece
//
um valor entre 1 e 3, retorna o numero da linha digitado.
//----------------------------------------------------------------------------inteiro ObterLinhaValida( )
inicio
inteiro lin;
execute
inicio
escreva " Linha ? ";
leia lin;
fim
enquanto ( lin < 1 ou lin > 3 );
retorne lin;
fim
//----------------------------------------------------------------------------//
Funcao: ObterColunaValida
// Descricao: Pede ao usurio o nmero de uma coluna. Quando fornece
//
um valor entre 1 e 3, retorna o numero da coluna digitado.
//----------------------------------------------------------------------------inteiro ObterColunaValida( )
inicio
inteiro col;
execute
inicio
escreva "Coluna ? ";
leia col;
fim
enquanto ( col < 1 ou col > 3 );
retorne col;
fim
//----------------------------------------------------------------------------//
Funcao: VerificarResultado
// Descricao: Verifica se o jogador que utiliza o simbolo <simbolo> ganhou.
//
Tambem verifica se o jogo terminou empatado ou se ainda no
//
acabou.
//
Retorna: 0 - empate
//
1 - jogador da vez ganhou
//
2 - jogo no encerrado
//----------------------------------------------------------------------------inteiro VerificarResultado( caracter simbolo )
inicio
lgica aplicada - Prof. Tacla
p g ( 40/48)
arq.: 262181617.doc
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
inteiro i, j,
cont,
cont_brancos = 0;
// conta as ocorrencias do <simbolo> em cada uma das linhas
para ( i = 0; i < 3; i = i + 1 )
inicio
cont = 0;
para ( j = 0; j < 3; j = j + 1 )
se ( tab[i][j] == simbolo )
cont = cont + 1;
se ( cont == 3 )
retorne 1; // venceu
fim
// conta as ocorrencias do <simbolo> em cada uma das colunas
para ( j = 0; j < 3; j = j + 1 )
inicio
cont = 0;
para ( i = 0; i < 3; i = i + 1 )
se ( tab[i][j] == simbolo )
cont = cont + 1;
senao
se ( tab[i][j] == ' ' )
cont_brancos = cont_brancos + 1;
se ( cont == 3 )
retorne 1; // venceu
fim
// verificar diagonal principal
cont = 0;
para ( i = 0; i < 3; i = i + 1 )
se ( tab[i][i] == simbolo )
cont = cont + 1;
se ( cont == 3 )
retorne 1; // venceu
// verificar diagonal secundria
se ( tab[0][2] == simbolo e tab[1][1] == simbolo e tab[2][0] == simbolo )
retorne 1; // venceu
// verificar se deu empate
se ( cont_brancos == 0 )
retorne 0;
retorne 2;
fim
//----------------------------------------------------------------------------//
Funcao: ObterJogadaValida
// Descricao: Pede ao usurio a linha e a coluna da sua jogada. A jogada
//
considerada vlida se a linha e a coluna esto no intervalo
//
[1, 3] e se no h marcao na linha e coluna escolhidas.
//----------------------------------------------------------------------------naoRetornaDado ObterJogadaValida( inteiro jogador, caracter simbolo)
inicio
inteiro lin, col;
execute
inicio
escreva "\n\nJogador ";
escreva jogador;
escreva "\n";
lin = ObterLinhaValida( );
col = ObterColunaValida( );
fim
lgica aplicada - Prof. Tacla
p g ( 41/48)
arq.: 262181617.doc
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
//----------------------------------------------------------------------------//
Funcao: LimparTabuleiro
// Descricao: Preenche o tabuleiro com espaos.
//----------------------------------------------------------------------------naoRetornaDado LimparTabuleiro( )
inicio
inteiro i, j;
para ( i = 0; i < 3; i = i + 1 )
para ( j = 0; j < 3; j = j + 1 )
tab[i][j] = ' ';
fim
//----------------------------------------------------------------------------//
Funcao: MostrarTabuleiro
// Descricao: Mostra o placar e o tabuleiro com marcao atual.
//----------------------------------------------------------------------------naoRetornaDado MostrarTabuleiro( inteiro ptos1, inteiro ptos2 )
inicio
inteiro i, j;
limpaJanela;
// mostra placar do jogo
escreva "Jogo da Velha\n";
escreva "-------------\n\n";
escreva "Jog1 ";
escreva ptos1;
escreva " X ";
escreva ptos2;
escreva " Jog2";
escreva "\n\n";
// mostra indices das colunas
escreva "
1
2
3\n";
// mostra tabuleiro
para ( i = 0; i < 3; i = i + 1 )
inicio
escreva i+1;
escreva " ";
para ( j = 0; j < 3; j = j + 1 )
inicio
escreva " ";
escreva tab[i][j];
escreva " ";
se ( j != 2 )
escreva "|";
fim
se ( i != 2 )
escreva "\n ---+---+---\n";
fim
retorne;
fim
//----------------------------------------------------------------------------//
Funcao: Principal
//----------------------------------------------------------------------------naoRetornaDado principal ( )
inicio
caracter cProsseguir,
// prosseguir: s ou n
lgica aplicada - Prof. Tacla
p g ( 42/48)
arq.: 262181617.doc
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
inteiro
simbolo[2];
jogador,
iResultado,
ptos[2];
// jogador da vez
// resultado do jogo
// pontos dos jogadores 1 e 2
simbolo[0] = 'X';
simbolo[1] = 'O';
ptos[0] = 0;
ptos[1] = 0;
//
//
//
//
smbolo
smbolo
jogador
jogador
para o jogador 1
para o jogador 2
1 comea com zero pontos
2 comea com zero pontos
execute
inicio
LimparTabuleiro( );
MostrarTabuleiro( ptos[0], ptos[1] );
jogador = 2;
execute
inicio
jogador = ( jogador % 2 ) + 1;
ObterJogadaValida( jogador, simbolo[jogador-1] );
MostrarTabuleiro( ptos[0], ptos[1] );
iResultado = VerificarResultado( simbolo[jogador-1] );
fim
enquanto ( iResultado == 2 );
multiplasOpcoes( iResultado )
inicio
caso 0:
escreva "\n\n * EMPATE * \n";
saia;
caso 1:
escreva "\n\n *** JOGADOR ";
escreva jogador;
escreva " VENCEU ***\n";
ptos[jogador-1] = ptos[jogador-1] + 1;
fim
escreva "\nProsseguir [s/n] ? ";
leia cProsseguir;
fim
enquanto ( cProsseguir == 's' );
fim
1.9.4.
Escopo de Variveis
Nesta seo estudaremos as variveis em relao a sua visibilidade ou
escopo.
Observe no exemplo do jogo da velha a varivel tab que representa o
tabuleiro. Ela foi declarada no incio do programa, fora de qualquer funo.
Este tipo de varivel denominada varivel global, pois pode ser acessada
(ter o contedo modificado ou consultado) em qualquer funo do
programa. Ela alocada no incio do programa e somente cessa de existir
quando o mesmo encerrado. Recomenda-se utilizar o mnimo possvel
destas variveis pois dificultam a compreenso do programa e reduzem sua
modularidade. Variveis globais causam dificuldades na localizao de
erros pois, quando apresentam um valor inesperado, devemos percorrer
todas as linhas que a referenciam para encontrar o problema.
1.11.
1.11.1.
1. Configurao Inicial
1.1.
<dir_fonte>::= \\rle_server\publica\tacla\algo
1.2.
Crie um diretrio (denominado <seu_dir> a partir de agora) para
colocar seus exerccios. Por exemplo, voc pode criar um diretrio
chamado A:\algo
1.3.
Copie para <seu_dir> o arquivo tradutor.h que est no
<dir_fonte>.
1.4.
Execute o programa Borland C++.
1.5.
No menu Options Directories acrescente ;a:\algo no campo
Include Directories.
2. Edio de um novo programa
2.1.
File New para abrir uma janela limpa de edio.
2.2.
Digite o cdigo fonte.
2.3.
Salve no <seu_dir> preferencialmente com um nome de at 8
caracteres ,sem acentuao e sem smbolos especiais.
3. Abrindo um programa j digitado
3.1.
File Open
3.2.
Digite o nome do programa a ser carregado
4. Compilao de um programa
4.1.
Compile Make ou tecle F9 (compilao + linkedio)
4.2.
Veja as mensagens de erro de sintaxe (erros de compilao)
4.3.
Corrija cada um dos erros, clicando sobre a mensagem e alterando
a linha do programa com erro.
4.4.
Salve
4.5.
Repita o processo at que no existam mais erros.
5. Execuo de um programa
5.1.
Run Run ou tecle [CTRL] [F9]. Uma outra opo, abrir uma janela
DOS, posicionar no diretrio onde o arquivo .exe foi criado e digitar o
nome do programa. Se estiver rodando Borland C para Windows uma
janela ser aberta automaticamente para o programa. Caso esteja
trabalhando com a verso DOS, ele trabalhar com a tela cheia e ao
final da execuo retornar para o Borland C. Para visualizar os
resultados do programa pressione [ALT] [F5].
6. Execuo Passo a Passo (Debug)
6.1.
Para executar passo a passo use a tecla F8 (step over) e F7 (step
into)
6.2.
Para visualizar o valor de uma varivel use uma das opes
seguintes:
6.2.1. [ALT] [F4]
Inspect: mostra o valor da varivel naquele instante
6.2.2. [CTRL] [F4] Evaluate/Modify: mostra o valor da varivel e permite
modificar o contedo
lgica aplicada - Prof. Tacla
p g ( 46/48)
arq.: 262181617.doc