Você está na página 1de 7

500 ALGORITMOS RESOLVIDOS

Auto re s : ANITA LOPES / GUTO GARCIA


ILA - Interpretador de Linguagem Algoritmica

O ILA é um interpretador para ambiente Windows / DOS. Foi desenvolvido por uma
equipe coordenada pelo Prof. D.Sc. Sérgio Crespo e pelos bolsistas pesquisadores: MSc. João
Luis Tavares da Silva e Hamilton Freitas Coutinho com patrocínio da Universidade do Vale do
Rio dos Sinos – UNISINOS.( http://www.unisinos.tche.br>)
O ILA é um interpretador pequeno (82K) e permite que você trabalhe com disquete.
O arquivo HELP.EXE é um pequeno manual sobre o interpretador.
Não existe nenhum processo de instalação. Veja como é simples:
PASSOS:
1. copie para seu disquete o ILA.EXE
2. clique em: Iniciar / Programas / Prompt do MSDOS
3. coloque o disquete com o Interpretador ILA no drive A
4. digite: A: e pressione ENTER
5. digite EDIT e pressione ENTER
5. digite um algoritmo
6. após digitar o algoritmo, clique em Arquivo / Salvar
7. digite para nome: EX1.ILA (exemplo de um nome valido)
8. clique em Arquivo / SAIR
9. digite ILA EX1

Observação: Se você não tem prática com DOS, é importante que seus algoritmos estejam no
mesmo diretório do arquivo ILA.EXE.

Algumas considerações

O UAL, conforme visto no Apêndice I, é um interpretador para ambiente Linux e como


achamos que seria importante apresentar as soluções para o ambiente Windows, escolhemos o
ILA por já termos trabalhado muito com ele.
As diferenças entre eles vocês poderão observar no quadro comparativo que fizemos.
O ILA faz alimentação automática de linha e embora o cursor vá se posicionar na linha
debaixo, não se coloca na coluna 1 e sim, na coluna seguinte da linha anterior. É fundamental
para este interpretador, o uso dos comandos limpar e posicionar. Já o UAL apresenta os
caracteres de controle \n e \t , tornando mais fácil a apresentação dos resultados na tela.
Em relação às funções numéricas, as diferenças são poucas mas quanto às funções que
trabalham com caracteres, o UAL é muito mais rico.
Quanto à estrutura de alternativa de múltiplas escolhas, faca caso, só o ILA
disponibiliza. Ela é importante uma vez que torna o algoritmo mais claro.
Em relação às estruturas de repetição, o UAL apresenta: para, enquanto e faca ...
enquanto, já o ILA só apresenta: para e faca enquanto, mas o fato de não apresentar a
terceira estrutura, não faz diferença uma vez que a estrutura do enquanto( ou faca
enquanto) simula com facilidade qualquer estrutura de repetição.

1
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
Em relação aos vetores/ matrizes, as diferenças são importantes, pois o UAL trabalha
com vetores numéricos e strings, mas não trabalha com matrizes enquanto o ILA trabalha com
vetores e matrizes só numéricos.
Finalmente, em relação à possibilidade do usuário criar suas próprias funções, somente
o ILA permite isto com algumas restrições.
No livro, apresentamos sete listas das quais cinco, integralmente, puderam ser feitas
no UAL e duas não. Entretanto no ILA não foi possível fazer nenhum algoritmo que envolvesse
funções strings ou vetores strings mas puderam ser feitos muitos exercícios de todas as
listas.
Nossa escolha pelo UAL foi porque ele apresenta uma estrutura muito parecida com a
linguagem C enquanto que o ILA tem uma estrutura mais parecida com a linguagem PASCAL

Para facilitar a conversão entre os interpretadores, elaboramos uma tabela de equivalência .

COMANDOS
UAL - versão 2.0 ILA - versão 1.01
prog <identificador> // < qualquer comentário para dar nome >(não
obrigatório)
<declaração_ de_ variáveis> variavies
<corpo_ do_ algoritmo> <declaração_ de_ variáveis>
<funções>
fimprog inicio
....
fim
inicio
<corpo_ do_ algoritmo>
fim

<declaração de variáveis simples> <declaração de variáveis simples>


<tipo_ da variável> < identificador>; <tipo_ da variável> < identificador>
<tipo_ da variável> < identificadores <tipo_ da variável> < identificadores separados
separados por vírgulas> ; por vírgulas>
tipos: tipos:
int, real, string, logico numerico, caracter, logico
Observação: No ILA, não existe diferença
entre números inteiros e reais portanto não há
necessidade de se digitar ponto após o número.
Exemplo:
int idade; Exemplo:
real peso; variaveis
numerico idade, peso

<tipo_ da variável> < identificador[dim]>; matriz numerico <identificador>[ <dim1> ]

2
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
tipos: tipo:
int, real, string numerico
Observação 1: cada vetor/matriz precisa ser
declarado separadamente.
Exemplo: Exemplo:
real pesos[15], notas[15], alturas[15]; variaveis
matriz numerico pesos[15]
matriz numerico notas[15]
matriz numerico alturas[15]

Observação 1: O UAL assume como 0 a Observação 2: O ILA assume como 1 a primeira


primeira posição do vetor. posição do vetor.
Observação 2: No UAL pode-se ler direto Observação 3: No ILA não se pode ler direto
para uma variável indexada. para uma variável indexada.
Exemplo: Exemplo:
leia M[L]; ler n
M[L]=n

matriz numerico <identificador>[<dim1> ,<dim2> ]


tipo:
Não disponível numerico
Exemplo:
variaveis
matriz numerico notas[50,4]

<identificador> formado por letras e <identificador> formado por letras, algarismos


algarismos( o 1o é uma letra) e caracter sublinha _ ( o 1o é uma letra)
Exemplo: Exemplo:
real mediaaluno ; variaveis
numerico mediaaluno
ou
variaveis
numerico media_aluno

# comentário de uma linha // comentário de uma linha


/* comentário de mais de uma linha */
imprima <variável>; escrever <variável>
imprima <lista de variáveis separadas por escrever <lista de variáveis separadas por
virgulas> ; virgulas>
imprima <constante>; escrever <constante>

carcteres de controle/comando usados


com imprima:

3
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
"\n" alimenta linha Não disponíveis
"\t" tabula (1 / 9 / 17 /25 / 33 /41 / 49 /
57 / 65 / 73 )
formatar(<identificador>, < n > )

Não disponível Limpar (limpa tela com a cor default e posiciona


o cursor na primeira linha, primeira coluna ).

Não disponível posicionar linha, coluna


Observação: Só são utilizadas 24 linhas e as 80
colunas
<identificador> <- expressão; <identificador> = expressão
Exemplo: Exemplo:
media <- ( a + b ) / 2; media = ( a + b ) / 2

leia <variável> ; ler <variável>


Observação: Tanto no UAL quanto no ILA, não é permitido usar o comando de entrada com
mais de uma variável.
se (<condição> ) se <condição> entao
{ comando ou
comando; ou <seqüência de comandos um em cada linha>
< seqüência de comandos separados por ;> senao
} comando ou
senao <seqüência de comandos um em cada linha>
{ fim_se
comando; ou
< seqüência de comandos separados por ;>
}

faca caso
caso <expressäo 1>:
<bloco-de-comandos 1>
caso <expressäo 2>:
Não disponível <bloco-de-comandos 2>
caso <expressäo 3>:
<bloco-de-comandos 3>
outro_caso <expressäo>:
<bloco-de-comandos.>
fim_caso

para(<identificador><-<valor>;<expressão para <variável> = <expressäo1> ate <expressäo2>


relacional envolvendo o identificador>; passo <expressäo3>
<atribuição ou incremento ou decremento comando ou

4
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
envolvendo o identificador>) <bloco-de-comandos.>
{ proximo
comando; ou
< seqüência de comandos separados por ;> Observação: o passo<expressäo3> só será
} obrigatório se for diferente de 1.

Exemplo: Exemplo:
para( x <- 1 ; x <= 10; x++) para x = 1 ate 10
{ ...
... proximo
}
comandos associados:
pare; Não disponíveis
continue;

enquanto ( < condição > ) faca enquanto < condição >


{ < bloco de comandos um em cada linha >
< bloco de comandos separados por ; > fim_enquanto
}

faca
{
< bloco de comandos separados por ; > Não disponível
}
enquanto( < condição > )

OPERADORES e FUNÇÕES
UAL - versão 2 ILA - versão 1.01
OPERADORES ARITMÉTICOS
+ adição +
- subtração -
* multiplicação *
/ divisão /
** potenciação - real Não disponível
^ potenciação - inteira ^ ( qualquer tipo )

OUTROS OPERADORES
a% b resto da divisão entre dois inteiros resto( a, b )
a div b quociente da divisão entre dois inteiros inteiro( a / b )
a ++ incremento a =a + 1 (equivalente)
a -- decremento a =a – 1 (equivalente)

OPERADORES RELACIONAIS

5
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
> maior >
< menor <
== igual =
>= maior ou igual >=
<= menor ou igual <=
<> diferente <>

OPERADORES LÓGICOS
&& conjunção e
|| disjunção ou
! negação nao
No ILA, quando usamos os operadores e ou ou, o uso de parênteses é obrigatório.
se ( a > b +c || b > a + c || c > a+b) se ( a > b +c) ou ( b > a + c) ou ( c > a + b) entao

FUNÇÕES NUMÉRICAS
sen(x) seno de um ângulo em radianos sen(x)
cos(x) co-seno de um ângulo em radianos cos(x)
tan(x) tangente de um ângulo em radianos tan(x)
abs(x) x independente do sinal Não disponível
exp(x) número e elevado a x Não disponível
log(x) neperiano logaritmo de x log(x) decimal
raiz(x) quadrada raiz de x raiz(x,índice)
intreal(x) converte x para real Não disponível
realint(x) arredonda converte x para inteiro inteiro(x) trunca
Observação: Tanto no UAL quanto no ILA, os argumentos das funções trigonométricas
precisam estar em radianos.

FUNÇÕES STRINGS
strtam(cadeia) nº de caracteres de uma cadeia comprimento(cadeia)
strelem(cad,pos) retorna o caracter de cad que se Não disponível
encontra posição pos
strprim(cadeia) retorna o primeiro elemento Não disponível
strresto(cadeia) retornam todos exceto o 1 o
Não disponível
strult(cadeia) retorna o último elemento Não disponível
strnprim(cad,n) retorna os n primeiros Não disponível
strnresto(cad, n) retorna os elementos da cadeia após os n Não disponível
primeiros
strcopia(cadeia) copia cadeia Não disponível
strcomp(cad1,cad2) compara duas cadeias, retornando:
(ordem alfabética) igual se forem iguais Não disponível
menor se cad1 vier antes de cad2
maior se cad1 vier depois de cad2

6
500 ALGORITMOS RESOLVIDOS
Auto re s : ANITA LOPES / GUTO GARCIA
strconcat(str1,str2) concatena duas strings str1 + str2

CONSTANTES NUMÉRICAS
pi 3.14159265359 pi
Não disponível 2.71828182846 np
(Número Nepperiano)

Exemplo de um algoritmo
UAL - versão 2 ILA - versão 1.01
prog algoritmo110 //prog algoritmo110
real a, b; variaveis
imprima "\ndigite 1o numero: "; numerico a, b
leia a; inicio
imprima "\ndigite 2o numero: "; limpar
leia b; escrever "digite 1O numero: "
se(a == b) posicionar 1, 19
{ imprima "\niguais"; } ler a
senao escrever "digite 2O numero: "
{ imprima "\ndiferentes"; } posicionar 2, 19
imprima "\n"; ler b
fimprog se a = b entao
escrever "iguais"
senao
escrever "diferentes"
fim_se
fim