SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Introdução ao C#
   Leonardo Melo Santos
  http://about.me/leonardomelosantos
Conteúdo programático
● Estrutura da linguagem
● Entrada e saída com Console
● Tipos
● Variáveis
● Operadores
● Conversão de dados
● Tratamento de erros
Características
● Linguagem criada por Anders Heijsberg, criador do
  Delphi;
● Orientada a objetos;
● Não suporta herança múltipla;
● Tem um coletor de lixo (Garbage Collector);
● Se quiser, pode usar ponteiros de memória (unsafe);
● Influenciada por C++, Object Pascal e Java;
Características
● Case sensitive;
● Fortemente tipada;
● Comandos são finalizados com ";"
● Bloco de código definidos por chaves;
   ○ Possibilidade de aninhamento de blocos;
Método Main()
● Execução da aplicação se inicia pelo
  método Main();
● Quatro diferentes assinaturas podem ser
  utilizadas:
  ○   public   static   void Main()
  ○   public   static   int Main()
  ○   public   static   void Main(string[] args)
  ○   public   static   int Main(string[] args)
Classe Console
● Interface textual com o usuário;
● Utilizada principalmente para entrada e
  saída de dados;
● Pertence ao Namespace System;
● Leitura de dados:
  ○ Console.Read()
  ○ Console.ReadLine()
● Escrita de dados:
  ○ Console.Write()
  ○ Console.WriteLine()
Console - Leitura de dados
● Console.Read()
    ○ Lê um caractere digitado
    ○ Retorna seu valor em código ASCII
    ○ Retorna após finalizar comando (Tecla <Enter>)
●   Console.ReadLine()
    ○ Lê todo o texto
    ○ Também retorna após o <Enter>

    char letra = (char) Console.Read();
    string texto = Console.ReadLine();
Escrita de dados
● Console.Write()
  ○ Escreve na linha de comando
  ○ “Cursor” continua após o texto
● Console.WriteLine()
  ○ Escreve na linha de comando
  ○ “Cursor” passa para a próxima linha


Console.Write(“Escreve");
Console.WriteLine(“Escreve e quebra linha");
Tipos no C#
● Tipos inteiros:
  ○ byte, sbyte ( 8 bits )
  ○ short, ushort (16 bits)
  ○ int, uint (32 bits)
  ○ long, ulong ( 64 bits)
● Tipos de ponto flutuante:
  ○ float (precisão de 7 digitos)
  ○ double (precisão de 15 a 16 digitos)
Tipos no C#
● Tipo de exatidão numérica:
  ○ decimal (precisão de 28 casas decimais)
● Tipos de caracter
  ○ char (caracter simples)
  ○ string (tipo por referencia, vários caracteres)
● Tipo booleano
  ○ bool
    ■ permite apenas 2 tipos de valores: true ou false
    ■ 1 ou 0 não podem ser usados
Operadores
● Operadores aritméticos binários
  ○ Soma (+), subtração (-), divisão (/) e multiplicação (*)
  ○ Módulo ( % )
● Operadores lógicos:
  ○ and (&&), or (||) , not (!)
● Operadores Relacionais:
  ○ igual (==), diferente (ou não-igual) (!=)
  ○ menor (<), maior (>), maior ou igual (>=), menor ou
  ○ igual (<=)
● Operador de atribuição
  ○ Atribuição (=)
Incremento e decremento
Operadores ++ e --
● Ordem é importante
  ○ Antes - calcula e depois retorna o valor
  ○ Depois – retorna o valor e depois calcula


int quantidade = 10;
quantidade++;
int qtd = ++quantidade;
Nomes de variáveis
● Não podem iniciar com números ou
  caracteres especiais;
● Underscore ( _ ) é permitido;
● Boas práticas:
  ○ Propriedade começando com letra maiúscula;
  ○ Nomes de mpetodos começando com letra
    maiúscula;
  ○ Variáveis dentro de métodos começando com letras
    minúsculas;
  ○ Não colocar espaçamento antes ou depois do "=" ao
    atribuir valores em variáveis;
Notações
● Notação Pascal
  ○ NomeDaVariavel
  ○ Geralmente usada para métodos e propriedades
    (atributos de classe)
● Notação Camelo
  ○ nomeDaVariavel
  ○ Geralmente usada para variáveis locais
● Notação Húngara
  ○ preNomeVariavel
  ○ Prefixo define o tipo
  ○ Nomes de controles e interfaces (txtNome, cboUF)
Conversão de tipos
Existem quatro formas de conversão:
● Implícita
● Explícita
● Classe System.Convert
● Métodos Parse()
Coversão implícita
● Conversão de tipos equivalentes
● O menor se transforma no maior

int valor = 40;
double valorMaior = valor;
Conversão explícita
Tentativa de transformar valores compatíveis, mas não
necessariamente tipos de dados compatíveis.

int menor = 30;
byte valor = menor; // Erro de compilação
valor = (byte)menor; // Conversão. Ufa, funcionou!

menor = 300;
valor = (byte)menor;        // Overflow! Erro em
                               tempo de execução
Conversão via classe Convert
● Namespace System
● Contém métodos de conversão
  ○ Convert.ToInt32()
  ○ Convert.ToDateTime()
  ○ Convert.ToDouble()
  ○ ...
Converção via parse()
Geralmente usado para converte texto em
número

string valorEmTexto = "1000";

int valorEmInt = int.Parse(valorEmTexto);
double valorDouble = double.Parse
(valorEmTexto);

Int32 valorInt32 = Int32.Parse(valorEmTexto);
Double valorDoubleWrapper =
                    Double.Parse(valorEmTexto);
Exercícios
1. Criar Console Application
   Escrever autor do código na tela; Perguntar a idade; Se a idade
   for maior que 29, incrementa a idade; Se a idade for menor ou
   igual a 29, decrementa a idade; Mostrar a nova idade na tela;
2. Calcular o volume de uma caixa retangular e
   mostrar o resultado na tela.
3. Converter a temperatura em graus Fahrenheit para
   graus Celsius. Função: C = ((F - 32) * 5/9);
Enumeradores
O que é Enum?
● São constantes fortemente tipadas, em que
  é possível determinar quais os únicos
  valores aceitáveis para uma variável;
● Chegou para substituir as tradicionais
  constantes, que na verdade sempre foram
  tratadas como variáveis tradicionais de
  algum tipo primitivo;
Constante x Enum
Exemplo de uso de constante sem Enum
   public   static   TIPOS_BANCO_SQLSERVER = 1;
   public   static   TIPOS_BANCO_ORACLE = 2;
   public   static   TIPOS_BANCO_MYSQL = 3;
   public   static   TIPOS_BANCO_POSGRESQL = 4;


Exemplo de uso de constante com Enum
   public enum ModeloBancoDados {
      SQLServer = 1,
      Oracle = 2,
      MySQL = 3,
      PosgreSQL = 4
   }
Consultando itens de um Enum
String[] bancos = Enum.GetNames(typeof
(ModeloBancoDados));
foreach(String elemento in bancos)
{
   Console.WriteLine(elemento);
}
Exercício
1. Criar três constantes que identificarão três
   categorias de automóvel. Em seguida, criar
   um Enum que possuirám as mesmas
   categorias definidas nas constantes. Em
   seguida criar dois métodos estáticos (com
   mesmo nome) só que um deles vai receber
   um Enum como parâmetro e o outro vai
   receber uma constante tradicional. Dentro
   de cada método, implementar exibição no
   Console de qual valor foi passado.
Tratamento de erros
Tratando erros em .NET
● Erros são vistos como objetos
● Definidos através de uma Exceção
● Exceções possuem:
  ○ Mensagem de erro
  ○ Referência ao objeto que lançou o erro
  ○ Caminho de execução até o erro
● Toda exceção herda de System.Exception
Propriedades de uma Exception
● Message: Propriedade somente leitura que
  contém um texto descritivo do erro
● InnerException: Caso a exceção tenha sido
  causada por outra exceção, essa
  propriedade retorna a referência a ela
● Source: O nome da aplicação ou do objeto
  que causou o erro
● StackTrace: Uma string que representa as
  chamadas da pilha no momento em que a
  exceção foi lançada.
Tratando Exceptions
● Códigos que possam lançar exceções devem
  ser tratados
● Bloco try, catch, finally
  ○ try: código a ser executado
  ○ catch: estrutura semelhante ao switch, testa o tipo
    da exceção e executa o tratamento
  ○ finally: bloco de código que é sempre executado,
    ocorrendo um erro ou não
Blocos try, catch e finally
try {
    int numero = Convert.ToInt32("Texto");
} catch (FormatException fe) {
    Console.WriteLine(fe.Message);
} catch (Exception ex) {
    Console.WriteLine("Erro genérico!");
} finally {
    Console.WriteLine("Código sempre executa!");
}
Dúvidas

Weitere ähnliche Inhalte

Was ist angesagt?

Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETLeonardo Melo Santos
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2michellobo
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 

Was ist angesagt? (20)

Curso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NETCurso de OO com C# - Parte 03 - Plataforma .NET
Curso de OO com C# - Parte 03 - Plataforma .NET
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Java2
Java2Java2
Java2
 
Java5
Java5Java5
Java5
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Java4
Java4Java4
Java4
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Java7
Java7Java7
Java7
 

Andere mochten auch

Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Waldyr Felix
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UMLChristopher Cerqueira
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoAlessandro Binhara
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5César Augusto Pessôa
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Leonardo Melo Santos
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgRegis Magalhães
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONIFábio Delboni
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 

Andere mochten auch (20)

Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)Introdução a C# 4.0 (Revisão)
Introdução a C# 4.0 (Revisão)
 
Apostila sobre o Visualg
Apostila sobre o VisualgApostila sobre o Visualg
Apostila sobre o Visualg
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML
 
Aula 04
Aula 04Aula 04
Aula 04
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto Basico
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Aula 02
Aula 02Aula 02
Aula 02
 
Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#
 
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 

Ähnlich wie Curso de OO com C# - Parte 02 - Introdução ao C#

Ähnlich wie Curso de OO com C# - Parte 02 - Introdução ao C# (20)

Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdf
 
Módulo 2 pascal
Módulo 2  pascalMódulo 2  pascal
Módulo 2 pascal
 
Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 
Aula02 - Lógica de Programação
Aula02 - Lógica de ProgramaçãoAula02 - Lógica de Programação
Aula02 - Lógica de Programação
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Python
PythonPython
Python
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Python introdução a linguagem de programação
Python introdução a linguagem de programaçãoPython introdução a linguagem de programação
Python introdução a linguagem de programação
 
Aula02
Aula02Aula02
Aula02
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 

Mehr von Leonardo Melo Santos

Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalLeonardo Melo Santos
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoLeonardo Melo Santos
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesLeonardo Melo Santos
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoLeonardo Melo Santos
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosLeonardo Melo Santos
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoLeonardo Melo Santos
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoLeonardo Melo Santos
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisLeonardo Melo Santos
 

Mehr von Leonardo Melo Santos (14)

Scrum - Visão Geral
Scrum - Visão GeralScrum - Visão Geral
Scrum - Visão Geral
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV Digital
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
DotNet Remoting - .NET framework
DotNet Remoting - .NET frameworkDotNet Remoting - .NET framework
DotNet Remoting - .NET framework
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - Otimização
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
 
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimentoCurso de J2ME - Parte 02 - Ambiente de desenvolvimento
Curso de J2ME - Parte 02 - Ambiente de desenvolvimento
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicos
 
Sistemas Workflow
Sistemas WorkflowSistemas Workflow
Sistemas Workflow
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalho
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Marketing pessoal e as redes sociais
Marketing pessoal e as redes sociaisMarketing pessoal e as redes sociais
Marketing pessoal e as redes sociais
 

Curso de OO com C# - Parte 02 - Introdução ao C#

  • 1. Introdução ao C# Leonardo Melo Santos http://about.me/leonardomelosantos
  • 2. Conteúdo programático ● Estrutura da linguagem ● Entrada e saída com Console ● Tipos ● Variáveis ● Operadores ● Conversão de dados ● Tratamento de erros
  • 3. Características ● Linguagem criada por Anders Heijsberg, criador do Delphi; ● Orientada a objetos; ● Não suporta herança múltipla; ● Tem um coletor de lixo (Garbage Collector); ● Se quiser, pode usar ponteiros de memória (unsafe); ● Influenciada por C++, Object Pascal e Java;
  • 4. Características ● Case sensitive; ● Fortemente tipada; ● Comandos são finalizados com ";" ● Bloco de código definidos por chaves; ○ Possibilidade de aninhamento de blocos;
  • 5. Método Main() ● Execução da aplicação se inicia pelo método Main(); ● Quatro diferentes assinaturas podem ser utilizadas: ○ public static void Main() ○ public static int Main() ○ public static void Main(string[] args) ○ public static int Main(string[] args)
  • 6. Classe Console ● Interface textual com o usuário; ● Utilizada principalmente para entrada e saída de dados; ● Pertence ao Namespace System; ● Leitura de dados: ○ Console.Read() ○ Console.ReadLine() ● Escrita de dados: ○ Console.Write() ○ Console.WriteLine()
  • 7. Console - Leitura de dados ● Console.Read() ○ Lê um caractere digitado ○ Retorna seu valor em código ASCII ○ Retorna após finalizar comando (Tecla <Enter>) ● Console.ReadLine() ○ Lê todo o texto ○ Também retorna após o <Enter> char letra = (char) Console.Read(); string texto = Console.ReadLine();
  • 8. Escrita de dados ● Console.Write() ○ Escreve na linha de comando ○ “Cursor” continua após o texto ● Console.WriteLine() ○ Escreve na linha de comando ○ “Cursor” passa para a próxima linha Console.Write(“Escreve"); Console.WriteLine(“Escreve e quebra linha");
  • 9. Tipos no C# ● Tipos inteiros: ○ byte, sbyte ( 8 bits ) ○ short, ushort (16 bits) ○ int, uint (32 bits) ○ long, ulong ( 64 bits) ● Tipos de ponto flutuante: ○ float (precisão de 7 digitos) ○ double (precisão de 15 a 16 digitos)
  • 10. Tipos no C# ● Tipo de exatidão numérica: ○ decimal (precisão de 28 casas decimais) ● Tipos de caracter ○ char (caracter simples) ○ string (tipo por referencia, vários caracteres) ● Tipo booleano ○ bool ■ permite apenas 2 tipos de valores: true ou false ■ 1 ou 0 não podem ser usados
  • 11. Operadores ● Operadores aritméticos binários ○ Soma (+), subtração (-), divisão (/) e multiplicação (*) ○ Módulo ( % ) ● Operadores lógicos: ○ and (&&), or (||) , not (!) ● Operadores Relacionais: ○ igual (==), diferente (ou não-igual) (!=) ○ menor (<), maior (>), maior ou igual (>=), menor ou ○ igual (<=) ● Operador de atribuição ○ Atribuição (=)
  • 12. Incremento e decremento Operadores ++ e -- ● Ordem é importante ○ Antes - calcula e depois retorna o valor ○ Depois – retorna o valor e depois calcula int quantidade = 10; quantidade++; int qtd = ++quantidade;
  • 13. Nomes de variáveis ● Não podem iniciar com números ou caracteres especiais; ● Underscore ( _ ) é permitido; ● Boas práticas: ○ Propriedade começando com letra maiúscula; ○ Nomes de mpetodos começando com letra maiúscula; ○ Variáveis dentro de métodos começando com letras minúsculas; ○ Não colocar espaçamento antes ou depois do "=" ao atribuir valores em variáveis;
  • 14. Notações ● Notação Pascal ○ NomeDaVariavel ○ Geralmente usada para métodos e propriedades (atributos de classe) ● Notação Camelo ○ nomeDaVariavel ○ Geralmente usada para variáveis locais ● Notação Húngara ○ preNomeVariavel ○ Prefixo define o tipo ○ Nomes de controles e interfaces (txtNome, cboUF)
  • 15. Conversão de tipos Existem quatro formas de conversão: ● Implícita ● Explícita ● Classe System.Convert ● Métodos Parse()
  • 16. Coversão implícita ● Conversão de tipos equivalentes ● O menor se transforma no maior int valor = 40; double valorMaior = valor;
  • 17. Conversão explícita Tentativa de transformar valores compatíveis, mas não necessariamente tipos de dados compatíveis. int menor = 30; byte valor = menor; // Erro de compilação valor = (byte)menor; // Conversão. Ufa, funcionou! menor = 300; valor = (byte)menor; // Overflow! Erro em tempo de execução
  • 18. Conversão via classe Convert ● Namespace System ● Contém métodos de conversão ○ Convert.ToInt32() ○ Convert.ToDateTime() ○ Convert.ToDouble() ○ ...
  • 19. Converção via parse() Geralmente usado para converte texto em número string valorEmTexto = "1000"; int valorEmInt = int.Parse(valorEmTexto); double valorDouble = double.Parse (valorEmTexto); Int32 valorInt32 = Int32.Parse(valorEmTexto); Double valorDoubleWrapper = Double.Parse(valorEmTexto);
  • 20. Exercícios 1. Criar Console Application Escrever autor do código na tela; Perguntar a idade; Se a idade for maior que 29, incrementa a idade; Se a idade for menor ou igual a 29, decrementa a idade; Mostrar a nova idade na tela; 2. Calcular o volume de uma caixa retangular e mostrar o resultado na tela. 3. Converter a temperatura em graus Fahrenheit para graus Celsius. Função: C = ((F - 32) * 5/9);
  • 22. O que é Enum? ● São constantes fortemente tipadas, em que é possível determinar quais os únicos valores aceitáveis para uma variável; ● Chegou para substituir as tradicionais constantes, que na verdade sempre foram tratadas como variáveis tradicionais de algum tipo primitivo;
  • 23. Constante x Enum Exemplo de uso de constante sem Enum public static TIPOS_BANCO_SQLSERVER = 1; public static TIPOS_BANCO_ORACLE = 2; public static TIPOS_BANCO_MYSQL = 3; public static TIPOS_BANCO_POSGRESQL = 4; Exemplo de uso de constante com Enum public enum ModeloBancoDados { SQLServer = 1, Oracle = 2, MySQL = 3, PosgreSQL = 4 }
  • 24. Consultando itens de um Enum String[] bancos = Enum.GetNames(typeof (ModeloBancoDados)); foreach(String elemento in bancos) { Console.WriteLine(elemento); }
  • 25. Exercício 1. Criar três constantes que identificarão três categorias de automóvel. Em seguida, criar um Enum que possuirám as mesmas categorias definidas nas constantes. Em seguida criar dois métodos estáticos (com mesmo nome) só que um deles vai receber um Enum como parâmetro e o outro vai receber uma constante tradicional. Dentro de cada método, implementar exibição no Console de qual valor foi passado.
  • 27. Tratando erros em .NET ● Erros são vistos como objetos ● Definidos através de uma Exceção ● Exceções possuem: ○ Mensagem de erro ○ Referência ao objeto que lançou o erro ○ Caminho de execução até o erro ● Toda exceção herda de System.Exception
  • 28. Propriedades de uma Exception ● Message: Propriedade somente leitura que contém um texto descritivo do erro ● InnerException: Caso a exceção tenha sido causada por outra exceção, essa propriedade retorna a referência a ela ● Source: O nome da aplicação ou do objeto que causou o erro ● StackTrace: Uma string que representa as chamadas da pilha no momento em que a exceção foi lançada.
  • 29. Tratando Exceptions ● Códigos que possam lançar exceções devem ser tratados ● Bloco try, catch, finally ○ try: código a ser executado ○ catch: estrutura semelhante ao switch, testa o tipo da exceção e executa o tratamento ○ finally: bloco de código que é sempre executado, ocorrendo um erro ou não
  • 30. Blocos try, catch e finally try { int numero = Convert.ToInt32("Texto"); } catch (FormatException fe) { Console.WriteLine(fe.Message); } catch (Exception ex) { Console.WriteLine("Erro genérico!"); } finally { Console.WriteLine("Código sempre executa!"); }