8
500 ALGORITMOS RESOLVIDOS Autores: 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. 1

ALGORITMOS E COMANDOS

  • Upload
    vanlaer

  • View
    9.305

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: 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.EXE2. clique em: Iniciar / Programas / Prompt do MSDOS3. coloque o disquete com o Interpretador ILA no drive A4. digite: A: e pressione ENTER5. digite EDIT e pressione ENTER5. digite um algoritmo 6. após digitar o algoritmo, clique em Arquivo / Salvar7. digite para nome: EX1.ILA (exemplo de um nome valido)8. clique em Arquivo / SAIR9. 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.

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.

1

Page 2: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: ANITA LOPES / GUTO GARCIA

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 .

COMANDOSUAL - versão 2.0 ILA - versão 1.01

prog <identificador>

<declaração_ de_ variáveis> <corpo_ do_ algoritmo>

fimprog

// < qualquer comentário para dar nome >(não obrigatório)variavies <declaração_ de_ variáveis><funções>inicio....fiminicio <corpo_ do_ algoritmo>fim

<declaração de variáveis simples><tipo_ da variável> < identificador>;<tipo_ da variável> < identificadores separados por vírgulas> ;tipos: int, real, string, logico

Exemplo:int idade;real peso;

<declaração de variáveis simples><tipo_ da variável> < identificador><tipo_ da variável> < identificadores separados por vírgulas> tipos: numerico, caracter, logicoObservaçã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:variaveisnumerico idade, peso

<tipo_ da variável> < identificador[dim]>;tipos: int, real, string

Exemplo:real pesos[15], notas[15], alturas[15];

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

matriz numerico <identificador>[ <dim1> ]tipo:numericoObservação 1: cada vetor/matriz precisa ser declarado separadamente.Exemplo:variaveismatriz numerico pesos[15]matriz numerico notas[15]matriz numerico alturas[15]

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

2

Page 3: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: ANITA LOPES / GUTO GARCIA

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

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

Não disponível

matriz numerico <identificador>[<dim1> ,<dim2> ]tipo:numericoExemplo:variaveismatriz numerico notas[50,4]

<identificador> formado por letras e algarismos( o 1o é uma letra)Exemplo:real mediaaluno ;

<identificador> formado por letras, algarismos e caracter sublinha _ ( o 1o é uma letra)Exemplo:variaveisnumerico mediaaluno ouvariaveisnumerico media_aluno

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

// comentário de uma linha

imprima <variável>;imprima <lista de variáveis separadas por virgulas> ;imprima <constante>;

escrever <variável>escrever <lista de variáveis separadas por virgulas> escrever <constante>

carcteres de controle/comando usados com imprima:"\n" alimenta linha"\t" tabula (1 / 9 / 17 /25 / 33 /41 / 49 / 57 / 65 / 73 )formatar(<identificador>, < n > )

Não disponíveis

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, colunaObservação: Só são utilizadas 24 linhas e as 80 colunas

<identificador> <- expressão;Exemplo:media <- ( a + b ) / 2;

<identificador> = expressãoExemplo: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.

3

Page 4: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: ANITA LOPES / GUTO GARCIA

se (<condição> ) { comando; ou < seqüência de comandos separados por ;>}senao{ comando; ou < seqüência de comandos separados por ;>}

se <condição> entao comando ou <seqüência de comandos um em cada linha>senao comando ou <seqüência de comandos um em cada linha>fim_se

Não disponível

faca caso caso <expressäo 1>: <bloco-de-comandos 1> caso <expressäo 2>: <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 relacional envolvendo o identificador>; <atribuição ou incremento ou decremento envolvendo o identificador>){ comando; ou < seqüência de comandos separados por ;>}

Exemplo:para( x <- 1 ; x <= 10; x++){ ...}comandos associados:pare;continue;

para <variável> = <expressäo1> ate <expressäo2> passo <expressäo3> comando ou <bloco-de-comandos.>proximo

Observação: o passo<expressäo3> só será obrigatório se for diferente de 1.

Exemplo:para x = 1 ate 10 ...proximo

Não disponíveis

enquanto ( < condição > ){ < bloco de comandos separados por ; > }

faca enquanto < condição > < bloco de comandos um em cada linha > fim_enquanto

faca{ < bloco de comandos separados por ; >

Não disponível

4

Page 5: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: ANITA LOPES / GUTO GARCIA

}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 OPERADORESa % 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> 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ÉRICASsen(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ívelexp(x) número e elevado a x Não disponívellog(x) neperiano logaritmo de x log(x) decimalraiz(x) quadrada raiz de x raiz(x,índice)intreal(x) converte x para real Não disponívelrealint(x) arredonda converte x para inteiro inteiro(x) truncaObservação: Tanto no UAL quanto no ILA, os argumentos das funções trigonométricas precisam estar em radianos.

5

Page 6: ALGORITMOS E COMANDOS

500 ALGORITMOS RESOLVIDOS Autores: ANITA LOPES / GUTO GARCIA

FUNÇÕES STRINGSstrtam(cadeia) nº de caracteres de uma cadeia comprimento(cadeia)strelem(cad,pos) retorna o caracter de cad que se

encontra posição posNão disponível

strprim(cadeia) retorna o primeiro elemento Não disponívelstrresto(cadeia) retornam todos exceto o 1o Não disponívelstrult(cadeia) retorna o último elemento Não disponívelstrnprim(cad,n) retorna os n primeiros Não disponívelstrnresto(cad, n) retorna os elementos da cadeia após

os n primeirosNão disponível

strcopia(cadeia) copia cadeia Não disponívelstrcomp(cad1,cad2)(ordem alfabética)

compara duas cadeias, retornando:igual se forem iguais

menor se cad1 vier antes de cad2maior se cad1 vier depois de cad2

Não disponível

strconcat(str1,str2)

concatena duas strings str1 + str2

CONSTANTES NUMÉRICASpi 3.14159265359 piNão disponível 2.71828182846

(Número Nepperiano)np

Exemplo de um algoritmoUAL - versão 2 ILA - versão 1.01

prog algoritmo110real a, b;imprima "\ndigite 1o numero: ";leia a;imprima "\ndigite 2o numero: "; leia b;se(a == b) { imprima "\niguais"; }senao{ imprima "\ndiferentes"; }imprima "\n";

fimprog

//prog algoritmo110variaveisnumerico a, binicio

limpar escrever "digite 1O numero: " posicionar 1, 19 ler a escrever "digite 2O numero: " posicionar 2, 19 ler b se a = b entao escrever "iguais" senaoescrever "diferentes" fim_se

fim

6