Visual C# Express Edition Sumário • Introdução • Aplicações Console e Windows 2 Ferramentas • • • • Compiladores Debuggers Linguagens de programação Motor (“Engine”) de execução 3 Microsoft Visual Studio • O Microsoft Visual Studio não é explicitamente necessário para o desenvolvimento de aplicações .NET porém ele fornece várias vantagens • É possível desenvolver aplicações usando Notepad + o compilador via linha de comando 4 Versões do Visual Studio • • • • Visual Studio 2008 Standard Edition Visual Studio 2008 Professional Edition Visual Studio 2008 Enterprise Edition Visual C# 2008 Express Edition 5 Microsoft Visual C# 2008 Express Edition • É uma ferramenta de desenvolvimento voltada a produtividade • É uma ferramenta RAD (Rapid Application Development) • Permite desenvolver aplicações Windows • É voltada para programadores iniciantes 6 C# • C# é uma das linguagens de programação disponível para o .NET Framework (outros exemplos de linguagens são: VB, C++, JScript, J#) • C# é uma linguagem Orientada a Objetos (ela permite que sejam desenvolvidas aplicações procedurais, aplicações puramente OO ou uma mistura das duas) 7 Tipos de Aplicações • Windows Applications (com GUI) • Console Applications (usa modo texto) • Componentes Reutilizáveis (Reusable Components) ou Biblioteca de Classes ( Class Libraries) 8 Diferença entre Console Applications e Windows Applications • Aplicações de Console não possuem interface gráfica e simplesmente usa o modo texto para comunicar com o usuário • Aplicações Windows são aplicações que possuem interface gráfica com o usuário (GUI), com menus, botões, janelas, barra de ferramentas, etc 9 IDE (Integrated Development Environment) • Ambiente de Desenvolvimento Integrado • É a aplicação que prove todas as ferramentas necessárias para projetar, planejar, desenvolver e distribuir suas aplicações 10 Iniciando o Visual C# Express Edition • Clique em Iniciar Programas Microsoft Visual C# 2008 Express Edition 11 Visual C# 2008 Express Edition barra de menus barra de ferramentas 12 Página de Início (Start Page) • Projetos Recentes (Recent projects) – Exibe a lista de projetos ou soluções que foram recentemente abertos • Iniciando (Getting Started) – Essa seção permite a busca de ajuda quando necessário • Visual C# Express Headlines – Onde encontramos notícias específicas sobre o Visual C# • MSDN Visual C# RSS Feed 13 Componentes do IDE • Barra de Menus (Menu bar) – É onde podemos selecionar e executar quase todas as ações relacionadas ao projeto, arquivos e Help (ajuda) • Barra de Ferramentas Principal (Main Toolbar) – Contem icons que são atalhos para opções também presentes na barra de menu • Caixa de Ferramentas (Toolbox) – Contem os controles que podem ser usados pela aplicação • Solution Explorer (Explorador da Solução) – Lista os arquivos e componentes no projeto • Barra de Status (Status Bar) – Exibe informações correspondentes ao estado de certas operações ativas 14 Criando uma aplicação console • Selecione File / New Project na Barra de Menu • Selecione Console Application na caixa de diálogos New Project e digite PrimeiraAplicacaoConsole e clique no botão OK 15 Aplicação Console 16 Aplicação Console - Exemplo 17 Construindo e Executando a Aplicação • Para fazer o build da aplicação, selecione Build / Build Solution a partir da barra de menu ou pressione F6 • Para executar a aplicação, pressione Ctrl+F5 (quando usamos o Start Without Debug, as aplicações console exibem uma mensagem para pressionar uma tecla) 18 Aplicação Console gerada pelo Visual C# Express Edition using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } } 19 Aplicação válida mais simples em C# class Programa { static void Main() { } } 20 Criação de um Programa • Problema Algoritmo implementação em uma linguagem de programação (C#, C, etc) 21 Classe System.Math • Provê constantes e métodos estáticos para trigonometria, logaritmos e outras funções matemáticas comuns 22 Math.Sqrt() O método Math.Sqrt() recebe como argumento um número formato double e retorna um número também no formato double: double Math.Sqrt(double valor); Observe que não podemos atribuir uma variável double em uma variável float Exemplo: double raiz = Math.Sqrt(25); 23 Math.Pow() O método Math.Pow() recebe como argumento uma base e um expoente no formato double e retorna a potência também no formato double: double Math.Pow(double b, double e); Exemplo: double valor = Math.Pow(5,2); 24 Exemplo: Calculo da Área de um Retângulo • • • • Entre o valor da base Entre o valor da altura Calcule a area = base * altura Exiba a base, altura e a area 25 Código para Cálculo da Área de um Retâgulo // obtém a altura do retângulo int altura; // obtém a largura do retângulo int largura; string strAltura; string strLargura; System.Console.Write("Entre com a altura: "); strAltura=System.Console.ReadLine(); altura = int.Parse(strAltura); System.Console.Write("Entre com a largura: "); strLargura = System.Console.ReadLine(); largura = int.Parse(strLargura); //área do retângulo int area; area = altura * largura; System.Console.WriteLine("Area = " + area.ToString()); 26 Cálculo de Média • • • • Entre com a primeira nota (n1) Entre com a segunda nota (n2) Calcule a média (m), onde m = (n1+n2)/2 Exibe as notas e a média final 27 Cálculo de Média using System; class Program { static void Main(string[] args) { String notaDigitada; Console.WriteLine("Entre com a primeira nota (N1): "); // Le a primeira nota digitada notaDigitada = Console.ReadLine(); float n1 = float.Parse(notaDigitada); Console.WriteLine("Entre com a segunda nota (N2): "); // Le a segunda nota digitada notaDigitada = Console.ReadLine(); float n2 = float.Parse(notaDigitada); // Calcula a média entre n1 e n2 float media = (n1 + n2) / 2; // Exibe a média calculada Console.WriteLine("A média entre {0} e {1} eh {2}", n1, n2, media); } } 28 Saudação • Entre com o nome • Entre com a idade • Exibe o nome e a idade 29 Saudação using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Hello namespace { class Saudacao { static void Main(string[] args) { String nome; String idade; System.Console.Write("Qual e seu nome: "); nome = System.Console.ReadLine(); System.Console.Write("Qual e sua idade: "); idade = System.Console.ReadLine(); System.Console.WriteLine("Ola " + nome + ". Voce tem " + idade + " anos."); } } } 30 Construindo uma Aplicação Windows • Selecione File / New Project na Barra de Menu • Selecione Windows Form Application na caixa de diálogos New Project e digite PrimeiraAplicacaoWindows e clique no botão OK 31 Projeto • Um projeto é um container para todos os itens da aplicação, tais como: formulários, código fonte e recursos • Ele também guarda informações sobre as configurações 32 Namespace (Espaço de Nomes) • Os namespaces permitem que identificadores sejam nomeados de forma que não haja colisão entre seus nomes, isto é, dois identificadores iguais no mesmo código • Uma instrução using adiciona um namespace a um escopo 33 Name collision (Colisão de Nomes) • Ocorre quando dois identificadores possuem o mesmo nome dentro de um namespace • A colisão de nomes deve ser evitada 34 Fully Qualified Name • O nome totalmente qualificado (fully qualified name) é formado pelo <namespace> mais o <nome da classe> – <namespace>.<nome da classe> Exemplo: System.Console, onde System representa o Namespace e Console é a classe 35 Design Layout • Form designer (projeto do formulário) • Basic layout (layout básico) • Advanced layout (layout avançado) 36 Janela de Propriedades (Properties Window) • Selecione View / Properties Window 37 Property Windows 38 Properties Window (janela de propriedades) • As propriedades influenciam como o controle se comporta ou qual a sua aparência quando executamos a aplicação • Exemplo de propriedades de um formulário: – Text: texto exibido na janela – Size:Width: largura da janela – Size:Height: altura da janela 39 Window Form Controls (Controles dos Formulários Windows) • Text box • Button • Web browser 40 Controles Comuns de Aplicação no Windows • • • • • • • • • Button TextBox Label RadioButton CheckBox ComboBox ListBox ToolTip NumericUpDown 41 Controles Comuns • • • • • • • • • • • • • • • • • • • • • • Pointer Button CheckBox CheckedListBox ComboBox DateTimePicker Label LinkLabel ListBox ListView MarkedTextBox MonthCalendar Notification NumericUpDown PictureBox ProgressBar RadioButton RichTextEditor TextBox ToolTip TreeView WebBrowser 42 Controles mais comuns • • • • • • • • Button CheckBox CheckedListBox ComboBox Label ListBox RadioButton TextBox 43 Algumas propriedades • Text - texto associado com o controle • Name - indica o nome usado no código para identificar o objeto • BackColor - a cor de fundo do componente • Enabled - indica se o controle está habilitado ou não • ForeColor - a cor de frente do componente, que é usado para exibir o texto • ReadyOnly - controla se o texto no controle poderá ser editado ou não • Visible - determina se o controle é visível ou escondido 44 Exemplo de Formulário textBox1 button1.Text = “Preenche’ textBox1 button2.Text = “Limpa” form1.Text = “Formulário de Teste” button1 button 45 Exemplo using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); button2.Enabled = false; } private void button1_Click(object sender, EventArgs e) { textBox1.Text = "nome"; button2.Enabled = true; } private void button2_Click(object sender, EventArgs e) { textBox1.Text = ""; button2.Enabled = false; } } } 46 Namespaces using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; 47 public partial class Form1 : Form { public partial class Form1 : Form { public Form1() { InitializeComponent(); button2.Enabled = false; } private void button1_Click(object sender, EventArgs e) { textBox1.Text = "nome"; button2.Enabled = true; } private void button2_Click(object sender, EventArgs e) { textBox1.Text = ""; button2.Enabled = false; } } } 48 Button • Indica que o usuário fez uma decisão e quer comunicar sua ação. Em sua aplicação, o botão clicado pelo usuário dispara um evento que o código precisa lidar 49 TextBox • A caixa de texto é usada para obter uma entrada do usuário • É boa para entrada de nomes, endereços, telefones, URLs, etc 50 Label • É usual para textos simples que descrevem outros controles 51 RadioButton • O RadioButton é usado quando várias escolhas são oferecidas porém o usuário pode escolher apenas uma (elas são excludentes) 52 CheckBox • Checkbox são uma boa opção quando queremos fazer escolhas booleanas (verdadeiro/falso, ligado/desligado, sim/não, etc) 53 ComboBox • Um ComboBox é uma combinação de uma caixa de textos (TextBox) e uma lista suspensa de opções (drop-down list). É uma boa opção quando queremos uma caixa de textos editável porém com uma lista de valores permitidos 54 ListBox • Uma ListBox é uma lista reduzida de valores válidos que esse componente representa. • Ela não permite que os usuários editem textos, mas permitem a escolha de mais de um item mantendo a tecla CTRL pressionada 55 ToolTip • É útil para exibir uma mensagem ao usuário quando ele mantém o mouse posicionado sob o controle 56 NumericUpDown • Útil quando queremos trabalhar com valores numéricos de um conjunto predefinido de números 57 O que acontece quando um evento é disparado ? • Todas aplicações Windows são eventdriven, ou melhor, orientadas a eventos. • Isso significa que toda vez que clicamos em um botão ou mesmo movemos entre caixas de textos estamos gerando eventos. • Blocos de códigos conectados a cada uma de suas ações executam à medida que você trabalha na aplicação 58 Eventos • Eventos são gerados não somente pelas ações internas a aplicação mas também pelo ambiente em sua volta, pelo Windows ou por outras fontes externas 59 Método • Um método é uma seqüência de instruções • Um método possui um nome e um corpo • Nome do método deve ser um identificador significativo que indique sua finalidade geral • Corpo do método contém as instruções gerais a serem executadas quando o método é chamado • Métodos podem receber alguns dados para serem processados e retornar informações 60 Sintaxe de um método em C# tipoDeRetorno nomeDoMétodo ( listaDeParâmetros ) { // instruções do corpo do método } 61 Sintaxe de um método em C# • tipoDeRetorno: é o nome de um tipo e especifica o tipo de informação que o método retorna como resultado de seu processamento – Caso o método não retorne nenhum valor, devemos usar o tipo void (sem valor) • nomeDoMétodo: é o nome utilizado para chamar o método • listaDeParâmetros: é opcional e descreve os tipos das informações que você pode passar para o método processar • As instruções do corpo do método são as linhas de código que são executadas quando o método é chamado 62 Exemplo int adicionaValores( int a, int b ) { int c; c = a + b; return c; } 63 Exemplo void exibeResultados(int resposta) { // ... } 64 Sintaxe de chamada de método Resultado = nomeDoMétodo ( listaDeArgumentos ); Onde: • Resultado: é uma variável compatível com o tipo de retorno do método (se houver) Observação: • listaDeArgumentos: a lista de argumentos é separada por vírgulas caso haja mais de um argumento • Os parênteses devem ser incluídos na chamada de cada método, mesmo quando estivermos chamando o método sem argumentos 65 Exemplo de Chamada de Método // chamada do método adicionaValores passando como parâmetros os literais 1 e 2 int soma = adicionaValores(1,2); Ou int a=1; int b=2; Int soma = adicionaValores(a,b); exibeResultado(adicionaValores(1,3)); 66 Extensão dos Arquivos • • • • .sln arquivo de solução .csproj arquivo de projeto .cs arquivo fonte C# .xaml Extensible Application Markup Text 67 Métodos • Todos os métodos devem ser definidos dentro da classe • O método Main é especial: ele define o ponto de entrada do programa e deve ser definido como estático 68 • • • • • • Controle Argumento ou parâmetro Método Atributo Instância Propriedade 69 TextBox • Multiline controla se o texto de um controle de edição pode se espalhar por mais de uma linha • ScrollBars • AcceptTab indica se o caracter TAB é aceito • AcceptReturn indica se o caracter Return (CR) é aceito • Size indica o tamanho do controle 70 ListBox • ListBox lb; • lb.Items.Add(); // adiciona • lb.Items.Clear(); // remove todos os itens da coleção • lb.Items.Remove();// exclui o objeto especificado da coleção • lb.Items.Count; // obtém o número de items da coleção • lb.Items.RemoveAt(); // remove o elemento na posição especificada 71 ListBox • lb.Sorted = os elementos passam a ser classificados (em ordem ascendente) 72 ComboBox • ComboBox lb; • lb.Items.Add(); // adiciona • lb.Items.Clear(); // remove todos os itens da coleção • lb.Items.Remove();// exclui o objeto especificado da coleção • lb.Items.Count; // obtém o número de items da coleção • lb.Items.RemoveAt(); // remove o elemento na posição especificada 73 ComboBox (continuação) • lb.SelectedIndext; // índice to item • lb.Text; // texto do item 74 RadioButton • radioButton1.checked 75 MessageBox • MessageBox.Show(“msg”); exibe uma caixa de mensagem 76 MessageBox String msg = “Os cálculos estão completos“; String titulo = “Minha Aplicação“; MessageBox.Show( msg, titulo, MessageBoxButtons, MessageBoxIcon); 77 MessageBoxButtons OK botão OK OKCancel Botão OK e Cancel (Cancelar) AbortRetryIgnore Botões Abort, Retry e Ignore YesNoCancel Botões Yes, No, Cancel YesNo Botões Yes e No RetryCancel Botões Retry e Cancel 78 MessageBoxIcon • • • • • • • • • None nenhum símbolo Hand mão Question sinal de interrogação Exclamation sinal de exclamação Asterisk asterisco Stop Pare Error Erro Warning Aviso Information Informação 79 MessageBox - Exemplo public void ExitApplication() { // Exibe uma mensagem perguntando se o //usuário deseja sair da aplicação if (MessageBox.Show ( “Deseja sair da Aplicação?", “Minha Aplicação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Application.Exit(); } 80 } Classe DateTime • Label1.Text = DateTime.Now.ToShortTimeString(); 81 Debug (Depurar) • O processo de Debug (depuração) consiste em acompanhar a execução de um programa em busca de entender seu comportamento e buscar possíveis bugs • É muito útil na solução de problemas (bugs) em tempo de execução, isto é, quando o software já está em execução 82 Debug • O processo de debug consiste em executar o programa “passo a passo”, inspecionando variáveis e analisando seus valores em busca de comportamentos diferentes do esperado 83 Debug Para marcar/desmarcar breakpoint (ponto de parada) F9 Step Into (F11) = entrar no método Step Over (F10) Step Out (Shift+F11) = sair do método Continuar (F5) 84 Debug • O menu Debug aparece quando estamos executando um código em modo debug • Barra de Ferramentas de Debug (View Toolbars Debug) 85 Refatorando Código • Menu Refactor – Rename permite que façamos alterações no nome de identificadores – Extract Method ... permite que um código seja transformado em um método 86 Backup 87 Organização da Solução e Projeto arquivo de solução .sln arquivo de projeto .csproj arquivo(s) .cs 88 Teclas de Atalho do Menu View Class View (Vizualização das Classes) CTRL+W,C Error List (lista de erros) CTRL+W,E Output (Saída) CTRL+W,O Proprerties Window (Janela de Propriedades) CTRL+W,P Solution Explorer (Explorador d solução) CTRL+W,S Task List (lista de tarefas) CTRL+W,T Toolbox (Caixa de Ferramentas) CTRL+W,X 89