Tutorial do Interpretador de Linguagem Algorítmica (ILA)



Documentos relacionados
Conceitos básicos da linguagem C

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Estruturas de Repetição

Algoritmos com VisuAlg

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Introdução a Algoritmos Parte 04

Linguagem algorítmica: Portugol

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

INTRODUÇÃO À LINGUAGEM C++

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

MANIPULAÇÃO DE STRINGS

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

AULA 12 FUNÇÕES Disciplina: Algoritmos e POO Professora: Alba Lopes alba.lopes@ifrn.edu.br

Algoritmo e Programação

Convertendo Algoritmos para a Linguagem C

Componentes da linguagem C++

TÉCNICAS DE PROGRAMAÇÃO

7. Estrutura de Decisão

Unidade 4: Planilhas eletrônicas

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Programação: Estruturas de seleção

Capítulo 5. ARQUIVOS E FUNÇÕES MATEMÁTICAS INTRÍNSECAS

Estrutura de Dados Básica

UNIDADE 6 - PROGRAMAÇÃO MODULAR

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Capítulo 13. VARIÁVEIS DO TIPO REAL DUPLA

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Potenciação no Conjunto dos Números Inteiros - Z

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

20 Caracteres - Tipo char

Capítulo 12. SUB-ROTINAS

9 Comandos condicionais

Algoritmos e Programação Parte Teórica

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Capítulo 2: Introdução à Linguagem C

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Conversão de Tipos e Arrays

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Variáveis e Comandos de Atribuição

Projeto em Grupo: Parte 2

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Lista de Exercícios Fluxograma, Estruturas de Sequência e Decisão Prof: Yuri Frota

TUTORIAL AMBIENTE WEB PORTUGOL

Linguagem de Programação I

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Grasshopper I. Editor. Índice

MC-102 Aula 17 Strings e Matrizes

Para os demais formatos, o relatório será gerado mas virá com configurações incorretas.

Aula de JavaScript 05/03/10

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Microsoft Access INTRODUÇÃO. Sumário INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO. O que é Banco de Dados?

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Capítulo 15. INICIALIZAÇÃO, TEMPO DE CPU E DOS

JavaScript (ou JScript)

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Microsoft Excel. O que é? Para que serve? É um poderoso programa de folha de cálculo.

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Revisão Aula Anterior Estruturas de Decisão (If e Switch)

Dicas para usar melhor o Word 2007

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Simulado Informática Concurso Correios - IDEAL INFO

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

CURSO DE PROGRAMAÇÃO EM JAVA

Tutorial de Matlab Francesco Franco

Introdução à Lógica de Programação

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

Aluísio Eustáquio da Silva

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

ALGORITMOS E FLUXOGRAMAS

5 Apresentando a linguagem C

Programação Básica em Arduino Aula 2

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Testando e Comparando Valores

OpenOffice Calc Aula 4

Manual do KGeography. Anne-Marie Mahfouf Kushal Das Tradução: Luiz Fernando Ranghetti

Introdução à Lógica de Programação (cont.)

2 echo "PHP e outros.";

Tipos de cores. Entendendo as cores. Imprimindo. Usando cores. Manuseio de papel. Manutenção. Solucionando problemas. Administração.

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Algoritmos e Programação

Portal do Projeto Tempo de Ser

Java Como Programar, 8/E

Reaproveitando algoritmos

UFOP PC-I Prof. Guilherme / Anderson. Operadores Relacionais e Lógicos, Comandos For e While e String

TRABALHANDO COM ARQUIVOS ENTRADAS/SAÍDAS (I/O) DE DADOS

Programação: Tipos, Variáveis e Expressões

KISSsoft 03/2014 Tutorial 6

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

Transcrição:

1 Tutorial do Interpretador de Linguagem Algorítmica (ILA) Preparado por Elvio Leonardo, a partir do tutorial fornecido com o software ILA e do material produzido pelo Prof Marcelo Azambuja I INTRODUÇÃO O software ILA é um interpretador, pequeno e versátil, que permite o teste de algoritmos descritos em português estruturado Este software pode ser obtido gratuitamente a partir da página do responsável por seu desenvolvimento, Prof Sérgio Crespo, no endereço: wwwinfunisinosbr/ crespo/ila/ilahtm Os arquivos para instalação estão compactados e ocupam apenas 97 Kbytes Descompactados, eles ocupam menos de 250 Kbytes, o que permite a execução a partir de um disquete O programa roda em MS-DOS, ou em DOS executando sobre MS-Windows Na medida do possível, é aconselhável a instalação deste software em suas máquinas de trabalho particulares (em casa, no trabalho, etc) para facilitar o desenvolvimento dos trabalhos extra-classe Alternativamente, os estudantes podem utilizar-se das instalações oferecidas pela universidade, como os laboratórios de informática para a graduação VARIAVEIS Definições FUNCAO FUNC1() INICIO FIM FUNCAO FUNC2() INICIO FIM Definições de variáveis, caso as use Opcional usuário, caso as use Opcional Definições das funções de Bloco principal Obrigatório II REGRAS GERAIS Bem vindo ao ILA, o Interpretador de Linguagem Algoritmica, que o auxiliará a demonstrar a praticidade das estruturas algorítmicas abordadas nas disciplinas de ALGORITMOS e ESTRUTURA DE DADOS A estrutura básica de um programa em ILA deve seguir o padrão apresentado na Fig 1 A Declaração de Variáveis Todas as variáveis definidas pelo usuário devem ser declaradas em separado, em um bloco especial denominado VARIAVEIS Podem ser definidas duas classes distintas de variáveis: variáveis simples e compostas (ou indexáveis) B Variáveis Simples numerico <nome>[, <nome> [,<nome>]] logico <nome>[, <nome> [,<nome>]] caracter <nome>[, <nome> [,<nome>]] C Variáveis Compostas matriz numerico <nome>[<expr>[, <expr>]] ] // Algoritmo para criar e imprimir um Fig 1 Estrutura do programa em ILA // vetor de 100 posicoes // ---------------------------------- or, i matriz numerico vet[100] para i=1 ate 100 escrever "Entre com um numero = " posicionar 10, 40 or vet[i] = valor para i=1 ate 100 escrever vet[i] // Algoritmo para criar e imprimir // uma matriz mat(3,3) // -------------------------------, i, j matriz numerico mat[3,3] para i=1 ate 3 para j=1 ate 3 escrever "Digite um valor"

2 posicionar 10, 40 mat[i,j] = val // impressao da matriz - nao formatada para i=1 ate 3 para j=1 ate 3 escrever mat[i,j] D Declaração de Funções Uma chamada à uma função pode ser feita de dentro de uma expressão, ou na forma de uma chamada de subrotina <identificador>([<parâmetro> [, <parâmetro> ]] ) // Algoritmo para ler um nome usando // uma funcao para imprimi-lo // --------------------------------- funcao imprime(nome) // parametro = nome escrever "nome = ", nome // Inicio do algoritmo principal posicionar 5, 10 escrever "Digite um nome: " imprime(nome) // Algoritmo que calcula o fatorial de um // numero usando uma funcao recursiva // -------------------------------------- Variaveis Numerico n Caracter c //------------- Funcao Fat(n) // Funcao recursiva que calcula fatorial Inicio Se n < 0 entao Retornar 0 Senao Se (n = 0) ou (n = 1) entao Retornar 1 Senao Retornar n * Fat(n-1) Fim // Inicio do algoritmo principal Inicio cor 1,3 janela 01, 01, 24, 79 posicionar 02, 02 escrever "CALCULO DE FATORIOAL - RECURSIVO" posicionar 04, 02 escrever "Digite 999 para sair" n = 0 faca enquanto n <> 999 escrever "Digite um n o : " posicionar 10, 26 ler n se n <> 999 entao posicionar 11, 10 escrever "fat(", n, ") e ", Fat(n) Fim_enquanto E Atribuições As atribuições são valores recebidos pelas variáveis definidas pelo usuário <variável> = <expressão>, outro, outro num = 12 outro = 123 num = outro num = outro + num F Operadores A prioridade dos operadores obecede as regras matemáticas Operador Unário número negativo - Operadores Aritméticos potenciação ˆ multiplicação * divisão / adição + subtração - Operadores Lógicos multiplicação (AND) E adição (OU) OU complemento (NOT) NAO Operadores Relacionais maior > menor < igual = diferente <> maior ou igual >= menor ou igual <= Operador de Campos Caracter concatenação + // Concatenar dois campos tipo caracter // em um terceiro // ------------------------------------ caracter pre_nome, sobrenome, nome ler pre_nome ler sobrenome nome = pre_nome + sobrenome escrever "aluno = ", nome

3 G Comentários O simbolo // faz com o que tudo que estiver a sua direita seja ignorado pelo interpretador // Isto e apenas um comentario A FALSO III CONSTANTES Constante lógica com valor falso B NP FALSO Constante numérica com valor do número neperiano (271828182846) C PI NP Constante numérica com o valor de π (314159265359) PI D VERDADEIRO Constante lógica com valor verdadeiro VERDADEIRO A ACOS IV FUNÇÕES MATEMÁTICAS Calcula o arco-cosseno de um número, com a resposta dada em radianos ACOS(<expressão>) // Algoritmo para calcular o arco cosseno de 1 // ------------------------------------------- escrever "Arco-cosseno de 1 = ", ACOS(1) ALEATORIO Devolve um número entre 0 e 1, gerado ao acaso, seguindo a distribuição uniforme ALEATORIO() // Algorítmo que imprime um número aleatório // ----------------------------------------- num = aleatorio() escrever "um numero aletatorio = ", num B ASEN Calcula o arco-seno de um número, com a resposta dada em radianos ASEN(<expressão>) C ATAN Calcula o arco tangente de um número, com a resposta dada em radianos ATAN(<expressão>) D COS Calcula o cosseno de um ângulo expresso em radianos COS(<expressão>) E INTEIRO Extrai de um número qualquer somente a sua parte inteira INTEIRO(<expressão>) // Algoritmo para imprimir um numero // fracionario e sua parte inteira // --------------------------------- num = 31416 escrever "numero fracionario = ", num escrever "parte inteira = ", inteiro(num) F LOG Calcula o logarítmo na base 10 de um número LOG(<expressão>) G RAIZ Calcula a raiz de um número RAIZ(<expr 1>, <expr 2>) onde expr 1 corresponde ao radicando, e expr 2 corresponde ao índice do radical

4 // Algoritmo que extrai a raiz de numero e radical dados // -----------------------------------------------------, resp ler num ler indice resp = raiz(num,indice) escrever "Numero lido = ", num escrever "Raiz ", indice, " = ", resp H RESTO Calcula o resto da divisão de expr 1 por expr 2 RESTO(<expr 1>, <expr 2>) I SEN Calcula o seno de um ângulo expresso em radianos SEN(<expressão>) J TAN Calcula o tangente de um ângulo expresso em radianos TAN(<expressão>) A COR V FUNÇÕES DE ENTRADA E SAÍDA DO ILA Muda o atributo de cor no vídeo COR [<fore>, <back>] onde fore identifica a cor de frente do vídeo (letras, por exemplo); e back identifica a cor de fundo Para ter efeito, este comando deve ser usado antes dos comandos ESCREVER, JANELA e LIMPAR Tabela de Cores 0 preto 1 azul 2 verde 3 ciano 4 vermelho 5 magenta 6 marron 7 cinza 8 preto_intenso 11 azul_intenso 10 verde_intenso 12 ciano_intenso 13 vermelho_intenso 14 magenta_intenso 15 amarelo 16 branco cor cor "preto", "azul" cor 1, 3 cor frente, fundo assume o default preto e branco preto para frente e azul para fundo preto para frente e azul para fundo conteudo das variáveis define cores // Algoritmo para gerar uma cor aleatória no video // ----------------------------------------------- numerico frente, fundo frente = aleatorio() * 10 fundo = aleatorio() * 10 cor frente, fundo esperar(200) B ESCREVER Envia para o dispositivo de saída (por default o vídeo) um texto, uma variável, uma expressão aritmética, ou uma combinação destes ESCREVER [<variável>,] ["<texto>",] [<expressão>] // Algoritmo para ler um nome e numero, // e imprimir: nome e numero elevado ao // quadrado // ------------------------------------ ler numero escrever "Nome = ", nome escrever "Numero = ", num * num C IMPRESSORA Especifica a impressora como dispositivo de saída Este dispositivo é utilizado pelo comando ESCREVER para saída de informação e, para ter efeito, deve ser usado antes do comando ESCREVER IMPRESSORA() // Algoritmo para ler um nome e numero, // e imprimir: nome e numero na impressora // --------------------------------------- impressora() ler numero escrever "Nome = ", nome, " Numero = ", num D JANELA Desenha uma moldura na tela

(lse, cse) POSICIONAR <lin>, <col> onde lin e col correspondem, respectivamente, à linha e à coluna na tela 5 Fig 2 Referências para a tela de vídeo JANELA [<lse>, <cse>, <lid>, <cid>] (lid, cid) onde lse e cse especificam, respectivamente, a linha e a coluna do canto superior esquerdo da área se ser criada; e lid e cid a linha e a coluna do canto inferior direito desta mesma área, conforme ilustrado na Fig 2 Caso lse, cse, lid e cid sejam omitidos, o comando executa com os valores default: JANELA(1,1,24,80) // Algoritmo para criar uma moldura no video // ----------------------------------------- janela 10, 10, 20, 50 E LER Lê uma entrada feita através do teclado coloca-a em uma variável LER(<variável>) F LIMPAR Limpa a área especificada da tela de vídeo LIMPAR [<lse>, <cse>, <lid>, <cid>] onde lse e cse correspondem, respectivamente, a linha e a coluna do canto superior esquerdo da área se ser limpa; e lid e cid a linha e a coluna do canto inferior direito desta mesma área, conforme ilustrado na Fig 2 Caso lse, cse, lid e cid sejam omitidos, o comando executa com os valores default: LIMPA(1,1,24,80) // Algoritmo para todo o video, // escrever uma frase e após // somente a metade inferior // ----------------------------------- escrever "O valor de 7*45 = ", 7 * 45 15, 01, 24, 79 G POSICIONAR Posiciona o cursor na tela de vídeo H VIDEO Especifica a tela de vídeo como dispositivo de saída Este dispositivo é utilizado pelo comando ESCREVER para saída de informação e, para ter efeito, deve ser usado antes do comando ESCREVER O vídeo é o dispositivo default de saída VIDEO() VI FUNÇÕES PARA O TIPO CARACTER A COMPRIMENTO Informa o tamanho (comprimento) de uma variável do tipo caracter COMPRIMENTO(<variável>) // Algoritmo para ler um nome e // imprimir o seu comprimento // ---------------------------- numerico tam tam = comprimento(nome) escrever "Nome lido = ", nome escrever "Tamanho do campo = ", tam B VALOR Converte o conteúdo da variável do tipo caracter var em um valor numérico VALOR(<var>) // Algoritmo que converte uma "string" em numero // --------------------------------------------- caracter string ero string = "12389" numero = valor(string) escrever "Caracter = ", string escrever "Numero = ", numero A FACA CASO VII COMANDOS DE FLUXO Especifica uma estrutura de decisão Provoca o desvio do fluxo do programa dependendo de uma lista de condições O bloco de comandos cuja condição é satisfeita é aquele executado Na hipótese de nenhuma das condições ser satisfeita, então o bloco referente à condição OUTRO_CASO

6 é aquele executado, desde que ele tenha sido declarado FACA CASO CASO <expressão>: CASO <expressão>: OUTRO_CASO [<expressão>]: FIM_CASO // Algoritmo para ler um valor numerico // se igual a 1 entao imprimir o valor // se igual a 2 entao imprimir o dobro // se igual a 3 entäo imprimir o triplo // se igual a 4 entäo imprimir o quadruplo // --------------------------------------- // Primeira Versao // --------------- faca caso caso val=1: escrever "simples = ", val caso val=2: escrever "dobro = ", val * 2 caso val=3: escrever "triplo = ", val * 3 caso val=4: escrever "quadruplo = ", val * 4 _caso // // Segunda Versao // -------------- faca caso caso val=1: escrever "simples = ", val caso val=2: escrever "dobro = ", val * 2 caso val=3: escrever "triplo = ", val * 3 caso val=4: escrever "quadruplo = ", val * 4 outro_caso: escrever "outros casos ", val _caso B FACA ENQUANTO Especifica um laço de repetição Um bloco de comandos é executado repetitivamente enquanto o resultado da condição especificada for verdadeiro FACA ENQUANTO <expressao> FIM_ENQUANTO // Algoritmo para ler um nome e 3 notas // calcular e imprimir nome e media aritmetica // das notas // se o nome for igual a, terminar o algoritmo // ----------------------------------------------- numerico not1, not2, not3, med faca enquanto nome <> "" ler not1 ler not2 ler not3 med = (not1 + not2 + not3) / 3 escrever "nome = ", nome escrever "nota1 = ", not1 escrever "nota2 = ", not2 escrever "nota3 = ", not3 escrever "media = ", med Fim_enquanto C FIM Indica ao interpretador o final da função ou de um bloco de comandos no algorítmo principal FIM // O menor algoritmo em ILA // ------------------------ D INICIO Indica ao interpretador o início da função ou de um bloco de comandos no algorítmo principal INICIO E PARA PROXIMO Especifica um laço de repetição Um bloco de comandos é executado repetitivamente enquanto a variável var for menor que a condição determinada pela expressão final No início, a variável var tem seu valor determinado pela expressão inicial A cada ciclo no laço, o valor de var é incrementado pelo conteúdo expressão incr Desta maneira a execução do laço se repete até que o limite especificado por final é atingido Caso a expressão incr seja omitida, a variável var passa a ter incremento unitário PARA <var> = <inicial> ATE <final> [PASSO <incr>] PROXIMO // Algoritmo para gerar os numeros entre 1 e 10 // -------------------------------------------- numerico i para i=1 ate 10 escrever "numero gerado = ", i

7 // Algoritmo para gerar os numeros pares entre 1 e 25 // -------------------------------------------------- numerico i para i=2 ate 24 passo 2 escrever "numero gerado = ", i F RETORNAR Termina a execução de uma função (subrotina) e retorna um valor, quando este é especificado G SE RETORNAR([<expressão>]) ou RETORNAR <expressão> Especifica uma estrutura de decisão Provoca o desvio do fluxo do programa dependendo da condição especificada por expressão Se a condição é satisfeita, o bloco de comandos referente ao SE é executado; caso contrário, é executado aquele referente ao SENAO A ESPERAR VIII OUTRAS FUNÇÕES Suspende a execução do algorítmo durante o intervalo de tempo especificado em segundos ESPERAR(<expressão>) B TESTEI Habilita a execução simultânea de um depurador durante a interpretação Esta função mostra, durante a execução do programa, na parte inferior da tela, o nome da variável corrente e seu conteúdo Independentemente da habilitação da função TESTEI(), o interpretador gera um arquivo, denominado MESAMAP, que contém informação sobre as variáveis modificadas durante a execução do programa TESTEI() C TESTEF Desabilita a execução simultânea do depurador durante a interpretação TESTEF() SE <expressão> ENTAO SENAO FIM_SE // Algoritmo para ler um valor e, se o valor // for 0, entao imprimir o valor lido // caso contrario, imprimir o valor 10 // ----------------------------------------- se val = 0 entao escrever "valor lido =", val senao escrever 10 // Algoritmo que le um numero e // imprime se ele for maior que 10 // ------------------------------- se val > 10 entao escrever "este numero é maior do 10 => ", val