120 likes | 190 Views
Higher Education Statistic s in C# Language. Linguagens de Programação Docente: Professor Doutor José Jasnau Caeiro Discente: Rafael Montegordo Félix nº 6209. Introdução.
E N D
Higher Education Statisticsin C# Language Linguagens de Programação Docente: Professor Doutor José Jasnau Caeiro Discente: Rafael Montegordo Félix nº 6209
Introdução • Este trabalho tem como objetivo a recolha de dados de uma base de dados SQLite com recurso à Linguagem de Programação C#. • Do ponto de vista académico tem como objetivo a aprendizagem de uma nova linguagem, neste caso o C#, obtenção de conhecimentos sobre a plataforma Microsoft .NET, e também sobre a utilização do SQLite em conjunto com a plataforma ADO.NET, através da utilização da Mono.Data.Sqlite. • O Software desenvolvido deverá também poder ser utilizado tanto no sistema operativo Windows como em Linux.
Linguagem C# • C# é uma linguagem de programação orientada a objetos baseada nas linguagens C++ e Java, e ela é considerada a linguagem símbolo do .NET, por ter sido criada praticamente do zero para funcionar na nova plataforma, sem preocupações de compatibilidade com código existente. • O compilador C# foi o primeiro a ser desenvolvido, e a maior parte das classes da plataforma foram desenvolvidas nesta linguagem.
Frameworks • Microsoft .NET • Microsoft .NET é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado para .NET podem ser executados em qualquer dispositivo que possua um framework de tal plataforma. • A plataforma .NET é executada sobre uma CommonLanguageRuntime - CLR (Ambiente de Execução Independente de Linguagem) interagindo com um Conjunto de Bibliotecas Unificadas (framework). Esta CLR é capaz de executar, atualmente, mais de 20 diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem.
Frameworks • ADO.NET • Consiste num conjunto de classes definidas pela .NET framework (localizadas no namespaceSystem.Data) que pode ser utilizado para aceder aos dados armazenados numa base de dados remota. • O “modelo desconectado” ADO.NET utiliza dois tipos de objetos para aceder à base de dados: os objectosDataset, que podem conter um ou mais Data Table, e os .NET Data Provider. • Pode ser usado para aceder à base de dados para qual há um provedor específico .NET, ou, via um provedor ponte .NET, para o qual existe um provedor específico OLE DB, Driver ODBC, ou Driver JDBC. ADO.NET é algo considerado uma evolução da tecnologia ADO.
Mono.Data.Sqlite • Mono é uma plataforma de software projetado para permitir aos programadores criar facilmente aplicações multiplataforma. É uma implementação open source do Framework da Microsoft .Net com base nos padrões ECMA para C# e CLR. • Esta plataforma contém muitos provedores de dados ADO.NET, neste caso foi então utilizado a Mono.Data.Sqlite, pois a base de dados que foi disponibilizada foi criada com o SGBD SQLite. • Esta Plataforma foi também escolhida pois é também a que oferece mais compatibilidade entre os sistemas operativos Windows e Linux.
Ficheiros • Rebides.cs • Ficheiro principal, contém a inclusão das bibliotecas necessárias para o desenvolvimento dos requisitos, inclui também os métodos requeridos pelo enunciado. Esta classe utiliza objetos DataSave. • DataSave.cs • Este ficheiro contém a classe Datasave, classe que é utilizada pela classe principal. Contém 5 construtores para permitir a criação de objetos diferentes e um override (sobreposição) da função ToString() para imprimir os objectos.
Funções • teacherPerDegreePerY(StreamWriter file, string title) • teacherDIY(StreamWriter file, string title) • listInstPerY(StreamWriter file, string title) • listHDegreePerY(StreamWriter file, string title) • nTPerADegreePerInst(StreamWriter file, string title, string degree) • setOfTPerADegreePerInst(StreamWriter file, string title, string degree) • teacherHirings(StreamWriter file, string title)
Funções • teacherInstChange(StreamWriter file, string title) • promotedTeachers(StreamWriter file, string title) • IDataReaderconnectBD(stringsql) • writePrint(Dictionary<int, List<DataSave>> dic, String title, StreamWriter file) • writePrintString(Dictionary<string, List<DataSave>> dic, String title, StreamWriter file) • writePrintList(List<DataSave> list, String title, StreamWriter file) • writePrintDoubleDic(Dictionary<int, Dictionary<string, List<DataSave>>> dic, String title, StreamWriter file)
Análise • Ao colocar o programa a correr nos dois ambientes, Windows e Linux, verifiquei que o tempo médio de execução no Windows é de 9 minutos e 10 segundos e no Linux o tempo médio de execução é de 3 minutos e 15 segundos. • Infelizmente não tive tempo suficiente para verificar bem o porque desta discrepância tao grande. De qualquer maneira verifiquei que os tempos de acesso a base de dados no Linux são menores que no Windows. • Para futuro trabalho será então verificado e analiso em pormenor o porque de tempos médios tão diferentes visto que o Windows e o sistema base do computador e o Linux está a ser executado numa maquina virtual.
Conclusão • A realização deste trabalho foi muito interessante pois apenas tinha um pequeno conhecimento da linguagem C# e durante o desenvolvimento do mesmo verifiquei que nesta linguagem existem uma quantidade enorme de APIs, de métodos já desenvolvidos e de informação sobre a mesma. • A plataforma Microsoft .Net é impressionante, pois consegue que várias linguagem possam ser executadas em sistemas completamente diferentes, aumentando assim em muito a compatibilidade dos softwares e facilitando muito o trabalho dos programadores, pois em vez de ser necessário criar um software para cada sistema operativo, basta que o software seja criado numa das muitas linguagem suportadas pelo Microsoft .Net e que sejam utilizadas bibliotecas da mesma, para garantir uma boa compatibilidade. • Também não tinha conhecimento da plataforma ADO .Net, que permite trabalhar com inúmeros sistemas de gestão de base de dados, facilitando assim mais uma vez a compatibilidade.
Bibliografia • Wikipédia <http://pt.wikipedia.org/>