Ana səhifə

Universidade Regional Integrada do Alto Uruguai e das Missões Campus Frederico Westphalen Departamento de Engenharias e Ciência da Computação Algoritmos e Estrutura de Dados I informática I


Yüklə 0.52 Mb.
səhifə20/23
tarix25.06.2016
ölçüsü0.52 Mb.
1   ...   15   16   17   18   19   20   21   22   23

14.4Recursividade


Um subprograma recursivo é aquele que chama a si próprio. Pode ser executado várias vezes para valores diferentes de seus parâmetros.

A recorrência ou recursividade pode ser facilmente compreendida quando na prática surge a necessidade de se definir alguma coisa em função dela mesma.

Sabe-se, por exemplo, que o fatorial de um número N pode ser obtido multiplicando-o pelo fatorial de seu predecessor N - 1, ou seja, para N positivo tem-se que:

FAT(N) = N * FAT(N - 1).

Esse e outros tipos de recorrência são tratados internamente pela máquina através do uso de pilhas. Assim sendo, cada vez que o subprograma chama a si próprio, mais informações são colocadas na pilha. O retorno se verifica pelo processo inverso, quando os resultados calculados vão sendo retirados da pilha.

Exemplo de um programa recursivo que calcula o fatorial de um número:

PROGRAM RECURSIVO;

uses CRT;


var

num: integer;


function fatorial(n: integer): longint;

begin


if n=0 then fatorial:=1

else fatorial := n * fatorial(n-1);

end;
begin

write('Numero: ');

readln(num);

writeln('Fatorial de ',num,': ',fatorial(num));

readln;

end.

15.Procedimentos e Funções das Unidades Padrão

15.1Manipulação de Strings e Conversão


Length (s : String ) : Integer;

retorna a quantidade de caracteres contidos em uma string



Concat (s1, [s2 .. sn] : String ) : String;

retorna uma string que é a união de todas as strings passadas como parâmetro



Delete (VAR s : String ; indice, contador : Integer );

retira um ou mais caracteres de uma determinada string



Copy (s : String ; indice, contador : Integer ) : String ;

retorna uma substring de uma string passada como parâmetro



Insert (fonte : String ; VAR destino : String );

Insere uma substring em uma posição preestabelecida.



Pos (pesq : String ; objeto : String) : byte;

retorna a posição que uma substring ocupa dentro de uma string passada como parâmetro.



Val (fonte : String ; Var destino, Var erro : Integer );

Converte uma string para valor numérico e retorna o código de erro.



Str (valor [:tamanho [:decimais]]; VAR destino : String );

Converte uma variável numérica em string.


15.2Manipulação Numérica


ABS (x) : Tipo;

Retorna o valor absoluto de uma expressão



ARCTAN (x : Real ) : Real ;

Retorna o arco de tangente do argumento utilizado



COS (r : Real ) : Real ;

Retorna o valor do co-seno de um argumento passado como parâmetro.



DEC (VAR x [; n ]: Longint)

Decrementa uma variável numérica inteira em uma ou mais unidades



EXP (r : Real ) : Real ;

Retorna o valor exponencial



FRAC (r : Real ) : Real ;

Retorna a parte fracionária



HI ( r ): byte;

Retorna a parte alta de uma constante numérica



INC (VAR x [; n ]: Longint)

Incrementa uma variável numérica inteira em uma ou mais unidades



INT (r : Real ) : Real ;

Retorna o valor inteiro de uma variável do tipo real



LN (r : Real ) : Real ;

Retorna o logaritmo natural



LO ( r ) : byte;

Retorna a parte baixa de uma constante numérica



PI : Real ;

Retorna o valor de PI



ODD (n : Longint ) : Boolean;

Retorna um valor verdadeiro se o argumento for par



RANDOM (n : Word) : (inteiro ou real)

Retorna um número aleatório que pode variar de 0 a 1, ou por um limite passado como parâmetro.



RANDOMIZE ;

Permite gerar uma nova semente para geração de números aleatórios.



ROUND (r : Real ) : Longint ;

Retorna um número real convertido em inteiro e arredondado.



SIN (r : Real ) : Real ;

Retorna o valor do seno



SQR ( r : (numérico)) : numérico;

Retorna o parâmetro elevado ao quadrado.



SQRT (r : Real ) : Real ;

Retorna a raiz quadrada



SWAP ( i : (qualquer_inteiro) ) : (o mesmo tipo do parâmetro)

Inverte o valor em sua ordem



TRUNC (r : Real ) : Longint;

Retorna um valor inteiro truncado nas casas decimais

Nem todas as funções que necessitamos estão prontas e às vezes é necessário utilizar uma fórmula equivalente:

YX = EXP ( LN ( Y ) * X )

= EXP ( LN ( Y ) * ( 1 / X ))

LOG (x) = LN ( X ) / LN ( 10 )

15.3Manipulação de Diretórios


MKDIR (s : String )

Cria um subdiretório



GETDIR (drive : byte; VAR s : String );

Retorna o diretório corrente da unidade passada como parâmetro:

0 - Unidade corrente

1 - Unidade A

2 - Unidade B

3 - Unidade C



CHDIR (s : String )

Muda o subdiretório corrente para o especificado



RMDIR ( s : String )

Remove um subdiretório


15.4Unit CRT


ASSIGNCRT (VAR arq : TEXT);

Associa um arquivo do tipo texto com a console para a saída.



KEYPRESSED : Boolean;

Retorna verdadeiro se for pressionada uma tecla



WINDOW (x1, y1, x2, y2 : Byte);

Define uma área de trabalho no vídeo



CLREOL ;

Limpa todos os caracteres da linha, a partir da posição do cursor



WHEREX : byte ;

Retorna a coordenada X do cursor



WHEREY : byte ;

Retorna a coordenada Y do cursor



DELLINE ;

Elimina a linha em que está o cursor



INSLINE ;

Insere uma linha onde está o cursor



TEXTCOLOR (cor : Byte)

Seleciona a cor de texto:

0 - BLACK - PRETO 8 - DARKGRAY - CINZA ESCURO

1 - BLUE- AZUL 9 - LIGHTBLUE - AZUL CLARO

2 - GREEN -VERDE 10 - LIGHTGREEN - VERDE CLARO

3 - CYAN - CIANO 11 - LIGHTCYAN - CIANO CLARO

4 - RED -VERMELHO 12 - LIGHTRED - VERMELHO CLARO

5 - MAGENTA - MAGENTA 13 - LIGHTMAGENTA - MAGENTA CLARO

6 - BROWN - MARROM 14 - YELLOW - AMARELO

7 - LIGHTGRAY - CINZA CLARO 15 - WHITE - BRANCO

Deve-se somar 128 ao número da cor para o texto ficar piscante (BLINK).

TEXTBACKGROUND (cor : Byte)

Seleciona a cor de fundo:

0 - PRETO

1 - AZUL


2 - VERDE

3 - CIANO

4 - VERMELHO

5 - MAGENTA

6 - MARROM

7 - CINZA CLARO



HIGHVIDEO ;

Seleciona a cor de texto para alta intensidade



LOWVIDEO ;

Seleciona a cor de texto para baixa intensidade



NORMVIDEO ;

Retorna a cor de texto ao normal



TEXTMODE (modo)

Seleciona o modo de texto:

0 - 40x25 Adaptador colorido - Branco/Preto

1 - 40x25 Adaptador colorido - Colorido

2 - 80x25 Adaptador colorido - Branco/Preto

3 - 80x25 Adaptador colorido - Colorido (default)

7 - 80x25 Adaptador monocromático em Branco/Preto

256 - Para EGA/VGA 43 ou 50 linhas



SOUND (hz : Word);

Dispara o alto-falante interno a uma freqüência especificada.



Freqüência em Hertz das notas:




DÓ#




RÉ#







FÁ#




SOL#




LÁ#







530




595







707




794




891




500




561




630

667




749




841




944











MI






SOL









SI






DÓ#




RÉ#







FÁ#




SOL#




LÁ#







1059




1189







1414




1587




1782




1000




1122




1260

1335




1498




1682




1888











MI






SOL









SI

NOSOUND ;

Desativa a geração de som causada pelo procedimento sound.


1   ...   15   16   17   18   19   20   21   22   23


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət