


































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Os conceitos básicos da linguagem de programação c#, incluindo a integração de várias linguagens na plataforma .net, as características do clr, cts, cls e bcl, e a instalação e uso do microsoft visual c# express edition. O texto também aborda a estrutura básica de um programa em c#, como a clareza, simplicidade e facilidade, sua orientação a objetos, a ausência de ponteiros para gerenciar memória e a compatibilidade com outras linguagens. Além disso, são apresentados conceitos como tipos de variáveis, operações matemáticas, desvios condicionais e laços.
Tipologia: Manuais, Projetos, Pesquisas
1 / 42
Esta página não é visível na pré-visualização
Não perca as partes importantes!



































A LINGUAGEM DE PROGRAMAÇÃO C#
Nesta unidade, veremos os aspectos de umas das linguagens de programação mais utilizadas no mundo: a C# .NET.
Veremos sua estrutura e seu funcionamento básico, de modo que sejamos capazes de implementar pequenos programas e testarmos os aspectos da POO na prática.
3 CONHECENDO A LINGUAGEM DE PROGRAMAÇÃO C#
3.1 Visão geral da plataforma Microsoft .NET
A .NET é uma plataforma de desenvolvimento da Microsoft que tem como foco principal o desenvolvimento de serviços Web XML. A ideia central de um serviço Web XML, ou simplesmenteweb service, consiste em permitir que as aplicações, sejam elas daweb, dodesktop ou ainda demiddleware, se comuniquem e troquem dados de forma simples e transparente, independentemente do sistema operacional ou da linguagem de programação. Sua proposta é envolver linguagens de programação, compiladores, modelo de objetos etc. necessários para que consiga englobar de uma forma completamente integrada todos esses requisitos (LIMA; REIS, 2002).
Deste modo, a plataforma .NET possibilita a integração de diversas linguagens de programação, tais como C#, VB.NET (Visual Basic .NET), JScript.NET, Managed C++, HTML e conexão com banco de dados (SQL).
Resumidamente, a plataforma .NET possui as seguintes características (LIMA; REIS, 2002):
registro do Windows mais informações sobre o programa que está sendo executado. Oruntime encontra essas informações no próprio sistema em questão e sabe qual a versão a ser executada, sem acusar aqueles velhos conflitos de incompatibilidade ao registrar DLLs no Windows.
A plataforma .NET é dividida de forma modular, de modo a garantir integridade e robustez na execução das aplicações. Tais módulos ou componentes são: CLR (Commom Language Runtime), CTS (Common Type System), CLS (Common Language Specification) e BCL (Base Class Library). Sua hierarquia pode ser vista na figura a seguir:
Linguagens de programação (C#, VB.NET, JavaScript.NET etc.)
BCL (Base Class Library)
CLR (Commom Language Runtime)
CTS (Common Type System) CLS (Common Language Specification)
Figura 7 – Arquitetura .NET
O CLR, ou tempo de execução compartilhado, é o ambiente de execução das aplicações .NET. As aplicações .NET não são aplicações Win32 propriamente ditas (apesar de executarem no ambiente Windows), razão pela qual oruntime Win32 não sabe como executá-las. O Win32, ao identificar uma aplicação .NET, dispara oruntime .NET, que, a partir desse momento, assume o controle da aplicação no sentido mais amplo da palavra. Isso porque, dentre outras coisas, é ele quem vai cuidar do gerenciamento da memória via um mecanismo de gerenciamento de memória chamado Garbage Collector (GC) ou coletor de lixo, sobre o qual falaremos mais tarde. Esse gerenciamento da memória torna os programas menos suscetíveis a erros. Além disso, o CLR, como seu próprio nome diz, é compartilhado e, portanto, não temos umruntime para VB.NET, outro para C# etc., e sim o mesmo para todos (LIMA; REIS, 2002).
O CTS, ou Sistema Comum de Tipos, que também faz parte do CLR, define os tipos suportados por .NET e as suas características. Cada linguagem que suporta .NET tem de, necessariamente, suportar esses tipos. Embora a especificação não demande que todos os tipos definidos no CTS sejam suportados pela linguagem, esses tipos podem ser um subconjunto (classe filho) do CTS ou ainda um superconjunto (classe pai), conforme Lima e Reis (2002).
O CLS, ou Especificação Comum da Linguagem, é um subconjunto do CTS e define um conjunto de regras que qualquer linguagem que implemente a .NET deve seguir, a fim de que o código gerado resultante da compilação de qualquer peça desoftware escrita na referida linguagem seja perfeitamente entendido peloruntime .NET. Seguir essas regras é um imperativo porque, caso contrário, um dos grandes ganhos do .NET, que é a independência da linguagem de programação e a sua interoperabilidade, fica
Um última informação importante que devemos ter em relação à plataforma .NET se refere à MSIL (Microsoft Intermediate Language).
A MSIL – ou simplesmente IL – é a linguagem intermediária para a qual é interpretado qualquer programa .NET, independentemente da linguagem em que este for escrito. Essa tradução é feita para código intermediário (como em Java com osbyte codes) sintaticamente expresso na IL. Por sua vez, qualquer linguagem .NET compatível, na hora da compilação, gerará código IL e não códigoassembly específico da arquitetura do processador em que a compilação do programa é efetuada, conforme aconteceria em C++ ou Delphi, por exemplo. Isso acontece para garantir duas coisas: a independência da linguagem e a independência da plataforma (arquitetura do processador) (LIMA; REIS, 2002).
3.2 Instalação da linguagem C#
Antes de começar a estudar especificamente a linguagem C#, é recomendável a instalação do programa que irá auxiliar no desenvolvimento dos exemplos da orientação a objetos: o Microsoft Visual C# Express Edition.
Saiba mais
A versão 2010 desse programa pode ser encontrada nosite a seguir:
DOWNLOADS do Visual Studio. [s.d.]. Disponível em: <http:// www.visualstudio.com/pt-br/downloads/download-visual-studio- vs#DownloadFamilies_2>. Acesso em: 23 out. 2014.
O programa também pode ser encontrado dentro do pacote Visual Studio da Microsoft. Usualmente, a licença vence em trinta dias, mas basta fazer o registro para que seja enviada a chave do produto que liberará definitivamente o uso do programa.
Observação
Os exemplos deste livro-texto foram desenvolvidos utilizando o Microsoft Visual C# 2010 Express. Entretanto, o leitor poderá optar por outra versão mais adequada ao seu estudo ou optar por utilizar o Microsoft Visual Studio 2010 ou superior.
3.2.1 Iniciando um novo projeto no C#
Uma vez instalado o programa, os primeiros passos para o uso são os que apresentaremos a seguir.
Em primeiro lugar, procure o ícone do Microsoft Visual C# no Windows. Se o sistema operacional for o Windows 7, ele se apresentará como na figura a seguir:
Figura 8 – Ícone no Menu Iniciar no Windows 7
Caso o sistema operacional seja o Windows 8, ela aparecerá da seguinte maneira:
Figura 9 – Ícone na Tela Iniciar do Windows 8
Para iniciar um novo projeto, vá em File/New Project :
Figura 10 – Iniciando um novo projeto
Aparecerá então a tela para escolher o tipo de projeto (neste curso, será sempre Console Application ). Em Name , coloque o nome do novo projeto e clique OK , como visto na figura:
O C# faz parte também de todos os pacotes do Visual Studio, sendo o Microsoft Visual Studio 2013 a última versão lançada até a elaboração deste livro-texto.
O processo de criação de um novo projeto é semelhante ao da versão Express. O passo 1, File/New, é igual. Veja:
Figura 13 – Inicialização de um novo projeto no Visual Studio 2013
O passo seguinte requer um cuidado maior, pois o Visual Studio incorpora várias linguagens de programação. Em Templates , escolher C# e então proceder como na versão Express.
Figura 14 – Escolha do modelo de projeto
3.2.2 Execução C#
Como visto no passo 4 do item anterior, a edição do programa acontece no bloco doMain, mas muitas vezes a tela de edição perde a configuração devido à combinação de teclas que pode acontecer acidentalmente fechando alguma janela interessante. Nesses casos, tanto na versão Express quanto no Visual Studio, basta digitar em Windows/Reset Window Layout.
Figura 15 – Reiniciar as janelas
A seguir, temos um trecho simples de código em C#:
Figura 17 – Edição do primeiro código
O programa da figura anterior escreve a frase “Olá mundo em C#” em uma janela de console (prompt de comando). Ao executarmos, temos a tela vista na figura a seguir. Vamos estudá-la.
Figura 18 – Tela de saída do primeiro programa
Em sua primeira linha, temos a cláusula (ou palavra reservada ou comando)using. Sua função aqui é carregar osnamespaces (classes ou bibliotecas) necessários para a execução do programa.
Após a definição das bibliotecas que serão utilizadas, iniciaremos a estrutura do programa. O programa principal também é considerado uma classe; deste modo, então utilizamos a cláusulaclass seguida pelo nome da classe, que, neste caso, será o nome do programa.
As chaves servem para definir o escopo de cada bloco de codificação, ou seja, determinam o início e o fim de cada sequência de comandos.
Por se tratar do programa principal, essa classe conterá apenas um método (função):Main(). Como toda linguagem da família C, “main” indica que o programa, ao ser executado, será iniciado a partir dele. É importante entender que a estrutura do programa principal será muito parecida com ao deste exemplo!
A cláusulastatic existe ali indicar ao .NET que essa função estará disponível permanentemente enquanto o programa estiver sendo executado. Já a cláusulavoid indica que o métodoMain não possui nenhum retorno.
Observação
Quando dizemos que a linguagem C# é fortemente tipada, é porque os nomes de variáveis, métodos, atributos e classes escritas com letras maiúsculas serão diferentes dos de letras minúsculas. Deste modo, o métodoMain deve ser escrito com a letra ‘m’ maiúscula, sempre.
O métodoMain() escrito conforme o exemplo significa também que o programa não receberá nenhum argumento (ou parâmetros) para sua execução. Caso seja necessário que o programa receba esse tipo de informação, a declaração desse método sofre uma ligeira alteração:
static void Main(string[] args)
Por fim, devemos nos atentar ao ponto-e-vírgula (;). Esse caractere deve ser colocado no final de cada linha de comando, indicando assim onde o comando é finalizado.
Se tratando de organização de código, temos os comentários, que podem ser escritos em linhas ou em blocos. Para comentários em linhas, utilizamos duas barras (//). Para comentários em bloco, usamos a sequência /* */, conforme o exemplo:
Neste exemplo, encontramos uma rica quantidade de conceitos utilizados para programar em C#. Diferente do exemplo anterior, este programa agora escreve na tela, solicita a entrada de informações e devolve essas informações na tela.
Para isso, utilizamos a classe Console, que possui os métodos necessários para exibição de informações na tela e captura de dados via teclado, conforme ilustrado no quadro a seguir:
Quadro 3 – Métodos de interação de teclado e tela
Método Descrição Console.Write Escreve na tela, na posição onde está o cursor. Console.WriteLine (^) posicionando o cursor no início da nova linha.Escreve na tela e ao final salta uma linha,
Console.Read Lê a digitação de algo no teclado (aguarda até queuma tecla seja pressionada).
Console.ReadLine Lê a digitação do teclado e aguarda até que a teclaEnter seja digitada.
Outro conceito mostrado no código anterior é o das variáveis, que terão o escopo de onde elas foram definidas. No exemplo MeuTeste2, as duas variáveis declaradas (c e str) apenas funcionam dentro do métodoMain.
A tabela a seguir mostra os tipos de variáveis utilizados em C#.
Tabela 1 – Tipos de variáveis em C#
Tipo Valore possíveis bool Verdadeiro ou falso (valores booleanos) byte 0 a 255 (8bits) sbyte -128 a 127 (8bits) char Um caractere (16bits) decimal ±1.0 x 10-28 a ± 7.9 x 1028 (128bits) double ±5.0 x 10-324 a ± 1.7 x 10308 (64bits) float ±1.5 x 10-45 a ± 3.4 x 1038 (32bits) int -2.147.483.648 a 2.147.483.647 (32bits) uint 0 a 4.294.967.295 (32bits) long 9.223.373.036.854.775.808 a 9.223.372.036.854.775.807 (64bits) ulong 0 a 18.446.744.073.709.551.615 (64bits) object (^) Qualquer tipo short -32.768 a 32.767 (16bits) ushort 0 a 65.535 (16bits) string Sequência de caracteres (16bits por caractere)
Lembrete
Para maiores detalhes sobre os dados desse quadro, verifique o Help da linguagem C#, que é encontrado no menu de opções do programa (último item ou digitando F1).
Para se trabalhar com variáveis, devemos tomar alguns cuidados e seguir algumas regras:
Exemplos:
Apenas após a definição da variável é que podemos utilizá-las em nosso programa. Para atribuirmos valores para as nossas variáveis, devemos utilizar o símbolo de igualdade (=).
Exemplos:
Agora que a estrutura básica de um programa em C# foi apresentada, vejamos o próximo código. Este exemplo mostra a idade atual de uma pessoa e a que ela terá no ano que vem:
Os programas MeuTeste2 e Idade_v1 também introduzem o conceito de máscara de exibição de valores ({0}). Essa máscara permite formatar melhor as mensagens de saída, deixando as mensagens mais simpáticas ao usuário do programa.
O conceito do uso desta máscara é bem simples. O conteúdo das chaves ({0}) é substituído pelo o conteúdo da variável passada como parâmetro, ou seja:
Ela vai ser exibida para o usuário da seguinte maneira:
Figura 19 – Saída do programa V1.
Podem ser montadas várias máscaras em uma mesma mensagem de exibição, conforme podemos ver nessa versão melhorada do programa Idade_v101 (versão 1.01):
Código 4 – Idade_V1.
Para a versão nova, o programa Idade_v101 teve duas alterações. Para ilustrar o exemplo da máscara na mensagem de exibição com dois valores distintos, houve a necessidade de criar uma segunda variável
para armazenar a idade para o ano que vem. Deste modo, o valor resultante do cálculo da idade passou a ser armazenado na variávelidadeanoquevem e o valor da idade atual, na variávelidade. Essa divisão do cálculo em duas variáveis traz uma maior organização ao código do programa e permite utilizar uma mensagem única de saída com as suas respostas. Assim, a mensagem é definida como:
Essa técnica de se colocar máscara na mensagem se chama formatação composta. Uma cadeia de caracteres de formato composto consiste de sequências de texto fixo intercaladas com itens de formato. Tal recurso retorna uma nova cadeia de caracteres e o resultado é que cada item de formato é substituído pelo valor da variável correspondente na lista após a máscara. Assim, o item de formato {0} será substituído pelo primeiro valor após a máscara, ou seja, pelo conteúdo da variável idade, e o item {1} será substituído pelo do segundo valor depois da máscara, o conteúdo da variável idadeanoquevem.
Saiba mais
Para saber mais sobre a formatação composta, visite osite do Microsoft Developer Network no verbete “formatação composta”. Lá poderão ser encontradas referências para os componentes de índice, de alinhamento e caracteres de formato. Olink é:
FORMATAÇÃO composta. [s.d.]. Disponível em: <msdn.microsoft.com/ pt-br/library/txafckwd(v=vs.110).aspx>. Acesso em: 27 out. 2014.
Assim, no programa Idade_v101 será exibida a tela a seguir:
Figura 20 – Saída do programa Versão 1.
Para a leitura de um valor via teclado, emprega-se a instrução Console.ReadLine();. Uma forma direta de aplicação é a atribuição do resultado dessa instrução à variável que receberá tal conteúdo.
Voltando ao programa da idade, vamos agora realizar mais algumas implementações, de modo que ele fique mais prático, pois, embora para fins didáticos ele ilustre alguns conceitos importantes, o programa não possui uma utilidade muito prática. Vejamos agora o programa Idade_v2 (versão 2.0):
Código 5 – Idade_V2.
Agora o programa Idade_v2 possui um senso prático, pois, diferente do que acontecia nas versões anteriores, o usuário pode informar ao programa sua idade atual e solicitar para que seja calculada a sua idade dentro de determinada quantidade de anos (também informada pelo usuário). Logo, não é mais feito um cálculo com valores predeterminados dentro do programa.
A saída do programa deverá ocorrer como ilustra a figura a seguir:
Figura 21 – Saída da versão 2.
Observação
É importante perceber que, assim como o aprendizado, o programa deve ser construído por etapas. A função básica do programa de cálculo de idade é a mesma nas três versões (Idade_v1, Idade_v101 e Idade_v2), porém o requinte na construção do código e as funções agregadas a cada versão foram construídos por etapas.
Estudando o código do programa Idade_v2, devemos nos atentar às variáveis. Embora seus valores sejam informados pelo usuário, todas as três variáveis são iniciadas logo após sua declaração.
Faz parte das boas práticas de programação iniciar as variáveis com valores predeterminados para garantir os valores iniciais das variáveis dentro do programa. Quando declaramos uma variável e esta não é inicializada pelo programador, as variáveis primitivas recebem um valordefault. Outros tipos de variáveis, quando declaradas ou instanciadas, recebem como valordefault o null. Veja:
Quadro 6 – Padrões de valores de tipos de variáveis em C#
Tipo Conteúdo Boolean False Byte 0 Short 0 Char Null Int 0 Float 0. Long 0 Double 0.
Agora sabemos como é a estrutura básica de um programa em C#, como se comportam as variáveis e como fazer o programa interagir com o usuário. O próximo exemplo ilustrará como trabalhar com textos (string):
Código 6 – Programatexto
O programa Programatexto ilustra alguns exemplos de como trabalhar com dados do tipo texto (string), verificando o tamanho do texto digitado, concatenando textos diferentes e trabalhando com partes dos textos, conforme mostra o quadro a seguir.