Professional Documents
Culture Documents
Escola Superior de Ciência e Tecnologia
Informática de Gestão
Programação 1
2009/2010
Trabalho Prático 2
Joel Ricardo
Docente: Mário António da Costa Santos
09 De Janeiro de 2010
Instituto Superior Politécnico Gaya
Índice
Introdução ....................................................................................................................... 3
Desenvolvimento ............................................................................................................. 4
• Linguagem C# ........................................................................................................... 4
• Desempenho Global ................................................................................................ 5
• Fases de elaboração ................................................................................................. 6
• Explicação do código ................................................................................................ 7
class Program............................................................................................................ 7
public class variaveis ................................................................................................ 9
public class add_util : Form ................................................................................... 10
public class manutencao : Form ............................................................................. 12
public class alteracao : Form .................................................................................. 16
public class entrada : Form ..................................................................................... 18
• Esquema de funções do programa ........................................................................ 19
Conclusões ..................................................................................................................... 20
• Aprendizagem adquirida ....................................................................................... 20
• Dificuldades ultrapassadas .................................................................................... 20
Pág. 2
Instituto Superior Politécnico Gaya
Introdução
Pág. 3
Instituto Superior Politécnico Gaya
Desenvolvimento
• Linguagem C#
nomeou Anders Hejlsberg para criar uma nova linguagem de programação designada
por Cool. Mais tarde, em 2000, a quando da apresentação da plataforma na PDC1, já
terminada e pronta para ser implementada no mercado, a linguagem anteriormente
designada por Cool foi apresentada como C# e assim se começou uma nova filosofia de
linguagens de programação.
Esta famosa linguagem de programação foi desenvolvida por diversos
programadores, mas o seu sucesso no meio profissional é atribuído a Anders que hoje
é um distinto engenheiro da Microsoft. Anders é também conhecido pela criação do
Turbo Pascal e o Delphi.
_________________________________________________________________
Curiosidade
Muitos pensam que o # do C# é a sobreposição do símbolo +, dando a ideia que é uma
continuação do C++, mas veio‐se a saber que esta ideia estava errada. O real sinal não era o # mas sim
#. Este ultimo è um símbolo musical que aumenta em meio‐tom uma nota musical. Devido a
2
limitações de tabelas alfanuméricas, ficou normalizado pela ECMA ficaria C#.
_________________________________________________________________
Desenvolvida quase do zero, esta linguagem possui um vasto leque de
bibliotecas e a sua compatibilidade é enorme em relação aos sistemas operativos.
Funcionando numa lógica hierárquica, o C# constitui desde as operações
básicas como a adição, multiplicação, subtracção e soma às mais complicadas e únicas
como encapsulamentos e sobrecargas múltiplas. No C# não existe herança múltipla, ou
seja cada classe só pode herdar uma e só uma classe, mantendo assim o código e a
gestão de memória organizada. Possui também uma gestão de memória única
denominada Colector de Lixo que recicla a memória e obtêm uma maior eficiência.
No que diz respeito a passagem de parâmetros, no C# existem dois tipos de
passagem, nomeadamente, passagem por valor e por referência. Na passagem por
1
Professional Developers Conference
2
European Computer Manufacturers Association
Pág. 4
Instituto Superior Politécnico Gaya
valor, é feita uma cópia do argumento para o parâmetro do mesmo, assim garantimos
que as alterações efectuadas dentro do parâmetro não alteram o valor do argumento
externo. Assim mantemos a integridade do argumento inicial sempre saudável.
Falando agora da passagem por referência, pode‐mos dizer que é o oposto da
passagem por valor. Sendo a mais utilizada pelos programadores comuns, na
passagem por referência quando é alterado o valor dentro e fora do método.
• Desempenho Global
No desenvolvimento deste trabalho foram efectuadas várias pesquisas sobre o
tema do trabalho e a linguagem a ser utilizada. Inicialmente ficou estabelecido que a
construção do programa simplesmente deveria executar os requisitos pedidos, não
importando a organização, o design nem a facilidade de utilização. No entanto,
durante a rápida evolução do trabalho, foi notado que era possível aperfeiçoar o
trabalho e facilitar a sua visualização e manutenção. Assim depois de todos os
requisitos essenciais estarem satisfeitos, foi implementado um design para boa
interpretação e organizado todo o código para fácil leitura e percepção de como esta o
programa elaborado.
Pág. 5
Instituto Suuperior Politéécnico Gaya
• Fases dee elaboraação
1. Pesquisa
P
2. Desenho do
D s formulário
os
3. Esquematiza
E ação do pro
ograma
4. Im
mplementação do código
Esquema d
de desenvolvimento
Pág. 6
Instituto Suuperior Politéécnico Gaya
• Explicaçã
E digo
ão do cód
Todo o código foi desenvolvvido pelo autor
a destee relatório. O código aqui
desenvolvido em
mbora básico está mo
ontado de u
uma forma que limite os “craches” do
programa. A orgganização d
deste código
o esta tamb
bém feita de modo a q
que por exe
emplo
não sejam abertos mais do que 1 formulário de cada vez.
v Tentou
u‐se ao mááximo
remo
over a ambiiguidade neeste pequen
no programaa.
Esqueema de distrib
buição das cllasses
__________________________________
_______________________
____
clas
ss Prog
gram
Este pro
ograma iniccia pela claasse prograam, ou sejaa é aqui que as prim
meiras
instruções são d
dadas para o
o arranque no mesmo. É na classee program q
que é atribu
uída a
primeira string que entra por CMD. Esta
E é valid
dada, tratad
do e inserid
da no vecto
or das
pesso
oas.
Segue o código fontte documen
ntado:
Pág. 7
Instituto Superior Politécnico Gaya
//Main do programa----------------------------------------------------------------------
class Program
{
public static void Main(string[] args)
{
//Com o try verifico se entra alguma string a partir do CMD
try
{
//Atribuo a string vinda do CMD
string[] vector1 = new string[2];
string[] vector2 = new string[2];
string[] vector3 = new string[2];
string[] vector4 = new string[2];
//Separo os cabeçalhos dos reais valores
vector1 = Regex.Split(args[0], "=");
vector2 = Regex.Split(args[1], "=");
vector3 = Regex.Split(args[2], "=");
vector4 = Regex.Split(args[3], "=");
//Instancio o Vector para validar os tipos de dados
int contador = 0;
while (contador != 1000)
{
variaveis.vector[contador] = new variaveis.pessoa();
contador++;
}
//Adiciono a primeira linha de utilizadores aos correctos campos de
pessoa
//Utilizo if's para verificar em que posição estão os valores
//ID
if (vector1[0] == "id" || vector1[0] == "ID")
{
variaveis.vector[0].id = Convert.ToInt32(vector1[1]);
}
if (vector2[0] == "id" || vector2[0] == "ID")
{
variaveis.vector[0].id = Convert.ToInt32(vector2[1]);
}
if (vector3[0] == "id" || vector3[0] == "ID")
{
variaveis.vector[0].id = Convert.ToInt32(vector3[1]);
}
if (vector4[0] == "id" || vector4[0] == "ID")
{
variaveis.vector[0].id = Convert.ToInt32(vector4[1]);
}
//NOME
if (vector1[0] == "nome" || vector1[0] == "NOME")
{
variaveis.vector[0].nome = vector1[1];
}
if (vector2[0] == "nome" || vector2[0] == "NOME")
{
variaveis.vector[0].nome = vector2[1];
}
if (vector3[0] == "nome" || vector3[0] == "NOME")
{
variaveis.vector[0].nome = vector3[1];
}
if (vector4[0] == "nome" || vector4[0] == "NOME")
{
variaveis.vector[0].nome = vector4[1];
}
//Password
if (vector1[0] == "password" || vector1[0] == "PASSWORD")
{
variaveis.vector[0].password = vector1[1];
}
if (vector2[0] == "password" || vector2[0] == "PASSWORD")
{
variaveis.vector[0].password = vector2[1];
}
if (vector3[0] == "password" || vector3[0] == "PASSWORD")
{
variaveis.vector[0].password = vector3[1];
Pág. 8
Instituto Superior Politécnico Gaya
}
if (vector4[0] == "password" || vector4[0] == "PASSWORD")
{
variaveis.vector[0].password = vector4[1];
}
//Login
if (vector1[0] == "login" || vector1[0] == "LOGIN")
{
variaveis.vector[0].login = vector1[1];
}
if (vector2[0] == "login" || vector2[0] == "LOGIN")
{
variaveis.vector[0].login = vector2[1];
}
if (vector3[0] == "login" || vector3[0] == "LOGIN")
{
variaveis.vector[0].login = vector3[1];
}
if (vector4[0] == "login" || vector4[0] == "LOGIN")
{
variaveis.vector[0].login = vector4[1];
}
//Instancio e corro o formulário de abertura
entrada inicio = new entrada();
Application.Run(inicio);
Console.ReadKey(true);
}
//Se alguma linha der erros, ele executa o catch
catch
{
MessageBox.Show("Atenção que ainda não carregou nenhum utilizador!");
int contador = 0;
while (contador != 1000)
{
variaveis.vector[contador] = new variaveis.pessoa();
contador++;
}
variaveis.nr_pessoas = 0;
entrada inicio = new entrada();
Application.Run(inicio);
Console.ReadKey(true);
}
}
}
_____________________________________________________
public class variaveis
Nesta classe estão definidas todas as variaveis que vão ser globais ao programa
todo, ou seja todas as que são públicas. Esta classe não era necessária para o
funcionamento do programa, porque mais á frente vamos ver que existem outras
variáveis públicas que estão dentro de outras classes. O intuito da sua criação era
aglomerar as variáveis vitais do programa nesta classe, como por exemplo o vector das
pessoas.
Segue o código fonte devidamente documentado:
Pág. 9
Instituto Superior Politécnico Gaya
____________________________________________________________
public class add_util : Form
Nesta classe encontra‐se somente o formulário de adição manual de
utilizadores. Ao construir uma classe do tipo formulário é obrigatório declarar todos os
componentes que necessitamos dentro do formulário e depois criar a classe
construtora para que o nosso formulário possa ser montado. Esta classe construtora
vai dar forma aos componentes anteriormente declarados.
Segue em seguida então o código declarado:
Pág. 10
Instituto Superior Politécnico Gaya
Pág. 11
Instituto Superior Politécnico Gaya
{
variaveis.vector[variaveis.nr_pessoas].id =
Convert.ToInt32(add_util.idt.Text);
variaveis.vector[variaveis.nr_pessoas].login =
add_util.usert.Text;
variaveis.vector[variaveis.nr_pessoas].nome =
add_util.nomet.Text;
variaveis.vector[variaveis.nr_pessoas].password =
add_util.passt.Text;
variaveis.nr_pessoas++;
add_util.idt.Text = "";
add_util.usert.Text = "";
add_util.nomet.Text = "";
add_util.passt.Text = "";
add_util.pass2t.Text = "";
}
catch
{
MessageBox.Show("O ID tem de ser um numero diferente de 0!");
}
if (variaveis.f_aberto == 1)
{
variaveis.formulario2.lista.Items.Clear();
int a = 0;
while (a != (variaveis.nr_pessoas))
{
variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - " +
variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " +
variaveis.vector[a].password);
a++;
}
}
}
else
{
MessageBox.Show("As password's não coincidem ou o id é 0");
}
}
else
{
MessageBox.Show("É necessário inserir todos os dados!");
}
}
}
_____________________________________________________
public class manutencao : Form
Nesta classe tal como a anterior é do tipo Form. Segue exactamente os mesmos
padroes explicados na classe anterior e aplica‐se ao formulário da manutenção onde
podemos editar e eliminar os utilizadores.
Segue o código fonte explicado:
Pág. 12
Instituto Superior Politécnico Gaya
//Construir o formulário
public manutencao()
{
StartPosition = FormStartPosition.Manual;
Location = new Point(100, 100);
//Tamanhos
Size = new Size(300, 600);
eliminar.Size = new Size(145, 50);
alterar.Size = new Size(145, 50);
ordenar.Size = new Size(145, 50);
ord_tipo.Size = new Size(145, 25);
lista.Size = new Size(285, 445);
ord_valor.Size = new Size(145, 25);
sair.Size = new Size(290, 50);
//Localizações
alterar.Location = new Point(0, 485);
sair.Location = new Point(0, 535);
ord_tipo.Location = new Point(0, 460);
ord_valor.Location = new Point(0, 435);
ordenar.Location = new Point(145, 435);
eliminar.Location = new Point(145, 485);
//Descrições dos objectos
eliminar.Text = "Eliminar";
alterar.Text = "Alterar";
sair.Text = "Sair";
ord_tipo.Text = "por ordem:";
ord_valor.Text = "por valor de:";
ordenar.Text = "Ordenar";
//Atribuição dos controlos aos botoes
Controls.Add(eliminar);
Controls.Add(alterar);
Controls.Add(sair);
Controls.Add(ord_valor);
Controls.Add(ord_tipo);
Controls.Add(ordenar);
Controls.Add(lista);
//Desactivar os botões de minimizar, maximizar e fechar
ControlBox = false;
//Atribuir as funções dos botões
sair.Click += new EventHandler(sair_click);
alterar.Click += new EventHandler(alterar_click);
eliminar.Click += new EventHandler(eliminar_click);
ordenar.Click += new EventHandler(ordenar_click);
//Atribuir valores ás ComboBox's
ord_valor.Items.Add("ID");
ord_tipo.Items.Add("Crescente");
ord_tipo.Items.Add("Decrescente");
//Variavel de contagem para controlo do while seguinte
int a = 0;
//Atribuo valores á Lisbox
while (a != (variaveis.nr_pessoas))
{
lista.Items.Add(variaveis.vector[a].id + " - " +
variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " +
variaveis.vector[a].password);
a++;
}
}
//Acções do botão ordenar
private void ordenar_click(object sender, EventArgs e)
{
//Ordenação por tipo Crescente e Valor ID
if (ord_tipo.Text == "Crescente" && ord_valor.Text == "ID")
{
//Contadores e variaveis necessárias
int a = 0;
int aa = 0;
int aaa = 0;
string nome;
string login;
string pass;
while (a != (variaveis.nr_pessoas))
{
Pág. 13
Instituto Superior Politécnico Gaya
aa = a;
while (aa != variaveis.nr_pessoas)
{
if (variaveis.vector[a].id > variaveis.vector[aa].id)
{
aaa = variaveis.vector[a].id;
nome = variaveis.vector[a].nome;
login = variaveis.vector[a].login;
pass = variaveis.vector[a].password;
variaveis.vector[a].id = variaveis.vector[aa].id;
variaveis.vector[a].nome = variaveis.vector[aa].nome;
variaveis.vector[a].password =
variaveis.vector[aa].password;
variaveis.vector[a].login = variaveis.vector[aa].login;
variaveis.vector[aa].id = aaa;
variaveis.vector[aa].nome = nome;
variaveis.vector[aa].login = login;
variaveis.vector[aa].password = pass;
}
aa++;
}
a++;
}
//Variavel de controlo do while
a = 0;
//Limpeza da ListBox
lista.Items.Clear();
//Atribuir valores ordenados á ListBox
while (a != (variaveis.nr_pessoas))
{
lista.Items.Add(variaveis.vector[a].id + " - " +
variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " +
variaveis.vector[a].password);
a++;
}
}
//Ordenação por tipo Decrescente e Valor ID
if (ord_tipo.Text == "Decrescente" && ord_valor.Text == "ID")
{
//Contadores e variaveis necessárias
int a = 0;
int aa = 0;
int aaa = 0;
string nome;
string login;
string pass;
while (a != (variaveis.nr_pessoas))
{
aa = a;
while (aa != variaveis.nr_pessoas)
{
if (variaveis.vector[a].id < variaveis.vector[aa].id)
{
aaa = variaveis.vector[a].id;
nome = variaveis.vector[a].nome;
login = variaveis.vector[a].login;
pass = variaveis.vector[a].password;
variaveis.vector[a].id = variaveis.vector[aa].id;
variaveis.vector[a].nome = variaveis.vector[aa].nome;
variaveis.vector[a].password =
variaveis.vector[aa].password;
variaveis.vector[a].login = variaveis.vector[aa].login;
variaveis.vector[aa].id = aaa;
variaveis.vector[aa].nome = nome;
variaveis.vector[aa].login = login;
variaveis.vector[aa].password = pass;
}
aa++;
}
a++;
}
//Variavel de controlo do while
a = 0;
//Limpar a ListBox
lista.Items.Clear();
Pág. 14
Instituto Superior Politécnico Gaya
}
//Acções do botão eliminar
private void eliminar_click(object sender, EventArgs e)
{
//Com este try, remove-se o erro de "crach" quando estou a tentar eliminar
algo que ainda não foi seleccionado
try
{
variaveis.index = variaveis.formulario2.lista.SelectedIndex;
variaveis.vector[variaveis.index].id = 0;
variaveis.vector[variaveis.index].nome = "";
variaveis.vector[variaveis.index].login = "";
variaveis.vector[variaveis.index].password = "";
int a = 0;
while (a != 999)
{
if (variaveis.vector[a].id == 0 && variaveis.vector[a + 1].id != 0)
{
variaveis.vector[a].id = variaveis.vector[a + 1].id;
variaveis.vector[a].nome = variaveis.vector[a + 1].nome;
variaveis.vector[a].password = variaveis.vector[a + 1].password;
variaveis.vector[a].login = variaveis.vector[a + 1].login;
variaveis.vector[a + 1].id = 0;
variaveis.vector[a + 1].nome = "";
variaveis.vector[a + 1].password = "";
variaveis.vector[a + 1].login = "";
}
a++;
}
variaveis.nr_pessoas--;
variaveis.formulario2.lista.Items.Clear();
a = 0;
while (a != (variaveis.nr_pessoas))
{
variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - "
+ variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " +
variaveis.vector[a].password);
a++;
}
}
catch
{
MessageBox.Show("Tem de seleccionar o item que pretende modificar ou
eliminar!");
}
}
//Acções do botão sair
private void sair_click(object sender, EventArgs e)
{
variaveis.f_aberto = 0;
this.Hide();
}
//Acções do botão aterar
private void alterar_click(object sender, EventArgs e)
{
//Este try elimina o crach quando tentamos alterar um valor que ainda não
seleccionamos
try
{
variaveis.index = variaveis.formulario2.lista.SelectedIndex;
variaveis.altera.Show();
variaveis.ad_utiliz.Hide();
variaveis.formulario2.Hide();
alteracao.idt.Text =
Convert.ToString(variaveis.vector[variaveis.index].id);
Pág. 15
Instituto Superior Politécnico Gaya
alteracao.nomet.Text =
Convert.ToString(variaveis.vector[variaveis.index].nome);
alteracao.usert.Text =
Convert.ToString(variaveis.vector[variaveis.index].login);
alteracao.pass2t.Text =
Convert.ToString(variaveis.vector[variaveis.index].password);
alteracao.passt.Text =
Convert.ToString(variaveis.vector[variaveis.index].password);
}
catch
{
variaveis.altera.Hide();
MessageBox.Show("Tem de seleccionar o item que pretende modificar ou
eliminar!");
}
}
}
_____________________________________________________
public class alteracao : Form
Este formulário tem a única função de alterar os dados de um utilizador
previamente seleccionado, ou seja, é seleccionado o utilizador a alterar e a informação
relativa ao utilizador seleccionado aparece neste formulário. Depois dos dados
estarem alterados são submetidos novamente a critérios de inserção.
Código fonte documentado:
Pág. 16
Instituto Superior Politécnico Gaya
Controls.Add(pass2);
Controls.Add(nome);
Controls.Add(id);
Controls.Add(usert);
Controls.Add(passt);
Controls.Add(pass2t);
Controls.Add(nomet);
Controls.Add(idt);
//tamanhos & costomizações
Size = new Size(400, 300);
titulo.Size = new Size(400, 50);
titulo.Font = new Font("verdana", 14);
titulo.TextAlign = ContentAlignment.BottomCenter;
sair.Size = new Size(100, 50);
ad.Size = new Size(100, 50);
id.Font = new Font("verdana", 10);
user.Font = new Font("verdana", 10);
pass.Font = new Font("verdana", 10);
pass2.Font = new Font("verdana", 10);
nome.Font = new Font("verdana", 10);
usert.Size = new Size(100, 50);
idt.Size = new Size(100, 50);
passt.Size = new Size(100, 50);
pass2t.Size = new Size(100, 50);
nomet.Size = new Size(100, 50);
//Localizações
sair.Location = new Point(100, 200);
ad.Location = new Point(200, 200);
id.Location = new Point(100, 72);
nome.Location = new Point(100, 92);
user.Location = new Point(100, 112);
pass.Location = new Point(100, 132);
pass2.Location = new Point(100, 152);
idt.Location = new Point(200, 72);
nomet.Location = new Point(200, 92);
usert.Location = new Point(200, 112);
passt.Location = new Point(200, 132);
pass2t.Location = new Point(200, 152);
//Funções dos botões
sair.Click += new EventHandler(sair_click);
ad.Click += new EventHandler(ad_click);
StartPosition = FormStartPosition.Manual;
Location = new Point(400, 100);
ControlBox = false;
}
//Acções do botão sair
private void sair_click(object sender, EventArgs e)
{
this.Hide();
}
//Acções do botão adicionar
private void ad_click(object sender, EventArgs e)
{
if (idt.Text != "" && nomet.Text != "" && usert.Text != "" && passt.Text !=
"" && passt.Text == pass2t.Text)
{
variaveis.vector[variaveis.index].id = Convert.ToInt32(idt.Text);
variaveis.vector[variaveis.index].password = passt.Text;
variaveis.vector[variaveis.index].nome = nomet.Text;
variaveis.vector[variaveis.index].login = usert.Text;
MessageBox.Show("Dados alterados para o utilizador: " + nomet.Text);
variaveis.formulario2.lista.Items.Clear();
int a = 0;
while (a != (variaveis.nr_pessoas))
{
variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - "
+ variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " +
variaveis.vector[a].password);
a++;
}
this.Hide();
}
else
{
Pág. 17
Instituto Superior Politécnico Gaya
if (passt.Text != pass2t.Text)
{
MessageBox.Show("Password's não coincidem!");
}
else
{
MessageBox.Show("Os dados não estão todos inseridos!");
}
}
}
}
_____________________________________________________
public class entrada : Form
Este formulário tem a função de direccionar as vontades do utilizador.
Contendo três botões de controlo, este formulário serve de interface primária para a
interacção com o programa.
Segue o código fonte devidamente documentado:
Pág. 18
Instituto Suuperior Politéécnico Gaya
variaveis.ad_utiliz.Show();
;
}
//Acções do botão sair
private void sair_click(object sender, Eve
entArgs e)
{
Application.Exit();
}
//Acções do botão manutenção
private void man_click(object sender,
s Even
ntArgs e)
{
variaveis.formulario2.Show();
variaveis.formulario2.listaa.Items.Clea
ar();
int a = 0;
while (a != (variaveis.nr_ppessoas))
{
variaveis.formulario2.l
lista.Items.
.Add(variave
eis.vector[a
a].id + " - " +
varia
aveis.vector
r[a].nome + " - " + variiaveis.vecto
or[a].login + " - " +
varia
aveis.vector
r[a].password);
a++;
}
variaveis.f_aberto = 1;
}
}
}
• Esqueema de fuunções ddo prograama
O prograama, na vistta do utilizaador comum
m encontraa‐se esquem
matizado de
e uma
form
ma básica e ffácil. A imagem a segu
uir demonsttra como o utilizador vvê as funções do
programa.
Pág.
P 19
Instituto Superior Politécnico Gaya
Conclusões
• Aprendizagem adquirida
O desenvolvimento deste trabalho foi rico em aprendizagem. A linguagem C# é
muito vasta e complexa, mas ao progredir, o trabalho requereu uma constante
pesquisa de material e funções para satisfazer as dificuldades que iam aparecendo.
Foram estudadas matérias desde tipos de variáveis a funções de separação de
caracteres.
No seu desenvolvimento, o trabalho foi ganhando forma e, como
consequência, foi necessário cada vez mais trabalho de pesquisa.
Contudo, o básico do C# ficou sabido e aplicado neste programa.
• Dificuldades ultrapassadas
As dificuldades foram muitas mas, como tudo na vida, foi possível ultrapassar
com algum esforço.
A primeira dificuldade encontrada foi em criar a classe “pessoa”. Depois de
alguma pesquisa e de ver alguns exemplos, foi possível implementar da melhor forma
o código de criação desta classe. Constituída por três variáveis string e uma variável
integer, esta classe composta permite o armazenamento de utilizadores.
Seguidamente apareceu a dificuldade de instanciar o vector das pessoas. Este
vector é um vector composto pelas quatro variáveis definidas na classe pessoa, ou
seja, cada posição tem 4 variáveis. Uma variável se não for instanciada não armazena
dados e dá o erro de variável nula. Então para corrigir este erro, foi necessário colocar
um ciclo a instanciar o vector desde a posição zero.
Depois de ultrapassado o problema das instâncias do vector, surgiram
problemas relativos a validações de dados e inserções proibidas, por exemplo
inserções de texto em campos de valor inteiro. Foi possível corrigir estes problemas,
que não eram poucos, com as intrusões de decisão IF e TRY. Estas instruções
permitiram negar os acessos e avisar o utilizador do erro que estava a cometer.
Pág. 20
Instituto Superior Politécnico Gaya
Por fim surgiu o problema da inserção do primeiro registo do vector pela linha
de comandos. Este problema foi resolvido em duas fases, numa primeira fase foi
estudada a forma de inserir os valores pela linha de comandos para uma variável. Esta
fase foi ultrapassada introduzindo cada variável de entrada numa variável interna, ou
seja, por exemplo id=2 era o valor de uma variável. Numa segunda e última fase, foi
estudada a maneira de tratar e introduzir os dados os dados de forma definitiva no
vector das pessoas. Assim depois de alguma pesquisa, foi aplicado o Regex.Split para
separar o cabeçalho do conteúdo (id=2) e com instruções de decisão foram tratados os
dados para as variáveis certas.
Ultrapassadas as dificuldades, foi possível aperfeiçoar o trabalho e do código
fonte de modo a ser o mais eficiente possível.
Pág. 21
Instituto Superior Politécnico Gaya
Referencias Bibliográficas
1. http://pt.wikipedia.org/wiki/C_Sharp
2. http://msdn.microsoft.com/en-us/vcsharp/default.aspx
3. http://msdn.microsoft.com/en-
us/library/system.text.regularexpressions.regex.split.aspx
4. http://msdn.microsoft.com/en-us/library/aa332139(VS.71).aspx
5. http://www.devarticles.com/c/a/C-Sharp/Introduction-to-Objects-and-
Classes-in-C-Sharp-Part-2/
Pág. 22
Instituto Superior Politécnico Gaya
Pág. 23
Instituto Superior Politécnico Gaya
Pág. 24