Vous êtes sur la page 1sur 42

1

0. Introdução

C# foi originalmente desenvolvida por dois engenheiros da Microsoft, Anders


Hejlsberg e Scott Wiltamuth com objectivo da linguagem é de globalizar e
organizar as linguagems orientada objectos de funcionar dentro de uma
plataforma rica e moderno. O C# é considerando como o sintaxe da linguagem
C++ e Java, tudo é para guardar os pontos fortes da linguagem C++ e de corigir os
pontos fracos, permitir uma abstração de dados mais poderosos e uma boa
organização de orientar objectos.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
2

0.1 A Plataforma .NET

Quando a Microsoft anunciou o C# em Julho de 2000, seu lançamento foi


parte de um evento muito maior: o pronunciamento da plataforma .NET. A
plataforma.NET foi, em meu ponto de vista, um sistema operacional orientado a
objecto disfarçado, colocado no topo do sistema operacional existente.

Entende-se por uma plataforma de desenvolvimento, um conjunto de instruções


ordenadas que tem por objetivo resolver um problema do mundo real, abstraindo-o
em um conjunto de comandos lógicos.
NET e a nova plataforma de desenvolvimento da Microsoft que tem como foco
principal o desenvolvimento de Serviços WEB XML. Um servi, ou simplesmente
Web Service transcende ao que nos conhecemos como páginas dinâmicas, as quais
podem ser acessadas a partir de um browser. A ideia central de um Web Service
consiste em permitir que as aplicações, sejam elas da Web ou Desktop, se
comuniquem e troquem dados de forma simples e transparente, independente do
sistema operacional ou da linguagem de programação.

A. Importançias de .NET

 Independência de linguagem de programação: permite a implementação do


mecanismo de heranção, controle de exceções e depuração entre linguagems
de programação diferentes;

 Reutilização de código legado: o que implica em reaproveitamento de código


escrito usando outras tecnologias como COM, COM+, ATL, DLLs e outras
bibliotecas existentes;
 Tempo de execução compartilhado: o runtime de .NET é compartilhado entre
as diversas linguagems que a suportam, o que quer dizer que não existe um
runtime diferente para cada linguagem que implementa .NET;
 Sistemas auto-explicativos e controle de versões: cada peça de código .NET
contém em si mesma a informação necessária e suficiente de forma que o
runtime não precise procurar no registro do Windows mais informações sobre
o programa que está sendo executado. O runtime encontra essas informações
no próprio sistema em questão e sabe qual a versão a ser executada, sem
acusar aqueles velhos conflitos de incompatibilidade ao registrar DLLs no
Windows;
 Simplicidade na resolução de problemas complexos.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
3

0.2 Arquitetura de .Net Framework

VB.Net Delphi C++ C# Eiffet# J#

Common Language Specification (CLS)


Serviço Web Ambiente do trabalho

Dados e XML
Base Classe Library

CLR (Commom Language Runtime)


Compilador JIT e Codigo MSIL Garbage Collector

Controlo de Segurança Gestor de Codigo

Controlo de Execução Cargador de Classe

SISTEMA OPERATIVO

 CLS (Common Language Specification) ou Especificação Comamdo


Linguagem, é um subconjunto do CTS, e define um conjunto de regras que
qualquer linguagem que implemente a .NET deve seguir a fim de que o código
gerado resultante da compilação de qualquer peça de software escrita na referida
linguagem seja perfeitamente entendido pelo runtime .NET;

 BCL (Base Classe Library) Oferece ao desenvolvedor uma biblioteca


consistente de componentes de software reutilizáveis que não apenas facilitem,
mas também que acelerem o desenvolvimento de sistemas

 CLR (Commom Language Runtime) O CLR, ou tempo de execuão compar-


tilhado, é o ambiente de execução das aplicações .NET.

As aplicações .NET não são aplicações Win32 propriamente ditas (apesar de


executarem no ambiente Windows), razão pela qual o runtime Win32 não sabe
como executá-las. O Win32, ao identificar uma aplicação .NET, dis- para o
runtime .NET que, a partir desse momento, assume o controle da aplicação no
sentido mais amplo da palavra, porque, dentre outras coisas, é ele quem vai cuidar
do gerenciamento da memória via um mecanismo de gerenciamento de memória
chamado Garbage Collector (GC) ou coletor de lixo. Esse gerenciamento da

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
4

memória torna os programas menos susceptíveis a erros. Mais ainda, o CLR como
seu próprio nome o diz, é compartilhado e, portanto, não temos um runtime para
VB.NET, outro para C# etc. É o mesmo para todo mundo.

 Compilador JIT (Just-in-time) é a tecnica de tradição dinamica no tempo


da execução;
 Codigo MSIL(MicroSoft Intermediate Language);
 Garbarge collector : É o mescanismo de gestão da memória denominada de
GC heap(ou heap CLI),o qual é essenciallmente um bloco de mamória
alocado pelo CLR, tratado como uma stack e, conforme foi dito
anteriormente, a sua manutenção feita pelo CLR. Esta é uma das vantagens
da Frameworks.NET, porque a gestão de memória é uma tarefa sempre
complexa no processo de desenvolvimento de uma aplicação.

A heap gerida pelo GC controla a utilização de cada objecto, quando deixarem de


existir referências a um objecto, GC marca esse bloco de memória como
disponível para ser reutizado. Mais tarde limpa essa memória e reutiliza a
memória que não mais utilizada . Este mecanismo também é accionado quando já
não existe espaço na heap e é pedido utilização da memória por parte do operador
gcnew. O GC tem um desempenho muito bom, sendo imperceptível durante a
execução das aplicações.

0.3 FRAMEWORK .NET

É uma infra-estrutura de desenvolvimento e execução, a Framwork tem a sua


própria bibloteca de classes pode ser usada por todos as linguagems . Net,
permitindo aos programadores aceder às caracteristicas do CLR; também oferece
serviços de alto nível, evittando aos programadores ter que produzir
repetidamente código para os mesmos serviços.

Os principais objectivos da Framework .NET são :

 Infra –Estrutura de Componentes : é um melhor suporte para component;


permitir intergrar de uma forma simples bibliotecas compiladas sem
necessidade de alterar o código fonte;
 Integração de Linguagems : o .NET, além de suportar independência da
linguagem, também suporta intetegração de linguagems. Quer isto dizer
que uma linguagem pode herdar as classes de outra linguage e tirar partdo
das vantagens do polimofismo em diferentes linguagens. Isto é possivél
através de uma especificação chamada Common Type System (CTS), que
todas as linguagems. NET têm de suportar.
Exemplo : "todo" no. NET é um objecto de uma classe que deriva da classe
raiz System::Object;

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
5

 Interoperação na Internet: a Frameworks .NET utiliza protocolos


normalizados como SOAP, que é baseado nas normas XML e HTTP;
 Desenvolvimento Simples : o .NET contém um conjunto de classes para
todas as linguagems usarem;
 Fiabilidade : existem muitas linguagems de programação na indústria de
software, mas poucas fornecem uma linguagem fiável aliada com um
runtime robusto. Através do CLR é possivel ao .NET satisfazer esses
requisitos;
 Segurança : o .NET fornece um grande número de funcinalidades de
sugurança como, por exemplo , proteger o acesso a partes específicas de
código executável.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
6

Capitulo I. A LINGUAGEM C#

A linguagem C# foi originalmente desenvolvida por dois engenheiros da


Microsoft, Anders Hejlsberg e Scott Wiltamuth. Hejlsberg é também conhecido pela
criação do Turbo Pascal, uma linguagem popular para programação PC, e por liderar
o time que arquitetou o Borland Delphi, um dos primeiros vitoriosos Ambientes de
Desenvolvimento Integrados (Integrated Development Environments, IDEs) para
programação cliente/servidor.

C# (pronunciada ”C Sharp”), é uma linguagem de programação da Plataforma


.NET, derivada de C/C++ orientada a objetos. É a linguagem nativa para .NET
Common Language Runtime(CLR), mecanismo de execução da plataforma .NET.
Isso possibilita a convivência com varias outras linguagens especifıcadas pela
Common Language Subset(CLS).

Por exemplo, uma classe base pode ser escrita em C#, derivada em Visual Basic e
novamente derivada em C#.

I.1. CARACTERISTICAS

 Simplicidade: os projetistas de C# costumam dizer que essa linguagem é tão


poderosa quanto o C++ e tão simples quanto o Visual Basic;
 Completamente orientada a objetos: em C#, qualquer variável tem faz parte
de uma classe;
 Fortemente tipada: isso ajudará a evitar erros por manipulação imprópria de
tipos, atribuições incorretas etc;
 Tudo é um objeto: System.Object é a classe base de todo o sistema de tipos
de C#;
 Controle de versões: cada assembly gerado, seja como EXE ou DLL, tem
informação sobre a versão do código, permitindo a coexistência de dois
assemblies homónimos, mas de versões diferentes no mesmo ambiente;
 Suporte a código legado: o C# pode interagir com código legado de objetos
COM e DLL escritas em uma linguagem não-gerenciada;
 Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas
ao custo de desenvolver código não-gerenciado, chamado ”unsafe”;
 Linguagem gerenciada: os programas desenvolvidos em C# executam num
ambiente gerenciado, o que significa que todo o gerenciamento de memória é
feito pelo runtime via o GC (Garbage Collector), e não diretamente pelo
programador, reduzindo as chances de cometer erros comuns a linguagens de
programação onde o gerenciamento da memória éfeito diretamente pelo
programador.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
7

I.2. Elementos Basicos da C#

I.2.1 Comandos de Entrada e Saida em C#

A entrada e saída de um programa C# é realizado pela biblioteca de classes do


.NET Framework. Entre as classes presentes nesta biblioteca podemos citar a classe
System.Console, que pode ser usada para escrever na tela e obter dados do teclado.
A. Comando de Entrada

Console. ReadLine (); é um comando de Ler dados a partir do teclado.

Exemplo : string nome = System.Console.ReadLine(); significa que, o usuário


digitasse seria armazenado na variável chamada nome.

B. Comando de Saida

System.Console. WriteLine(); é um comando da C# que tem como papele de


imprimir na Tela.
Exemplo1 : para imprimir a mensagem o meu nome é Siria.

Console.WriteLine(“O meu nome é Siria!”);

Na Tela vai mostrar : O meu nome é Siria !

I.2.2 Comentários em C#

Usamos comentários para descrever partes complexas de código, a fim de


facilitar amanutenção, seja para quem elaborou o software, seja para terceiros.
Comentários não são interpretados pelo compilador. Em C# existem dois
tipos de comentários:

 Barras duplas: convertem o restante da linha em comentários.

Exemplo : // Queremos saber o teu nome.

 Blocos de Texto: os caracteres /*e*/definem blocos de textos como


comentários.

Exemplo : /* Meu nome é Siria .Mas Siria é só meu primeiro nome. Meu outro
nome é Roza.*/

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
8

I.2.3 Os dados nativos

Tipo Tipo .NET Descrição Faixa de dados


Bool System.Boolea Booleano true ou false
n
Byte System.Byte Inteiro de 8-bit -127 a 128
com sinal
Char System.Char CaracterUnicodede U+0000 a U+ffff
16-bit
Decimal System.Decim Inteiro de 96-bit 1,0 × 10-28 a 7,9 × 1028
al com sinal com
28-29
dígitos
Double System.Double Flutuante IEEE 64- ±5,0 × 10-324 a ±1,7 × 10308
bit com15- 16
dígitos
significativos
Float System.Single Flutuante IEEE32- ±1,5 × 10-45 a ±3,4 × 1038
bitcom 7
dígitos
significativos
Int System.Int32 Inteiro de 32-bit -2.147.483.648 a2.147.483.647
com sinal
Long System.Int64 Inteiro de 64-bit –9,223,372,036,854,775,808
com sinal a
9,223,372,036,854,775,807
Object System.Object Classe base
Sbyte System.Sbyte Inteiro de 8-bit sem 0 a 255
sinal
Short System.Int16 Inteiro de16-bit -32,768 a 32,767
com sinal
String System.String String de caracteres
Unicode
Uint System.UInt32 Inteiro de 32-bit -32,768 a 32,767
sem sinal
Ulong System.UInt64 Inteiro de 64-bit 0 a
sem sinal 18,446,744,073,709,551,615
Ulong System.UInt16 Inteiro de 16-bit 0 a 65,535
sem sinal

I.2.4 Variáveil e Tipos de Dados


1. Variáveil

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
9

As variáveis são utilizadas para armazenar informações na memória do


computador enquanto o programa C# esta sendo executado, as informações contidas
nas variáveis podem ser alteradas durante a execução do programa.

2. Decração de Variavel

Para declarar uma variavel vamos precizar o seu Tipo e o seu nome.

Exemplo :

string nome;

int telmovel;

char nome [10];

Na linguagem C# as variáveis estão agrupadas em algumas categorias como:


• Static: existe apenas uma única copia desta variável para todas as instâncias de
uma classe. Uma variável static começa a existir quando um programa começa a
executar, e deixa de existir quando o programa terminar.
• Instance: existe uma cópia para cada instância de uma classe. Uma variável
Instance começa a existir quando uma instância daquele tipo é criado, e deixa de
existir quando não houver nenhuma referencia aquela instancia ou quando e
método Finalize é executado.
• Array: é uma matriz que é criada em tempo de execução.
As variáveis são espaços reservados na memória do computador para armazenar
informações. Enquanto o programa C# está sendo executadas, as informações
contidas nas variáveis podem ser alteradas.
Na declaração de uma variável, devemos dizer seu tipo (inteiro, texto ou real, por
exemplo) e, além disso, qual é o nome que usaremos para referenciá-la no texto do
programa. Para declarar uma variável do tipo inteiro que representa o número de
uma conta, utilizamos o seguinte código:
Para nomear uma variável devemos seguir as restrições:

 O nome deve começar com uma letra ou _ ;


 Não são permitidos espaços, pontos ou outros caracteres de pontuação,
mas podemos usar números;
 O nome não pode ser uma palavra reservada do C#;
 O nome deve ser único dentro do contexto atual.

I.2.6 Tipos de Dados

Como toda a linguagem de programação o C# apresenta seu grupo de tipos de


dados básico. Esses tipos são conhecidos como tipos primitivos ou fundamentais

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
10

por serem suportados diretamente pelo compilador, e serão utilizados durante a


codificação na definição de variáveis, parâmetros, de clarações e até mesmo em
comparações.

O sistema de tipos C# comporte com seguinte forma :

1. Tipos valor :

as variaveis de tipos valor armagazenam os dados;

Tipo valor são repatir em dois partes : struct e numerasão.


a. Struct
Os structs tem apresença de elementos seguintes :
 Tipos numericos;
 Tipos interos;
 Tipos float;
 bool ;
 decimal.
2. Tipos referençia : as variaveis armazenam os referençias de dados e os
dados são considerandos como objectos;
3. Tipos ponteiro : é o tipo que pode usar só no mode sem seguro.

Em C# todo o tipo de dados possui um correspondente na CLR (Common


Language Runtime).

Exemplo: int em C# refere-se a System.Int32 na plataforma .NET.

I.2.7 Conversões de Tipos

É um sistema muito comum no mundo da programação é a utilização de


conversões.

Exemplo:

Podemos converter um inteiro para um longo. Quando o usuário digita um


número qualquer numa TextBox, é necessária uma conversão de valores antes que
um cálculo possa ser realizado.

Esta tabela vai mostrar método e descripção de conveter :

Método Descrição
System,Convert.ToBoolean() Converte uma string para um valor booleano
System,Convert.ToByte() Converte para o tipo byte
System,Convert.ToChar() Converte para o tipo char
System,Convert.ToDateTime() Converte para o tipo data e hora
System,Convert.ToDecimal() Converte para o tipo decimal

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
11

System,Convert.ToDouble() Converte para o tipo doublé


System,Convert.ToInt16() Converte para o tipo short
System,Convert.ToInt32() Converte para o tipo inteiro
System,Convert.ToInt64() Converte para o tipo long
System,Convert.ToSingle() Converte para o tipo single
System,Convert.ToString() Converte para o tipo string

Exemplo

Vamos criar duas variaveis inteiras, ler os valores e com os dados vamos apresentar a
sua soma.

Programa:
{

Int Valor1; int Valor2;


Console.WriteLine(“Insera o valor1\n”);
Valor1 = Convert.ToInt32 (Console.ReadLine() );
Console.WriteLine(“Insera o valor2\n”);
Valor2 = Convert.ToInt32 (Console.ReadLine() );
Console.WriteLine (“\n A soma de {0} por {1} é {2} ”, valor1, Valor2, (Valor1+Valor2) );
Console.ReadKey ();
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace project1
{
class nome
{
static void Main(string[] args)
{
Console.WriteLine("o meu nome é Siria");
Console.ReadKey();

}
}
}

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
12

I.2.8 ESTRUTURA DE UM PROGRAMA


O esqueleto de um programa em C#, apresentando alguns dos seus elementos
mais comuns, segue abaixo:
using System;
namespace MathNamespace{
public class MathClass{
/* Main: exibe no prompt */
public static void Main(string[] args){
Math m = new Math();
Console.WriteLine(m.Sum(1,1));
}
//<summary >Classe Math </summary >
public class Math:Object{
public int Sum(int a, int b){
return (a+b);
}
}
}
}
A estrutura de um programa em C#, pode ser dividida em um ou mais arquivos,
e conter:
• Namespaces: são a forma logica de organizar o código-fonte;
• Tipos: classes, estruturas, interfaces, delegações, enums;
• Membros: constantes, campos, métodos, propriedades, indexadores, eventos,
operadores, construtores;
I.2.9 Expressões

Um programa não será muito útil se não pudermos usá-lo para efetuar
cálculos ououtro tipo de manipulações de dados. É para isso que surgem os
operadores. Conforme veremos a seguir, existem diferentes tipos de operadores,
dependendo do tipo de operação que desejamos realizar.

Esta tabela mostra diferentes tipos de operador :

Categoria Operadores
Aritmética +-*/%
Lógica (boolena e bitwise) & |^!~ && || tru e false

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
13

Concatenação de string +
Incremento e decremento ++ --
Shift << >>
Relacional == != < > <= >=
Atribuição = += -= *= /= %= &= |= ^= <<= >>=
Acesso a membro .
Indexação []
Cast ()
Condicional ?:
Delegate (concatenação e +-
remoção)
Criação de objeto New
Informação de tipo is sizeof typeof
Controle de excessão de Checked unchecked
overflow
Indireção e endereço * -> [] &

1 Mostra na Tela esta mensagem : "eu sou estudante de 4 ano do curso de


informática "

Resolução :

using System;
namespace Trabalho1
{
class Program
{
static void Main(string[] args)
{ // agora estamos no inicio do código
Console.WriteLine("Eu sou estudante de 4 anos de informática");
}
}
}

Exercicio2

Vamos elaborar um programa que vai ler , os dados de um funcionario e para


mostrar na tela o resultado.

Resolução

using System;

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
14

namespace Identidade
{
class Program
{
static void Main(string[] args)
{
string nome,genero, endereco, telefone = "";
Console.WriteLine("Digite seu nome: ");
nome = Console.ReadLine();
Console.WriteLine("Digite seu genero: ");
genero = Console.ReadLine();
Console.WriteLine("Digite seu Endereço: ");
endereco = Console.ReadLine();
Console.Write("Digite seu Telefone: ");
telefone = Console.ReadLine();
Console.WriteLine("Seu Nome é: {0}, e você mora em: {1}, com o
telefone: {2}", nome,genero, endereco, telefone);
}
}
}

Tarefa

Faça um programa que possa entrar com o saldo de uma aplicação e imprima o
novo saldo,considerando o reajuste de 5%.

1.2.10 Instruções em C#

Em C# temos muitos tipos de instruções, que são importantes na programação,


instruções são :

1. Instruções condicionais ou Teste IF e ELSE

Uma acção muito importante que o processador de qualquer computador


executa, e que o torna diferente de qualquer outra máquina, é a tomada de decisão
definindo o que é verdadeiro e o que é falso. Se quisermos fazer um bom
programa, esse programa deve ser capaz de definir caminhos diferentes de acordo
com decisões que o próprio programa toma. Para isso, precisamos de uma
estrutura seletiva da qual o único valor possível é o bit 1 ou 0, resumindo: retornar
o valor VERDADEIRO ou FALSO.

a. IF

Para usar o IF basta digitar entre parênteses o que deve ser comparado.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
15

IMPORTANTE: IF é uma palavra reservada que não aceita ponto-e-vírgula (;) no


final. Se for verdadeiro, o programa executará a primeira linha logo abaixo do if.
Mas, e se quisermos executar várias linhas se if for verdadeiro? Se o if tiver que
executar várias linhas, todas as linhas que devem ser enquadradas dentro do bloco
de dados - as chaves ({}).

Sintaxe :

if (<condição>)

// Código para quando a condição for verdadeira.

Exemplo :

b. ELSE

O else só será executado se o IF for falso. Else executará só a primeira linha


abaixo dele. Se o else tiver que executar várias linhas, vale a mesma regra de if.
Todas as linhas a ser executadas deverão estar contidas dentro do bloco de dados
({}).

Sintaxe :

if(<condição>)

// Código para quando a condição for verdadeira.

else

// Código para quando a condição for falsa.

Exemplo:

Vamos criar um programa que vai testar dois numeros e para mostrar o qual deles
é maior.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
16

Resolução :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace InstruçãoDeCondição

class TestandoDoisValores

static void Main(string[] args)

// Testando o maior valor entre dois valores

int num1, num2;

Console.WriteLine(“Digite o primeiro valor: “);

num1 = int.Parse(Console.ReadLine());

Console.WriteLine(“Digite o segundo valor: “);

num2 = int.Parse(Console.ReadLine());

if (num1 > num2)

Console.WriteLine(“O maior número é “ + num1);

else

Console.WriteLine(“O maior número é “ + num2);

Console.ReadKey();

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
17

2. Instruções de Repetição ou Controle

As instruções de repetição, ou ciclos, permitem a execução, de forma repetitiva,


de um conjunto de instruções. Esta execução depende do valor lógico de uma
condição que é testada em cada iteração para decidir se a execução do ciclo
continua ou termina.

a. Instrução for

O ciclo for é bastante versátil porque aceita tanto iterações fixas como
condicionais.

Esta instrução é constituída por três elementos (todos opcionais). O primeiro


elemento é a iniciação das variáveis de controlo das iterações. A iniciação só
acontece na primeira iteração. O segundo elemento é a condição de controlo das
iterações. Uma iteração só acontece se a condição for verdadeira. A condição é
sempre avaliada.

O terceiro elemento é usado para actualizar as variáveis de controlo do ciclo.


Este elemento não é executado na primeira iteração, só nas subsequentes. Um
aspecto muito importante é que a avaliação acontece sempre depois dos outros
elementos.

Na primeira iteração, as variáveis são iniciadas e só depois é avaliada a condição.

Nas iterações subsequentes as variáveis são actualizadas e só depois é feita a


avaliação.

Obviamente, a iteração só acontece se a condição for verdadeira. Embora não

seja muito frequente, pode acontecer que nenhuma iteração seja efectuada.

Sintaxe :

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
18

for(<iniciação>;<condição>;<actualização>)

<bloco-instruções>

Ou

for (instrução1 ; Condição ; instrução2 ; instrução3;)

Exemplo :

Faça um programa com a estrutura de repetição for devemos que imprima na tela
os números de 10 a 50.

Resolução

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace EstruturaDeForI

class ContarDezNumeros

static void Main(string[] args)

for (int i = 1; i <= 10; i++)

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
19

Console.WriteLine(i);

Console.ReadKey();

c . Instrução while

O ciclo while é também um ciclo condicional que realiza a iteração enquanto


uma determinada condição for verdadeira. A condição é avaliada no inicio da
iteração.

Por isso, o ciclo while pode não realizar nenhuma iteração. A seguir apresenta–
se a sintaxe da estrutura while. O controlo do ciclo processa–se da seguinte forma.

A avaliação da condição é feita no inicio e caso o resultado da seja verdade


entãoo <bloco-instruções> é executado. No caso do resultado ser falso então o
ciclo termina.

Sintaxe :

While (condição)

Instrução;

ou

while (<condição>)

<bloco-instruções>

Exemplo :

Fazer para imprimir na tela quize valores, iniciando pelo 4 até o 20 , crie um
projecto com nome de EstruturaWhile, e para renomeie a class ProgramaLaço.

Resolução

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
20

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace EstruturaWhile

class ProgramaLaço

static void Main(string[] args)

int i = 1;

while (i<=10)

Console.WriteLine(i);

i++;

Console.ReadKey();

Tarefa na sala

Crie um projecto, com o nome de Tarefa. Renomear a classe de Laça DeValores.

d. Instrução do-while

O ciclo do-while é um ciclo condicional que executa a iteração enquanto uma


condição for verdadeira. Esta condição é avaliada no fim. A seguir apresenta-se a
sintaxe da estrutura do-while. O controlo do ciclo processa-se da seguinte forma.

O <bloco-instruções> é sempre executado pelo menos uma vez de pois é avaliada


a <condição>. Caso o resultado da avaliação seja verdade o ciclo continua até que

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
21

o resultado da avaliação seja falso. Portanto quando o resultado da avaliação da


condição for falso o ciclo termina.

do

<bloco-instruções>

while (<condição>);

Exemplo :

Vamos criar um projecto com o nome de “EstruturaDo”, e renomeie a


classeTestandoDo.

Resolução

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace EstruturaDo

class TestandoDo

static void Main(string[] args)

int i = 11;

do

Console.WriteLine(i);

while (i<=10);

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
22

Console.ReadKey();

e. Intrusção switch

Já vimos como usar o comando if...else. O uso de if...else pode se tornar um tanto
complicado quando existem muitas alternativas. Para esses casos,vamos usar o
comando switch. Eis sua forma genérica:

switch(expressao)

case valorUm:

comandos;

break;break;

case valorDois:

comandos;

break;

...

case valorN:

comandos;

break;

Exemplo :

Vamos criar um programa de simular uma calculadora, ele receberá dois valores e
um operador para executaá a operação e no fim de mostrar o resultado na tela.
Este objecto é de nome TrabaloSwicth, na classe TrabaloSwicth

Resolução

using System;

using System.Collections.Generic;

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
23

using System.Linq;

using System.Text;

namespace TrabaloSwitch

Class TrabaloSwitch

static void Main(string[] args)

double valor1, valor2, resultado;

string operador;

Console.WriteLine(“Digite o primeiro valor: “);

valor1 = double.Parse(Console.ReadLine());

Console.WriteLine(“Digite o segundo valor: “);

valor2 = double.Parse(Console.ReadLine());

Console.WriteLine(“Escolha a operação(+, -, *, /): “);

operador = Console.ReadLine();

switch (operador)

case “+”:

resultado = valor1 + valor2;

Console.WriteLine(“O resultado da soma é: “+ resultado);

break;

case “-”:

resultado = valor2 - valor1;

Console.WriteLine(“O resultado da subtração é:“+ resultado);

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
24

break;

case “*”:

resultado = valor1 * valor2;

Console.WriteLine(“O resultado da multiplicação é:“+resultado);

break;

case “/”:

resultado = valor1 / valor2;

Console.WriteLine(“O resultado da divisão é:“+resultado);

break;

default :

break;

Console.ReadKey();

f. Comando foreach

O comando foreach enumera os elementos de uma coleção. O código abaixo


implementa a funcionalidade do exemplo a seguir: vamos mostrar o N números da
sequência de Fibonacci.

using System ;
class Fibonacci {
public static void Main () {
int iVezes ;
Console. Write (" Entre de 1 a 100 para o numero de elementos a
exibir na sequência de Fibonacci: ") ;
// Verifica se os valores entrados esta entre 1 e 100
// Caso contrário pede reentrada
do {
iVezes = Console . ReadLine (). ToInt32 ();
} while ( iVezes <1 || iVezes >100) ;

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
25

// Cria o vetor dinamicamente

int [] iSeq = new int [ iVezes ];


iSeq [0] = 1;
// Preenche o vetor
if ( iVezes > 1) {
iSeq [1] = 1;
for ( int a =2; a < iVezes ; ++ a )
iSeq [ a ] = iSeq [a -1] + iSeq [a -2];
}

// Exibe o vetor

foreach ( int a in iSeq ) {

Console. Write +a);


Console. Write (" ");
}
}
}

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
26

Capitulo. II Vetores (Array)

Um array é tabela que permite guardar um certo conjunto de variáveis, todas de


mesmo tipo.

Array é uma coleção de elementos armazenados em seqüência, acessíveis


através de um índice numérico, o primeiro elemento de um array é o de índice zero
(0) e podemos também criar arrays com uma ou mais dimensões.

Fórmula de arrays :

<tipo-de-dados>[]<nome-do-array> = new <tipo-de-dados>[<tamanho>];

Existe dois tipos de arrays , tem as tabelas simples ou array de única dimensão e
arrays de multi demsionais ou tabelas multdimensionas.

Algumas Propriedades e Métodos dos Arrays:


• obj.Length → Tamanho do vetor;
• Array.IndexOf (Array vetor, object value) → Procura a primeira ocorrência de
valor em vetor;
• Array.LastIndexOf (Array vetor, object value) → Procura a última ocorrência
de valor em vetor;
• Array.Sort (Array vetor) → Ordena um vetor crescentemente;
• Array.Reverse (Array vetor) −→ Ordena um vetor decrescentemente.

3.1 Arrrays de única Dimensão ou Tabela Simple

Array de única dimensão é uma seqüência de vários valores do mesmo tipo,


armazenados seqüencialmente na memória, e fazendo uso de um mesmo nome de
variável para acessar esses valores.

Sintaxe da tabela simple :

Tipo [ ] nome _do_array = new tipo [tamanho do array];

Exemplo1 :

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
27

Vamos criar uma tabela de 4 tamanhos, para armazenar as sequências de nomes


seguintes : siria, roza, matumona, atungulu na memória.

Resolução :

// sintaxe = Tipo [ ] nome _do_array = new tipo [tamanho do array];

string [ ] nome = new string[4];

nome [0] = "siria";

nome [1] = "roza";

nome [2] = "mantumona";

nome [3] = "atungulu";

Console.WriteLine(nome[0]+nome[1]+nome[2]+nome[3]);

Console.Readkey();

Exemplo2 :

Vamos criar um programa que vai ler as notas de 3 estundantes e para calcular
também a media.

Resolução

double[ ] notas = new double [3];

// double soma = notas [0]+notas [1]+ [2];

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
28

Double media = soma /3;

Console.writeLine ("A soma das notas é "+ soma);

Console.Write.Line ("A media das notas é "+ media);

Console.Readkey();

3.1 Arrays Multidimensionais ou Tabelas Multidimensionais (Matriz)

A noçao de matriz é a generalização imediata da noção de vetor. Uma matriz é


uma tabela de vários valores do mesmo tipo, armazenados seqüencialmente e
fazendo uso de um mesmo nome de variável para acessar esses valores.

Cada elemento da tabela pode ser acessado individualmente através de dois índices
com valores inteiros.

Exemplo :

Vamos apresantar uma tabela de cinco linhas por cinco colunas (5x5), os índices
de cada dimensão começam em 0 e vão até N-1, em que N é o número de
elementosem cada dimensão.

Como será a tabela :

0 1 2 3 4

0 10 15 13 17 5
1 15 20 25 11 4

2 20 35 13 22 55
30 30 18 19 60
3
40 12 14 16 70

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
29

Apartir de sintaxe sera desta forma :

Int [,] tabela = new int [5,5];

Exemplo2 :

Vamos criar uma matriz de 4 por 4, para inserir as notas de um estudente.

Resolução :

doudble [,] estudante_notas = new double [4,4];

estudante _ notas [0,0] = 4;

estudante _ notas [0,1] = 7;

estudante _ notas [0,2] = 9;

estudante _ notas [0,3] = 10;

estudante _ notas [1,0] = 8;

estudante _ notas [1,1] = 6;

estudante _ notas [1,2] = 2;

estudante _ notas [1,2] = 3;

estudante _ notas [1,3] = 8;

estudante _ notas [2,0] = 1;

estudante _ notas [2,1] = 3;

estudante _ notas [2,2] = 5;

estudante _ notas [2,3] = 4;

for (int estudente = 0; estudante ˂ 4; estudante++)

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
30

for (int nota = 0 ; nota ˂ 4 ; nota++)

Console.WriteLine ("matriz estudante_nota ["+ estudante +",+ nota +"] = +

estudante _ nota [ estudante , nota]");

Consolo.Reeadkey;

Trabalhos :

1. Crie um programa em c# que leia um vetor de 10 alturas e elabore um algoritmo


que permita calcular:
a) A média das alturas;
b) O desvio padrão das alturas. Lembrando que desvio padrão é dado por
(Somatório (Alturas2) /número de alturas) – Média2;
c) A moda das alturas. Lembrando que moda é o valor que maior incidência
de repetições;

2. Construa um programa em c# que leia 2 vetores inteiros de 5 posições e


apresente o conjunto União e o conjunto Intersecção dos vetores.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
31

Capítulo III. Conceitos de Programação Orientada Objecto

O conceito de programação orientada a objectos teve inicio na linguagem


SIMULA 67, que foi a primeira LP a implementar de objecto, o conceito de objecto,
estés conceitos foram aperfeiçoadas e refinadas na linguagem SMALTALK 80, que
continua a servir como prótotipo de implemetação de modelos O.O.

Existem outras linguagens O.O hoje em dia, tais como EIFFEL e JAVA muitos
aida consisderam que SMALLTALK é a única LP puramente orientada a objectos, a
capacidade de trabalhar com orientação a objectos é frequentemente adicionada as
linguagens imperativas para formar uma linguagem que fornece muitas das
caracteristicas do modelo O.O, a mais popular destas linguagem hibridas é o C++.

Neste conceito de POO temos como elementos :

 Objecto : um objecto consiste em um conjunto de operações encapsuladas e um


estado pelo valor dos atributos que grava e recupera os efeitos destas operações .
um objecto executa uma operação em resposta a uma mensagem recebida que é
associada com aquela operação;

1. Identificação de Objectos

• A identificação de um objeto ocorre segundo suas característica (atributos ou


propriedade ) e comportamentos (métodos);
• Na modelagem de sistemas, um objecto é qualquer coisa existente no mundo
real;
• É possível a existência objetos concretos ou abstaratos, por exemplo: aluno,
mesa, disciplina, estoque, avaliação e etc;
• Representa a modelagem de conceitos existentes no cotidiano;

2. Classe :

Uma classe é uma estrutura de programação que descreve determinado objecto,


definido propriedade e método, uma classe é somente a definição de onde serão
armazenadaos dados.

Categorias de classes

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
32

Existem três categorias de classes:

a. Classe de análise: descreve uma abstração de dados diretamente do domínio


do problema;
b. Classe de projecto: pertencem ao espaço da solução;
c. Classe de implementação: descreve uma abstração de dados introduzida para
as necessidades internas dos algoritmos do software (ex.: LinkedList, Array,
Vector, etc...);
3. Encapsulamento :

É um efeio de colcar uma especie de cápsula nas propriedades;

4. Polimorfismo :

É a propriedade que permite que a mesma mensagem seja enviada a diferentes


objectos.

5. Herança :

É uma das propriedades mais importante do modelo de orientação a objecto,


herança é permitida através da definição de uma hierarquia de classe, herança refere –
se ao fato de que uma Subclasse herda todos os components da classe Pai, incluindo
uma estrutura de estado interna e pares mensagem, método qualquer propriedade de
herdada pode ser redefinida na definição da Subclasse, subtituindo a definição
herdada.

Exemplo : apartir de herança, vamos criar uma classe chamada Pessoa com dois
subclasses.

Resolução

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
33

6. Propriedades

As propriedades são recursos fornecidos pelas classes para que seja possível
alterar seus valores. Os recursos get e set comuns às propriedades.
Veja como é possível se definir esses recursos:
public tipodedado NomeDaPropriedade
{
get {
return nomeAtributo ;
}
set {
nomeAtributo = value ;
}
}
// Utiliza - se da seguinte maneira
this.NomeDaPropriedade = valor ;
valor = this.NomeDaPropriedade ;

7. Modificadores de Visibilidades

C# apresenta os seguintes modificadores de visibilidades:


 private : Significa que, exceto a classe incluída, nada pode acessar o objeto,
método ou variável;
 public : Significa que todos tem acesso livre a este membro;
 protected : Significa que são apenas visíveis para as classes derivadas por
meio de herança;
 internal : todos têm acesso livre a este membro dentro de um assembly
(DLL ou EXE; correspondente ao JAR do Java). Fora do assembly a classe
é inacessível.
Atributos interna (internal), são utilizados geralmente para a criação de
bibliotecas, já que uma biblioteca pode ter vários Namespaces.
O exemplo a seguir mostra como devemos dispor os modificadores de
visibilidade:
class NomeDaClasse {
private int atrib1 ;
public int atrib2 ;
protected int atrib3 ;
internal int atrib4 ;
... }

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
34

8. This e Base

As cláusulas this e base são referências que indicam a própria classe e a classe
base, respectivamente.
Entende-se como classe base, a classe cuja classe atual herda as propriedades e
atributos.
Sua notação pode ser observada no seguinte exemplo:
this.nomeAtributo = valor ;
valor = this . nomeAtributo ;
this.NomeMetodo () ;
base . nomeAtributoClasseBase = valor ;
valor = base . nomeAtributoClasseBase ;
base . NomeMetodoClasseBase ()

9. Declaração e Chamada de Métodos e Objetos

Para se instanciar um objeto deve-se utilizar a operação new. Essa operação


atribui um <objeto> montado dentro de uma variável do tipo <objeto>.
Utiliza-se a seguinte notação:
MinhaClasse obj = new MinhaClasse ();
Para acessar seus atributos e métodos utilizamos a instrução ”.”, como pode ser
observado no exemplo a seguir:
obj.nomeMetodo () ;
obj.nomeAtributo = 23;
obj.NomePropriedade = " Apenas um teste ";

10. Métodos e Atribuitos Static


A operação static define um método ou atributo como pertencentes á classe em
questão e não aos objetos, assim sendo esses atributos ou métodos terão apenas
1 cópia para n objetos que gerarem.
Sua declaração é feita com a palavra static depois do modificador de acesso (public,
private ) e antes do tipo de dado (int, string ).
O seu acesso é feito pelo nome da classe e não mais pela referencia da classe ou pelo
nome do objeto.
Veja no exemplo:

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
35

NomeDaClasse.atributoEstatico = valor;
valor = NomeDaClasse . atributoEstatico ;
NomeDaClasse.MetodoEstatico ();

11. Const e ReadOnly


São operadores utilizados para a criação de constantes, cujos valores não
poderão ser alterados durante a execução do programa.
Algumas diferenças entre os operadores:
const :
 Não pode ser estático (static );
 O valor é setado em tempo de compilação;
 É inicializado somente na compilação.
readonly :
 Pode ser estático (static );
 O valor é setado em tempo de execução;
 Pode ser inicializado na declaração ou na codificação do construtor.

12. Classes e Métodos Abstratos


A classe abstrata é um tipo de classe que somente pode ser herdada e não
instanciada, de certa forma pode se dizer que este tipo de classe ´e uma classe
conceitual que pode definir funcionalidades para que as suas subclasses (classes
que herdam desta classe) possam implementa-las de forma não obrigatória, ou seja
ao se definir um conjunto de métodos na classe abstrata não é de total
obrigatoriedade a implementação de todos os métodos em suas subclasses, em
uma classe abstrata os métodos declarados podem ser abstratos ou não, e suas
implementações devem ser obrigatórias na subclasse ou não, quando criamos um
método abstrato em uma classe abstrata sua implementação é obrigatória, caso
você não implemente o mesmo o compilador criará um erro em tempo de
compilação.
O mesmo se têm com métodos abstratos, não se pode herda-los.
abstract class formaClasse
{
abstract public int Area () ;
}
class quadrado : formaClasse
{
int x , y ;
// Se não for implementado o método Área ()

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
36

// será gerado um compile - time error .


// Utiliza - se o operador override para indicar a sobrescrita.
public override int Area ()
{
return x * y ;
}
}

13. Interfaces
As interfaces são fundamentais em um sistema orientado a objetos, quando
dizemos que um objeto ´e a instância de uma classe, na verdade queremos dizer,
que este objeto implementa a interface definida pela classe, ou seja uma interface
define as operações que um objeto será obrigado a implementar. Para cada
operação declarada por um objeto deve ser especificado o nome da operação, os
objetos que esta operação aceita como parâmetro e o tipo de valor retornado pela
operação; este conjunto de informações sobre uma determinada operação tem o
nome de assinatura da operação, e um conjunto de assinaturas de operações dá-se
o nome de interface.
E importante lembrar que uma interface nunca contém implementação, ou seja
numa interface não se pode definir campos, pois o mesmo ´e uma implementação
de um atributo objeto, a interface também não permite construtores pois num
construtor temos as instruções usadas para inicializar campos. Para podermos usar
uma interface devemos criar uma classe ou estrutura e herdar da interface, com
isso é obrigatório implementar todos os métodos da interface.

interface IExemploInterface
{
void ExemploMetodo () ;
}
class ImplementacaoClasse : IExemploInterface
{
// Implementação explícita da interface
void IExemploInterface . ExemploMetodo ()
{
// Implementa¸c~ao do m´etodo
}
static void Main ()

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
37

{
// Declarando uma instância de uma interface
IExemploInterface obj = new ImplementacaoClasse () ;
// Chame o método.
obj . ExemploMetodo ();
}
}

Note que, para se sobrescrever um método da interface utilizamos <Interface>.


<Método>.
A declaração de uma instância de uma interface ´e feita de forma diferente da
declaração de um objeto normal, aqui temos: Interface
<var> = new <ClasseQueImplementaAInterface>();

14. A classe ArrayList

A classe ArrayList do Framework .NET imita a funcionalidade dos arrays


convencionais e permite o redimensionamento dinâmico da coleção por meio dos
métodos da classe. Em qualquer momento, uma ArrayList contém um certo
número de elementos menos que ou igual à sua capacidade (o número de
elementos atualmente reservador para a ArrayList).

Podemos manipular a capacidade de uma ArrayList por meio da propriedade


Capacity. Se uma ArrayList precisa ser redimensionada, por padrão, sua Capacity
é dobrada. ArrayLists armazenam referências à objetos. Todas as classes .NET
derivam da classe object. Isso quer dizer que uma ArrayList pode conter objetos
de qualquer tipo.
a. Método C# que retorna um ArrayList

Estudantes C# ficam um pouco confusos quando solicitados a escrever


métodos que retornam objetos de classes. E essa confusão é maior ainda quando
precisam retornar uma ArrayList, mais precisamente um objeto da classe
ArrayList. Esta dica mostra como isso pode ser feito. Veja que temos um
método que define, em sua assinatura, que o tipo de retorno não é void (sem
retorno) mas sim um objeto da class ArrayList. No corpo deste método temos a
criação da ArrayList propriamente dita, a adição de cinco inteiros e finalmente o
uso da palavra-chave return para retornar o ArrayList já preenchido ao chamador
do método. Note que o método Main é responsável por efetuar uma chamada ao
método, obter o ArrayList resultante e em seguida usar o laço foreach para exibir
seus valores:

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
38

// método que retornará uma ArrayList


static ArrayList obterLista(){
// Cria o ArrayList
ArrayList lista = new ArrayList();

// Adiciona 5 inteiros
lista.Add(1);
lista.Add(2);
lista.Add(3);
lista.Add(4);
lista.Add(5);

// retorna o ArrayList preenchido


return lista;
}

static void Main(string[] args){


// obtém um ArrayList preenchido a partir do
// método obterLista
ArrayList mLista = obterLista();

// exibe os valores do ArrayList


foreach (int valor in mLista)
Console.Write("{0} ", valor);

// pausa o programa
Console.ReadKey();
}

b. Excluindo todos os elementos de uma ArrayList

A remoção de todos os elementos de uma ArrayList pode ser feita com uma
chamada ao método Clear(). Veja que este método poderá lançar uma exceção
NotSupportedException se a ArrayList for somente leitura ou possuir um tamanho
fixo:

static void Main(string[] args){


// não se esqueça
// using System.Collections;

// Cria o ArrayList
ArrayList cidades = new ArrayList();

// Adiciona nomes de cidades


cidades.Add("Luanda");
cidades.Add("Benguela");
ESPU/UNIKIV EngºDudu Atungulu
doudouatungulu@gmail.com
39

cidades.Add("Uige");
cidades.Add("Lubango");

// obtém a quantidade de elementos


int quant = cidades.Count;
Console.Write("A lista contém {0} itens\n", quant);

// vamos remover todos os elementos


cidades.Clear();

// obtém a quantidade de elementos novamente


quant = cidades.Count;
Console.Write("A lista contém {0} itens", quant);

Console.WriteLine("\n\nPressione uma tecla para sair...");


Console.ReadKey();
}

c. O Método Reverse() de uma ArrayList


O método Reverse() da classe ArrayList é usado quando queremos inverter a
ordem dos elementos da lista. Veja um exemplo:
static void Main(string[] args){
// não se esqueça
// using System.Collections;

// Cria o ArrayList
ArrayList lista = new ArrayList();

// Adiciona 5 inteiros
lista.Add(30);
lista.Add(2);
lista.Add(98);
lista.Add(1);
lista.Add(7);

// Percorre os elementos da ArrayList na ordem original


foreach (int valor in lista)
Console.Write("{0} ", valor);

// vamos inverter a ordem dos elementos


lista.Reverse();

// Percorre os elementos da ArrayList na ordem invertida


Console.WriteLine();
foreach (int valor in lista)
Console.Write("{0} ", valor);
ESPU/UNIKIV EngºDudu Atungulu
doudouatungulu@gmail.com
40

Console.Write("\n\nPressione uma tecla para sair...");


Console.ReadKey();
}

d. O Método Add() de

O método Add() da classe ArrayList é usado quando queremos adicionar itens


no final da lista. Este método aceita como parâmetro o elemento a ser adicionado.
Este elemento é do tipo Object, ou seja, podemos inserir desde tipos primitivos até
objetos de nossas próprias classes (incluindo o valor null), uma vez que estas
também herdam de Object, direta ou indiretamente.
Note que o método Add() poderá atirar uma exceção do tipo
NotSupportedException se a ArrayList for somente leitura ou possuir um
tamanho fixo. Eis o código para o Exemplo:

static void Main(string[] args){


// não se esqueça
// using System.Collections;

// Cria o ArrayList
ArrayList nomes = new ArrayList();

// Adiciona nomes de pessoas


nomes.Add("Osmar J. Silva");
nomes.Add("Carlos de Souza");
nomes.Add("Mirian Fernanda Costa");

// Percorre os elementos da ArrayList


// usando o laço for
for (int i = 0; i < nomes.Count; i++){
Console.Write("{0}\n", nomes[i]);
}

Console.WriteLine("\n\nPressione uma tecla para sair...");


Console.ReadKey();
}

e. Passagem de uma ArrayList para um método

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
41

Esta dica mostra como passar uma ArrayList para um método e, no corpo deste
método, acessar e exibir seus valores. Esta é uma tarefa que todos os estudantes da
linguagem C# devem saber realizar, devido ao seu uso em aplicações do dia-a-dia.

O código começa com o método que recebe a ArrayList e, mediante o uso do


laço foreach, exibe seus valores no console. Observe que o método é chamado a
partir do método Main, responsável por criar uma instância de ArrayList e dicionar
cinco inteiros a ela:
// método que receberá e exibirá o conteúdo do ArrayList

static void exibirArrayList(ArrayList mLista){


foreach(int valor in mLista)
Console.Write("{0} ", valor);
}

static void Main(string[] args){


// Cria o ArrayList
ArrayList lista = new ArrayList();

// Adiciona 5 inteiros
lista.Add(30);
lista.Add(2);
lista.Add(98);
lista.Add(1);
lista.Add(7);

// passa o ArrayList para um método que exibirá


// seus valores
exibirArrayList(lista);

// pausa o programa
Console.ReadKey();
}

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com
42

Conclusão

A programação é uma profissão muita árdua que precisa da parte do programador


um certo número de qualidades intelectuais e o domínio da lógica de programação
(Algorítmica).

A linguagem C# responda totalmente os critérios das linguagens de programação


orientada objecto, ele chega a implementar todos os conceitos de objecto :
encapsulação, herança e polimorfismo.

ESPU/UNIKIV EngºDudu Atungulu


doudouatungulu@gmail.com

Vous aimerez peut-être aussi