3.65k likes | 4.07k Views
Curso de C#. Quem sou eu - Original. Formado em processamento de dados pela UNIFIEO Coordenador da equipe de desenvolvimento da MSPi do Brasil Softwares de Gestão S/A Microsoft Certified Professional em ASP.NET Co-líder da célula acadêmica TouchAndTouch.NET Palestrante Microsoft .NET.
E N D
Quem sou eu - Original • Formado em processamento de dados pela UNIFIEO • Coordenador da equipe de desenvolvimento da MSPi do Brasil Softwares de Gestão S/A • Microsoft Certified Professional em ASP.NET • Co-líder da célula acadêmica TouchAndTouch.NET • Palestrante Microsoft .NET
Quem sou eu – Heitor • Aluno da cadeira de Jogos • Mestrado Eng. De Software • Fábrica de software de jogos para dispositivos móveis • Trabalho com dispositivos móveis (2002) • PALM, Celular ... • Trabalho com jogos (2003) • Brew • J2ME • Trabalhei com C# + Asp.Net em 2004 • Apenas 3 meses :P • Aprendido “na tora[lmente]” • Ajudante de introdução do curso de XNA • A idéia é não começar o curso zerado • Gerar debate e dúvidas
Agenda • Visão geral de C# • Utilizando variáveis do tipo valor • Comandos e exceções • Métodos e parâmetros • Matrizes (vetores) • Fundamentos da programação orientada a objetos • Utilizando variáveis do tipo referência • Criando e destruindo objetos • Herança em C# • Agregação, namespace e escopo avançado • Operadores, delegações e eventos • Propriedades e indexeradores • Atributos
Agenda • Visão geral de C# • Utilizando variáveis do tipo valor • Comandos e exceções • Métodos e parâmetros • Matrizes (vetores) • Fundamentos da programação orientada a objetos • Utilizando variáveis do tipo referência • Criando e destruindo objetos • Herança em C# • Agregação, namespace e escopo avançado • Operadores, delegações e eventos • Propriedades e indexeradores • Atributos
Entender a estrutura básica de um programa simples escrito em C# Utilizar a classe Console para operações básicas de entrada / saída Gerar a documentação em XML de um programa escrito em C# Compilar e executar um programa escrito em C# Depurar um programa escrito em C# Objetivos
Case sensitive: diferencia maiúsculas de minúsculas Fortemente tipada: todas as variáveis devem ser declaradas Orientada a objetos: tudo é um objeto no .NET Framework Geralmente as linhas são terminadas com “;” O método Main Principais Características
using System; class Hello { public static void Main( ) { Console.WriteLine(“Hello World”); } } Hello World
Console.Write: Console.Write( “TouchAndThink.NET” ); Console.WriteLine: Console.WriteLine( “TouchAndThink.NET” ); Console.Read: char letra = Console.Read( ); Console.ReadLine: string linha = Console.ReadLine( ); Classe Console
Vamos utilizar o Microsoft Visual Studio 2005 para desenvolver o programa Hello World Exercício
Comentando uma única linha // Comentário várias linhas /* ... */ Documentação XML /// Tipos de Comentários
using System; /// <summary> /// Este é meu primeiro programa em C# /// </summary> class Hello { /// <remarks> /// Utilizando o método WriteLine da classe Console /// <seealso cref="System.Console.WriteLine"/> /// </remarks> public static void Main( ) { Console.WriteLine( "Hello World Documentado" ); } } Documentação XML
<summary>...</summary> Breve descrição <remarks>...</remarks> Descrição detalhada <seealso cref>...</ seealso> Indica uma referência para outro membro ou campo Documentação completa em: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrftagsfordocumentationcomments.asp Tags Documentação XML
Através do Visual Studio: ->Menu Project -> Properties -> Build ->XML Documentation File Através da janela de comando: csc meuprograma.cs /doc:meuxml.xml Gerando Documentação XML
Gerando a documentação XML de um programa escrito em C# Exercício
Através do Microsoft Visual Studio: ->Menu Build -> Build Solution Através da janela de comando: csc /out:meuprograma.exe meuprograma.cs Compilando
Através do Microsoft Visual Studio: -> Menu Debug -> Start Without Debugging (CTRL+F5) Através da janela de comando: Digite o nome da aplicação (.EXE) Executando
Configurando “breakpoints” Right Click na linha -> Insert BreakPoint Execute um clique na margem esquerda Executando passo-a-passo ->Menu Build ->Start (F5) Examinando e modificando variáveis Através da janelas Autos e Wacth Depurando
Compilar, executar e depurar um programa escrito em C# Exercício
CORDBG.EXE (Runtime Debugger) Depurador de linha de comando ILASM.EXE (MSIL Assembler) Pega a MSIL e gera o executável ILDASM.EXE (MSIL Disassembler) Gera MSIL a partir de código executável Lista completa de utilitários em: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconNETFrameworkTools.asp Ferramentas SDK
Utilizando o utilitário de linha de comando ILDASM para verificar código MSIL Demonstração
Agenda • Visão geral de C# • Utilizando variáveis do tipo valor • Comandos e exceções • Métodos e parâmetros • Matrizes (vetores) • Fundamentos da programação orientada a objetos • Utilizando variáveis do tipo referência • Criando e destruindo objetos • Herança em C# • Agregação, namespace e escopo avançado • Operadores, delegações e eventos • Propriedades e indexeradores • Atributos
Entender os tipos de dados do C# Nomear variáveis Declarar variáveis Atribuir valor à variáveis Criar seus próprios tipos de dados Conversão entre tipos de dados Objetivos
Parte do CLR (Commom Language RunTime) Compartilhado entre todas as linguagens .NET Tipos de variáveis: Value types Reference types Commom Type System
Existem dois tipos de value types Built-in types (Simple types) int float User defined types enum struct Value Types
Identificados através de palavras reservadas Essas palavras reservadas são na verdade “apelidos” para estruturas pré-definidas Exemplo: int // palavra reservada System.Int32 // struct type Simple Types
Regras: Iniciar com caracter ou underscore Depois do primeiro caracter, utilize caracteres e/ou dígitos Não utilizar palavras reservadas Recomendações: Evitar utilizar todas as letras maiúsculas Evitar iniciar com underscore Evitar utilizar abreviações Utilizar “PascalCasing” para variáveis de múltiplos nomes classes, métodos, propriedades, enums, interfaces, campos de somente leitura, constantes, namespaces e propriedades CamelCasing campos e parâmetros Nomeando variáveis
Identificar o tipo e o nome da variável: int num1; Você pode declarar múltiplas variáveis em uma mesma linha: int num1, num2, num3; Declarando Variáveis Locais
Atribua valores à variáveis através do operador “=“ int num1; // Declarando a variável num1 = 0; // Atribuindo valor OU int num1 = 0; // Declarando a variável e já inicializando a mesma Atribuindo Valores à Variáveis
Ao invés de escrever: int num1 = 0; num1 = num1 + 4; Escreva: int num1 = 0; num1 += 4; Isso funciona com todos os operadores aritméticos “Shortland”
Ao invés de escrever: int num1 = 0; num1 = num1 + 1; Escreva: int num1 = 0; num1++; Isso funciona com todos os operadores “+” e “-” Incremento e Decremento
Existem duas formas: num1++; ++num1; Exemplos: int numero = 10; int preresultado = ++numero; // preresulatdo =11 int posresultado = numero++; // preresulatdo =11 Incremento e Decremento
As expressões são resolvidos da esquerda para direita (com exceção dos operações de igualdade) x + y + z é resolvido como ( x + y ) + z Os operadores de igualdade são resolvidos da direita para a esquerda x = y = z é resolvido como x = ( y = z ) Precedência
Os operadores atitméticos *, / e % tem maior precedência do que os operadores + e – x + y * z é resolvido como x + ( y * z ) Você pode altetar a precedência através do uso de parênteses ( x + y ) * z Precedência
Desenvolva um programa em C# que declara variáveis do tipo simples, atribua valores a estas variáveis e mostre seus respectivos valores na tela Exercício
Definida através da palavra chave enum: enum Cor { Branca, Preta, Azul } Utilizando uma enumeração: Cor corParede = Cor.Branca; Mostrando valor de uma enumeração: // Mostra Branca Console.WriteLine( corParede ); Enumerações
Definida através da palavra chave struct: public struct Pessoa { public string nome; public int idade; } Utilizando uma estrutura: Pessoa pes; // Declara a variável pes.nome = “João”; // Altera o valor pes.idade = 25; Estruturas
Desenvolver um programa em C# que faça uso de enumerações e estruturas Exercício
C# suporta dois tipos de conversão: Conversão implícita de dados Conversão explícita dedados Convertendo Variáveis
O C# se encarrega de efetuar a conversão: int intValue = 123; long longValue = intValue; Conversões implícitas não falham: podem perder precisão, mas não magnitude Conversão Implícita
Para conversões explicitas, você deve utilizar uma expressão cast: long longValue = Int64.MaxValue; int intValue = (int)longValue; Conversões explícitas podem falhar. Você pode tratar esse tipo de erro através do uso do bloco checked Conversão Explícita
// Será gerada uma exceção no caso de “overflow” checked { long longValue = Int64.MaxValue; int intValue = (int)longValue; Console.WriteLine( intValue ); } // Não será gerada uma exceção no caso de “overflow” unchecked { long longValue = Int64.MaxValue; int intValue = (int)longValue; Console.WriteLine( intValue ); } checked / unchecked
Desenvolver um programa em C# que faça conversão implícitas e explícitas de variáveis Exercício
Agenda • Visão geral de C# • Utilizando variáveis do tipo valor • Comandos e exceções • Métodos e parâmetros • Matrizes (vetores) • Fundamentos da programação orientada a objetos • Utilizando variáveis do tipo referência • Criando e destruindo objetos • Herança em C# • Agregação, namespace e escopo avançado • Operadores, delegações e eventos • Propriedades e indexeradores • Atributos