Csharp.intro
Upcoming SlideShare
Loading in...5
×
 

Csharp.intro

on

  • 335 views

 

Statistics

Views

Total Views
335
Slideshare-icon Views on SlideShare
327
Embed Views
8

Actions

Likes
0
Downloads
54
Comments
0

1 Embed 8

http://www.helderjmo.com 8

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Quem conhecer bem as regras estabelecidas pelo CLI, está apto a criar novas linguagens de alto nível para correr sobre a plataforma;Boa estratégia por parte da MS para “angariar” programadores para a sua plataforma (ex: J#)
  • Inclui um vasto número de funcionalidades comuns
  • Introdução-> programa simples
  • Os programas são organizados em classes encapsulam dados e métodos
  • O byte é unidade minima em termos de endereçável pela maioria dos processadores
  • O byte é unidade minima em termos de endereçável pela maioria dos processadores\\f -> util para impressoras de papel continuo para avançar para a proxima página
  • O byte é unidade minima em termos de endereçável pela maioria dos processadores\\f -> util para impressoras de papel continuo para avançar para a proxima página
  • São objectos com um tratamento especial
  • Faz sempre a primeira iteração
  • Muitas vezes designados tabelas dentro de tabelasFalar num array unidimensional de strings ... Na pratica é um jagged array...
  • Polimorfismo:Comportamento andar: no carro e moto atraves de um motor... Na bicicleta atraves do pedal
  • Este processo n é bom em termos de performance
  • Mostrar exemplos com o visual studio
  • Mostrar exemplos com o visual studio
  • Polimorfismo é tipicamente util em arrays de obejctos
  • Em vez de usar convenções numéricas
  • Por o throw

Csharp.intro Csharp.intro Presentation Transcript

  • Conceitos IntrodutóriosHélder Oliveira helderjmo@gmail.com
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Introdução à .net Framework• Bases de Programação em C#• Programação Orientada a Objectos em C#• O essencial da plataforma .net• Formularios Windows
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• A Arquitectura• Common Language Runtime• .NET Class Library
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#C# VB .net J# ...WindowsASP .netWeb ControlsWeb ServicesWindows FormsCommon Language Runtime (CLR).NET Framework Class Library (FCL)
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Máquina Virtual– Implementação da Microsoft daespecificação Common LanguageInfrastructure (CLI)• Compilador JIT (Just in time)– Traduz código intermédio MSILem código nativo– Possui mecanismos deoptimização da compilação• Garbage Collection• Gestão de Thread’s• Exception HandlingC# CompilerVB CompilerJ# Compiler...(outros)MSIL JITNativeCode
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Especificação desenvolvidapela Microsoft• Define todo o ambiente sesuporte a linguagens de altonível• Especifica essencilamentequatro aspectos:– Common Type System (CTS)– Metadata– Common LanguageSpecification (CLS)– Virtual Execution System(VES)Uniformização e Licenciamento: Standard ECMA-335, CommonLanguage Infrastructure (CLI) ISO/IEC 23271, Common LanguageInfrastructure
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Inclui a Base Class Library• Incluí classes próprias daMicrosoft• Inclui uma um vastonúmero de funcionalidadescomuns• Facilita o trabalho aoprogramadorBase Classes Library (BCL)Exemplos de aplicação• Manipulação de Ficheiros• Imagem e Desenho• Interacção com Bases de Dados• Manipulação de documentos XML• Comunicações• Web
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Introdução• Tipos de dados• Variáveis• Constantes• Controlo de fluxo• Arrays Unidimensionais• Arrays Multidimensionais• Jagged Arrays
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• O Primeiro programausing System;namespace PrimeiroPrograma{class Program{static void Main(string[] args){Console.WriteLine("O meu 1o programa em c#");}}}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Tipos NuméricosNome Tamanho(em bytes)Gama Sinalbyte 1 0 a 255 Nãosbyte 1 -128 a 127 Simshort 2 -32 768 a 32 767 Simushort 2 0 a 65 535 Nãoint 4 -2 147 483 648 a 2 147 483 648 Sim
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Tipos Numéricos (continuação)Nome Tamanho(em bytes)Gama Sinaluint 4 0 a 4 294 967 295 Nãolong 8-9 223 372 036 854 775 808 a9 223 372 036 854 775 808Simulong 8 0 a 18 446 744 073 709 551 616 Nãofloat 4 ±1.5 × 10−45 a ±3.4 × 1038 Simdouble 8 ±5.0 × 10−324 a ±1.7 × 10308 Simdecimal 16 ±1.0 × 10−28 a ±7.9 × 1028Sim
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Tipo LógicoNome Tamanho(em bytes)Gamabool 1 true ou falseCaracteresNome Tamanho(em bytes)Descriçãochar 2 Representa um caracter (letra)
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#char char1 = X; // Caracter literalchar char2 = x0058; // Hexadecimalchar char3 = (char)88; // Cast de valor do tipo inteirochar char4 = u0058; // Unicodechar char5 = ; // Sequência de escapeCaracteres – Exemplos de Utilização
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Caracteres – Sequências de EscapeSeq. Descrição’ Plica” Aspa Barra para trás0 Valor nuloa Som (beep)v Tabulação VerticalSeq. Descriçãob Backspacef Form Feedn Nova linhar Ir para o inicio da linhat Tabulação horizontal
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Cadeias de Caracteres (Strings)• São objectos• Ocupam sempre um mínimo de 20 bytes• Uma string é representada, em código, através de aspasaltas (“”)string str = "Representação de uma string.";
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Podem ser declaradas emqualquer parte do código• É boa prática respeitar asconvenções de nomes paravariáveis.• Uma variável deve ser sempreinicializada antes de uzadaConvenções de Nomes:www.irritatedvowel.com/Programming/Standards.aspx
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Úteis para representarvalores que não mudam aolongo do código• São declaradas através douso do termo const• Devem ser sempreinicializadas ao mesmotempo quesão declaradas• Podem ser declaradas emqualquer ponto do código
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Precedência Operador DescriçãoPrimária(expressão) Agrupamento de expressões++ ou -- Pós-incrementação ou pós-decrementaçãoUnária+ ou - Sinal numérico! Negação~ Complemento++ ou -- Pré-incrementação ou pré-decrementação(tipo) CastMultiplicativa* Multiplicação/ Divisão% RestoAditiva+ Adição- Subtracção
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Precedência Operador DescriçãoDeslocamento<< Deslocamento à esquerda>> Deslocamento à direitaRelacional< Comparação “menor que”> Comparação “maior que”<= Comparação “menor ou igual que”=> Comparação “maior ou igual que”is Comparação de tipos de dadosIgualdade== Teste de igualdade!= Teste de diferençaOperaçõeslógicasbinárias& And binário^ Xor binário| Or binário
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Precedência Operador DescriçãoOperaçõeslógicas sobreexpressões&& And|| Or? : CondiçãoAtribuição= Atribuição simples*=/=%=+=-=<<=>>=&=^=|=Atribuição pós operação da expressão com avaríavel de atribuição.Exemplo:x +=3 ;é equivalente a:x=x+3;
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#if if-elseint x = 1;if (x > 0){Console.WriteLine("É maiorque 0");}int x = -4;if (x > 0){Console.WriteLine("É maiorque 0");}else{Console.WriteLine("É menorou igual a 0");}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#if-else if [-else] switch-caseint x = -4;if (x > 0){Console.WriteLine("É maior que 0");}else if(x < 0){Console.WriteLine("É menor que 0");}else{Console.WriteLine("É 0!");}string mes;switch (x){case 1:mes = "Janeiro";break;case 2:mes = "Fevereiro";break;(...)default:mes = "Mes Invalido";}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#for whileint t = 2;for (int i = 1; i <= 10; i++){Console.WriteLine(t+" x " + i + " = " + i*t);}int t=2;int i=1;while (i<=10){Console.WriteLine(t+" x " + i + "= " + i*t);i++;}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#do-whileint t=2;int i=1;do{Console.WriteLine(t+" x " + i + “= " + i*t);i++;}while (i<=10);Break e Continue• Break: termina o ciclo noponto é em que é executado;• Continue: termina umainteração no ponto é que éexecutado e iniciaimediatamente a novainteração
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#int pares[5];ouint []pares = newint[5];0 2 4 6 (N-1) x 20 1 2 3 N-1• Sintaxe:Declaração estática(para tipos elementares)Tipo nome[N];OuDeclaração dinâmicatipo [] nome=new tipo[N];Exemplo:int N = 5;int []pares = new int[N];for (int i = 0; i < N; i++)pares[i] = 2 * i;int[] pares = { 0, 2, 4,6 };int[] pares = new int[]{0, 2, 4, 6 };Inicialização ImediataInicialização Dinâmica
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Dimensão 2 (Exemplo):int [,]matriz = new int[3,4];//inicialização dinâmicafor (int i = 0; i < matriz.GetLength(0); i++)for (int j = 0; j < matriz.GetLength(1); j++)matriz[i, j] = i + j;0 1 2 30 1 2 31 2 3 42 3 4 5012
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Dimensão 2(Exemplo da matriz identidade)://inicialização estáticaint [,]matriz = newint[3,3]{{1,0,0},{0,1,0},{0,0,1}};• Dimensão 3int [,,]matriz = new int[2,4,2];1 0 00 1 20 1 00 0 1012
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#int [][]jagged = new int[4][];jagged[0] = new int[]{0,1,2};jagged[1] = new int[]{1,2};jagged[2] = new int[]{2,3,4,5};jagged[3] = new int[]{3};0 1 20 1 21 22 3 4 501233
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Conceitos Básicos• Sistema de Tipos do CLR• Estrutura e Mecanismos dasClasses• Construtores• Procedimentos e Funções• Conversão entre tipos• Enumerações• Namespaces• Tratamento de Excepções
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Programação Oriendata a Objectos• Cada entidade de um problemapassa a ser representada por umobjecto• Aproximação à realidade• Cada objecto é representado poruma “classe” (class)• As características ecomportamentos dos objectossão traduzidas por atributos emétodos
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Encapsolamento• Protecção de estruturas• Criação de interfaces(através de funções, porexemplo)class Encapsolamento{private int a;public int GetA(){return a;}}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Herança• Representação de entidadesque herdam características ecomportamentos de outrasVeiculoCarro Bicicleta MotoPolimorfismo• Objectos diferentes, mas com os mesmos métodos que,ainda assim, traduzem comportamentos diferentes.
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Referências• Ao manipular um objecto, estenão é manipulado directamente,mas sim a sua referência.• Uma referência vazia contem ovalor null.MyObject aMyObject bMyObject cInstância AInstância B
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Boxing/Unboxing• Capacidade de adaptar tiposelementares a objectos;int i = 5;object o= i; //boxingi.ToString(); //boxingi=(int)o;//unboxingReferência this• Representa umareferência para o objectocorrente
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Níveis de acesso para membros de uma classeModificador Descriçãopublic Visível para fora da classe onde está definido.protected Visível dentro da classe onde foi declarado e em classesderivadas desta.private Visível apenas nas classes onde está definido.internal Visível apenas na própria unidade de compilação (assembly).protected internal Visível apenas na própria assembly e em classes derivadas daclasse onde está declarado.Níveis de acesso de topo (entre classes)Modificador Descriçãopublic Permite que uma classe seja visível a partir de outro assembly.internal A classe é apenas visível dentro do próprio assembly. Obtém-seo mesmo efeito se nenhum modificador for incluído nadeclaração da classe
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Membros estáticos• Variáveis estáticas sãopartilhadas por todas asinstâncias da classe a quepertencem;• Métodos estáticos sãoexecutados fora dainstanciação de objectos
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• São executados sempre queum objecto é criado• São usados tipicamentepara inicialização deatributos• Permitem a passagem deparâmetros• Na prática, consiste nummétodo com o mesmonome da respectiva classe esem especificação de tipode restornoclass ObjectA{private int a;public ObjectA(int a){this.a = a;}public ObjectA(){a = 0;}}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Funçãopublic int Le(){return a;}Procedimentopublic void Escreve(int a){this.a = a;}Overloadingpublic int Soma(int a,int b,int c){return a+b+c;}public int Soma(int a,int b){return a+b;}• As funções tomam o mesmo nome e omesmo tipo de retorno, mas possuemdiferentes alinhamentos de parâmetrosde entrada
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Passagem de Parâmetros• As variáveis são passadaspor cópia• Mesmo sendo o parâmetrouma referência, é passadauma referência desseparâmetroPassagem por referência (ref)• Util para tipos elementarespublic void PSomar(int a,int b, ref int res){res = a + b;}public int FSomar(int a,int b){return a + b;}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Variáveis de Saída (out)• Util quando se tem umafunção com várias saídas• Difere da passagem porreferência porque não exigeque as variáveis estejamdeclaradasExemplo (mínimo e máximo)public void Metodo(){int []a=new int[]{2,5,8};int min, max;MaxMin(a, out min, outmax){}public int MaxMin(int []a,out int min, out int max){(...)}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#public class Veiculo{public bool motorizado;public int nrodas;}public class Carro : Veiculo{public int nportas;}public class Bicicleta: Veiculo{public int tipo;}Classe MãeVeículomotorizadonrodasCarromotorizadonrodasnportasBiciletamotorizadonrodastipo• Caso se pretenda que umaclasse não permita que outrasherdem as suascaracterísticas, usa-se omodificador sealed.Exemplo:sealed class Veiculo{(...)}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Polimorfismo• É a forma mais coerente deredefinir métodos em objectosque derivam de outros• Implica alguma perda deperformance• Usa-se a palavra-chavevirtual para indicar queum método pode serredefinido• Usa-se o termo overridepara indicar a redefinição deum métodoVeiculoCarroAndarRedefinição SimplesAndarPolimorfismoclass Veiculo{public virtual void Andar(){Console.WriteLine("[VEICULO]Andar...");}public void Parar(){Console.WriteLine("[VEICULO]Parar...");}}class Carro : Veiculo{public override void Andar(){Console.WriteLine("[CARRO]Andar...");}public new void Parar(){Console.WriteLine("[CARRO]Parar...");}}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Conversão por Casting• Também designada porconversão explícita• Util para conversão entreestruturas de memóriacompatíveisExemplo:Carro c = new Carro();Veiculo v = (Veiculo)c;Operador is• Testa o tipo de dados doobjecto referenciadoExemplo:Carro c = new Carro();Veiculo v = c;if (v is Carro)Console.WriteLine("Esteveiculo é na verdade umcarro!");
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#Operador typeof• Identifica o tipo de umobjectoExemplo:Type t = typeof(Carro);Console.WriteLine("Desc dotipo Carro:" + t);Operador as• Converte variaveis de tiposdiferentes, mas compatíveis• Semelhante ao cast, mas nãogera excepçõesExemplo:Carro c2 = v as Carro;É equivalente a:if (v is Carro)c2 = (Carro)v;elsec2 = null;
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Representam constantessimbólicas de um certotipo concreto• São representadasinternamente por uminteiro• Podem ser convertidaspara inteiros através deum castExemplo:public enumTIPOS_VEICULOS{Carro,Bicileta,Moto}(...)private TIPOS_VEICULOS tipo;public Veiculo(TIPOS_VEICULOS t){tipo = t;}(...)Veiculo v = newVeiculo(TIPOS_VEICULOS.Carro);
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Util para organizar classes• Evitar colisões pordefinições de classes commesmo nome• Permite uma organizaçãohierarquica• O uso de um Namespacedeve ser declarado atravésdo termo using, no iniciodo ficheiroMySoftToolsUtil StringForms WebMySoftMySoft.ToolsMySoft.Tools.UtilMySoft.Tools.StringMySoft.FormsMySoft.Web
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Usa-se sempre que háporções de código comsignificativa probabilidadede gerar excepções• O código a tratar deve sercolocado num bloco try-catch• O bloco catch deve contercodigo a executar caso aexcepção ocorratry{res = a / b;}catch(Exception ex){Console.WriteLine("[ERRO]"+ ex.Message);}
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• A classe System.Object• Cadeias de caracteres(Strings)• Colecções• Manipulação de Ficheiros
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Object é a classe da qualtodos os objectosdescendem• Garante funcionalidadesbásicas de todos os objectos• ToString é um dos métodoscomuns a todos os objectos• A maioria dos metodoscomuns exigem redefiniçãode acordo com o abjectoem causa
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• O objecto System.Stringpermite representar umacadeia de caracteres• Contém métodos paramanipulação de strings• O índice mínimo doscaracteres de uma string é 0Membro DescriçãoLenght Tamanho da stringOperador + Concatenação de stringsIndexOf Encontra uma string dentrode outra string e devolve oíndice de posicionamentoReplace Substitui por uma novastring todas as ocorrênciasde uma string noutra stringSplit Separação de stringssegundo caracteres deseparaçãoSubString Devolve parte de umastringAlguns membros úteis da classe String
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Permitem agrupar e ordenarconjuntos de objectos• Oferecem um elevado nível deflexibilidade na gestão dosobjectos• Todas as classes querepresentão colecçõesderivam da interfaceICollection• ArrayList e HashTablesão duas das classes maiscomuns neste tipo deoperações• ArrayList: representa uma listade referencias para objectos.Contem metodos para adição,deslocamento ou eliminaçãode elementos de forma flexível• HashTable: Difere da classeArrayList essencialmente porpermitir associar uma chave acada elemento da lista.
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• Namespace System.IO• Os objectos System.IO.StringReader eSystem.IO.String.Writer permitem facilmente a leitura eescrita de ficheiros, respectivamenteExemplo de leitura:System.IO.StringReader sr;sr=new StringReader("c:teste.txt");string s = sr.ReadToEnd();Exemplo de escrita:System.IO.StringWriter sw;sw=new StringWriter();string s = "Conteudo de Ficheiro";sw.Write(s);
  • Hélder Oliveira helderjmo@gmail.com Introdução ao C#• No Visual Studio, podem sercriados a partir de umProjecto do tipo “WindowsApplication”• Usam assemblies da .NETFramework que contém umavariedade de ferramentaspara formulários Windows
  • Conceitos IntrodutóriosHélder Oliveira helderjmo@gmail.com