O documento descreve como C# é uma linguagem de programação moderna e orientada a objetos. Ele explica porque usar C# ao invés de linguagens de baixo nível como Assembly, e como a Common Language Runtime permite que programas C# sejam executados em diferentes plataformas. O documento também cobre tópicos como tipos de dados, operadores, condições, ciclos, exceções, orientação a objetos, interfaces e namespaces na linguagem C#.
TREINAMENTO PARA SOLUCIONAR PROBLEMAS COMPUTACIONAIS COM A LINGUAGEM DE PROGRAMAÇÃO C++
Estrutura geral de um programa C/C++. Principais Comandos.
Estruturas condicionais e Estruturas de Repetição.
Exercícios.
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
Fundamentos da Programação 6:
• Manipulação de caracteres
• Relação entre os tipos char e int
• Tipos de valor vs. tipos de referência
Apresentação 6 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Fundamentos da Programação 8:
• Classes e instâncias
• Cadeias de caracteres
Apresentação 8 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
Fundamentos da Programação 13:
• Polimorfismo de subtipos
• Análise, desenho e implementação
Apresentação 13 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Fundamentos da Programação 4:
• Introdução à linguagem de programação Java
Apresentação 4 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Python não força o programador a pensar em objetos, mas eles fazem parte da linguagem desde o início, incluindo conceitos avançados como sobrecarga de operadores, herança múltipla e introspecção. Com sua sintaxe simples, é muito natural aprender orientação a objetos em Python
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
Fundamentos da Programação 12:
• Paradigmas da programação
• Programação orientada por objectos
• Modularização em pacotes
Apresentação 12 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
TREINAMENTO PARA SOLUCIONAR PROBLEMAS COMPUTACIONAIS COM A LINGUAGEM DE PROGRAMAÇÃO C++
Estrutura geral de um programa C/C++. Principais Comandos.
Estruturas condicionais e Estruturas de Repetição.
Exercícios.
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
Fundamentos da Programação 6:
• Manipulação de caracteres
• Relação entre os tipos char e int
• Tipos de valor vs. tipos de referência
Apresentação 6 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Fundamentos da Programação 8:
• Classes e instâncias
• Cadeias de caracteres
Apresentação 8 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
Fundamentos da Programação 13:
• Polimorfismo de subtipos
• Análise, desenho e implementação
Apresentação 13 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Fundamentos da Programação 4:
• Introdução à linguagem de programação Java
Apresentação 4 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Python não força o programador a pensar em objetos, mas eles fazem parte da linguagem desde o início, incluindo conceitos avançados como sobrecarga de operadores, herança múltipla e introspecção. Com sua sintaxe simples, é muito natural aprender orientação a objetos em Python
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
Fundamentos da Programação 12:
• Paradigmas da programação
• Programação orientada por objectos
• Modularização em pacotes
Apresentação 12 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Presentacion Sobre cirugía general en Enfermedades Inflamatorias Del Intestino, Crohn o Colitis Ulcerosa. Forma parte del taller del Grupo De Apoyo De Enfermedades Inflamatorias Del Intestino. Para mas informacion visita: www.grupodeapoyoeii.org
Atividade - Letra da música "Tem Que Sorrir" - Jorge e MateusMary Alvarenga
A música 'Tem Que Sorrir', da dupla sertaneja Jorge & Mateus, é um apelo à reflexão sobre a simplicidade e a importância dos sentimentos positivos na vida. A letra transmite uma mensagem de superação, esperança e otimismo. Ela destaca a importância de enfrentar as adversidades da vida com um sorriso no rosto, mesmo quando a jornada é difícil.
Projeto de articulação curricular:
"aLeR+ o Ambiente - Os animais são nossos amigos" - Seleção de poemas da obra «Bicho em perigo», de Maria Teresa Maia Gonzalez
Sequência Didática - Cordel para Ensino Fundamental ILetras Mágicas
Sequência didática para trabalhar o gênero literário CORDEL, a sugestão traz o trabalho com verbos, mas pode ser adequado com base a sua realidade, retirar dos textos palavras que iniciam com R ou pintar as palavras dissílabas ...
livro em pdf para professores da educação de jovens e adultos dos anos iniciais ( alfabetização e 1º ano)- material excelente para quem trabalha com turmas de eja. Material para quem dar aula na educação de jovens e adultos . excelente material para professores
Livro de conscientização acerca do autismo, através de uma experiência pessoal.
O autismo não limita as pessoas. Mas o preconceito sim, ele limita a forma com que as vemos e o que achamos que elas são capazes. - Letícia Butterfield.
proposta curricular da educação de jovens e adultos da disciplina geografia, para os anos finais do ensino fundamental. planejamento de unidades, plano de curso da EJA- GEografia
para o professor que trabalha com a educação de jovens e adultos- anos finais do ensino fundamental.
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
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
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.
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.
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?
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);
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~!@#$%^&*()_-=+/?.:;',]*)?",
RegexOptions.IgnoreCase);
MatchCollection matches = regex.Matches(html);
foreach (Match match in matches)
MessageBox.Show(match.Value.ToString());
}
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