Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
@miguelpedroso
(C Sharp)
@miguelpedroso
C# uma linguagem de programao moderna e orientada por objectos. mas porqu usar C#?
Assembler
Compilador de C
Assembler
Quando compilamos um programa escrito em C, ele s pode funcionar na plataforma para o qual foi compilado. E em C#?
Compilador de C#
CLR
Programa em C#
Cdigo CIL
Cdigo nativo
Bytecode
Quando compilamos o programa em C#, gerado cdigo CIL (Common Intermediate Language)
Esse cdigo intermdio executado com ajuda de uma Common Language Runtime
x86
add eax, edx
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 + + str2 + 0.ToString() Console.WriteLine(str3);
int i = 0;
decimal vs double
quando queremos tratar de valores monetrios, 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(); }
Why? :)
Operadores
Operadores
Operadores
&& vs & && um AND condicional (true && false) retorna false (1 & 3) retorna 1
Operador Ternrio
Condies
if (condition) action(); else if (condition2) action2(); else action3();
Ciclos
while (condition) { instructions; }
do {
instructions; } while (condition)
Ciclos Infinitos
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());
...
Excepes
try { int a = 0; int b = 2 / a; } catch (Exception err) { System.Windows.Forms.MessageBox.Show(err.Message); } finally { // Do something }
StandardMember
PremiumMember
StandardMember
PremiumMember
public abstract class Member { protected string nick; protected int age; protected bool active; }
public class Member { protected string nick; protected int age; protected bool active; }
Podemos usar uma classe com o seu prprio tipo, com o tipo de uma superclasse, ou com o tipo da interface que implementa.
UInt32
Member
String
StandardMember
PremiumMember
apenas acessvel na prpria classe; tambm acessvel nas suas sub-classes; acessvel por qualquer outra classe; acessvel no mesmo assembly; acessvel no mesmo assembly ou nas suas sub-classes.
sealed abstract
static
nenhuma outra classe pode herdar desta; indica que esta classe deve servir de base para outras sub-classes e no pode ser instanciada; declara uma classe como sendo esttica.
Interfaces
public interface IExample { int DoSomething(); }
public class Class1 : IExample { public int DoSomething() { // Do something return 0; } }
Uma interface pode ser considerada uma lista de coisas que um objecto pode fazer.
Numa interface podem ser colocados os prottipos das funes e variveis a serem implementados por uma dada classe.
Interfaces
public interface IExample { int DoSomething(); }
public class Class1 { public int DoSomething() { // Do something return 0; } }
public class Class2 : Class1, IExample { public int DoSomething() { // Do something return 0; } }
enums
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; Days day = Days.Sat;
Mtodos
private int makeColor (int r, int g, int b) { // Do Stuff } private int makeColor (int r, int g, int b, int a) { // Do Stuff }
Vrios mtodos podem ter o mesmo nome, desde que recebam argumentos diferentes.
Os mtodos podem ter argumentos opcionais.
namespaces
using System.Text; using System.Windows.Forms;
namespace SampleNamespace { public class Class1 { } }
Em C# temos namespaces, que permitem organizar o cdigo e ter vrios tipos com o mesmo nome. Um namespace pode conter classes, intefaces, enums e structs.
At agora vimos o bsico 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 mdia das trs componentes.
Mas como trabalhamos com imagens em C#, precisamos de fazer download de bibliotecas?
No! Basta usar o System.Drawing!
Mas como fazer download de ficheiro em C#? E como usar Regex para extrair os URLs?
Precisamos de 2 bibliotecas e 1000 linhas de cdigo?
Windows
mas no s!
Visual Studio A verso Express gratuita, enquanto que a verso Ultimate paga.
Visual Studio O IST tem uma parceria com a Microsoft e fornece a verso Ultimate gratuita para alunos de alguns cursos!
Emulador de NES
Desenvolvido em C#
Jogo de Sokoban
HS:
http://hackerschool.ist.utl.pt
Obrigado!
@miguelpedroso
Desafio
Trocar os valores de duas variaveis tipo int, sem recorrer a uma terceira varivel temporria... 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 variveis temporrias 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 7
A 0000 0001 B 0000 0111 A 0000 0001 B 0001 0111 A 0000 0111 B 0001 0111
b |= (a << 4);
a = b & 0x000F;
7 1
b >>= 4;