sexta-feira, 27 de agosto de 2010

Anihamento de ifs

Para estruturas simples um if basta, mas vamos pensar num problema mais complexo
Eu quero fazer uma viagem de carro ate recife, e digamos que eu tenho um computaor de bordo no meu carro, que da dicas de inspeção para viagem.Esse programa faz o seguinte
Checa a calibragem do pneu se o pneu esta calibrado ele imprime ok , senao ele verifica se o pneu esta furado ( pressao 0 ) ou se so precisa calibrar, se for necessario calibrar ele manda calibrar.

Estruturas de decisão

Ja vimos que
if condiçao then
atitude;
ele checa se a condiçao é verdadeira , se for toma uma atitude
mas existe uma variação de if
if condiçao then
atitude se verdadeiro {note que não usa-se ponto e virgula}
else
atitude se for falso;
obs: podemos fazer rotinas (mini programas) dentro da esturtua condicional
basta usar (begin) e (end;)
if condiçao then
begin
comando 1
comando2
end {note que não usa-se ponto e virgula}
else
begin
comando 1
comando2
end;

quinta-feira, 26 de agosto de 2010

Biblioteca crt

clrscr;
limpa tela
delay(milisegundos);
espera
clreol;
limpa linha
highvideo;
aumenta brilho dos proximos textos
lowvideo;
diminui cideo dos proximos textos
normvideo;
retorna o video ao normal
sound(1);
emite som
nosound;
desabilita som
a:=readkey;
a recebe um char
dellline;
deleta uma linha
insline;
insire uma linha
gotoxy(coluna,linha);
vai para linha e coluna especificados

Algumas fuçoes matematicas disponiveis

Para facilitar a vida do programador algumas funçoes matematicas ja foram definidas.
Abs(numero);
retorna o valor absoluto(modulo) de um ou mais numeros
ex:
a:=abs(-1.98);
a recebe 1.98
b:=abs(-9);
b recebe 9
writeln(abs(8));
imprime 8
Funções dec() e inc()
Só funcionam com numeros inteiros
inc() soma um numero
dec() subtrai um numero

a:=inc(9);
a recebe 10
b:=dec(21);
b recebe 20
inc(a,8);
nesse caso ele soma oito na variavel a

Função exp()
Pode receber valor inteiro ou real porem retorna sempre real
retorna o exponecial do numero

Função frac()
retorna a parte fracionaria do numero
ex
a:=frac(8.93);
a recebe 0.93
b:=frac(-9.989);
b recebe -0.989

Função int()
retorna a parte inteira de um numero

Função random()
retorna um numero aleatorio entre 0 e 1
Função randomize()
utilizado antes de random para garantir nao repitir numeros
ex:
program randomico;
begin
randomize;
writeln(random:1:2);
readln
end.

Função round()
Arrendonda um numero
exemplo
writeln(round(1.89));
imprime 2
Função trunc()
Trunca o numero
Função sqr()
eleva o numero ao quadrado
Função sqrt()
retorna a raiz quadrada do numero

Entrada e saida de dados

Para interagir com o ususario o programa precisa "perguntar"(enviar saida) e ser "respondido"(receber entrada).
Certo , mas como fazer isso?
Simples:
Para enviar dados utilizamos os comandos write() e writeln()
Para imprimir uma variavel usamos write(var1,var2,var3);
Para imprimir texto write('Este texto vai ser impresso');
Pra imprimir texto e variavel:
write('texto1',variavel1,'texto2',variavel2);
writeln() tambem imprime so que ao inves de imprimir na mesma linha ele imprime na linha seguinte.

Para receber dados utilizamos os comandos read() e readln()
read(var1,var2,var3);
readln(var1,var2,var3); o memso de read so que le na linha seguinte

Obs:
colocando readln; sem os parenteses no final do programa ele para ate uma tecla ser pressionada.
colocando writeln; sem os parenteses ele pula uma linha

Uma coisa importante tambem é o fato da impressao de dados formatados
por exemplo um numero real em pascal
se vc imprimir por exemplo:
write(2.0);
ele imprime na tela 2.000000000000E+00
Ai nos temos de colocar parametros para imprimir :
write(2.0:n);
ele pula n espaços antes de imprimir 2.000000000000000E+00
write(2.0:n:d);
no caso n tem a mesma funçao anterior e d diz quantas casas vai ter o numero real
writeln(2.98889889889:2:2);
resulta
__2.98
os underlines representam os espaços

Obs: Se você deseja que os dados sejam enviados a uma impressora matricial basta fazer
write(lst,'isto vai ser impresso na impressora);

Operaçoes logicas

If simples:
"If" é um comando de Pascal que nos permite verificar uma condição e tomar uma decisão.
Sintaxe:
if condição then
comando;
Exemplo:
if a=b then
b=5;
No exemplo ele veirfica se a é igual a b se for ele atribuia a b o valor 5
No caso se a for igual a b , isso resulta em true
if true then
comando;
o camando é executada
Se a for difernete de b a condiçao se torna false
if false then
comando;
o comando não é executado

No caso "=" é um operador relacional
Operadores relacionais:
"=" igual
"<>" diferente
">" maior que
"<" menor que ">=" maior ou igual
"<=" menor ou igual "IN" incluso Podemos tambem colocar mais de uma condiçao : if a=b and c=d then comando; No caso And é um operador logico relaciona duas condiçoes: Operadores logicos : And se as duas condiçoes forem true Or se pelo menos uma das duas seja true Xor se uma for true e a outra false Prioridade de operadores: Primeira prioridade:not Segunda prioridade:*,/,div,mod,and,+,-,or Terceira prioridade:=,<>,<,>,<=,>=
Lembrando que os parenteses alteram essa ordem
Obs not é um operador de negação

Operações matematicas

Com o conhecimento que ja adquirimos sobre variaveis e sobre a linguagem Pascal podemos comelar a parender a travalhar com dados.
Soma:
Utilizamos o operador "+"
Ex:
soma:=var1+var2;
Subtração:
Utilizamos o operador "-"
sub:=var1-var2;
Divisão real:
Utilizamos o operador "/"
divisao:=var1/var2;
Divisao inteira:
Utilizamos o operador "div"
divisao:=var1 div var2;
Uma divisao inteira é aquela que resulta um numero inteiro
Exemplo: 9 dividido por 4 numa divisao real da 2.25 mas numa divisao inteira da 2
Multiplicaçao:
Utilizamos o operador "*"
Exemplo:
mult:=var1*var2;
Resto:
Utilizamos o operador "mod"
Exemplo:
resto:=var1 mod var2; resulta o resto da divisao de var1 pela var2

Observação:
A prioridade das operações é a mesma usada na matematica , assim como o uso de parenteses altera esta prioridade
Exemplo:
9*3+4=31
9*(3+4)=63
Exemplo:

segunda-feira, 23 de agosto de 2010

Atribuição de valores as variaveis

Para atribuir um valor a uma varivel é simples:
nome_variavel := valor_que_voce_deseja;

':=' é um operador de atribuição
Exemplo:

Constantes

Constantes funcionam como as variaveis ou seja guardam um valor , só que este valor é fixo.
As constantes podem ser numericas,alfanumericas,ou booleanas.
As regras para o nome das constantes é igual o das variaveis
Exemplo:

Variaveis

Variaveis são onde guardamos os valores com os quais vamos trabalhar.É importante observar que em Pascal como em qualuqer outra kinguagem existem palavras que não podem serutilizadas como nomes de variaveis, são as palavras reservadas:
AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DOWNTO,ELSE,END,FILE,FOR,FUCTION,GOTO,IF,
IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,
TO,TYPE,UNTIL,VAR,WHILE,WITH,INPUT,OUTPUT,INTEGER,REAL,READ,STRING,WRITE
ou seja todas as palavras que tem alguma função ou que definam um tipo de variavél.

Para escolher o nome de variavel é muito simples ele tem de obrigatoriamente começar com uma letra e depois pode ser seguido de varias letras e numeros , é bom que o nome não exceda 32 caracteres e tambem que seu nome indentifique para que essa variavel serve.
Exemplos:
lado_do_triangulo,a1234,tempo são nomes de variaveis validos.

Como se declara uma variavél?
Simples basta fazer:
Nome_variavel : tipo_variavel;
Exemplo:Tipos de variaveis:
Numericas:são variaveis que guardam numeros , dependendo da função que esse numero va ter no programa ele pode ter varios formatos :
shortint : de -128 a 127 ocupando 1byte
integer : de -32768 a 32767 ocupando 2 bytes
longint : de -2147483648 a 2147483647 ocupando 4 bytes
byte : de 0 a 255 ocupando 1 byte
word : de 0 a 65535 ocupando 2 bytes
real : de 2.9 elevado a -39 até 1.7 elevado a 38 ocupando 6 bytes
single : 1.5 elevado a -45 até 3.4 elevado a 38 ocupando 4 bytes
double : de 5.0 elevado a -324 até 1.7 elevado a 308 ocupando 8 bytes
extended : de 3.4 elevado a -4932 até 1.1 elevado a 4932 ocupando 10 bytes
tenha sempre a mão essas informações para saber qual o tipo que vai ocupar a memoria necessaria para seu programa.
Variaveis alfanumericas:
São variaveis de texto
char:ocupa 1 byte e armaxena um caractere
string:ocupa de 2 a 256 bytes e pode armazenar de 1 a 256 caracteres
Variaveis logicas:
boolean: ocupa um byte e assume os valores true ou false
true é 1
false é 0

Bibliotecas

O uso de bibliotecas é muito interessante para qualquer programdor , pois permite que você faça uso de um codigo já construido ao invés de construir tudo sozinho.
Algumas bibliotecas uteis são : Crt,Dos,Graph,Printer,Overlay;
Exemplo:

Algumas considerações sobre Pascal

A linguegem Pascal não faz distinção entre letras maiusculas e minusculas(não é case sensitive).

Comentários são textos ou palavras que inserimos no codigo para que este fique claro , eles são ingnorados pelo compilador .
Comentarios em Pascal são feitos ebtre '{' e '}' ou entre '(*' '*)'
Exemplo: