• Nenhum resultado encontrado

estiglp-11/ csharp e Fsharp 1 Relatório Linguagens de programação 11/12 João Caixinha nº5946

N/A
N/A
Protected

Academic year: 2021

Share "estiglp-11/ csharp e Fsharp 1 Relatório Linguagens de programação 11/12 João Caixinha nº5946"

Copied!
5
0
0

Texto

(1)

Relatório Linguagens de programação 11/12 João Caixinha nº5946

(2)

Resumo - Este relatório relata as soluções encontradas para a criação das aplicações propostas no segundo trabalho de linguagens de programação, recorrendo as linguagens de programação c# e f# e ainda as modificações para a sua segunda versão .

I. INTRODUÇÃO

S

egundo o requerido no enunciado do trabalho prático número 2 da cadeira Linguagens de programação ano lectivo 2011/2012 na escola superior de tecnologia e gestão de beja, pretende-se o desenvolvimento de duas aplicações, uma escrita na linguagem c csharp e outra em f csharp, estas contam com as mesmas funcionalidades, pode-se dividir estas em três fases.

Leitura dos ficheiros csv[1], interação com a base de dados SQLite[2] e geração de estatísticas a partir dos dados armazenados recorrendo a extensão LINQ .

O objectivo será ler registos respeitantes as colocações no ensino superior no ano 2000 até ao ano 2010, estes dados estão disponíveis num conjunto de dez ficheiros csv[1] fornecidos pelo docente.

Após a leitura dos ficheiros as aplicações permitem guardar as informações numa base de dados

SQLite[2] gerida pela aplicação.

As aplicações geram as seguintes estatísticas: • Número de professores

grau/estabelecimento/ano • Número de professores

categoria/estabelecimento/ano • Número de estabelecimentos por ano. • Número de professores por categoria/ano

Este relatório demonstra estas três fazes de desenvolvimento nas duas aplicações.

II. APRESENTAÇÃO DAS APLICAÇÕES

A. Interface gráfica C# e f#

Esta aplicação conta com uma interface gráfica desenvolvida no visual studio 2010, utiliza a biblioteca System.Windows.Forms do .net

framework 3.5[3].

A aplicação conta com duas Forms, a principal constituída por três botões principais:

• “Open csv”- Carrega o ficheiro csv[1] seleccionado num FileDialog para uma DataGrid que possibilita visualizar os registos.

• “Dump to DB”- Permite enviar os dados carregados para a base de dados. Uma vez o processo concluído é visualizado uma mensagem.

• “Statistics” - Mostar a segunda Form , dependendo da opção de estatística selecionada na Form principal através de quatro RadioButtons, será visualizado a estatística pretendida na segunda form. A segunda Form é constituída por quatro ListBox e uma DataGrid.

As ListBox representam por ordem:

• A primeira os diferentes anos inseridos na base de dados, independentemente da estatística selecionada.

• A segunda permite nas duas primeira estatísticas, visualizar os estabelecimentos de ensino num dados ano, este selecionado

(3)

na primeira lista. Na terceira estatística permite visualizar-se a contagem de escolas nos diferentes anos, e ainda na quarta estatística todo as categorias num dado ano. • A terceira permite a visualização dos

diferentes graus e categorias, num dado estabelecimento e ano na primeira e segunda estatística, na terceira não conta com nenhuma funcionalidade e na quarta é utilizada para contar os professores de uma categoria num dado ano.

• A quarta lista é utilizada apenas nas duas primeiras estatísticas, justamente para mostrar a contagem dos professores numa dada categoria ou grau, num dado ano e estabelecimento de ensino.

III. METODOLOGIA (C# E F#)

A. Leitura de ficheiros csv(c# e f#)

Para permitir a leitura dos registos nos ficheiros

csv[1] de forma correta sem erros devido á

caracteres mal interpretados pelo programa, utilizou-se a biblioteca

LumenWorks.Framework.IO.Csv que permite tratar ficheiros csv[1] de forma correta.

Tomou-se conhecimento desta biblioteca a partir do site

http://www.codeproject.com/KB/database/CsvRead er.aspx.

Esta permite iterar pelos registos do ficheiro, de forma a estruturar melhor a informação criou-se um modelo para os registos para representa os

professores, a Class Teacher, esta classe conta com os atributos: (string Cod, string Name, string

Degree, string Curse, string Catgory, string Regime,

string Year, string TypeEstablishment, string

Establishment ).

No construtor da class, em cada atributo, sendo

estes Strings, substituísse os carácteres ’ por ’’ para evitar erros ao colocar os registos na base de dados. Por cada registo lido no csv[1] é criado um objecto Teacher e guardado na lista Teachers, a lista Teachers é indicada como DataSource do objecto DataGrid de forma a preencher as células da grelha e utilizador ter uma percepção visual da informação.

B. Escrita dos registos na base de dados SQLite (c# e f#)

Para ser possível a interação das aplicações com a base de dados SQLite[2], utilizou-se a driver System.Data.SQLite, a qual esta disponível no site

http://www.sqlite.org/download.html.

C. Criação do controlador para a base de dados (c# e f#)

Para lidar com a base de dados foi criada a class SQLHandler que utiliza a driver para fazer ligação á base de dados.

Esta conta com métodos para:

• Criação da base de dados (construtor) • Criação de tabelas (createTable)

• Inserção de dados nas tabelas (insertData) • Leituras dos registos armazenados (getData)

D. Fluxo lógico para inserção de dados (c# e f#)

• O primeiro passo é a criação da base de dados e tabela, criou-se o método createTable que utilizando a ligação cria a tabela caso esta não exista.

• É enviada a lista Teachers para o método insertData, este por sua vez inicia uma transação e insere os dados de cada

professor representados por classes Teacher, na qual se alterou o método ToString() para retornar uma string com os todos atributos da instancia no formato SQL[4].

(4)

Quando o processo esta completo é mostrado uma caixa de mensagem a indicar essa informação.

E. Janela de estatísticas (C#)

Para ser possível gerar as estatísticas, ao seleciona-se uma estatística, é lido todos os registos

armazenados e estes são guardados numa lista genérica do tipo Teacher, para desta forma permitir a utilização do LINQ[5].

Para preencher as ListBox utilizou-se as seguintes técnicas:

1. Para visualizar-se os diferentes anos na primeira ListBox criou-se o método getYears(ListBox list), recorrendo ao

LINQ[5] este seleciona todos os campos

“Year” nos objetos Teacher da lista

Teachers e agrupa os por “Year”, obtendo-se todos os diferentes. De seguida inseridos na primeira ListBox nominada Years.

2. Para preencher a lista de estabelecimentos, criou-se o método getEstablishments(string year, ListBox list) e utilizou-se o LINQ[5], para seleccionador todos os Teachers com o campo “Year” igual ao selecionado na primeira lista, e agrupando estes por estabelecimento, obtendo-se desta forma todos os estabelecimentos num dados ano. Isto para a primeira e segunda estatísticas, na terceira utiliza-se o LINQ[5] para contar o numero de escolas nos diferentes anos e na quarta estatística seleciona-se as diferentes categorias independentemente do

estabelecimento, ou seja agrupando-se por categorias.

3. Na primeira e segunda estatística a ListaBox de categorias ou graus,é preenchida através do método getCatOrDegree(string scool, ListBox list) e utilizou-se o LINQ[5] para selecionar todos os registos onde os campos “Year” e “Establishment” sejam iguais aos itens selecionados na primeira e segunda ListBox, agrupando por categoria ou grau . Na terceira não tem funcionalidade, na quarta esta é utilizada para mostrar a

contagem de professores num dado ano e categoria.

4. A grelha de dados(dataGridView), é

preenchida com todos os Teachers com os valores selecionados nas três nos respectivos campos, através do método

getTeachers(string year) , preenchendo a DataGrid com a lista de Teacher resultante. 5. A lista de estatística(Lista 4) é preenchida

através do método getStatistics(String item, ListBox list), este por sua vez testa para todos os itens da lista Years o método getTeachers(string year), como este retorna uma lista de professores, adiciona-se como item á lista de estatísticas, o ano seguido do tamanha da lista.

F. Janela de estatísticas(f#)

Da mesma forma que na aplicação de c#, na janela de estatísticas existem 4 ListBox e uma DataGrid.

1. Para preencher a primeira lista, itera-se por todos o objetos da lista Teachers e se o valor do campo “Ano” não existir na ListBox então é adicionado.

2. Na ListBox de estabelecimentos, o

procedimento é o mesmo, mas a comparação é feita com o campo “estabelecimento” e o campo “Ano” selecionado na lista anterior. Como em c#, esta funciona desta forma para a primeira e segunda estatística, na terceira é preenchida com o numero de

estabelecimentos de ensino por ano armazenados na tabela do SQLite[2].Na quarta opção é preenchida pelas diferentes categorias num dados ano através do methodo getCatgorys().

3. Na ListBox de categorias ou graus, mais uma vez utiliza-se o procedimento anterior, comparado a existência do campo categoria se for o caso ou grau na ListBox. Na terceira estatística esta lista não tem qualquer

(5)

para mostrar a contagem de professores numa dada categoria em todos os anos, isto é possível através do método

countTeachersCatgory().

4. O preenchimento da DataGrid é feito através da criação de uma nova lista temp, que guarda os registos Teacher com os campos iguais aos selecionados nas ListBoxs anteriores. Na quanta opção é feita através do método fillGridForCatgorys()

5. As estatísticas são geradas através da iteração de cada item da lista Anos, contado o

numero de professores com os valores dos campos iguais aos selecionados nas listas, adicionado á lista de estatísticas o ano e a contagem.

IV. CONCLUSÕES

A linguagem C# da Microsoft tem incontestáveis semelhanças á linguagem Java da SUN, contudo verifica-se que esta é mais flexível em termos de usabilidade. Nota-se melhorias em termos de velocidade de compilação e ainda, a utilização do visual studio de monstra grande facilidade de criação de interfaces gráficas.

A linguagem F#, sendo uma linguagem nova, que permite a utilização de

multiparadigma de programação, é bastante fácil de aprender a se desenvolver simples aplicações, pois esta também é baseada em C#, também, de bastante rapidez de

execução, talvez até mais que a C#.

Embora, no visual studio não seja possível criar as interfaces em F# como em C#, não existe grande complexidade na criação das mesmas.

V. REFERENCIAS

1.CSV-Ficheiro com valores separados por vírgulas.

2.SQLite-Formato de base de dados.

3. framework 3.5-Versão do framework utilizado. 4.SQL- Linguagem estruturada para base de dados. 5.LINQ-Linguagem para integração de pesquisas.

VI. BIBLIOGRAFIA LumenWorks.Framework.IO.Csv http://www.codeproject.com/KB/database/CsvRead er.aspx SQLite http://www.sqlite.org/download.html. LINQ http://msdn.microsoft.com/en-us/library/bb308959.aspx Fsharp http://msdn.microsoft.com/en-us/vstudio/hh388569.aspx http://my.safaribooksonline.com/book/programming /microsoft-dotnet/9780470528013/inheritance/overriding#X2lu dGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTk3 ODA0NzA1MjgwMTMvMTI1

Referências

Documentos relacionados

Química - Licenciatura - Integral - 12 vagas 1º Mariana Pacheco da Silva. CAMPUS CAÇAPAVA

Como existe uma grande concentração dos reinternamentos maternos na primeira semana após alta pelo parto, poderá ser interessante considerar como medida futura

Tendo como vetores de orientação principais as Artes Visuais, a Museologia Social, as Teorias Feministas e os Estudos de Género, desenvolvemos com mulheres de casas de abrigo

Na terça-feira (23), saiu a confiança do consumidor da FGV, que mostra queda de 9,8 pontos no mesmo mês, para 68,2 pontos. É o menor valor desde maio de

Esta evolução cambial constitui um dos factores explicativos do aumento do diferencial de inflação em relação à área do euro (1.1 p.p. entre Dezembro de 1997 e Novembro de 1998,

− Situação das ações, pois estas devem ser registradas em planos de ação, que vão conter data de abertura do registro, responsável pela ação e prazo para solução do problema,

O Snoezelen também pode ser conhecido por Estimulação Multissensorial (MSE), segundo King (1993), uma das abordagens de tratamentos disponíveis para pessoas com

A análise do fluxo venoso pulmonar foi realizada durante o período de apnéia e na presença de movimentos respiratórios fetais, visando avaliar a influência do fenômeno