SlideShare ist ein Scribd-Unternehmen logo
1 von 75
C#
     @miguelpedroso
(C Sharp)

       @miguelpedroso
C# é uma linguagem de
programação moderna e orientada
          por objectos.

     mas… porquê usar C#?
Assembler


       i386                           i386 bin

      ARM                             ARM bin

      6502                            6502 bin


       Z80                             Z80 bin




  Código assembly                  binário para correr
específico de um CPU               num tipo de CPUs.
Compilador                          Assembler
              de C


                               i386                           i386 bin

Programa
                              ARM                             ARM bin
  em C

                                 …                               … bin




                          Código assembly                  binário para correr
                        específico de um CPU               num tipo de CPUs.
Quando compilamos um programa
escrito em C, ele só pode funcionar
   na plataforma para o qual foi
            compilado.

            E em C#?
Compilador              CLR
             de C#




Programa                Código           Código
  em C#                   CIL            nativo




                        Bytecode
Quando compilamos o programa em
 C#, é gerado código CIL (Common
      Intermediate Language)

Esse código intermédio é executado
    com ajuda de uma Common
        Language Runtime
x86            CIL

add eax, edx   ldloc.0
               ldloc.1
               add
PIC16F628a     stloc.0

addwf 20h, f
Desta forma, um programa escrito
 em C#, depois de compilado, é
      platform-independent
Hello, World
public class HelloW
{
  public static void Main()
  {
    System.Console.WriteLine("Hello, World!");
  }
}
Tipos de dados

      byte, sbyte, short, ushort,
int, uint, long, ulong, float, double,
        decimal, bool, object

            char, string
string str1 = “Hello”;
string str2 = “World ”;

string str3 = str1 + “ “ + str3 + 0.ToString()

Console.WriteLine(str3);

Output: Hello World 0
Em C# as variáveis locais têm de ser
inicializadas antes de serem utilizadas.

           int i = new int();

                  ou

               int i = 0;
decimal vs double

quando queremos tratar de valores
monetários, devemos usar sempre o
          tipo decimal!
decimal vs double
static void Main(string[] args)
{
       decimal cash1 = 99999999999999.99M;
       decimal result = cash1 - 1M;

       double cash2 = 99999999999999.99D;
       double result2 = cash2 - 1.0D;

       Console.WriteLine("Decimal: " + result.ToString() + "n Double: " + result2.ToString());

       Console.ReadLine();
}



    Output: Decimal: 99999999999998,99
             Double: 99999999999999
                                                               Why? :)
Operadores

     =, +, -, *, /, %

    ==, !=, <, <=, >=

    ! (Negação Lógica),
~ (Complemento Bitwise)
Operadores

++, --, +=, -=, *=, /=

   <<, >>, |, &, ^

       &&, ||
Operadores

          && vs &

 && é um AND condicional
(true && false) retorna false

     (1 & 3) retorna 1
Operador Ternário

int foo = (condition) ? 4 : 3;
Condições

if (condition)
   action();
else if (condition2)
   action2();
else
   action3();
Ciclos

while (condition)     for (decl; condition; action)
{                     {
  instructions;           instructions;
}                     }

             do
             {
                instructions;
             } while (condition)
Ciclos Infinitos


 while (true);


  for ( ; ; );
Ciclos foreach

string name = "Miguel Ferreira de Sá Pedroso";
string []arr = name.Split(" ".ToCharArray());

foreach (string str in arr)
    System.Windows.Forms.MessageBox.Show(str.ToUpper());




                                                 ...
Excepções

try
{
   int a = 0;
   int b = 2 / a;
}
catch (Exception err)
{
   System.Windows.Forms.MessageBox.Show(err.Message);
}
finally
{
   // Do something
}
Orientação por Objectos

                 Member




StandartMember        PremiumMember
Orientação por Objectos

                 Member          Os StandartMembers e os
                               PremiumMembers partilham
                                certos atributos e métodos
                                       em comum…


                                         Mas também têm
StandartMember        PremiumMember      diferentes tipos de
                                          comportamento!
Orientação por Objectos


Com programação orientada por
objectos, podemos usar classes
   para reaproveitar código.

Cada objecto individual, chama-se
         uma instância.
Orientação por Objectos
                               public class PremiumMember : Member
                                {
                                  int premiumScore;
public abstract class Member
{                                  public void IncreaseScore()
   protected string nick;          {
   protected int age;                 if (this.active)
                                          this.premiumScore++;
    protected bool active;            else
}                                         throw new Exception("Increasing
                               score of inactive member!");
                                   }
                                 }
Orientação por Objectos


                             Member abe = new StandartMember()
public class Member
                             abe.nick = “Abraham Lincoln”;
{
   protected string nick;
                             Member membro = new PremiumMember();
   protected int age;
                             membro.nick = “Miguel Pedroso”;
                             membro.age = 20;
    protected bool active;
                             membro.active = true;
}
                             membro.IncreaseScore();
Orientação por Objectos
     (Polimorfismo)
Member abe = new StandartMember()
abe.nick = “Abraham Lincoln”;

PremiumMember membro = new PremiumMember();
StandartMember lincoln = (StandartMember)abe;


 Podemos usar uma classe com o seu
próprio tipo, com o tipo de uma super-
classe, ou com o tipo da interface que
              implementa.
Orientação por Objectos

                          object




UInt32                    Member                   String




         StandartMember            PremiumMember
Orientação por Objectos


{access modifier} class Member
{
    {access modifier} string nick;
}
Orientação por Objectos


private              apenas acessível na própria classe;
protected            também acessível nas suas sub-classes;
public               acessível por qualquer outra classe;
internal             acessível no mesmo assembly;
protected internal   acessível no mesmo assembly ou
                     nas suas sub-classes.
Orientação por Objectos


{access modifier} {modifier} class Member
{
    {access modifier} string nick;
}
Orientação por Objectos


sealed        nenhuma outra classe pode herdar desta;
abstract      indica que esta classe deve servir de base
              para outras sub-classes e não pode ser
              instanciada;
static        declara uma classe como sendo estática.
Controlar acesso a atributos

public class MyClass
                              public class MyClass
{
                              {
  private int _age;
                                public int Age
                                {
    public int Age
                                    get;
    {
                                    private set;
       get{ return _age; }
                                }
       set{ _age = value; }
                              }
    }
}
Orientação por Objectos
                       (classes estáticas)

public static class MPMath
{
   public static int Factorial(int n)    int result = MPMath.Factorial(5);
   {                                     System.Console.WriteLine(result);
      if (n == 0)
          return 1;
      else
          return n * Factorial(n - 1);
   }
}
Interfaces

public interface IExample                  Uma interface pode ser
{
    int DoSomething();                    considerada uma lista de
}                                       “coisas” que um objecto pode
                                                    fazer.
public class Class1 : IExample
{
    public int DoSomething()              Numa interface podem ser
    {                                    colocados os protótipos das
          // Do something
          return 0;                      funções e variáveis a serem
    }                                      implementados por uma
}                                               dada classe.
Interfaces

public interface IExample        public class Class2 : Class1, IExample
{                                {
    int DoSomething();               public int DoSomething()
}                                    {
                                           // Do something
public class Class1                        return 0;
{                                    }
    public int DoSomething()     }
    {
          // Do something
          return 0;
    }
}
enums
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

Days day = Days.Sat;




 Os enums são utilizados para descrever
   enumerações, de um conjunto de
             constantes.
Métodos
private int makeColor (int r, int g, int b)
{
                                                        Vários métodos podem ter o
           // Do Stuff                                   mesmo nome, desde que
}                                                          recebam argumentos
private int makeColor (int r, int g, int b, int a)
                                                                diferentes.
{
           // Do Stuff                                      Os métodos podem ter
}
                                                            argumentos opcionais.

                                          private int makeColor (int r, int g, int b, int a = 0)
                                          {
                                                     // Do Stuff
                                          }
Passagem por referência
                                                   Em C# podemos passar
private int doStuff()
{
                                                argumentos por referência, e
           int foo = 4                              não apenas por valor.
           updateValue(ref foo);
           Console.WriteLine(foo.ToString());
}
                                                 Para isso usamos a palavra
                                                  reservada “ref” ou “out”.
private void updateValue(ref int val)
{
          val = val / 2 + 1;
                                                A palavra “ref” obriga a que
}                                                variável cuja referência é
                                                   passada, já tenha sido
                                                        inicializada.
namespaces

using System.Text;
using System.Windows.Forms;    Em C# temos namespaces,
                               que permitem organizar o
namespace SampleNamespace
{
                              código e ter vários tipos com
   public class Class1              o mesmo nome.
   {

    }
                              Um namespace pode conter
}                             classes, intefaces, enums e
                                         structs.
Até agora vimos o básico…

Mas onde está o verdadeiro
  poder do C# e da .NET
      Framework?
Ok, mas agora como é que
uso a .NET Framework para
        fazer coisas?
Exemplo

Construir um programa de
que converta uma imagem
que está no clipboard para
     preto e branco.
Numa bitmap de 24bits, cada
pixel tem 3 componentes na sua
     cor, Red, Green e Blue.

Para converter-mos para Black &
 White, calculamos a média das
       três componentes.
Mas como trabalhamos com
imagens em C#, precisamos de
fazer download de bibliotecas?

      Não! Basta usar o
      System.Drawing!
Bitmap bp = (Bitmap)Clipboard.GetImage();
Color color;
int average;

for (int i = 0; i < bp.Height; i++)
  for (int j = 0; j < bp.Width; j++)
  {
      color = bp.GetPixel(j, i);
      average = (color.R + color.G + color.B) / 3;
      bp.SetPixel(j, i, Color.FromArgb(average, average, average));
  }

Clipboard.SetImage((Image)bp);
Exemplo 2

Construir o “esqueleto” de
     um web spider.
Mas como fazer download
   de ficheiro em C#?

 E como usar Regex para
     extrair os URLs?

Precisamos de 2 bibliotecas
 e 1000 linhas de código?
Não! Basta usar o System.Net e o
 System.Text.RegularExpressions
      da .NET Framework!
using (WebClient client = new WebClient())
{
  string html = client.DownloadString("http://hackerschool.ist.utl.pt/");

  Regex regex = new Regex("http://([w+?.w+])+([a-zA-Z0-
9~!@#$%^&amp;*()_-=+/?.:;',]*)?",
RegexOptions.IgnoreCase);

    MatchCollection matches = regex.Matches(html);

    foreach (Match match in matches)
       MessageBox.Show(match.Value.ToString());
}
Que plataformas correm
programas feitos em C#?
Windows…




           mas não só!
Com a Mono Framework, podemos correr
   C# em muitas outras plataformas!
Com a Mono Framework, podemos correr
   C# em muitas outras plataformas!
E o que uso para programar
          em C#?
Visual Studio

A versão Express é gratuita,
  enquanto que a versão
     Ultimate é paga.
Visual Studio

  O IST tem uma parceria
com a Microsoft e fornece a
  versão Ultimate gratuita
   para alunos de alguns
          cursos!
MonoDevelop

Uma IDE opensource e
multi-plataforma, para
Windows, Linux ou Mac
Emulador de NES




Desenvolvido
   em C#
Jogo de Sokoban
Website: http://miguelpedroso.com
Email:   miguelfsp@gmail.com
         contact@miguelpedroso.com



HS:      http://hackerschool.ist.utl.pt
Obrigado!

      @miguelpedroso
Desafio

Trocar os valores de duas variaveis
   tipo “int”, sem recorrer a uma
  terceira variável temporária... E
           sem usar XORs!

   Ambos os valores iniciais só
    podem valer de 0 a 1000.
int a = 3;
int b = 4;
int temp;

Como fazer a troca sem
recorrer a variáveis
temporárias ou a XORS?
int a = 3;
int b = 4;

MessageBox.Show("a=" + a + "nb=" + b);

b |= (a << 16);
a = b & 0xFFFF;
b >>= 16;

MessageBox.Show("a=" + a + "nb=" + b);
1   A 0000 0001
7   B 0000 0111

    A 0000 0001   b |= (a << 4);
    B 0001 0111

    A 0000 0111   a = b & 0x000F;
    B 0001 0111

7   A 0000 0111   b >>= 4;
1   B 0000 0001

Weitere ähnliche Inhalte

Was ist angesagt?

6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel 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
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETphilipsoares
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 

Was ist angesagt? (19)

Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
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 ...
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Java2
Java2Java2
Java2
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 

Andere mochten auch (20)

Ski + Spanish in Bariloche
Ski + Spanish in BarilocheSki + Spanish in Bariloche
Ski + Spanish in Bariloche
 
Spanish and Tango
Spanish and TangoSpanish and Tango
Spanish and Tango
 
10 reasons to choose La Montaña
10 reasons to choose La Montaña10 reasons to choose La Montaña
10 reasons to choose La Montaña
 
Spanish + Bike package
Spanish + Bike packageSpanish + Bike package
Spanish + Bike package
 
Benefit club la Montaña 2015.
Benefit club la Montaña 2015.Benefit club la Montaña 2015.
Benefit club la Montaña 2015.
 
Paquete yoga
Paquete yogaPaquete yoga
Paquete yoga
 
Pre-Arrival Pack La Montana
Pre-Arrival Pack La Montana Pre-Arrival Pack La Montana
Pre-Arrival Pack La Montana
 
Puva makro present
Puva makro presentPuva makro present
Puva makro present
 
La montana english brochure 2016
La montana english brochure 2016La montana english brochure 2016
La montana english brochure 2016
 
“Educación del nuevo milenio”
“Educación del nuevo milenio”“Educación del nuevo milenio”
“Educación del nuevo milenio”
 
Volunteer projects
Volunteer projectsVolunteer projects
Volunteer projects
 
Volunteer work Bariloche
Volunteer work BarilocheVolunteer work Bariloche
Volunteer work Bariloche
 
Тренды в рекламе
Тренды в рекламе Тренды в рекламе
Тренды в рекламе
 
Tamara
TamaraTamara
Tamara
 
Desayunos
DesayunosDesayunos
Desayunos
 
Brock Portafolio de Servicios
Brock Portafolio de ServiciosBrock Portafolio de Servicios
Brock Portafolio de Servicios
 
Documentació bloc
Documentació blocDocumentació bloc
Documentació bloc
 
cirugía general en EII - www.grupodeapoyoeii.org
cirugía general en EII - www.grupodeapoyoeii.orgcirugía general en EII - www.grupodeapoyoeii.org
cirugía general en EII - www.grupodeapoyoeii.org
 
Presevl
PresevlPresevl
Presevl
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 

Ähnlich wie Introdução ao C#

Ähnlich wie Introdução ao C# (20)

Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Java 06
Java 06Java 06
Java 06
 
C# básica
C#   básicaC#   básica
C# básica
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
A linguagem java
A linguagem javaA linguagem java
A linguagem java
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Qualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoQualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código Limpo
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02
 
Series lab
Series labSeries lab
Series lab
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Ud2
Ud2Ud2
Ud2
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Apostila de-arduino
Apostila de-arduinoApostila de-arduino
Apostila de-arduino
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
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
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Aula python
Aula pythonAula python
Aula python
 

Kürzlich hochgeladen

Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 

Kürzlich hochgeladen (20)

Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 

Introdução ao C#

  • 1. C# @miguelpedroso
  • 2. (C Sharp) @miguelpedroso
  • 3. C# é uma linguagem de programação moderna e orientada por objectos. mas… porquê usar C#?
  • 4. Assembler i386 i386 bin ARM ARM bin 6502 6502 bin Z80 Z80 bin Código assembly binário para correr específico de um CPU num tipo de CPUs.
  • 5. Compilador Assembler de C i386 i386 bin Programa ARM ARM bin em C … … bin Código assembly binário para correr específico de um CPU num tipo de CPUs.
  • 6. Quando compilamos um programa escrito em C, ele só pode funcionar na plataforma para o qual foi compilado. E em C#?
  • 7. Compilador CLR de C# Programa Código Código em C# CIL nativo Bytecode
  • 8. Quando compilamos o programa em C#, é gerado código CIL (Common Intermediate Language) Esse código intermédio é executado com ajuda de uma Common Language Runtime
  • 9. x86 CIL add eax, edx ldloc.0 ldloc.1 add PIC16F628a stloc.0 addwf 20h, f
  • 10. Desta forma, um programa escrito em C#, depois de compilado, é platform-independent
  • 12. public class HelloW { public static void Main() { System.Console.WriteLine("Hello, World!"); } }
  • 13. Tipos de dados byte, sbyte, short, ushort, int, uint, long, ulong, float, double, decimal, bool, object char, string
  • 14. string str1 = “Hello”; string str2 = “World ”; string str3 = str1 + “ “ + str3 + 0.ToString() Console.WriteLine(str3); Output: Hello World 0
  • 15. Em C# as variáveis locais têm de ser inicializadas antes de serem utilizadas. int i = new int(); ou int i = 0;
  • 16. decimal vs double quando queremos tratar de valores monetários, devemos usar sempre o tipo decimal!
  • 17. decimal vs double static void Main(string[] args) { decimal cash1 = 99999999999999.99M; decimal result = cash1 - 1M; double cash2 = 99999999999999.99D; double result2 = cash2 - 1.0D; Console.WriteLine("Decimal: " + result.ToString() + "n Double: " + result2.ToString()); Console.ReadLine(); } Output: Decimal: 99999999999998,99 Double: 99999999999999 Why? :)
  • 18. Operadores =, +, -, *, /, % ==, !=, <, <=, >= ! (Negação Lógica), ~ (Complemento Bitwise)
  • 19. Operadores ++, --, +=, -=, *=, /= <<, >>, |, &, ^ &&, ||
  • 20. Operadores && vs & && é um AND condicional (true && false) retorna false (1 & 3) retorna 1
  • 21. Operador Ternário int foo = (condition) ? 4 : 3;
  • 22. Condições if (condition) action(); else if (condition2) action2(); else action3();
  • 23. Ciclos while (condition) for (decl; condition; action) { { instructions; instructions; } } do { instructions; } while (condition)
  • 24. Ciclos Infinitos while (true); for ( ; ; );
  • 25. Ciclos foreach string name = "Miguel Ferreira de Sá Pedroso"; string []arr = name.Split(" ".ToCharArray()); foreach (string str in arr) System.Windows.Forms.MessageBox.Show(str.ToUpper()); ...
  • 26. Excepções try { int a = 0; int b = 2 / a; } catch (Exception err) { System.Windows.Forms.MessageBox.Show(err.Message); } finally { // Do something }
  • 27. Orientação por Objectos Member StandartMember PremiumMember
  • 28. Orientação por Objectos Member Os StandartMembers e os PremiumMembers partilham certos atributos e métodos em comum… Mas também têm StandartMember PremiumMember diferentes tipos de comportamento!
  • 29. Orientação por Objectos Com programação orientada por objectos, podemos usar classes para reaproveitar código. Cada objecto individual, chama-se uma instância.
  • 30. Orientação por Objectos public class PremiumMember : Member { int premiumScore; public abstract class Member { public void IncreaseScore() protected string nick; { protected int age; if (this.active) this.premiumScore++; protected bool active; else } throw new Exception("Increasing score of inactive member!"); } }
  • 31. Orientação por Objectos Member abe = new StandartMember() public class Member abe.nick = “Abraham Lincoln”; { protected string nick; Member membro = new PremiumMember(); protected int age; membro.nick = “Miguel Pedroso”; membro.age = 20; protected bool active; membro.active = true; } membro.IncreaseScore();
  • 32. Orientação por Objectos (Polimorfismo) Member abe = new StandartMember() abe.nick = “Abraham Lincoln”; PremiumMember membro = new PremiumMember(); StandartMember lincoln = (StandartMember)abe; Podemos usar uma classe com o seu próprio tipo, com o tipo de uma super- classe, ou com o tipo da interface que implementa.
  • 33. Orientação por Objectos object UInt32 Member String StandartMember PremiumMember
  • 34. Orientação por Objectos {access modifier} class Member { {access modifier} string nick; }
  • 35. Orientação por Objectos private apenas acessível na própria classe; protected também acessível nas suas sub-classes; public acessível por qualquer outra classe; internal acessível no mesmo assembly; protected internal acessível no mesmo assembly ou nas suas sub-classes.
  • 36. Orientação por Objectos {access modifier} {modifier} class Member { {access modifier} string nick; }
  • 37. Orientação por Objectos sealed nenhuma outra classe pode herdar desta; abstract indica que esta classe deve servir de base para outras sub-classes e não pode ser instanciada; static declara uma classe como sendo estática.
  • 38. Controlar acesso a atributos public class MyClass public class MyClass { { private int _age; public int Age { public int Age get; { private set; get{ return _age; } } set{ _age = value; } } } }
  • 39. Orientação por Objectos (classes estáticas) public static class MPMath { public static int Factorial(int n) int result = MPMath.Factorial(5); { System.Console.WriteLine(result); if (n == 0) return 1; else return n * Factorial(n - 1); } }
  • 40. Interfaces public interface IExample Uma interface pode ser { int DoSomething(); considerada uma lista de } “coisas” que um objecto pode fazer. public class Class1 : IExample { public int DoSomething() Numa interface podem ser { colocados os protótipos das // Do something return 0; funções e variáveis a serem } implementados por uma } dada classe.
  • 41. Interfaces public interface IExample public class Class2 : Class1, IExample { { int DoSomething(); public int DoSomething() } { // Do something public class Class1 return 0; { } public int DoSomething() } { // Do something return 0; } }
  • 42. enums enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; Days day = Days.Sat; Os enums são utilizados para descrever enumerações, de um conjunto de constantes.
  • 43. Métodos private int makeColor (int r, int g, int b) { Vários métodos podem ter o // Do Stuff mesmo nome, desde que } recebam argumentos private int makeColor (int r, int g, int b, int a) diferentes. { // Do Stuff Os métodos podem ter } argumentos opcionais. private int makeColor (int r, int g, int b, int a = 0) { // Do Stuff }
  • 44. Passagem por referência Em C# podemos passar private int doStuff() { argumentos por referência, e int foo = 4 não apenas por valor. updateValue(ref foo); Console.WriteLine(foo.ToString()); } Para isso usamos a palavra reservada “ref” ou “out”. private void updateValue(ref int val) { val = val / 2 + 1; A palavra “ref” obriga a que } variável cuja referência é passada, já tenha sido inicializada.
  • 45. namespaces using System.Text; using System.Windows.Forms; Em C# temos namespaces, que permitem organizar o namespace SampleNamespace { código e ter vários tipos com public class Class1 o mesmo nome. { } Um namespace pode conter } classes, intefaces, enums e structs.
  • 46. Até agora vimos o básico… Mas onde está o verdadeiro poder do C# e da .NET Framework?
  • 47.
  • 48. Ok, mas agora como é que uso a .NET Framework para fazer coisas?
  • 49. Exemplo Construir um programa de que converta uma imagem que está no clipboard para preto e branco.
  • 50.
  • 51. Numa bitmap de 24bits, cada pixel tem 3 componentes na sua cor, Red, Green e Blue. Para converter-mos para Black & White, calculamos a média das três componentes.
  • 52. Mas como trabalhamos com imagens em C#, precisamos de fazer download de bibliotecas? Não! Basta usar o System.Drawing!
  • 53. Bitmap bp = (Bitmap)Clipboard.GetImage(); Color color; int average; for (int i = 0; i < bp.Height; i++) for (int j = 0; j < bp.Width; j++) { color = bp.GetPixel(j, i); average = (color.R + color.G + color.B) / 3; bp.SetPixel(j, i, Color.FromArgb(average, average, average)); } Clipboard.SetImage((Image)bp);
  • 54.
  • 55. Exemplo 2 Construir o “esqueleto” de um web spider.
  • 56. Mas como fazer download de ficheiro em C#? E como usar Regex para extrair os URLs? Precisamos de 2 bibliotecas e 1000 linhas de código?
  • 57. Não! Basta usar o System.Net e o System.Text.RegularExpressions da .NET Framework!
  • 58. using (WebClient client = new WebClient()) { string html = client.DownloadString("http://hackerschool.ist.utl.pt/"); Regex regex = new Regex("http://([w+?.w+])+([a-zA-Z0- 9~!@#$%^&amp;*()_-=+/?.:;',]*)?", RegexOptions.IgnoreCase); MatchCollection matches = regex.Matches(html); foreach (Match match in matches) MessageBox.Show(match.Value.ToString()); }
  • 60. Windows… mas não só!
  • 61. Com a Mono Framework, podemos correr C# em muitas outras plataformas!
  • 62. Com a Mono Framework, podemos correr C# em muitas outras plataformas!
  • 63. E o que uso para programar em C#?
  • 64. Visual Studio A versão Express é gratuita, enquanto que a versão Ultimate é paga.
  • 65. Visual Studio O IST tem uma parceria com a Microsoft e fornece a versão Ultimate gratuita para alunos de alguns cursos!
  • 66. MonoDevelop Uma IDE opensource e multi-plataforma, para Windows, Linux ou Mac
  • 67.
  • 70. Website: http://miguelpedroso.com Email: miguelfsp@gmail.com contact@miguelpedroso.com HS: http://hackerschool.ist.utl.pt
  • 71. Obrigado! @miguelpedroso
  • 72. Desafio Trocar os valores de duas variaveis tipo “int”, sem recorrer a uma terceira variável temporária... E sem usar XORs! Ambos os valores iniciais só podem valer de 0 a 1000.
  • 73. int a = 3; int b = 4; int temp; Como fazer a troca sem recorrer a variáveis temporárias ou a XORS?
  • 74. int a = 3; int b = 4; MessageBox.Show("a=" + a + "nb=" + b); b |= (a << 16); a = b & 0xFFFF; b >>= 16; MessageBox.Show("a=" + a + "nb=" + b);
  • 75. 1 A 0000 0001 7 B 0000 0111 A 0000 0001 b |= (a << 4); B 0001 0111 A 0000 0111 a = b & 0x000F; B 0001 0111 7 A 0000 0111 b >>= 4; 1 B 0000 0001