brainstormdeti.files.wordpress.com · Web viewC# C# é uma das linguagens de programação .NET,...
Transcript of brainstormdeti.files.wordpress.com · Web viewC# C# é uma das linguagens de programação .NET,...
Sumário
1 INTRODUÇÃO......................................................................................................4
1.1 OBJETIVO GERAL.....................................................................................................................................51.2 JUSTIFICATIVA..........................................................................................................................................51.3 FERRAMENTAS UTILIZADAS PARA O DESENVOLVIMENTO DO APLICATIVO.............................................5
2 FUNDAMENTOS TEÓRICOS...............................................................................8
2.1 SISTEMAS TUTORES INTELIGENTES (STI’S).............................................................................................82.2 ARQUITETURA CLÁSSICA DOS STIS.........................................................................................................92.3 O USO DE FLUXOGRAMAS COMO FERRAMENTA DE APOIO PARA O ENSINO DE PROGRAMAÇÃO............102.4 APLICAÇÕES MULTIMÍDIA DE INOVAÇÕES TECNOLÓGICAS NO ENSINO DE PROGRAMAÇÃO DE COMPUTADORES..................................................................................................................................................102.5 REVISÃO E DISCUSSÃO DA NORMA ISO 5807 - 1985 (E).....................................................................12
3 DIAGNÓSTICOS BASEADOS EM MODELOS..................................................14
4 DESENVOLVIMENTO DO APLICATIVO MAGIC LOGIC..................................16
4.1 MÓDULO DE INTERAÇÃO COM O USUÁRIO.............................................................................................184.2 MÓDULOS DE AJUDA..............................................................................................................................194.3 MECANISMOS PARA TESTE DE MESA......................................................................................................194.4 MECANISMOS PARA GERAÇÃO DO CÓDIGO FONTE.................................................................................20
5 ESTRUTURA DO APLICATIVO.........................................................................21
5.1 MINI TUTORIAL......................................................................................................................................225.1.1 Help...................................................................................................................................................325.1.2 Configurações do Aplicativo.............................................................................................................325.1.3 Área de Trabalho..............................................................................................................................325.1.4 Construção de um projeto.................................................................................................................355.1.5 Recursos extras.................................................................................................................................38
6 CONCLUSÃO.....................................................................................................40
Referências Bibliográficas.........................................................................................41
1 Introdução
O objetivo principal da disciplina de Lógica de Programação é o aprendizado de
técnicas para resolver problemas computacionais. Essas técnicas consistem em
encandear ações para atingir determinados objetivos. Sendo assim, o aprendizado
dessa disciplina é imprescindível para a formação de um bom programador,
constituindo-se base para o desenvolvimento do aluno em diferentes tipos de
linguagem de programação.
As disciplinas que tratam de introdução à programação, normalmente trazem
muitas dificuldades para os alunos no desenvolvimento de lógica. Os professores
percebendo essa dificuldade geralmente propõem a resolução de muitos exercícios. No
entanto, isso nem sempre é suficiente para resolver o problema.
Este projeto tem por objetivo o desenvolvimento de um ambiente automático de
apoio ao desenvolvimento da lógica de programação, pode de maneira interativa,
auxiliar os usuários a aprendizagem de Lógica de Programação, por meio de
construção de fluxogramas, realização de testes de mesa e geração de códigos fontes,
entre outros.
O aplicativo deve conter um módulo para geração de código fonte a partir de
uma estrutura lógica montada pelo aluno, utilizando os recursos do sistema. Além
disso, deve haver um módulo de ajuda para facilitar a interação, que fornece dicas,
durante o processo de construção de fluxogramas, e possibilita que o usuário teste a
lógica por meio de um módulo de teste de mesa.
4
1.1 Objetivo Geral
Este projeto tem por objetivo a construção de um sistema interativo para apoio
ao processo ensino-aprendizagem de fundamentos da Lógica de Programação,
utilizando representação gráfica (fluxograma).
O aplicativo pode servir de suporte tanto a professores quanto a alunos.
1.2 Justificativa
A aprendizagem da lógica para resolução de um problema é uma etapa
importante para a formação de um profissional da área de informática.
Acreditamos que quando um aprendiz pode visualizar a lógica de resolução para
um problema computacional, essa pode auxiliar a sua aprendizagem. Portanto, uma
ferramenta que fornece elementos gráficos pode, por sua vez, auxiliar esse processo.
1.3 Ferramentas utilizadas para o desenvolvimento do Aplicativo
Os símbolos utilizados para construção de fluxograma são baseados na norma
da ISO 5807:1985 (Revisão e Discussão da Norma ISSO 5807, 1985). O sistema será
desenvolvido em linguagem C# , pois trata-se de uma linguagem simples que é
derivada da linguagem C, portanto dependerá de instalação do Framework 2.0.
Para o desenvolvimento do MiniTutorial, foi utilizado o Flash para
desenvolvimento do projeto utilizamos os controles do Visual Studio, e
axShockwaveFlash, que serão explicados a seguir:
Microsoft Visual Studio 2005 Express Edition
O Microsoft Visual Studio é um conjunto de ferramentas utilizadas para
desenvolvimento de software, de uso tanto por amadores como para corporações.
5
A versão utilizada no projeto: Microsoft Studio 2005 Express Edition é
recomendada para o uso por desenvolvedores iniciantes e também casuais.
Adobe Flash MX
Adobe Flash, é um software primariamente de gráfico vetorial, utilizado
geralmente para a criação de animações interativas e profissionais.
Os arquivos feitos em Flash são comumente utilizados para propaganda
animada (banners), jogos e apresentações dos mais variados tipos utilizando a
tecnologia. Isso graças aos avanços na linguagem ActionScript, que é a linguagem de
programação utilizada em aplicações de arquivos flashes (.swf).
XML (eXtensible Markup Language)
O XML (eXtensible Markup Language) é um padrão W3C para representar a
informação, provendo facilidade de conversão para outros formatos e a separação
entre a estrutura, o conteúdo e a apresentação.
Documentos XML são documentos de texto Unicode estruturadas de maneira
hierárquica a partir de uma raiz.
C#
C# é uma das linguagens de programação .NET, uma linguagem simples,
moderna e orientada a objeto derivada da linguagem C e C++, combinando a alta
produtividade do Visual Basic e do poder do C++.
.NET
A plataforma .NET é uma especificação aberta desenvolvida pela Microsoft, que
permite rodar as aplicações não apenas no ambiente Windows, mas também em outros
6
dispositivos mediante a instalação do Framework.net. O responsável por esta
portabilidade é o CLR (Common Language Runtime), que funciona como a máquina
virtual do Java.
As linguagens .NET entre outras características: possuem , em teoria, o mesmo
código IL (Intermediate Language) após compilado, sendo fortemente tipadas e
possuindo uma forma única de acesso a dados.
7
2 Fundamentos Teóricos
2.1 Sistemas Tutores Inteligentes (STI’s)
O desenvolvimento deste projeto leva em consideração os fundamentos teóricos
dos STI’s, principalmente os STI’s voltados para programação, os quais serão descritos
a seguir.
O estudo e o desenvolvimento de ferramentas computacionais voltadas para
educação vêm sendo realizados desde a década de 50 quando foram apresentados os
softwares educacionais chamados Instruções Assistidas por Computador (CAI).
(Pianesso, A.C.F, Castanho, 2003)
Esses sistemas pertencem à categoria de softwares educacionais, que se
baseiam na aprendizagem interativa. Nessa categoria, o centro do processo ensino-
aprendizagem é o aluno que passa do papel passivo para o ativo. Sendo assim, o
desenvolvimento de STI's capazes de interagir com o aluno, é fundamental, pois a
partir dessa interação será possível selecionar e aplicar técnicas pedagógicas mais
adequadas.
Os primeiros sistemas educacionais que apresentaram certo grau de
"inteligência" foram chamados “CAI’s” Inteligentes ou “ICAI”, do inglês. Os ICAI’s são
sistemas que possuem uma rica representação do seu domínio de conhecimento e
permitem utilizá-los de acordo com as características do aluno, os sistemas são
capazes de personalizar a instrução, tornando a apresentação apropriada ao seu nível
de conhecimento e com o seu modo de aprendizagem. (Chaiben, H., 2002)
8
O estudo de STI’s ganhou novo fôlego por serem ferramentas que podem ser
utilizadas também para ensino a distância e transmitir conhecimento via Internet.
Constituem-se de ferramentas que podem acrescentar mais valias ao processo de
ensino. (Sistemas Tutores Inteligentes Uma Visão Geral)
A Internet é um local ideal para disponibilizar os sistemas tutores, e proporcionar
a educação a distância por computador. Como foi dito anteriormente a característica
que aumenta a eficiência do ensino com STI’s é a sua adaptação ao utilizador, no caso
o aluno. Esta operação é feita sobre um domínio de incerteza, não se sabe ao inicio, o
que o utilizador sabe, nem quais as suas preferências. A Inteligência Artificial desde
cedo tenta tratar esse problema da incerteza: As possíveis soluções são sistemas
especialistas, planejamento, redes bayesianas, entre outros.
2.2 Arquitetura Clássica dos STIs A Arquitetura Clássica dos STI’s é formada pelos seguintes módulos: modelo do
especialista, modelo do estudante, modelo pedagógico e modelo da interface
(Sistemas Tutores Inteligentes Uma Visão Geral).
Modelo especialista: armazena o conhecimento a ser apresentado, ou seja,
contem as informações de um determinado domínio que representa o
conhecimento de um especialista. Também é utilizado como padrão para
avaliar o desempenho do estudante;
Modelo do Estudante: contém os conhecimentos e as capacidades do
conhecimento do estudante, ou seja, o comportamento de aprendizado do
aluno;
9
Modelo Pedagógico: é o módulo responsável pela estrutura didática e
pedagógica dos STIs, ou seja, este módulo contém o conhecimento
necessário para tomar decisões sobre qual ou quais maneiras de ensino
deverão ser utilizadas nos STI’s;
Modelo de Interface: este módulo é a comunicação entre o sistema e o
estudante. A interface deve ser inteligente e capaz de adaptar-se às
diferentes necessidades de cada usuário.
2.3 O uso de fluxogramas como ferramenta de apoio para o ensino de
Programação
Uma ferramenta de apoio para o ensino de Programação tem por objetivo o
desenvolvimento do aluno no que se refere à capacidade de análise e resolução de
problemas descrevendo-os em algoritmos.
Como a lógica de programação tem um alto grau de abstração, muitas vezes os
alunos não conseguem visualizar o comportamento do seu algoritmo, ou seja, como ele
seria executado no computador. Sendo assim, os fluxogramas podem auxiliar o
entendimento do aluno, pois fluxogramas fazem uso de símbolos geométricos que
representam estruturas de programas e são conectados entre si por arestas dirigidas.
2.4 Aplicações Multimídia de Inovações Tecnológicas no Ensino de
Programação de Computadores
No Brasil, a educação para a programação de computadores tem sido realizada
nos cursos superiores na área de computação, cursos médios e profissionalizantes,
ensino informal de Informática e por iniciativas próprias de pessoas para aprenderem
10
sozinhas. Mesmo com todas essas modalidades, programar bem ainda é uma atividade
executada por pouquíssimas pessoas.
O uso da multimídia pode ajudar a melhorar o argumento didático,
proporcionando maior produtividade ao aluno nas práticas laboratoriais, eliminando
assim as chamadas barreiras de aprendizagem (RIBEIRO, Pedro, 2002 ).
Entre as vantagens na melhoria do ensino com o uso de inovações tecnológicas,
podemos citar:
O princípio do pensamento sócio-construtivista deve ser aplicado já que tem
como essência o uso do concreto para facilitar a abstração e a participação
ativa do aluno na construção do pensamento;
As operações realizadas por um computador são invisíveis ao olho humano
e por isso utiliza-se a multimídia para criar ambientes de aprendizagem;
A construção de algoritmos computacionais requer base de conhecimento
sobre o principio de funcionamento do computador durante a execução de
um programa;
Os recursos audiovisuais e a multimídia exercem forte influencia no processo
de aquisição de conhecimento;
A melhoria de qualidade do ensino requer a utilização de metodologias e
inovação tecnológica com multimídia;
Os fatores que influenciam a evasão na disciplina têm como principal
responsável a pratica pedagógica. (Aplicações Multimídia em Inovações
Tecnológicas [2]).
11
2.5 Revisão e Discussão da Norma ISO 5807 - 1985 (E)
A norma ISO 5807-1985 (E) para a definição e elaboração de diagramas de
fluxos para a área de desenvolvimento e projeto de software é a consolidação de
duas normas anteriores: ISO 1028 e ISO 2636 (ISO 5807, 1985, p.1), ambas
publicadas em 1973.
Segundo informações da própria norma ISO 5807-1985 (E), a definição e
elaboração de diagramas para a representação gráfica da linha de raciocínio lógico
a ser adotada não devem restringir o uso de aplicações ou soluções particulares,
uma vez que pode ocorrer a existência de vários tipos de soluções para os vários
problemas de processamento de informação (ISO 5807, 1985, p.1).
Os símbolos gráficos utilizados com os diagramas de fluxo de programa e
diagrama de fluxo de dados possuem como característica demonstrar de forma clara
a linha de raciocínio lógico utilizada por um programador de computadores, de forma
que seja fácil a quem não efetuou a tarefa de programação entender o que se
pretende que aquele programa faça.
Um dos pontos que pode gerar conflito de definição entre os profissionais de
desenvolvimento de software no nível de programação de computadores e no nível
de análise de sistemas é o fato de utilizar o termo fluxograma para generalizar o uso
de toda e qualquer forma de representação gráfica de atividades relacionadas ao
projeto de software.
No contexto prático das atividades de documentação gráfica da linha de
raciocínio lógica de um programa, ocorre o fato de parte dos símbolos existentes
para cada categoria de diagramas serem naturalmente utilizados em conjunto.
12
Dessa forma, fica um pouco difícil no projeto lógico de um programa de computador
diferenciar as categorias de símbolos em separado, pois além de estabelecer uma
seqüência de operações a ser executado, um programa necessita efetuar o
tratamento dos dados de entrada e saída.
Os símbolos: dados, processamento, linha, conector são categorizados
segundo a norma da ISSO 5807-1985 (E) como símbolos para a utilização em
diagramas de fluxo de programas e diagrama de fluxo de dados.
13
3 Diagnósticos baseados em modelos
Existem duas diferentes categorias de sistemas para a correção automática de
programas: Tutores Inteligentes de Programação e Sistemas de Depuração de
Programas.
Para o nosso projeto, é aplicável o conceito dos Tutores Inteligentes de
Programação, pois os Tutores Inteligentes de Programação trabalham com programas
escritos por estudantes considerados programadores iniciantes. Geralmente os
programas que são analisados são pequenos e escritos em uma linguagem reduzida.
Para estes sistemas, é feita a suposição de que o aprendizado acontece na interação
do tutor com o estudante no processo de depuração do programa.
Este processo de depuração que permite se obter o diagnóstico de forma
automática do programa construído pelo aluno é uma tarefa complexa e essencial. A
proposta mais utilizada nestes casos é analisar o programa em relação a modelos de
resolução de problemas pré-existentes. Outra proposta é modelar o programa incorreto
do aluno e fazer inferências sobre ele.
As seguintes técnicas são utilizadas pelos Tutores Inteligentes de Programação
para obter diagnóstico quanto à corretude dos programas:
Verificação com respeito à especificação: Compara o programa real com
uma especificação formal existente (supondo que a intenção do
programador foi a de implementar a especificação em referência).
Verificação com respeito ao conhecimento da linguagem: O conhecimento
é geralmente com relação às restrições da linguagem. Este tipo de
14
depuração procura um pedaço de código que não obedece algum
conhecimento da linguagem de programação
O problema das técnicas descritas anteriormente é que as mesmas são
aplicáveis somente a pequenos programas nos quais o custo da implementação não
fique muito alto em termos computacionais.
15
4 Desenvolvimento do Aplicativo Magic Logic
Para a construção desse aplicativo, serão construídos módulos integrados que
devem cobrir todo o processo de construção de um programa: montagem de
fluxograma, realização de testes de mesa e geração do código fonte. Além disso, o
aplicativo contém um Mini Tutorial para o aluno.
Após a construção do fluxograma, esse pode ser testado, utilizando um Teste de
Mesa, que significa seguir as instruções do fluxograma de maneira precisa para
verificar se o procedimento utilizado está correto ou não, a Figura 1 ilustra a tela do
aplicativo Magic Logic com todos os seus componentes.
Figura 1:Aplicativo Magic Logic
A primeira questão que o grupo pensou para o desenvolvimento do aplicativo foi:
Qual seria uma forma alternativa de ensinar a lógica de programação?
Normalmente, a lógica é ensinada a partir de algoritmos, mais simples até os
mais complexos, de forma gradual. Existem várias ferramentas para ensinar lógica de
programação, tais como português estruturado, fluxograma, linguagem de
16
programação específica, entre outros. Para uso em nosso aplicativo, escolhemos o
fluxograma, pois acreditamos que suas formas gráficas podem facilitar a visualização e
conseqüentemente a aprendizagem. O uso de fluxogramas exige o conhecimento de
cada um de seus símbolos, porém, isso pode ser menos complexo do que a sintaxe de
uma linguagem de programação específica, por exemplo, a linguagem C, pois uma
linguagem de programação específica para o aprendizado de algoritmos pode, muitas
vezes, ser um obstáculo, pois exige o conhecimento de sua sintaxe.
É importante salientar que por um lado, o aprendizado de lógica de programação
é diferente do aprendizado de uma linguagem de programação e o uso de uma
linguagem de programação para aprendizado da lógica de programação pode causar
essa confusão. Por outro lado, o aprendizado da lógica utilizando uma linguagem de
programação específica pode apresentar vantagens, como por exemplo, o aprendizado
de linguagem como efeito colateral do aprendizado de lógica.
Pensando nisso, desenvolvemos uma funcionalidade de geração do código fonte
na linguagem C, que é uma das linguagens mais utilizadas no ensino de linguagens de
programação. Com essas funcionalidades, o usuário pode visualizar o código em C
gerado a partir do fluxograma que foi desenvolvido.
Diante dessa circunstância, surgiu a seguinte questão:
Quais recursos de interação disponibilizam essas formalidades?
A princípio, quando iniciamos o desenvolvimento do aplicativo, pensávamos em
colocar um recurso de áudio como um dos pontos principais de interação com o
usuário, ele seria usado tanto no desenvolvimento do fluxograma quanto no acesso à
ajuda e também poderia ser habilitado ou não, conforme o usuário desejasse.
17
Com o trabalho já em desenvolvimento, percebemos que o recurso de áudio
ficaria redundante1, pois o local de aplicação desse recurso dentro do sistema acabaria
poluindo o mesmo e tirando a atenção do usuário.
Optamos então em retirar esse recurso do aplicativo e manter a ajuda interativa
(mensagens durante a construção do fluxograma) e as legendas sobre as
funcionalidades da ferramenta de forma a facilitar a usabilidade sem poluir o ambiente
para que o aluno possa concentrar-se nos objetivos principais.
4.1 Módulo de interação com o usuárioOs mecanismos de interação com o usuário, que são as formas pelas quais o
sistema reagirá às suas solicitações, foram planejados para ter uma boa usabilidade,
deixando o sistema simples e completo.
Ao iniciar o aplicativo, o usuário tem todas as ferramentas necessárias ao seu
alcance, sem precisar abrir várias janelas para obter o resultado esperado.
Um dos pontos chaves na construção do aplicativo foi a forma como o usuário
deve construir o fluxograma na tela e de que forma restringir o seu campo de trabalho
para evitar erros. Com esse objetivo em mente, retiramos possibilidades que levavam a
muitos cliques, por exemplo: a idéia inicial era o usuário adicionar um símbolo com o
duplo clique em uma lista e o sistema o posicionaria automaticamente na tela. A idéia
parecia boa, mas esbarramos no momento em que o usuário tivesse de excluir ou
adicionar um novo controle: seria necessário mover manualmente muitas peças nessa
lista, o que causaria muitos cliques e possivelmente até uma lentidão devida à
quantidade de operações necessárias a cada clique. Portanto optamos por usar
1 Resultar; reverter; sobrar.
18
recursos mais simples como o arrastar e soltar dos símbolos, assim o usuário
consegue o mesmo efeito de forma mais livre e sem complicação.
4.2 Módulos de ajuda
Para facilitar o uso da ferramenta pelo usuário desenvolvemos mecanismos de
ajuda. O mecanismo de ajuda envolve legendas sobre cada um dos símbolos do
fluxograma até mensagens de alerta e a parte da ajuda estática, nomeada mini
tutoriais, na qual são encontrados conceitos utilizados fluxograma, algoritmos e da
linguagem C.
Além disso, o sistema possui uma ajuda para que o usuário utilize como guia,
quando precisar relembrar para que utilizar um botão, por exemplo.
4.3 Mecanismos para teste de mesa
O teste de mesa é utilizado para testar um algoritmo passo a passo para saber
se a sua execução atinge o objetivo esperado.
Para esse teste, escolhemos a maneira habitual que é a conferência dos valores
das variáveis a cada passo da execução do algoritmo.
O aplicativo utiliza-se de recursos gráficos durante esse processo para que o
usuário possa acompanhar o que está ocorrendo no andamento do programa por ele
escrito.
Antes de dar inicio ao teste de mesa o aplicativo faz a verificação de erros na
construção do fluxograma, de tal forma que os problemas ai encontrados já são
notificados ao usuário que deve corrigi-los antes de poder iniciar o teste de mesa.
19
A Figura 2 ilustra um exemplo de teste de mesa que se encontra disponível em
um dos mini tutoriais, assim o aluno pode entender como funciona e assimilar com o
seu fluxograma.
Figura 2.: Ajuda – Teste de mesa
4.4 Mecanismos para geração do código fonteMagic Logic permite a geração de código fonte em linguagem C por meio de um
fluxograma desenhado dentro das regras básicas de construção, tais como não existir
um símbolo sem ligações.
Enquanto o usuário vai construindo o fluxograma o sistema armazena os dados
que necessita para gerar o código em classes bem definidas.
Essas classes armazenam as características dos símbolos, tais como
posicionamento na tela, propriedades (operação, se é inicio ou fim, mensagem de
exibição), comentários a serem inseridos no código fonte, entre outras.
Armazenam as variáveis utilizadas no decorrer do algoritmo. Armazenam,
também, a estrutura de ligação entre os controles de origem e destino, da seguinte
maneira:
20
Símbolo de Inicio: Da origem a apenas um símbolo e não pode ser
destino de outros símbolos.
Símbolo de Fim: Pode ser destino de diversos símbolos e não pode ser
origem de nenhum símbolo.
Símbolo de Entrada Manual, Saída de Dados, Processo e Loop: Pode ser
destino de mais de um símbolo e só dá origem a um símbolo.
Símbolo de Decisão: Pode ser destino de mais de um símbolo e pode dar
origem a dois símbolos (SIM e NÃO).
Sempre que o usuário tentar realizar alguma ligação invalida o sistema exibe
uma mensagem informativa de erro.
Por meio dessa estrutura o sistema consegue mapear onde inicia e onde termina
o código fonte do fluxograma.
5 Estrutura do Aplicativo
De acordo com as discussões feitas no Capítulo 3, foi elaborada uma estrutura
para o aplicativo Magic Logic. O aplicativo é descrito a seguir.
A Figura 3 mostra a tela inicial do aplicativo Magic Logic. Enquanto ele aparece,
o sistema está carregando informações necessárias tais para a sua execução.
21
Figura 3.: Abertura
5.1 Mini TutorialO mini tutorial contém como conteúdo informações referentes a disciplina de
introdução à lógica de programação.
As figuras 4 e 5 ilustram a tela inicial de ajuda e o menu inicial, respectivamente.
Nesse sub menu pode-se visualizar textos explicativos sobre algoritmo, fluxograma e
linguagem C.
Figura 4: Tela inicial Ajuda Figura 5.: Menu inicial Ajuda
Após a escolha de um assunto, uma outra tela será exibida e nela será
apresentada os pontos principais desse tema, conforme exibido nas Figuras 6 e 7.
22
Figura 6: Menu Algoritmo Ajuda Figura 7: Item inicial ajuda
A seguir, é mostrado o conteúdo explicativo de alguns itens presentes no Mini
Tutorial:
Algoritmo
Um algoritmo é formalmente uma seqüencia finita de passos que levam à
execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma
seqüencia de instruções que dão cabo de uma meta específica.
Como exemplos de algoritmos, podemos citar os manuais de aparelhos
eletrônicos, como um videocassete, que explicam passo-a-passo como, por exemplo,
gravar um evento. Até mesmo as coisas mais simples, podem ser descritas por
seqüencias lógicas.
Regras para construção de algoritmos
Para escrever um algoritmo, é necessário descrever a seqüencia de instruções
de maneira simples. Essas instruções não podem ser redundantes nem subjetivas na
sua definição, devem ser claras e precisas. Para isso tem-se as seguintes regras:
o Usar somente um verbo por frase
o Usar frases curtas e simples
23
o Imaginar que se está desenvolvendo um algoritmo para pessoas
que não trabalham com informática.
A Figura 8 ilustra um exemplo de algoritmo que é utilizado no mini tutorial para o
melhor entendimento do conceito explicado nos demais itens do menu.
Figura 8: Exemplo de algoritmo
Fluxograma
Fluxograma é um tipo de diagrama e pode ser entendido como uma
representação esquemática de um processo, muitas vezes feito utilizando-se gráficos
que ilustram de forma descomplicada a transição de informações entre os elementos
que o compõem. Podemos entendê-lo, na prática, como a documentação dos passos
necessários para a execução de um processo qualquer. É uma das Sete Ferramentas
da Qualidade. Muito utilizada em fábricas e indústrias para a organização de produtos e
processos.
Fluxograma serve para demonstrar os seguintes aspectos:
24
o Quais operações são realizadas
o Onde são realizadas as operações
o Quem as executa
o Quais as entradas e saídas
o Qual o fluxo das informações
o Quais os recursos empregados
o Quais os custos totais e parciais
o Qual o volume de trabalho
o Qual o tempo de execução: parcial e total
A Figura 9 ilustra detalhadamente como fica um fluxograma completo, com seus
principais símbolos como entrada de dados, decisão e exibição em vídeo dos valores
resultantes da operação realizada.
25
Figura 9: Exemplo de fluxograma
Simbologia
Não há um consenso para todos os símbolos aplicados na elaboração de
fluxogramas, mas o mais comum é utilizar a simbologia ANSI desenvolvida para
Análise de Sistemas. Na Tabela 1 encontram-se os símbolos para cada fase, operação
ou objeto encontrados em um fluxograma. Quando aparecem mais de um símbolo
significa que são variantes aceitáveis para o mesmo significado, porém a ordem em
que se apresentam indica sua adequação ou seja, o símbolo que aparece primeiro (à
esquerda) é mais adequado ou mais utilizado.
26
Tabela 1: Simbologia do fluxograma.
27
Teste de Mesa
Após o desenvolvimento de um algoritmo ele deverá sempre ser testado. Esse
teste é chamado teste de mesa, que significa seguir as instruções do algoritmo de
maneira precisa para verificar se o procedimento utilizado está correto ou não.
O teste de mesa é descrito como uma lição ao aluno, na qual é possível ver,
passo a passo, as alterações nos valores das variáveis durante a execução de um
algoritmo, conforme mostra a Figura 10.
Figura 10: tela do teste de mesa do mini tutorial
Linguagem C
As linguagens surgem e desaparecem, mas a linguagem C permanece. Foi o
coração do desenvolvimento do sistema operacional UNIX nos anos 70, foi centro da
revolução dos microcomputadores nos anos 80 e, quando surgiram a linguagem C++,
Delphi, Java e muitas outras, a linguagem C continuou fiel à sua própria natureza.
Operadores
Operadores Relacionais
o Maior que (>)
28
o Menor que (<)
o Maior ou Igual (>=)
o Menor ou Igual (<=)
o Igual (=)
o Diferente (!=)
Operadores Aritméticos
o Adição (+)
o Subtração (-)
o Multiplicação (*)
o Divisão (/)
Operadores Especiais
o % = Devolve o resto da divisão entre 2 números inteiros
Operadores Lógicos
o E (&&) = Devolve verdadeiro se ambas as partes forem
verdadeiras
o OU (||) = Basta que uma parte seja verdadeira para retornar
verdadeira
o NÃO (!) = Inverte o estado de verdadeiro passa para falso e vice-
versa
29
Variáveis
Variáveis são endereços de memória destinados a armazenar informações
temporariamente.
Variáveis de entrada: Armazenam informações fornecidas por um meio externo,
normalmente usuários ou discos. Variáveis de saída: Armazenam dados processados
como resultados.
O nome das variáveis pode ser qualquer palavra que não seja uma palavra
chave da linguagem.
o É possível conter um número na palavra: Casa1
o Não é aceitável iniciar com um número: 1casa (errado)
o Não se pode utilizar: { ( + - * / ; . , ?, entre outros
As seguintes palavras, conhecidas como palavras reservadas, já têm um
significado na linguagem C e por esse motivo não podem ser utilizadas como nome de
variáveis:
auto double int struct
break enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Tipos de Variáveis
30
TIPO VALOR ARMAZENADO INTERVALO TAMANHO (bytes)
int números inteiros positivos e negativos -32.768 a 32.767 2
char caracteres e números inteiros positivos e negativos -128 a 127 1
floatnúmeros em ponto flutuante positivos e negativos com precisão simples
3.4E-38 a 3.4E+38 4
doublenúmeros em ponto flutuante positivos e negativos com precisão dupla
-1.7E-308 a 1.7E+308 8
unsigned int números inteiros positivos 0 a 65.535 2
unsigned char caracteres e números inteiros positivos 0 a 255 1
long int números inteiros positivos e negativos
-2.147.483.648 a 2.147.483.647 4
unsigned long int números inteiros positivos 0 a 4.292.967.265 4
Estruturas de Controle
Os comandos de controle de fluxo são utilizados para definir o fluxo de execução
do programa e podem ser agrupados em comandos de laço e de decisão
o if – A expressão, na condição, será avaliada. Se ela for falsa (F),
a declaração não será executada. Se a condição for verdadeira (V) a
declaração será executada.
o else – Podemos pensar no comando else como sendo um
complemento do comando IF. O comando IF completo tem a seguinte forma
geral:
Sintaxe: if (condição) comando;
else comando;
31
o switch – Substitui o aninhamento IF-else-if. O computador testa
uma variável sucessivamente contra uma lista de valores. Sintaxe:
switch (variável) {Case constante1:
Sequência de comandosbreak;
Case constante2:Sequência de comandosbreak;
Default:Sequência de comandos
}
o for – faz o incremento um número determinando de vezes e de
acordo com determinadas condições. Sintaxe:
for (inicialização; condição; incremento)Comando
o while – enquanto uma condição ocorre, repete. Sintaxe:
while (condição)Comando;
o do – while – repete algo enquanto uma condição ocorre.
Sintaxe:
do{Comando;} while (condição);
5.1.1 Help
O help é utilizado para apoio ao usuário na utilização da ferramenta Magic Logic.
Esta tela apresenta explicações interativas sobre os itens do sistema, tais como
botões, menus e funcionalidades, alem de simular graficamente a utilização de alguns
itens.
32
5.1.2 Configurações do Aplicativo
A configuração do aplicativo permite que o usuário personalize algumas
características da apresentação do sistema da forma que lhe agradar. Segue algumas
das opções disponibilizadas para personalização do usuário:
Fonte dos objetos da área de trabalho;
Cor dos textos;
Cores de fundo;
Cor dos controles no teste de mesa;
Ativar / desativar as legendas dos símbolos;
Habilitar / desabilitar mensagens de alerta.
5.1.3 Área de Trabalho
Após a abertura essa é a área de trabalho do usuário, onde será criado o
fluxograma, conforme Figura 11.
Figura 11.: Área de trabalho
A tela inicial do aplicativo é composta por:
33
Barra de Menu
A Barra de menu possui os controles para a utilização da ferramenta Magic
Logic, conforme ilustrado na Figura 12. Com os controles podemos criar um novo
projeto, salvar o projeto, gerar código fonte, entre outros.
Figura 12.: Barra de menu
Caixa de Controles
Na área de controles estão dispostos os símbolos que permitem a construção do
fluxograma, cada um destes símbolos possuem legendas que possuem uma definição
sobre eles. Para criar um novo símbolo no fluxograma é preciso que o usuário clique
sobre o símbolo que irá utilizar e arraste até a área de construção do fluxograma. A
Figura 13 ilustra os símbolos para a criação do fluxograma.
Figura 13.: Controles
Caixa de Propriedades
Na área de propriedades o usuário pode alterar as propriedades de um símbolo
selecionado, excluir uma conexão entre dois símbolos e realizar a exclusão de um
símbolo, conforme mostra a Figura 14. Cada símbolo possui as suas propriedades em
particular, mas todas compartilham uma propriedade em comum que é o comentário. O
comentário que o usuário informar é "escrito" no código fonte.
34
Figura 14: Propriedades
Declaração de Variáveis
Na declaração das variáveis, é permitido declarar as variáveis utilizadas no
fluxograma, para cada variável é associado um tipo de dado que pode ser: caractere,
texto, inteiro, decimal ou lógico, como está exemplificado na Figura 15. No momento da
declaração é exibida para o usuário uma mensagem de forma a orientar a melhor
maneira de se declarar uma variável.
Figura 15.: Variáveis
Teste de Mesa
O controle de teste de mesa, conforme a Figura 16, é utilizado para gerenciar a
execução do teste de mesa no fluxograma. Este painel é composto de uma tabela com
duas colunas: a coluna variável, que são as variáveis que foram declaradas pelo
usuário e a coluna valor, que representa o valor da variável em um determinado
instante da execução.
Figura 16.: Teste de mesa
35
5.1.4 Construção de um projeto
Ao escolher um novo projeto são habilitadas algumas opções do menu e da área
de trabalho, tais como Controles, Propriedades, Declaração de Variáveis, Teste de
Mesa, entre outros.
Para iniciar a construção do projeto pode-se utilizar a caixa controles para iniciar
o desenho do fluxograma. Para isso é preciso que o usuário clique sobre o símbolo que
irá utilizar e arraste até a área de trabalho do fluxograma ilustrada na figura 17.
Figura 17.: Exemplo de construção de um fluxograma
Após iniciar a construção do projeto, que pode ser alterado durante o
desenvolvimento do algoritmo, o usuário pode definir as variáveis que serão utilizadas
tanto na geração do código como no próprio preenchimento das propriedades dos
símbolos do fluxograma, conforme ilustra a figura 18
36
Figura 18.: Preenchendo as variáveis e as propriedades do fluxograma
A Figura 18 ilustra também o momento em que o usuário seleciona um dos
símbolos já colocados no ambiente do fluxograma e altera as suas propriedades. Veja
que as variáveis devidamente preenchidas na caixa de variáveis já aparecem na lista
do símbolo de entrada manual. A variável escolhida será utilizada para armazenar a
informação recebida via entrada de teclado no algoritmo.
Com o fluxograma já estruturado é possível que seja feito o Teste de Mesa para
executar o fluxograma passo-a-passo possibilitando a validação da lógica construída.
Ao clicar na opção teste de mesa, o sistema faz validações no fluxograma como,
por exemplo, a verificação da existência de um símbolo inicial e um símbolo final, a a
não existência de poço sem fundo ou geração espontânea nos símbolos do
fluxograma. Se o fluxograma apresentar esses erros o sistema não permite iniciar o
teste de mesa até que o usuário faça as devidas correções.
Caso o fluxograma atenda as regras mínimas para inicio do teste de mesa são
carregadas todas as variáveis que foram declaradas no painel teste de mesa, e sçao
associadas estas variáveis a variáveis auxiliares do aplicativo que permitirão a
37
execução dos passos do fluxograma. O sistema posiciona no símbolo inicial do
fluxograma, que é o símbolo de inicio.
Durante a execução do teste de mesa a coluna valor da variável não pode ser
alterada pelo usuário somente quando o passo da execução do teste de mesa seja
uma entrada de dados manual, neste caso a variável indicada pelo símbolo torna-se
disponível para preenchimento pelo usuário.
Para permitir as opções de avançar, recuar foi preciso guardar no aplicativo
informações para saber quem é a origem e o destino de cada um dos símbolos do
fluxograma.
Figura 19 : Exemplo de teste de mesa
A medida que o teste de mesa avança os símbolos que já foram testados ficam
destacados em azul, conforme ilustra a figura 19, quando se posiciona o teste de mesa
em um determinado símbolo o aplicativo verifica o tipo de símbolo para determinar que
ação que irá ser tomada.
38
É possível ao usuário a geração do código fonte na linguagem C que será
apresentado em um bloco de notas, onde fica fácil para o usuário salvar em outras
extensões ou copiar.
Para isso, para cada símbolo do fluxograma são lidos os dados armazenados
nas classe do no aplicativo, estes dados são convertidos para a sintaxe da linguagem
C de forma a construir cada linha do código.
5.1.5 Recursos extras
O aplicativo Magic Logic conta com recursos extras conforme descrito abaixo:
Permite a criação de um novo projeto conforme descrito no item 3.2.5.
Permite abrir um projeto existente, salvo em um arquivo. Para abrir o
projeto, existe uma rotina que faz a leitura do arquivo do projeto, e a partir dos dados
lidos carrega as informações das variáveis declaradas e dos símbolos utilizados e
realiza, a construção do fluxograma salvo.
Permite salvar o projeto em um arquivo. Os dados do projeto são salvos
em um arquivo XML, que por sua estrutura permite uma organização de forma a
facilitar a recuperação dos dados.
Iniciar o aplicativo Bloco de Notas do Windows. Este aplicativo está a
disposição com o objetivo de possibilitar acesso rápido ao usuário, durante a
construção do fluxograma, para possíveis anotações.
39
Iniciar o aplicativo Calculadora do Windows. Este aplicativo está a
disposição com o objetivo de possibilitar acesso rápido ao usuário, durante a
construção do fluxograma, para possíveis cálculos.
40
6 Conclusão
Com o avanço da Tecnologia da Informação nos últimos tempos, tornou-se
possível o seu uso na área da educação, que é um setor que está, atualmente,
explorando com mais intensidade essas tecnologias. Com isso, os estudos voltados
aos softwares educacionais começaram a evoluir, permitindo que o aluno tenha um
papel mais ativo na interação com o sistema.
Com o desenvolvimento do aplicativo Magic Logic, os alunos iniciantes na área
de Programação, poderão desenvolver com maior facilidade o entendimento de cada
passo feito para a construção de um determinado programa.
41
Referências Bibliográficas
1 - Ferramentas que auxiliam o desenvolvimento da lógica de programação. Disponível em: http://www.inf.furb.br/seminco/2003/artigos/118-vf.pdf. Acesso em 24/3/2008.
2 - Aplicações Multimídia em Inovações Tecnológicas no Ensino de Programação de Computadores; Pedro Ribeiro Barbosa e Alexsandra Félix De Brito 3 - Construção de Abstrações em Lógica de Programação; Mauro M. Mattos, MSc
4 - Revisão e Discussão da Norma ISO 5807 - 1985 (E) Proposta para Padronização Formal da Representação Gráfica da Linha de Raciocínio Lógico Utilizada no Desenvolvimento da Programação de Computadores a ser Definida no Brasil.; José Augusto Navarro Garcia Manzano. Disponível em http://www.manzano.pro.br/alunado/navarro.pdf Acessado em 15/02/2008 5 - Sistemas Tutores Inteligentes Uma Visão Geral; 6 - Aprender a Aprender Sistema tutor Inteligente; Hugo Gamboa 7 - Ferramenta para Apoio ao Ensino de Introdução à Programação; Karly Schubert Vargas e Joyce Martins. Disponível em http://www.inf.furb.br/seminco/2005/artigos/107-vf.pdf Acessado em 20/03/2008. 8 - Experiências no Aprendizado de Algoritmos utilizando um ambiente de aprendizagem; Fabrício Viero de Araújo e Gilse A. Morgental Falkembach. Disponível em http://www.furb.br/seminco/2005/artigos/107-vf.pdf Acessado em 20/03/2008.
9 - Apostila da Disciplina de Algoritmos e Programação; Prof. João Carlos Gluzhttp://www.eraldoluis.pro.br/disciplinas/material_comum/alg_apostila_c_uergs.pdf Acessado em 20/03/2008.
10 – Visual Studio 2005. Disponível em: http:// www.microsoft.com/express/2005. Acessado em 11/08/2008.
11 – Código fonte – Wikipédia, enciclopédia livre. Disponível em: http://pt.wikipedia.org. Acessado em 17/08/2008.
12 – DELGADO, Karina Valdivia. Diagnóstico Baseado em Modelos num Sistema Tutor Inteligente para Programação com Padrões Pedagógicos. Dissertação (Mestrado em Ciência da Computação) – Universidade de São Paulo, São Paulo, 2005.
42