Upload
psopa
View
38
Download
3
Embed Size (px)
Citation preview
A N O L E C T I V O 2 0 1 2 / 2 0 1 3
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA
DISCIPLINA: PSI (Mód 08 a 11)
TURMA: TGPSI 2º PROFESSOR: Vítor Nobre
MÓDULO 10 – Progr. Orientada por Objetos
APRESENTAÇÃO 2 – Arrays, variáveis globais
e programação de classes e métodos em C#
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
CONTEUDOS A ABORDAR
1. Arrays em C#
2. Variáveis locais e globais
3. Programação de classes e métodos em C#
MÓDULO 10 – Programação Orientada por Objetos
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C#
MÓDULO 10 – Programação Orientada por Objetos
- As variáveis, como sabemos, permitem armazenar dados ou valores, num
programa
- Normalmente, uma variável apenas permite armazenar um dado ou valor de cada
vez (as chamadas variáveis escalares)
- Contudo, existe um tipo de variável que permite armazenar vários dados/valores
em simultâneo: as tabelas (ou arrays)
- os Arrays representam matrizes de dados armazenados em posições (ou índices)
bem definidos.
- Todos os elementos de um array têm o mesmo tipo de dados, sendo que o
numero de elementos depende diretamente dos limites inferior e superior
(definido pelo programador)
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C#
MÓDULO 10 – Programação Orientada por Objetos
- Os arrays presumem uma representação vetorial (no formato de tabela), que é
ditada pelo seu número de dimensões, onde cada elemento é identificado através
da sua posição em cada um dos eixos.
- Quanto ao número de dimensões, os arrays podem ser:
* UNIDIMENSIONAIS: Arrays com apenas uma dimensão (corresponde a
uma tabela com apenas uma coluna)
* MULTIDIMENSIONAIS: Arrays com várias dimensões (várias linhas e
colunas)
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C#
MÓDULO 10 – Programação Orientada por Objetos
ARRAY UNIDIMENSIONAL- Exemplo
1
2
3
4
ARRAY MULTIDIMENSIONAL
- Exemplo1
1 2
3 4
ARRAY 2X2
ARRAY MULTIDIMENSIONAL
- Exemplo2
2 4 6
8 9 12
ARRAY 2X3
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C#
MÓDULO 10 – Programação Orientada por Objetos
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
ARRAYS UNIDIMENSIONAIS
Sintaxe: tipo [ ] nome_array = new tipo [tamanho] ;
Onde:
* tipo é o tipo de dados do array
* nome_array corresponde ao nome que pretendemos atribuir ao array
* tamanho corresponde ao número de elementos do array
exemplo:
string [ ] alunos = new string[7] define um array unidimensional com 7
elementos
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
ARRAYS UNIDIMENSIONAIS: exemplos
string [ ] alunos = new string[7];
alunos[0] = “João”; a 1ª posição do array é preenchida com o nome “João”
alunos[3] = “Ana”; a 4ª posição do array é preenchida com o nome “Ana”
alunos[6] = “Maria”; a 7ª posição do array é preenchida com o nome “Maria”
alunos[7] = “Pedro”; esta atribuição é incorreta (vai dar erro de compilação), pois o
indice 7 corresponde à posição 8 e este array só tem 7 elementos
NOTA: Nos arrays a 1ª posição começa no índice 0 ( [0] ). Assim, a 2ª
posição será [1], a 3ª será [2] e assim sucessivamente
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
ARRAYS MULTIDIMENSIONAIS (BIDIMENSIONAIS)
Sintaxe: tipo [ , ] nome_array = new tipo [tamanho1, tamanho2] ;
Onde:
* tipo é o tipo de dados do array
* nome_array corresponde ao nome que pretendemos atribuir ao array
* tamanho corresponde ao número de elementos do array
exemplo:
string [ , ] ficha= new string[9,3] define um array bidimensional, com 9 linhas e
3 colunas (9x3)
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
ARRAYS BIDIMENSIONAIS: exemplos
string [ , ] ficha= new string[9,3]
ficha[3,2] = “janeiro”; corresponde à 4ª linha e 3ª coluna
ficha[0,1] = “22345”; corresponde à 1ª linha e 2ª coluna
ficha[2,7] = “Maria Conceição”; Dá erro, pois o 2º índice está acima do limite permitido
ficha[10,0] = “Pedro”; Dá erro, pois o 1º índice está acima do limite permitido
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 1:
1. Considere a seguinte matriz (tabela) de valores
1.1. Escreva o código que permita definir um array, de nome tab, para armazenar a tabela
acima
1.2. Suponha que quer armazenar o valor 3 (que está na 3ª linha e 3ª coluna) nesse array.
Escreva a linha de código que permite fazer isso
1.3. Que valor está armazenado na seguinte posição do array: tab[4,2]
20 12 8
99 100 23
18 42 3
100 21 34
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 2 (prático):
1. Abra um novo projeto em C#, em console application, com o nome exercicio_array
2. Nesse projeto, escreva o código que cria um array 2x2, com os seguintes dados
armazenados
3. Escreva o código que permite mostrar todos os valores armazenados no array, com
indicação da linha e coluna.
exemplo de output: “o valor da 1ª linha e 1ª coluna é: 2
o valor da 1ª linha 2ª coluna é: 6
… ”
2 6
12 24
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 3 (prático):
1. Faça o mesmo exercício da alínea anterior mas por forma a que o output mostre os
valores alinhados em forma de tabela
exemplo de output:
os valores da tabela são:
1 2
3 4
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 4 (prático):
1. Faça um programa em C#, em console application, que crie uma matriz 3x3 de numeros
inteiros e permita que o utilizador preencha essa matriz com valores à sua escolha.
O programa deverá depois mostrar os valores dessa matriz, dispostos em formato de
tabela
2. Tente fazer o mesmo programa, mas em formato Windows Form
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 5 (prático):
- Faça um programa em modo Console Application, que crie uma matriz 2x3 e a carregue com
os seguintes valores:
João Pedro Paulo
Ana Maria Julia
O programa deverá perguntar ao utilizador qual a linha e coluna que quer visualizar e, depois,
mostrar o nome armazenado nessa posição
exemplo: “Indique o nº da linha: “
“ Indique o nº da coluna: “
O nome armazenado nessa posição é: ....
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
ARRAYS EM C# : Programação
MÓDULO 10 – Programação Orientada por Objetos
EXERCÍCIO 6 (prático):
- Crie um mini-projeto a seu gosto, que utilize arrays.
- O projeto deverá ser apresentado à turma
Observação: a construção e apresentação do projeto deverá ocupar o
máximo de 3 tempos
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS
MÓDULO 10 – Programação Orientada por Objetos
- Quando criamos variáveis, elas podem ter um âmbito local ou um âmbito global
- Variáveis Locais são variáveis que só são reconhecidas no módulo de
programação (forms, por exemplo) em que são criadas
- Variáveis Globais são variáveis que são reconhecidas em qualquer parte do
programa ou mesmo por outros programas
- Para que uma variável seja usada como global, ela tem que ser definida com o
nível de proteção PUBLIC, associado à palavra STATIC
- Se não for atribuído nenhum nível de proteção à variável, ela fica como sendo
privada (PRIVATE), passando a funcionar como variável local
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: exemplo
MÓDULO 10 – Programação Orientada por Objetos
- Suponhamos um programa constituído por 2 forms, semelhantes aos seguintes:
- O que se pretende é definir variáveis globais (variáveis definidas uma única vez), cujos
valores funcionem em todos os formulários. Por exemplo, criar as variáveis numero1,
numero2, media, soma e multiplicação numa zona do programa e que elas funcionem em
todo o programa.
- Podemos criar todas as variáveis no Form1, por exemplo, ficando da seguinte forma:
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: exemplo
MÓDULO 10 – Programação Orientada por Objetos
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public static double numero1;
public static double numero2;
public static double media, soma, multiplicação;
public Form1()
{
…
}
- As variáveis são definidas logo no
inicio da classe Form1, sendo
declaradas como public static
- Neste formulário as variaveis são
utilizadas de forma normal
private void button1_Click(object sender, EventArgs e)
{
numero1 = Convert.ToInt32(textBox1.Text);
numero2 = Convert.ToInt32(textBox2.Text);
media = (numero1 + numero2) / 2;
textBox3.Text = Convert.ToString(media);
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: exemplo
MÓDULO 10 – Programação Orientada por Objetos
private void button1_Click(object sender, EventArgs e)
{
Form1.multiplicação = (Form1.numero1 * Form1.numero2);
textBox1.Text = Convert.ToString(Form1.multiplicação);
}
- O Form2 utiliza a variável multiplicação para realizar essa operação entre os 2 valores
- Como essas variáveis foram definidas no Form1, para que elas sejam reconhecidas no
Form2 temos que indicar da seguinte forma:
Neste caso, indicamos que as variáveis pertencem ao Form1
Resumindo: o código Formx.variável permite utilizar num determinado Form uma variável
definida num outro form (Formx)
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: exemplo
MÓDULO 10 – Programação Orientada por Objetos
- Também podemos definir todas as variáveis de um programa no módulo principal desse
programa, o módulo Program.cs (estando a trabalhar em modo Windows Form Application)
- Neste exemplo em concreto teremos:
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: exemplo
MÓDULO 10 – Programação Orientada por Objetos
- Neste caso, se as variáveis forem definidas no módulo Program.cs, no Form1 o código será
o seguinte (para o botão que calcula a soma):
private void button1_Click(object sender, EventArgs e)
{
Program.numero1 = Convert.ToInt32(textBox1.Text);
Program.numero2 = Convert.ToInt32(textBox2.Text);
Program.media = (Program.numero1 + Program.numero2) / 2;
textBox3.Text = Convert.ToString(Program.media);
}
- De igual modo, o botão da multiplicação no Form2 ficará:
private void button1_Click(object sender, EventArgs e)
{
Program.multiplicação = (Program.numero1 * Program.numero2);
textBox1.Text = Convert.ToString(Program.multiplicação);
}
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS:
MÓDULO 10 – Programação Orientada por Objetos
- Quando se trabalha em modo consola (Console application), a definição de variáveis
globais faz-se também usando as palavras PUBLIC STATIC mas logo no inicio da classe
principal do programa (Classe Program):
namespace variaveis_globais { class Program { public static int num1, num2, media; static void Main(string[] args) { } } }
Em modo consola, a
definição de variáveis
globais é feita aqui
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
VARIÁVEIS LOCAIS E GLOBAIS: EXERCÍCIOS
MÓDULO 10 – Programação Orientada por Objetos
Resolver Ficha de trabalho nº 2 (PRÁTICA)
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
CLASSES:
- As classes são criadas através da palavra-chave class
SINTAXE: [nivel_acesso] class nome_da_classe
{
bloco de instruções
}
EXEMPLO:
Class Carro
{
// Aqui deverão constar as diversas instruções que definem a classe
}
RELEMBRAR: As classes podem
ser definidas com 2 níveis de
acesso – INTERNAL ou PUBLIC.
Se não indicarmos o nível de
acesso, a classe passa a ser
INTERNAL
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
CLASSES:
EXEMPLO:
Class Carro
{
string cor, marca, modelo;
int cilindrada, velocidade;
}
MÉTODOS:
SINTAXE: Nivel_Acesso tipo nome_método([argumentos])
{
// instruções que fazem parte do método
}
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
MÉTODOS
EXEMPLO:
Class Carro
{
string cor, marca, modelo;
int cilindrada, velocidade;
void Parar() // método sem argumentos
{
velocidade=0;
}
void Acelerar(int quantidade) // método com um argumento
{
velocidade = velocidade + quantidade;
}
void Travar(int quantidade) // método com um argumento
{
velocidade = velocidade - quantidade;
}
}
RELEMBRAR: Os métodos podem ser
definidos com 5 níveis de acesso –
PRIVATE, PUBLIC, PROTECTED,
INTERNAL, PROTECTED INTERNAL. Se
não indicarmos o nível de acesso, o
método fica como PRIVATE
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
Classes e Métodos em aplicações gráficas (Windows Form Applications)
EXEMPLO:
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
}
Esta linha indica que a classe Form1 é “filha” da classe geral Form (Herança)
Método Form1(). Este método é publico, ou seja, pode ser acedido de qualquer ponto do
programa
Método Form1_Load(). Este método é privado, ou
seja, só funciona na classe Form1
Método button1_Click(). Este método está
associado ao evento “Carregar no botão 1” e é
privado, pelo que só funciona no Form1
Obs: Todos os formulários são classes, que derivam da classe
principal Form, ou seja, herdam todas as suas propriedades
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
INSTÂNCIAS
SINTAXE: classe instância = new classe([argumentos])
em que: classe é o nome da classe que se pretende instanciar, instância é
o nome do objeto que vamos criar e argumentos são os parâmetros com os
quais se pode inicializar o objeto
EXEMPLO: class Program
{
static void Main (string[ ] args)
{
Carro carro = new Carro(); // criação da instância carro, a partir da classe Carro
}
}
class Carro
(…)
RELEMBRAR: Instância é cada um dos
objetos que se criam a partir de uma
classe.
- As instâncias são criadas no método
principal do programa
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
CONSTRUTORES
-Quando criamos uma classe devemos também criar um Construtor associado à
classe
- Um Construtor da classe prepara a classe para ser usada e para se criarem
objetos dessa classe
- A todas as classes está associado um Construtor
SINTAXE:
Class Classe
{
(…)
Public Classe
(…)
}
Criação do Construtor da classe
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
CONSTRUTORES
EXEMPLO:
Class Carro
{ string cor, marca, modelo;
int cilindrada, velocidade;
// Criação do Construtor
Public Carro (string corOrigem, int cilindradaOrigem)
{
cor = corOrigem;
cilindrada = cilindradaOrigem;
velocidade = 0;
}
void Parar()
{
velocidade=0;
}
void Acelerar(int quantidade)
{
velocidade = velocidade + quantidade;
}
void Travar(int quantidade)
{
velocidade = velocidade - quantidade;
}
}
class Program
{
static void Main (string[ ] args)
{
Carro carro = new Carro(“Azul”,1600);
}
}
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
DESTRUTORES
- Da mesma forma que devemos criar um Construtor para inicializar uma classe,
também poderemos criar um Destrutor para destruir a classe
- A utilização de Destrutores de Classe é opcional e costuma ser usada para libertar
a memória de objetos que já não são necessários
SINTAXE: ~Classe() Exemplo:
Class Carro
{
Public Carro
{ }
~Carro()
}
Construtor da classe Carro
Destrutor da classe Carro
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
Invocação de métodos (Mensagens)
- Os métodos podem ser chamados (ou invocados) a partir de qualquer ponto do
programa. A isto dá-se o nome de “mensagem”.
- Para invocarmos um método deveremos escrever o nome do objeto a que se
aplica o método, seguido de um ponto (.) e do nome do método
SINTAXE: objeto.método([argumentos])
EXEMPLO 1: EXEMPLO 2 (Windows Forms):
class Program()
{ static void main (string[ ] args)
{ Carro carro = new Carro (“azul”, 1600);
carro.velocidade=20;
carro.Parar();
} }
private void button1_Click(object sender, EventArgs e)
{
Form2.Hide()
}
ESCOLA SECUNDÁRIA DE PINHEIRO E ROSA DISCIPLINA: PSI (MÓD 08 A 11)
PSI TGPSI2 2012/2013 prof: Vítor Nobre
PROGRAMAÇÃO DE CLASSES E MÉTODOS, EM C#
MÓDULO 10 – Programação Orientada por Objetos
Resolver em modo consola, o exemplo
fornecido pelo professor