Você está na página 1de 62
Linguagem de Programagao | (linguagem C#) A Escola Aleides Maya - Segundo Médulo 1 INTRODUGAO Em Junho de 2000 a Microsoft amuncion a Plataforma NET ¢ uma nova linguagem dc programngio chamada C# (se le “C Sharp”), C# ¢ uma linguagem fortemente tipada ¢ orientada a objetos projetata para oferever a meihor combinagae de simplicidade, expressividade e performance, A lingungem C# aproveita conceitos de muita outras linguagcns, mas especialmente de C-++ e Java, Ela foi crinda por Anders Hejlsberg (que ja era famoso por ter sriado o TurboPascal ¢ e Deiphi para a Borland) ¢ Seott Wiltaruth, ‘A Plataforma .NET ¢ sentrada ao redor de uma Common Language Runtime (CLR, conceito similar ao da Java Virtual Machinc, JVM) ¢ um conjunto de bibliotecas que pode ser empregado em uma grande varicdade de Fingungens, as quais podem trabalhar juntas, ja que todas sto compiladas para uma mesma linguagem. intermediaria, a Microsoft Intermediate Language (MSIL). Assim, ¢ possivel desenvolver aplisatives meselando C# ¢ Visual Basic ow qualquer outra lingwawem suportada. Asimtaxe wilizada pelo C# érelativamente facil, o que diminui stempo de aprendizago, Todos os programas desenvolvides devem ser sompilados, gerande um arquivo som a exiensio DLL ou EXE, Isso torna a exesugao des programas mais rapisla secomparadas com as linguagens de script (VBScript, JavaScript) que atunimente utilizamos na-intemct. Poderiamos citar entre algumas das principais caracteristicas do C#: + Orientada.a Objetos + Nite hi-variveis ou fangs globais, Todos os metodo ¢ afribuins devem ser declaradios dentra de classes, Save All (ou pressione Cirl-Shift-S) para salvar @ seu projeta © todos ‘os anquives criados, Depais, para compilaro programa, clique em Build > Build Sofution (ou pressfone F6), Por im, para executielo, clique ‘em Debug ~ Start Without Debugging (ou pression CttFS), Pronte, voce vera a mensagem eserita na tela, Pressione qualquer techs para cone lui 0 programa, 5 O BASICO SOBRE O C# Toitns as instrugdes devern estas entre chives ¢ sempre ser finalizadas com um ponto-e-vingula, come voee vera a sequir: 1H Cédigo 5.1 COMENTARIOS Usamoscomentirias para descrever partes complexasdecAdigo, «fim de facilitara manleneo, sajapara quem elaborows. saftware, sea para tereeiros, Comentarios naa sa interpretados pela eompilador, Em C# existem dots tipos de comentarios; Barras duplas: converter o restate da linha em cornentirias. A Escola Aleides Maya - Segundo Médulo Ti Nosso primaire programa om CF. ‘5 caracteres * e */ definem blocos de textos come comentarios, Blacos de Te 1° Este € 0 meu primeire contate com C8. ‘Espero que aprenda ripido estd nova liaguagern. ‘Obrigada. #/ 6.2 METODO MAIN {Um programa Ci deve conter um métedo especial chamado Main. Este o primelro método chamada quando se-exceuta uma aplisagao em C2, ¢ & a pantr dele que voo# criara objetos-e executara outros metoxos. static void Main() { 1 Csi. (Qu retornar um valor inteiro (int) static int Maint) { i Costize. Retum 0 © métode Main também pode receber parimetos, par meio de um amray de strings. statie void Manistring{] ares) { iI Cédigo. ow stan int Makn(string[] ergs) C Cine. Rerum 0: A Linguagem C# 5.3 ENTRADA E SAIDA BASICA A entrada ¢ saida de um programa C# ¢ realizado pela biblioteca de classes do NET Framework, Entre as classes Presentes nesta biblioteca podemos citar a classe System. Console, que pode ser usada para escrever na tela ¢ obter dados do ‘toclado. 6.3.1 IMPRIMINDO NA TELA Tanpsinnie na Tela em C# ¢ ua atividade bastante simples. Para imprimie basta chamar © métode System,Console, ‘WriteLine). Veja exemplo: System Console. WiiteL ine(“Ola, Mundol} Esta linha imprime a mensagem mostrada abaiso: §.3.2 LENDO DO TECLADO ‘Ler dados a partir do tectado pode ses um poneo mais complicade, pois ha mais epgoes e por vezes vamos praciaar nos ‘preceupar com as conveesses de dads (veja mais sobie isso mais adiante). Mass por eaquante vamos fos ater a0 Basico. 5.3.3 ESPERANDO POR UMA TECLA Por vezes vose quer apenas que o usuario pressione uma tesla qualquer antes que © programa proseda com uma dada tarefa [550 ¢ simples de fazer, conforme vemos abaiso: (© metodo acima retoma informagies sobre a tecla pressionada, mas por enquanto vamos ignorar isto, pois por ora nite ‘os interessa saber qual foi, Veremos mais sobre isso minis tarde, 5.3.4 LENDO DADOS A PARTIR DO TECLADO Em. autras situagSes iremos querer que o usuario nos dé alyuma informage. A maneira mais fieil de se fazer isso € ler ums linha « partir de teclado. como mostra o exemplo: string nome = System Console ReadLine(}; © que quer que o usuiio digitasse seria armazenado na varidvel chamada nome (veja mais sobre variaveis na préxima peo). Por vezes sera necessério converter o texto que o usuario digitow para um outro tipo de dades, entso & ai que entram as ‘converses de tipos de dados. Veja mais sobre tipos de dados e converses na peéxima seco. A. Escola Aleides Maya - Segundo Médulo 6 VARIAVEIS E TIPOS DE DADOS 6.1 VARIAVEIS As variiveis so utilizadas para armazenar informagies aa meméria do computador enquanto o pangrama C# esta senda exocutado. a informagdes contidas nas variiveis podem ser altaradas dusante a exeeugto do programa. As variavets devem possuir um nome para que posssmos nos referenciar a elas mais tande, Aw nomesr uma varigvel devemos observar as seguintes restrigdes: + Qnomedeve comecar com uma let ou _ 1+ Nlso sae pormitidas expages, pontos au outros earaeteres de pentunggo, mas podomas user mimeras, + O-nome nso pode ser ums palavra reseevada do Cé. + O nome dave ser tice deutro do contesto anual Alm do nome, devemos também dafinir tipo de dados e o escopo (local onde a varisvel estar acesstv definide pelos modifieadores de aceaso (voremos mais sabre isso mais tarde) ‘0 excopa & Para declagar unua varivel, primeine voet precisa indiear o seu tipo 2 depois o seu acme, Veja os exeaiplos: string nome; Ant telefon: 6.2 TIPOS DE DADOS (Como toda a linguazem de programacso o C# apresenta seu erupo de tipos de dados bisieo. Esses tipos sto coahecidos come tipes primitives ou fundamentals per serem supertadas diretamente pelo compilados, e sero utilizados durante a codificasto na definiggo de-variiveis, pardmewos, declaragoes 2 até mesmo em comparagoes, Em C# todo o tipo de dados possui um correspondente na CLR (Common Language Runtime), por exemplo: int em C# refere-se a System [at32 na platafoama NET. Tipo CF Tipe NET Deserlgao Bool ‘SptemBoolsen | Booleano bye Syne Bye Tiiairo de €-bit com sinal ais har ‘System,Char Caracter Unicode de 16-bit 00 a aT ‘decimal ‘SystemDesimal | Inteive do 9@-bit com sinal com] 10 10-28a7.9» 1028 28-29 digitos| double ‘Sprtem Double Flumuante IEEE éi-bit com 15-[ =8.0 « 10-324 a=1,7 « 10308 16 digitos signitieativos Tow ‘System Single Fiutwante IEEE 32-bit com 7] OLS = 104s ass 1 Aigitos significatives int ‘System Int Inteino che 32-bit com sinall 2.147.483 648 0 2.147.453.687 stem, Int Tinteiro cle €2-bit com sinall ‘System Object (Classe base ‘System Sbyte Tnteiro de $+bit ser sinal ‘System Int 16 Tniciro de 16-bit com sinal ‘System String Song ieee Unicode de s-bit sem Suiemnss A Linguagem C# 6.3 CONVERSOES DE TIPOS ‘Ua tarefa muito commu no nado da programagio & a wtilizaglo de conversBes. Por exemple: podemos converter um, snteiro para um longo. Quandeo usuario digita um miimero qualquer numa TextBox, €-neceseiria uma conversso de valores antes que um caleulo possa ser realizado, Método Deserigae System Convert Tobtoolean() Converte uma sting para um valor booleane System,Convert ToByte() Converte para 0 tipo byte jem, Conver Tacha) Converts para ipa char System,Convert.TeDateTimet) | Converte para o tipo data ehora SystemConvertTeDesimal) | Converte para 6 po decimal System, Convert TeDoubled) Converte part. 0 tipo double Sysiem Convert Tolntt6() Comverte para 0 tipo short System Convert Tatars) Comverte para 0 tipo iateive System Convert Totat640) Converte para. 0 ipa long System Convert ToSingle) Converts para tipo single system, Convert TeString Converts para» pe string Alguas tipos so convertidos sutomaticamente se o valor que receber a conversa pudey conter todos os valores da ‘expresso. A tabala a seguir mostra as eonversdes que sto sealizadas automaticament, De. Para byte shor. int, long. float, double ow decimal byte shor, ushor, int vin, Tong, low, double on decimal short int, long, Boat, double ou decimal wushort in, wint, long, vlong, flows, double ov decimal int Tong, leat, double ou decimal ‘aint Tong. uleng, fost, double ou decimal oa oat, double ou decimal vulons float, double ou decimal cha ‘short, in, int, Jong. long. float, éouble ou decimal ‘oar double 7 ARRAYS Array € uma colegio de clementas armazenados em seqiiéncia, acessiveis através de um indice numérico. No C#, © primeiro elements de um array 2-0 de indive zero (0), 2 importante notar que podemos etiar arrays com uma ou ris dimensves, Para definir um array vosé seguira esta estrutura “Flipo-de-dedos> [J =uomedo-array> = mew tipo-de-dados>|-tamanho™ 7.1 ARRAYS DE DIMENSAO UNICA Vince pode eriar um array ¢ nie inicializa-lo: A Escola Aleides Maya - Segundo Médulo ‘No entanto, para utilizielo cm outras partes do cédigo, precisamos inicializielo, Por exemplo, para inicializarmos o array anterior com 10 elementos: act= new sting[20): Para armazenar informagdes mum array use o indice para indicar-o elementa desejado: aif] = “Alfiedo”; aif] = “Maria”: azi{2]= “Paulo”; azi{8] = “Beatriz": Entretanto, pocemos inicializa-lo, junto com a declaragito: ast = new sting/4] (~Alfeda”, “Maria”, Paulo”. Beatriz"): Podemos também omitir © nimera de elementos: iat (] aumeros string [] nomes 12,3452: (*Alfhedo”, “Maria”, “Paulo”, “Beatriz"}; Para acessar um elemento che um array voo# deve usar o indice da elemento desejado, lembrando que as indices camesam. sempre ¢0 zero, Por exemple, para acessar 6 segundo elemento do array nomes vacd usaria a seauinte instragae ‘tring saida = amr [1]; // Isto armazenaria “Masia” na varie sade 7.2 ARRAYS MULTIDIMENSIONAIS: ‘Num auray multidimensional separamos as dimensdes por visgulas, Para declasé-lo cou duas dimensdes, use: int [ Para doclasi-lo com tris dimensaes, use int [,,] orn 10 A Linguagem C# Exemplos: Essas linhas podcriam ser represcntadas por: E por: 8 EXPRESSOES im programa niio seré mito itil se ndo pudermos usielo para efetuar cilculos ou outre tipo de manipulagdes de dads para isso que suger os operadores Conforme veremtos a seguir, existem diferentes tipos de operadores, dependendo do tipo de operagio que deseiamos realizar, Categoria Oparadores| “Ariumdticn ‘Léica (boalena e bitwise) ‘E/E RR | wwe file ‘Consatensgto de string = Tncremeato e decremento = Shift Relacional Airbag — Asesso a membre Indexagiio Ca Condi Delegate (concatenacao ¢ remog#0) *: = | Conus de waeeses Geoveiow | ebesked wheeled Tndiresio e enderego 8 A Escola Aleides Maya - Segundo Médulo 9 ESTRUTURAS DE CONTROLE ‘Uma instrugao de controle ¢ usada para controlar a execuyae de partes de um programa. Sem as instrugdes de controle tum programa seria executado da primeira a witima linha. Isso pode ser algo que mio queremos em siteagdes nas quais uma instrugio deve ser executada somente se determina condiglo for verdadeira. As instruges de controle utiizadas no C# sho if, switch eetseif, 9.1 ESTRUTURAS DE DECISAO INSTRUCAOIE A instrugio if pode ser usada pam seletivamente cxecutar trechos de cédigo. ‘Voeé pode executar um cédgo apenas se uuma dada condigao for verdadeira ou falsa, Veja 0 exemplo: it (=sondigao>) € 1 Cédige para quando a condigSe for verdadeira. Existe ainda a possibilidade de se usar a clausula opcional else, que invertea condigao testada, Seu compo sera exectstada sea.condigéo nao for verdadeira, if (aum2) t Console. WriteLine(“O malor mi i che t Console WriteLine(“O malor niimere é*~ mom2}; y Consule.ReadKey0: A Escola Aleides Maya - Segundo Médulo 9.1.2 EXERCICIOS DE FIXAGAO + Crie um programa que leia nome e idade-de trés pessoas, inforrmando qual delas é a mais velha. Trabalbe com valores inti. + Solicite que o usuario iafoeane umm valor 2 verfique se mesmo 4 par ou ieypar + Solicite que o usuario informe um valor inteiro e verifique se @ mesmo é negative, zero ou positivo. + Solicit que o usuério informe o nome e tes notas de um aluno (com valores entre 1.02 10.0), calenle a sua mnédia taste as seguintes condigies: se a miédia for menor ou igual a $.0 exiba a mensagem “Reprovado"; se for menor ow igual a 7.0 exibaa:mensagem “Atingiu a média", se for menor ou igual a 8.9 exiba “Muito Bom", se maior ou igual a 9.0, mostrar “Excelente”. 9.2 INSTRUGAO SWITCH A instrugie switch permite a execugto condicional de instragdes de asords com o valor de um argumento teste, © qual pode ser uma variavel, uma expresso mumérica, una string ow Fungies ‘witch (Zarguaneatonde-este=) { axe “expression >: digo para quando argumento-de-tete = exprestio-1. break: ‘onic “expression? 1! Codigo para quando argumentondesteste ~ expression? breaks sare Cexprensio // Céxigo para quando argumento-; ; “incremento>) t 1 Cdige a ser executade enquanto 0 teste for it verdadeiso. Parimevo Deserigio inicializagio Tnisafiza a varivel de controle, wd para contar as exesuges do loop teste “Teste que decide se 9 corpo do loop deve ou nao ser execuinda. ineremaute Tneremenia (ou dewrementa) a variavel de contele, prepamade-a pata a proxina execugie do loop. 10.1.1 EXERCICIOS DE SALA DE AULA Usando a estrunura de repeticgo for devemos eriar um programs que imprima na tela 0s mtimeros de 1 a 10. Cri um nave projeto do tipo “Console Aplicattion” como nome de EstruturaDeForl, e em seguida renomeie a classe “Program.cs” para “Conts/DezNumeros” Entao, dentro do métede principal Main(), cedifique conforme exemplo mostrada abaixo. 16 ‘Usando a esrumura de_epetigdo For vamos navegar e mostrar valores de_um array de 3 posigoes, A Escola Aleides Maya - Segundo Médulo 10.1.2 EXERCICIOS DE FIXAGAO + Crie um Asray[10], peea para @ usudrio digitar valores do tipo string para preencher as LO posigBes e em seguida percorra.o mesmo mostranda todos os valores digitades, + Crie um Armay[S], poga para @ usuisie digitar valores dnteitos para proencher as 5 posigoes @ em saguida mostra somente-6 valor da posie8o [3] Instrugio while Ainstrugto while executa 0s comandos dentro do loop enquanta 2.condigdo que Ihe serve como parkimetro for verdadsira. Sintaxe de instrugao while “while (eondigao=) { J) Caigo w ser exccutado enquanto a condigto for i verdadeira. Se_a condigae for verdadeira as instrugdes colocadas dentro do blose {) serio exesutadas, # 9 programa volta para @ inicio do loop enovamente avaliara a candisao, Logo que a condigao se toma falsa, 0 programa passa a executar as instrugdes coloeadas apés ns chaves()) Um loop while on do pode ser encerrado pelas palavraschave break, goto, return. ou throw. A palavraschave continue também pode ser sada 10.1.3 EXERCICIOS DE SALA DE AULA. Para demonstrar o funcionamento da estrutura de laco while, o exernplo absixo mostra como devemos fazer para imprimir na tela daz valores, inicianda pelo 1 até 0 10. Cri um nove projeto do tipe “Console Aplicattion” com o nome de “Estruturawhile”, 2 em seguida reaomeie a classe “Program.cs” para “MostrarValores cs”. Per fim, insira o eédigo marcado em negrite abaixo no métede Main). ‘wins Sra ‘sing Sper Collections Generic; ing Sytaing: sing Sper Tet caspase Earorua Wale 1 las MartrrValores 1 sic void Mai sringt)} at) f amet; vubile = 10) Usama uma astraturs de o while vamas eriar wn programa aque leia a en 18 A Linguagem C# Crie um novo projeto-do tipo “Console Aplicatton”, com o nome de “EstruturaDeLacol” ‘Renomear a classe Principal “Program.cs” para~MostrandeCinco Valores” Declare as possiveis variveis, ¢ estrature o eddigo-dentro do método principal Maint). Sign exemplo abaixo: wing Systems using System Collections Generis; using System Ling: ving System Text: nmameypace EstrurursDeLscol i slats MortrandoCincoValores t statie void Mein(string] ares) ‘ in contadee ~ ‘while eomador = 5) ‘ ‘Console WriteLine(“Digite um nimere: nur int Parce(Console ReadLine() sontador++; Comole ReadKey(: 10.1.4 EXERCICIOS DE FIXACAO. ‘+ Esereva um programa que leia 10 valores fomecidos pela usuirie ¢mastre numero digitado ¢ sen dobro, + Gerar miimeros de» 50, variando de S em §.Mostrar no final a soma de todos os niimeros digitados, + Esereva um programa que leiaa entrada de 20 valore © mostre a somados valores positives e a.dos negatives, ‘© Bsereva um programa que, a partir da entrada de um valor intairo entre 1 2 10, exiba a tabuada desse-nimera, dona0 10, + Ler20 valores dois a dois, Testar estes valores, Se o segundo for maior que 9 primeirs, calcular s soma dele, + Sew primeiro for maior que segunda, calcular« diferenga e, se forem iguais, multiplici-los. + Em uma empresa foram selecionados 12 funcionarios novos, com diferentes idades © para cada uma delas foram registrados: nome, idade # més de nascimento, Apis 0 registro de dadios, desejourse saber + midace da peso mais joven +o nome a dade ea pesson mais idosa; +o miimero de pessows riscida no més de ontaro{ 10}. 10.2 INSTRUGAO DO ‘Wace deve ter notado que na palavra-chave while a condigao é av 19 A Escola Aleides Maya - Segundo Modulo acondigo for verdadlira, a insiru;des do loop so exccutadas. Se n condigao for falsa antes da primeira execusio do loop, «programa prosseguira som as instrugdes colocadas aps © loop. Dessa forma, pode ser que as instrogoes no interior do loop jamais sejam exesutadas, Se vosé quiser que as insirugdes no interior do loop sejam exeeuiadas no minimo uma vez, utilize ‘epalavraschave do. fsso garante que a instrusio scja exccutada, pelo menos, uma ver, antes de avalinr sc hi necessidade de repetir ou ni © loop, Sintaxe de instruqie do: 1 Cdige a ser executade ao menos uma ver ou enquanto a 1 condigao for verdadeira, 3 ‘while (); 10.2.1 EXERCICIO DE SALA DE AULA Para demonstrat funcionamento da estrutura de lago do, 0 exemplo abaine mostra que, ao eontedtio de que ecorre com ‘vestrutura while, o bloce de cédigo dentro de laco € executade ao menos uma vez. mesme que @ conadigho avaliada no seja valida. Cri um nove projate do tip “Console sAplicattion” com e nome de “EstrutursDo", @ em seguida renomeia a classe “Progeam,cs” para “TestandaDo.cs". Dor fim, insira o cédige marcado em negito abaixo no aiétode Main. ‘sing Sytem, ‘using System Collections. Generis ‘wring SyetemnLings using System Text namespace EstutursDo { sass TestandoDo { stati void Mainstring{] ngs) t inti = Lbs do { Conrole:WriteLine() Pthile = 105 Console ResiReyt A Linguagem C# 10.3 INSTRUGAO FOREACH Os loops de enumeracio permitem perconer ttens de arrays e colegdes. A siutase da instrugdo foreach & Foreach (lipo? elemento in | ra The text associated with the control. Propriedades de um Form A principal propriedade de um Form é a Text. # ela que indiea 0 texto a ser mostrado na barra de titulos da janela, Para alteraro titulo da nossa janela basta editar a propriedade. Troque-a por “Ola Mundo!” por exemplo. Note que ao pressionar Enter o titulo da janela muda de acordo com o valor informado: 26 A Linguagem C# 11.5 ALTERANDO O TITULO DE UMA JANELA Repita 6 pracesso para os outras dois componentes, mudiando a propriedade Test do Inbel nara um text vazio ¢ a mesma ropriedade do botio para “Diga Ola”, comforme mostrado na tela abaixo: Bere Aaa Berens OK, a parte visual da nossa primeiza aplicagse esti pronta. Agora precisamos adicionar-Ihe um pouee de iatcligincia .. 11.6 TRATANDO EVENTOS. © C4, assim come ontras linguagens usadas para desenvolver aplisativos baseados em janelas, wtiliza um coneeite shamado de Orientagio por Evenies, Em esséncia isso quer dizer que pregramamas nosso aplicativo coma wma série de respostas aos eventos gerades pelo usmiria (ou mesma pelo: proprio aplicativo). Estes eventos sito agbes tomadas pelo ‘usuario, por exemple, como slicar em win botde ou entrar umn texto ent una caixa de textos, [Em CH, toda vee que w unuirin efehua uma ago, um cédigo de tratamenta de eventos @ aulomalisamente langado, Tudo 0 ‘que precixamos fazer€ dizer no programm 0 que queremios que ele fag quanda cada um destes eventos ocorrer,€ n plataformn ‘toma conta do resto por nds, Diiferentes controles lidam com diferentes eventos, Lm boli precisa responder quando é slisade, um formulario presisa responder quando @ maximizado, uma cnixa de textos precisa responder quando o texto neln contida é alterado © assim or diamte, Entao, para defiirmos 9 tipo de resposta a cada um destes eventos, usiremos uma conjungie do prinel de Propriedades com » Editor de Cost. Funcionma mais ow menos assim: no cxso do aplicative que estamos erianda, queremos epic, quando 9 uswirio clicar ne otto “Diga Ola”, uma mensagem “Ola mundo!” saja esibida na tela, Assim, precisamas responder ao evento de clique ne bbotio; quando ele oesrrer, mastraremes tm testo ne Lae. A Escola Aleides Maya - Segundo Médulo (© Painel Propriedades exibindo os Eventos do botto Para ver os eventos possiveis em um botdo, primeiro selecione 0 botto no editor e depois, no painel de propriedades, clique no botdo Events. Para voltar a ver as propriedades do hotio elique no botio Properties. Ao clicar no botie Events para um botio voce vers a lista com todos os eventos passiveis de serem capturados por um otto. Obviamente o mais comum deles é 0 evento Click, que ocorre quando 0 usuario clica no betio. Para editar 0 eédigo que tratard o evento Click do nosso bot, clique duas vezes sobre o evento no painel de propriedades. © Visual Studio o levara para o Editor de Cédigo, onde voes podera descrever 0 que quer que acontega quando 0 bot for clicado, Editando 0 evento Click do botao 28 A Linguagem C# 1Na figura acima voc# pode ver que © Visual Studio ja eria muita coisa pars vocé, faltando apenas escrever que fazer sfetivamente para tratar 0 evento. Allere o c6digo no editor acrescentando a linha em negrito mestrada abaixo: Pronto, saa primeira nplisagie visual est promia, ¢ vos s6 precison sar seus doles artisticos ¢ essrever uma iniea Finha de codigo. Clique em File > Save All... para salvaro seu prejeto, « para executielo clique em Debug > Start Without Debugging. (O resultacio deve ser semelhante ao mastrado aban: 29 A Escola Aleides Maya - Segundo Médulo la Mundo em Windows Forms Agora clique no botae ¢ surpreendarse com o set sucesso ... 11.6 METODOS Em determinadas siteagdes poderemos querer realizar certas operagdes com os controles de ema janela, come por exemplo ocultar-um botio ox selecionar um checkbox. Estas operagies eslao disponiveis por meio de métodas associndos aos controler, Podemos entender um meiodo como uma mensagem que enviaremos a um controle, solicitando que ele faga azo. No nosso exemple antcrior, poderiamos motificar o cadiga para ocultar e botiio Diga Ola uma ver queele foi clicado. E. ficil de fazer, como vood vers, Edite 0 c6digo de programa adicinnande a finha em negrito 30 A Linguagem C# ‘wring System using System, Collections. Generic: using Systes, ComponeatModel: using System Data; using System Drawing; using System Ling: using System Text, using Systes, Windows Forms; namespace OlaMundoWindawsFerms 4 public partial class Form : Form { public Fowta1() 1 InitializeComponent(), private void buttoal_Cliek(object sender, EventArgs e) t Isbell ext = “Ola Mundo!”; buttom1.bide(); No exemplo acima estamos chamando 0 método hed do controle bution]. A notagito €sempreesia: 0 objein que se quer acessar, um ponto ¢ o nome de metade a ser chamago, seauido de parénteses. Metodos podem receber parametros. Parece familiar? Enatamente, métodos nio-passamn de fing des, A tnisa diferenga ¢ que os métodos este associados aos objetos 11.7 NOMEANDO OS CONTROLES. Se voed sequitt os exemplos anteriores, percebeu como pace as veres pode ser dificil fidar com muites controles rin tela, Trabalhar com label1 button] pode nao ter sido muito complicada mm exemple simples como © nosso, mas imagine quando o nikmem de coniroles se multiplica em um formubirie apenas medians, Ai estes nomes"“artifisisis” nie sto nenbum, pouca intuitivos, O melhor nestas situagiies € nomear vores mesine os corpanentes, pelo menos: aqueles aos quits vost presisard se referenciar em meio-a0-c6digo, Por exempla, compare este trechos de cSidigo da exemple anterior péivate void button! _Cliek(object sender, EventArgs e) 4 Isbell text = “O14 Mundo!"; button iden; com este 3h A Escola Aleides Maya - Segundo Médulo ‘Private void baDigaOla_Click{abject sender, EventArgs 6) € IblTextoOla text = “Ola Mundo!” binDigaOle hide); Amancira de conseguir into € através do priprio paine! de propricdades, La, bem ne topo da lista de propriedadies de cada controle, voe8 encontrané uma propriedade chamada (Same), Basta mudé-ia para que © nome do componente mude, mesmo ‘em trechos de sédigo que vos ja tenha essrito; © que fasilita bastante E importante notar que a propriedade Name segue as mesmas regras de nomes de variiveis. Na verdade, podemos até mesmo entender um botdo colacade em um formulirie come uma varitvel do tipo botao. 2 i pee dees Bat Gey Ope Fee ares toy te Me 9 Alteranda-o nome de um controle 12 USANDO OS CONTROLES Come pudemas ver no inisio deste capitals, a Tooibox oferece tama grande variedade de contrales, que fleur & sta disposigto para serem usados em suas aplicagies. Nao temos fempo nem espago para vermis todos eles, entio vamos explorar apenas algune dos principais, Figue a vontade para experimentar os outros que julgar interessantes. 12.1 FORM controle Form, ow formulario, representa uma janeln da nossa aplicagao, e normalmente sera preenchido com uma serie de ontras controles, Principais Propriedades A Linguagem C# Propriedade ‘AcceptButton Pemnite indiear 6 botio que sera ativado ao se pressionar Enter quando o formtirio tem 0 foco do teclado, BackColor Bormnite indicar a cor de finde da janels Backaroonétmage Fermite indiear uma imagem para ser usada como fundo da janela, BaekaromdimageLayout Permits indiear a maneira somo a imagem de fonds. sera sada para precncher a janela, Bounds Indica o tamanho © a localizago do formulario em relag#o ao su controle pai ‘CaneeiBorton! Parmite indiear @ botio que sera ativado no es presstonar Eee qando a jinnela tem 0 foco do teclado ‘Context Menu Strip Indica omenu de contexto wexibir quando o usuario clica com @ botio dirgito sobre o formularia, ‘ContrelBox Permits indicar se a janeia tera ov nfo uma eaina de controle no eanto| esquendo da sua barra de titlo, ‘Cursor Femnitc indicar o cursor ® usar quando o poniciro do mouse & posicionado sobre a janela, Enabled Pormite hebilitr © desabilitar@ formulanio Focused Tndia se este formulévio tem ou nto o fos FormBorderstyle Penuite indiear a tipo de borda da janela Teon Pemnite indicar @ jeone associado a esta jancla TsMDIContainer Tndica se este formulério € um contBiner MDI (multindocumeat interface). Location Tadica as eoordenadas do canto superior esquesdo da jancls. MainMemuStrip Pemnite especifcar a baera de menus a ser usada por esta jana MaximizeBox Pemnite indicar se o botso de maximizar estark visivel na barra de titulo da jancla MinimmizeBox ermite indiear se 0 botto de minimizar estara visivel na barra de titulo da janet. ‘Opacity Indica @ opacidade da janela Showlcon Indica se © feane da jancla deve estar visivel na barra de title Size Indica o tamanhe do formulirio Text India o ttalo da janeln “Visible India s¢ 0 Formulirio esta visivel own Window State Indica @ esac da janela (normal, minimizada ow masimicada}. 33 A Escola Aleides Maya - Segundo Médulo Principais Eventos ‘Activated, TLangedo quando 0 formulaire @ afivado wis codigo ow dlretameate pelo wsuitio. Click “Langedo quando 0 usuirie clica no formulario Closed ‘Langado quando 0 formulirie ¢ fochado, Closing: ‘Langado quando o formulirio esta vendo fechado. Deactivated “Langado quando o formulirio perde 0 fosa-¢ nie ¢ mais 0 form ative DoubleClick “Langedo quando « farmulirie reeebe wm duplo clique: EnabledChanged ‘Langado quando ¢ formulirie ¢ habiliiado ou desabilitado, GotF ocus, ‘Langado quando o farmulirio recebe 0 foco. Lond “Langado quando o formulario ¢ exibido pela primeira vez. desde que a aplicngio foi inicinca, Lost ocus ‘Langsdo quando o farmuldsio perde 0 Toco. Resize Langado quando o tamanho de formulario ¢ modificado, TestChanged Lancado quando o titulo da janala é alterado, ‘VWinibleChanged ‘Lancado quando a propriedade Visible alterada, Prinsipnis Métedos ‘Método ‘Descrigio ‘Activate ‘Ativa o formula € Ihe di foco. Bring ToFront ‘Truro fonmulario para frente ‘Clove Fecha o formulazio, Dispose Libera os recursos usidos pele formu Foss Diva feo aa formule, Hide ‘Oulta 0 formulae, Send ToBack Envia @ formulario para tris Show Exibe 0 formulirio ShowDialog Exabe o fomalirio como uma caixa de dialoges modal 12.2 COMMON CONTROLS © grupo Common Controls reine aqueles que sie es contreles mais freqiienlemente utilizades, Aqui encontraremes hotdes, eaixas de texio e lets 12.3 BUTTON O controle Button ¢ provavelmente nm dos contrafes mais simples que voce encontrar nay Toolbox, mas ammesino tempo ele eum dos mais iteis, Ele nos oferese wm botao simples querealiza uma determinada ago quando clicado pelo usuario, 34 A Linguagem C# Principais Propricdades Propriedade ‘BackgroundlinageL ayout Permuite indica o tipo de layout @ usar quando exibinda a imagem de fundo do batt ‘Carsor Pemmitc indicar © cursor que aparece quande a mouse € solacada sobre 0 botdo, Enabled Indien s¢ ¢ botdo esti habilitado ow nto Font Indica a fonte usada para ewibir¢ testo do botao. Image Indica a imagem dentro do botio. Tmage Align | Indica o tipo de alinbamento da imagem dent do boa. Size Indien as dimenstes do botao (Width €a largura, Height én altura), Indica se.0 usnirio pode usar a tecla Tab para dar foco a botio, Tadica 0 texto mostrado polo botio. Tadica ¢ aliahaments do texte dente do bots Indica 2 6 botdo est visivel ou nso. Principais Eventos Deseriga0 ‘Click Langado quando 0 betto ¢ eicade, ‘EnabledChanged Langade quando © botao é habilitads ow desabilitado _programaticamente (vein a propricdnde enabled), “VisibleChanged Tangado quando o botie €> <> Pedido Cliente_ID Pedido_ID Nome Cliente_ID Enderego Nota_Fiscal Fone Total IcMS Pedido() adicionarProduto() finalizarPedido() removerProduto() <> <> sl A Escola Aleides Maya - Segundo Modulo ‘Na programagio procedural voeé descreve os pesos que tomaria para solucionar um problema, enquanto: quc na programngio ortentada a objetos vosé descreve os objetos que compdem esta solugde ¢ a interagde entre eles. Pr causa das diferengas estruturais ¢ conceituais, 0 modelo orientado a objetos ¢ mais natural, mats préwimo de nossa compreensio da realidade. De um ponte de vista pritico. portanto, a orientagio a objctos permite n redugiia de custos na produgaa de softwares ¢ um melhor entendimento sobre o sistema deserwvahvido, Atoaimente, existem virias lingwagens de programagie que permitem a aplicasto total das téenicas da orientagdo a abjetos, Sao clas: Java, C++, SmalTally INET ¢ ete. 14.4 DIFERENGAS ENTRE CLASSES E OBJETOS: ‘Tade mundo fala-em Programago Orientada a Objetos, mas. primeira conceite que vimes foi Classe, e nde Objeto. Por que isso? Em C# voce programa usando classes, @ estas classes mais tarde gerarso ebjetos quando o programa estiver senda executado. Grosso modo, uma classe ¢ um conceito, um modelo para um objeto. Quando programa voe8 define as classes, elas ganham vida através dos objetos gorados a partir dalas, ‘Normalmente voee ase usar as classes diretamenta em sou programa Ao invés disso, ved as usaria apenas para instancias novos objeto. Imagine uma classe como uma planta de uma case: vec# nfo pode moras na planta da cesa, mas pode ws quantas casas quiser 14.5 CLASSES As Classes nos permitem organizar de forma coerente o codigo que crtamos, Por exemple, podemos criar waa classe chemad Custo que contém todas as fungbes necessiris para manipular 09 célculas referentes doa custos de uma empress Quando criamos una aplicsséo, iremos crise diversas classes, cada unis representando wm componente do problema, E a itteraque eure estes diferentes compensates que geraos resultados experados pala aplicagze, Diferente do que acontecia na metodologia procedural. na OOP dividimos nosso programa em classes por éreade interesse. Pos exemplo, para modelar uma aplicagso de videolocedora iriamos criar visias classes (uma para filme. outa para stor, outra pars produtors, outra pars cliente, ¢ assim por diaute) ao invés de eolocarmos todo o eédligo em um tice arquivo foate, ‘Alm de ajodar na compreensto do cédigo, isto faclita sobremancica a manutencso do mesmo: voct pode se sentir ‘tentado-a.somparar uma classe a um programa da metodologia procedural. A comparagdo até faz um certo seatide no inicio, ‘mas & medida que voce for ganhando experiéncia pesceberd que as classes sdo muite mais poderosas do que isso. Se for bem projetada, uma classe poder ser usada som qualquer modificagge em uma cutra aplicagzo. E, 20 contrixio do que Momualmente scoatece na programagdo procedural, vost ado precisard copier o cOdigo de uma classe para outre projeto quande-quiser utilizé-la: basta fazer soferéacia a ela e o rus-time cuida do resto para vood. Talvez ainda nao tonha fleede claro, ontao vale a pena roforger: uma classe 6 um tipo de dados, o tipe de dades mais ‘poderos do C#. Classes definem dados ¢ comportumentos em wma estrumurs tinica, Veet modela a classe ao seu eédizo fonte e, apartir dele, csin quantes Objetos daquele tipo precisar. Come dissomos antes, uma elasse eomporta dedos e comportamentos, 03 chamades membres da classe. Na notagse de (OOP chamamos os dados do atribnos, © comportamentas sao métodos. a A Linguagem C# Para acessar osmembros de urna classe, devemos criar uma instincin da classe, um objeto co tipo de dados ¢ welasse, ‘ou sei, um objeto ¢ uma entidade concreta baseada em uma classe (uma entiade abstrata), Atibutos: representam os dados associados é uma instancia de uma classe. ‘Meiodos: podem ser comparadas aos procedimentos ¢ fungOes que existiam na metodologia procedural, Estes métodos satuarde sobre os atributos para gerar os resultados esperados pelo programadsr. ‘Uma classe ¢ declarada com a instrugao class ¢ pade ser precedidia de um modificadar de acesso, Sintaxe: [modificadores] class “nome-da-classe= 4 Exempla: public class Taxa { U-Cédigo da classe. (Os objetos podem canter dados e ter comportamenta: os dados dos abjetos sso armazenados am campos, propriedades, ¢ eventos do objeto, ¢ compertamenta dos objetos ¢ definido pelos métados ¢ interfaces do ebjeto. Alguaias caracteristices dos objetos em C# + Tudo que vorés usa.em C# é um objeto, inclusive formulirios Windows (Windows Forms) e controles. ‘+ Sto definides como:medaloe de classes ‘+ Usam propriedados pars obtar e modificar as informagaes que eoutém, ‘+ Tem métodos ¢ eveatos que permitam executar ayoes. + Todas as classes heedams da classe Systom, Object. Cada objeto precisa ser uma instincia de uma classe, © so criados por meio da palavra-chave new. “nome-davelasse=> chome-davinstineia> ~ new chome-darclasse>(); Paracriar uma instincia de uma classe hipotéiea chamada Taxa usariamos a seguinte sintaxe: Quando uma insténcia de uma classe é crisda, ums reforéncia para o objeto ¢ passada para o programadar. No exemple anteriog, objotoTaxa ¢ uma referencia para wm ebjete baseado na classe Taxa. A classe dedine wn tipo de-objeto, mas ado ¢ wm ‘objeto. Neste caso, podemos entender objetoTaxa como ums varidvel do tipo Taxa. exatamente como se tivéssemos criado ‘uma varivel idade do tipo int 53 A Escola Aleides Maya - Segundo Modulo Quando uma instincis de uma classe ¢ crinda, uma referéncia para o abjeto ¢ passada para o programador. No exemplo anterior, objetoTaxa.¢ uma referéncia para um objeto baseado na classe Taxa. Alasse define um tipo de objeto, mas nto ¢um abjeto, Neste caso, posemos entender sbjetoTaxa como uma variivel de tipo Taxa, exatamente come se tivéssemas eriada uma variével idade do tipo int: A diferenga, talvez nam tio evident, é 0 uso da palavra-reservada new. Elasé é usada para instanciar novos objetos. 14.6 MODIFICADORES DE ACESSO PARA CLASSES (0s modificadores de-acosso sdo utlizados para rostringir 0 aceiso a classes ea seus membros (atributas ¢ métedos), (Os modificadoves de acesso de classe peimuitidos sto. “Madificadores Desericno ‘public ‘A classe é ecessivel em qualquer lugar. Néo ha restrigbes, private ‘Acessivel apenas dentro do contexto em que foi declarada ‘protected ‘A clase 6 acessivel somente a propria classe e nas classes derivadas Tado-e tipa declarado dentro de uma classe sem um mosiicador de asesso é considerado, por padre, somo private, (Os modificadores de acesso protected e private s6 so permitides em classes aninhadas, Veja o exemple: public clase Taxas C 1 Cine da classe Taxas. private class Turos { 1) Cbdigo da classe Jaros. } Os tipos aninhades sio private por paririo podem acessar membros definides como privatee protected da classe em que esti contidos, Devemos usar o-nome qualificada complete para aeessar os membros de classes animharlas, Para criar uma instincia de elvsse aminhads, usamos: Public static class Lina { 4 Ciadigo da classe esttica. J Membros declarados aqui seria estiticos também, ‘As classes estiticas slo carregadas automaticamente pelo CLR. quando o programa que coatém a classe é camegado. -Algumnas caractoristicas das classes estiticas: + Contém somonte membros estitioas, + Neo ¢ possivel eriar uma insténcia, + Néo podem ser implementades por intermédin de horanga, + Néo podem conter um métede construter. ‘Membros estiticos sto tteis em siruagoes em que-o:membio no precisa estar associado a uma instincia da classe, como, ‘por exemple, om situagécs que o valor contide no mambo nso se altera, come $ 0 caso do nome do autor contido no campo 4 A Linguagem C# Autor. ‘public static class Universe ( ‘public static iat velocidadeDal u2EmKmPer Segundo = 300000, Para acessar 0 campo velocidadeDal wEmKmPorSegundo, simplesmente usamos onome da classe, seguido do-ponto © sdo nome do campo: Universo velocidadeDaLuzEmKmPorSegunda Exemplo completo: Public static class Universo t Public statis nt velocidadeDaLuzEmKmPorSegundo ~ 300000; 3 sslass TesteUniverso { static void Maing) { ‘System. Console. WriteL ine(Universs. velosidadeDaLuzimKmPorSegunde}; } 14,7 METODOS ‘Um metodo contem uma série de instrugdes. Os métodos sto procedimentos que tem a fungao de executor as tarefias programadas dentro das classes. Osmiladlosdevem ser deslarados dentra de clases espesificando o nivel de aeesso, 0 valor de retorto, nome de métoske + porimettos (opcional}. Ok parkmetros devern estar dentro de parénteses e separados por vga, Parénieses vazios indieam 4quz 9 métngs nio requer nenhum parimett. Sintaxe mtiliznda pelos metodos em C8 [uodificaderes-de-acesse] ([=tipo- de-dados-do-patimetxe- I> [, ~tipe-de-dados-do-parimetro-2> snome-do-parimotro-2>[, , =!) 55 A Escola Aleides Maya - Segundo Médulo Exemplo: che Teas € ‘public void Impriauie() { } public int Caleulogint x, int y)] { return 0; z public string Mensagem(string mse) { return meg: 3 14.8 MODIFICADORES DE ACESSO PARA METODOS: (Os modificadores deacesto das métodos sto os mesos utilizadas com as classes. Quando definimos a acecsibilidadede tum método, devemos ter em mente que um membre de tina slasse nite pode ter mais privilegis que a slasse quea sant, Exemplo: se uma classe for declarada com o machficadr private, toes as seus membros serao private, Métndas declarados deniro de uma classe sem um modificadar de acesso so considerdas, por padrio, com private. Confira os modificadores de métodas do C8 ‘Moditicadores Descrigao publie (O metodo ¢ acessivel em qualquer lugar, Nio hit restrigbes, private’ ‘Acessivel apenas dentro de contento em que fai declarad, protected (0 metodo ¢ asessivel somente na propria classe © nas classes derivadas, ‘Chamamos nm método por intermédio da roferéacia ao ebjeto eriado a part da classe que contém o métado, seguida de um ponto, o nome do métode ¢ parénteses. Os arsumentos, se houver, 86 listados dentro dos partateses 2 separados por virgula. No exemplo, utiizamos novamente a classe Taxas que contim os métedes Imprimir, Calculo e Mensagem. Exemplo: Tasas obi Tax = new Tanas( sobjTaxsmprimin(h sbjTiax.Caleulo( 10, 20): objTax. Mensayern(“Oli Mundo"); A palaves-chave retum pode ser wilizada para parar a execugdo de um método, Se cla ago aparecer, a execugso & eacerrada somente no final do bloce de cédigo. Métodes que comtém um valor de retemo diferente de void dovem obrigstorismente utilizar a palavsaechave remsn indicando 0 valor a ser retornado. A Linguagem C# Exemplo | -retora uma string Taxar objlax = new Taxax{), obj Tax Imprieni(): obj Tax.Caleulof 10, 20); obj Tax Mensazem(“Ola Mundo"), Exemplo 2 - interrompe a execosio do método seo pardmetra str for nal ‘Public string Mensagemn(string st) { if (str = ull) 4 enc 1 alse { 14.9 PARAMETROS ‘Uma das grandes vantagens das métodos é que eles nes permitem

Você também pode gostar