• Nenhum resultado encontrado

Acadêmica: Karly Schubert Vargas Orientadora: Joyce Martins

N/A
N/A
Protected

Academic year: 2021

Share "Acadêmica: Karly Schubert Vargas Orientadora: Joyce Martins"

Copied!
29
0
0

Texto

(1)

Acadêmica:

Karly Schubert Vargas

Orientadora:

(2)

Introdução Objetivos Ensino no computador Linguagens de programação Compiladores Trabalhos correlatos Requisitos

Especificação da ferramenta e da linguagem

Implementação e Operacionalidade da ferramenta Critérios de qualidade

Resultados Conclusão

(3)

Ensino de programação

Despertar a criatividade

Desenvolver a lógica do aluno Representação do algoritmo

Fluxograma Portugol

(4)

Disponibilizar analisadores léxico, sintático e semântico;

Efetuar detecção/tratamento de erros, emitindo mensagens capazes de auxiliar a correção dos algoritmos elaborados;

Possibilitar a execução dos algoritmos passo a passo, com opção para visualizar os valores das variáveis declaradas;

Utilizar os padrões de qualidade para o

(5)

Ensino assistido por computador Tutorial

Aprendizado socialmente distribuído Internet

Ambientes interativos de aprendizagem Modelagem/Simulação

Ambientes de programação Prolog, Logo e Pascal

(6)

LINGUAGENS Declarativa Imperativa Funcional Exemplo: Lisp Lógica Exemplo: Prolog Procedimentos Exemplo: Pascal Objetos Exemplo: Java

(7)

Programa fonte Análise léxica Análise sintática Análise semântica Geração de código Definições regulares BNF Esquemas de tradução Notação polonesa letra: [a-z] identificador:(letra)+ <item> → identificador | numero <item> → identificador #1 | numero #2 (a+b)*c → ab+c* Programa objeto

(8)

Ambiente de Apoio ao Aprendizado de Programação (AMBAP)

Ambiente de Simulação e Animação de Algoritmos (ASA)

Software para o auxílio ao aprendizado de algoritmos

Ferramenta de apoio ao ensino de algoritmos (CIFluxProg)

(9)

Editor de texto

Possuir uma interface seguindo padrões de qualidade

Compilar algoritmos em português e estruturados

Informar erros encontrados Gerar código intermediário

Executar o código intermediário, com opção passo a passo

(10)

TForm TAbout TAcao Exception EAnalysisError TAreaInstrucoes TInterpretador TCompilador TForm TFAbertura TForm TFExecucao TForm TFCompilador TFuncoes TInstrucao ELexicalError TLexico TLinha TMatriz TMatrizes TMemoria TPilha ESemanticError TSemantico TSimbolo TSintatico ESyntaticError TTabela TToken 10..* 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 10..* 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 0..*

(11)

Exception

Classes::EAnalysisError

- token: TToken

+ «constructor» create(string, TToken) + «constructor» create(string) + getMessage() : string + getToken() : TToken Classes::TCompilador + msgDeErro: string + tokenErrado: TToken + semantico: TSemantico - lexico: TLexico - sintatico: TSintatico + chamada(string) Classes::ELexicalError

+ «constructor» create(string, TToken) + «constructor» create(string) Classes::TLexico - input: string - position: integer - endPos: integer + «constructor» create() + «constructor» create(string) + setInput(string) + setPosition(integer) + setEnd(integer) + nextToken() : TToken - nextState(char, integer) : integer - tokenForState(integer) : integer - lookupToken(integer, string) : integer - hasInput() : boolean

- nextChar() : char

Classes::ESemanticError

+ «constructor» create(string, TToken) + «constructor» create(string) Classes::TSemantico + acao: TAcao + «constructor» create() + «destructor» destroy() + executeAction(integer, TToken) Classes::TSintatico - stack: TList - currentToken: TToken - previousToken: TToken - scanner: TLexico - semanticAnalyser: TSemantico + «constructor» create() + «destructor» destroy() + parse(TLexico, TSemantico) - step() : boolean

- pushProduction(integer, integer) : boolean - isTerminal(integer) : boolean

- isNonTerminal(integer) : boolean - isSemanticAction(integer) : boolean

Classes::ESyntaticError

+ «constructor» create(string, TToken) + «constructor» create(string)

Classes::TToken

- id: integer - lexeme: string - position: integer

+ «constructor» create(integer, string, integer) + getId() : integer + getLexeme() : string + getPosition() : integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

(12)

Classes::TAcao + instrucoes: TAreaInstrucoes + tabela: TTabela + tipo: TMatrizes - contexto: char - vt: integer - vp: integer - ponteiro: integer - tupla: array of TSimbolo - verificacaoTipos: array of integer - sinal: char - linha: TLinha - pilha: TPilha - desvio: string + nomeEquivalente(byte) : string + acao1(TToken) + acao105(TToken)

- gerarInstrucao(string, string, integer)

Classes::TAreaInstrucoes

- vetInstrucoes: array of TInstrucao

+ «constructor» create() + adicionarInstrucao(TInstrucao) + alterarInstrucao(integer) : boolean + alterarInstrucao(integer, string) : integer + recuperarInstrucao(integer) : TInstrucao + getTamanho() : integer Classes::TInstrucao - numero: integer - linhaCodigo: integer - codigo: string - parametro: string Classes::TLinha

- vetLinhas: array of integer

+ «constructor» create() + localizar(integer) : integer Classes::TMatriz - nome: string - inicio: integer - fim: integer - categoria: integer

- vetVariaveis: array of TVetor

Classes::TMatrizes

- vetMatrizes: array of TMatriz

+ «constructor» create() + incluirMatriz(TMatriz)

+ recuperarMatriz(integer) : TMatriz + alterarMatriz(string, byte, integer) : boolean + existeMatriz(string) : boolean

+ getTamanhoMatriz() : integer

Classes::TPilha

- pilha: array of integer

+ «constructor» create() + empilhar(integer) + desempilhar() : integer Classes::TSimbolo - nome: string - categoria: integer - atributo: integer - usado: boolean - inicializado: boolean Classes::TTabela

- vetSimbolos: array of TSimbolo

+ «constructor» create()

+ existeSimboloNaoTitulo(string) : boolean + adicionarSimbolo(TSimbolo)

+ alterarSimbolo(string, byte, boolean) : boolean + recuperarSimbolo(integer) : TSimbolo + getTamanho() : integer 1 0..* 1 0..* 1 1 1 1 1 1 1 1 1 1 1 0..*

(13)

TInterpretador - memoria: TMemoria - ponteiro: integer + «constructor» create() + proximaInstrucao() + chamada_rea() + reiniciarExecucao() - andC(TInstrucao) - wrt(TInstrucao)

- verificarCompatibilidade(byte, byte) : boolean TForm

TFExecucao

TMemoria

- memoria: array of string - topo: integer + «constructor» create() + alocar(string, integer) + alterar(string, integer) + desalocar() + recuperar(integer) : string + getTopo() : integer 1 1 1 1

(14)

CONSTANTE_INTEIRO : {DIGITO}+

CONSTANTE_REAL : {DIGITO}+ "." {DIGITO}+ CONSTANTE_LITERAL : ' ([^'\n])* '

COMENTARIO : "{" [^"}"]*"}"

IDENTIFICADOR : {LETRA}({LETRA}|{DIGITO}|"_" )*

<algoritmo> → algoritmo IDENTIFICADOR ; <declaracao_tipo>

<declaracao_variaveis> inicio

<lista_comandos> fim .

(15)

ação#1: Adicionar o nome do algoritmo na tabela de símbolos.

ação#2: Informar a linha onde iniciam os comandos do algoritmo.

ação#3: Gerar a instrução STP (final do algoritmo).

Informar se alguma variável não foi utilizada ou inicializada. <algoritmo> → algoritmo IDENTIFICADOR #1 ;

<declaracao_tipo>

<declaracao_variaveis> inicio #2

<lista_comandos> fim. #3

(16)

ALGORITMO CÓDIGO INTERMEDIÁRIO

ALGORITMO oi_mundo ; INÍCIO

ESCREVA ( 'oi mundo!' ); FIM .

0 LDS 'oi mundo!' 3 1 WRT 0 3 2 STP 0 4

CÓDIGO PARÂMETRO FUNCIONAMENTO

LDS constante Alocar uma posição na memória. Armazenar a constante passada por parâmetro nesta posição.

STP 0 Encerrar a execução.

WRT 0 Escrever na tela o valor armazenado na última posição da memória.

(17)
(18)

procedure TAcao.acao3(token : TToken); ...

begin

gerarInstrucao('STP','0', token.getPosition); for ind:= 0 to tabela.getTamanho-1 do begin

if tabela.recuperarSimbolo(ind).getUsado <> true then

aviso:= 'AVISO: A variável "' + tabela.recuperarSimbolo(ind).getNome + '" não foi utilizada. Ela é necessária?'

else

if (tabela.recuperarSimbolo(ind).getInicializado <> true) then begin aviso:= 'AVISO: A variável "' + tabela.recuperarSimbolo(ind).getNome

+ '" não foi inicializada.'; ...

end; end;

end;

ação#3: Gerar a instrução STP (final do algoritmo).

(19)

procedure TInterpretador.lds(instrucao: TInstrucao); ... begin try constante_sem_aspas:=instrucao.getParametro; memoria.alocar(constante_sem_aspas,memoria.getTopo); ponteiro:=ponteiro+1; proximaInstrucao; except

funcao.imprimirTela('ERRO DURANTE A EXECUÇÃO: Impossível carregar constante

do tipo CADEIA.'); end;

end;

LDS constante Alocar uma posição na memória. Armazenar a constante passada por parâmetro nesta posição.

(20)
(21)
(22)
(23)
(24)
(25)

Possui ajuda; Informa erros; É adequada ao currículo; Possui execução passo a passo; Não perde informações; Fácil leitura; Desperta interesse; Faz uso de cores.

(26)

Aceitação por parte dos alunos e do professor de Introdução à Programação (BCC/FURB)

Trabalhos correlatos

Interface amigável (AMBAP) Portugol (ASA)

Digitação de algoritmos (Software para o auxílio ao aprendizado de algoritmos)

(27)

Desafio do ensino de programação

Ambiente interativo de aprendizagem personalizado

Diagnóstico de erros

(28)

Mensagens e tratamento de erros Registros

Matrizes multidimensionais

Subrotinas (funções e procedimentos) Versão para Linux

(29)

Não é digno de saborear

o mel, aquele que se

afasta da colméia com

medo das picadelas das

abelhas.

Referências

Documentos relacionados

Caso o valor da remuneração negativo estiver incorreto, proceda à devida correção na declaração de remunerações que pretende entregar ou corrija a declaração de remunerações

Consulte as Declarações de Remunerações na Segurança Social Direta em Emprego/Declaração mensal de remunerações/Consultar Declarações de Remunerações&#34;Aceite&#34;

a) conforme estabelecido pela Portaria Conjunta Nº 1 Capes/CNPq, de 12/12/2007, os bolsistas CAPES, matriculados em programas de pós-graduação no país, poderão receber

§ 1º As reuniões ordinárias do Conselho Técnico da DRI, previstas no calendário, deverão ser convocadas por seu Presidente, mediante comunicação escrita aos demais membros e

Neste mês, ainda sob as incertezas da pandemia, incrementamos nossa exposição a setores mais cíclicos da economia brasileira pela nossa expectativa de uma aceleração da

 Foi criado o Fundo Azul, que irá funcionar no âmbito de competências da Ministra do Mar, com a natureza de património autónomo e o objetivo de se constituir como um mecanismo de

Em 11 de dezembro de 2012, foi aprovada pelo Conselho Deliberativo da TELOS a proposta de redução da taxa real de juros atuarial dos planos PBD de 5% para 4,50% e do plano PCD de

Estarão classificados para a segunda etapa os 14 (catorze) primeiros colocados da linha de pesquisa Materiais e Componentes de Construção e os 22 (vinte e dois) primeiros