Professional Documents
Culture Documents
Introdução
Neste tópico, vamos ter uma visão geral sobre a linguagem C#. Para isso, vamos conhecer o
histórico dessa linguagem, as diferenças entre os conceitos de linguagem de programação de
alto nível e baixo nível, bem como as comparações entre as linguagens C, C++, C#. Além
disso, vamos apresentar o conceito de Dot NET Framework.
Conteúdos:
Histórico da linguagem C#
Alto nível
A linguagem de alto nível está muito mais próxima do programador do que do dispositivo,
devido à facilidade de entendimento. Em outras palavras, a linguagem de alto nível é mais
fácil de ser trabalhada por ser muito mais intuitiva e amigável.
São exemplos de linguagem de alto nível o C#, Java, Visual
Baixo nível
A linguagem de baixo nível é muito mais voltada para o dispositivo – processador,
microcontrolador etc. Com isso, o programador tem mais trabalho, se compararmos com o
trabalho necessário para lidar com a linguagem de alto nível.
Normalmente, a linguagem de baixo nível envolve números e letras, que são instruções
diretas ao dispositivo. Dessa forma, o programador tem de entender não só a linguagem em si
mas também toda a arquitetura do dispositivo com que vai trabalhar.
Um exemplo de linguagem de baixo nível é a Assembly.
Já deve ter ouvido falar nas linguagens C e C++, não é mesmo? Apesar de seus nomes
serem parecidos, essas linguagens são diferentes e têm características próprias. Dessa
forma, não confunda! Vamos comparar essas linguagens?
Histórico da Linguagem C#
C# é uma linguagem de programação moderna orientada a objetos.
A linguagem C# foi desenvolvida por Anders Hejlsberg e sua equipe durante o
desenvolvimento do Dot NET Framework (plataforma .NET), da Microsoft.
Apesar de a sintaxe do C# ser baseada no C++, ela inclui influências de outras linguagens de
programação, como Pascal e Java.
Note que essas influências podem facilitar o entendimento para programadores que já
possuem conhecimento em outras linguagens.
A linguagem C# é muito utilizada nos dias de hoje. Você sabe por quê? Vamos descobrir!
São vários os motivos que fazem a linguagem C# ser muito utilizada. Por exemplo:
É fácil de aprender.
Tem muita semelhança com o Java, C e C++, porém apresenta várias facilidades e
extensas bibliotecas de pronto uso, que agradam os desenvolvedores.
aplicações web
serviços web
aplicativos mobile
serviços do Windows.
C++
Visual Basic
Javascript
COBOL.
Além disso, essas linguagens podem comunicar-se umas com as outras por meio da
plataforma.
A plataforma .NET é um ambiente gerenciado que proporciona uma variedade de serviços
para os aplicativos em execução.
Esse ambiente consiste em dois componentes principais:
CLR – Common Language Runtime
Biblioteca de classes .NET Framework.
Por apresentar esses dois componentes, o framework é essencial para rodar diversos
aplicativos.
Além dos dois componentes principais, a plataforma .NET tem outros componentes. Você
sabe quais são?
common language runtime – CLR, biblioteca de classes, common language specification,
common type system, metadados e assemblies, Windows forms, Windows services, ASP.NET
e ASP.NET AJAX, ADO.NET, Windows workflow foundation – WWF, Microsoft LINQ –
Language Integrated Query, Windows Phone.
A linguagem C# foi criada pela Microsoft e pertence à plataforma .NET. Apesar de a sintaxe da
C# ser baseada no C++, ela inclui influências de outras linguagens de programação, como
Pascal e Java. Uma das vantagens dessa linguagem é a variedade de plataformas em que
pode ser compilada.
O ambiente de gerenciamento .NET proporciona uma variedade de serviços para aplicativos
em execução:
O CLR (Common Language Runtime), mecanismo de execução que identifica
aplicativos em execução
A Biblioteca de classes .NET Framework, que fornece uma biblioteca de códigos
testados e reutilizáveis
O Windows Form, utilizado para a criação de formulários
O Windows Phone, utilizado na mobilidade.
Visual Studio
Neste tópico, vamos aprender um pouco sobre o Visual Studio, uma ferramenta da Microsoft
essencial no desenvolvimento do C#.
Conteúdos:
Palavras de uso interno e restrito
Ambiente de desenvolvimento Visual Studio: Toolbox, Solution Explorer, controlos,
janela de propriedades, janelas
Console Application versus Windows Forms.
Ao finalizar este tópico, você será capaz de:
Conhecer o ambiente de desenvolvimento Visual Studio e suas principais ferramentas.
Compreender e reconhecer as diferenças entre as aplicações Console Application e
Windows Forms.
Ética
Seja bem-vindo ao grupo das pessoas que desenvolvem algo novo por meio da informática!
Como participantes desse grupo, temos de atuar com ética!
Como desenvolvedores, iremos entender o que é ter nossa solução replicada sem
consentimento.
Qual sensação pode ser pior do que ver um código desenvolvido por você sendo utilizado por
uma pessoa que diz que a ideia foi só dela?
A ética está relacionada com atitudes totalmente diferentes dessa. Ética tem a ver com
respeito e com atitudes como não copiar, não plagiar, citar quem fez originalmente o código e
solicitar autorização de uso formalmente.
A ética também se aplica à vida cotidiana.
Quantas vezes baixamos uma música, um filme ou uma foto sem pagar nada por eles? Será
que estamos lesando o criador intelectual da obra? Será que devemos ir na onda: "se todos
fazem, eu posso fazer também!" ?
Qual é o limite entre o certo e o errado? Não deveria haver uma regra clara para o que é certo
e errado?
Sim, existe uma regra! Há uma lei que fala justamente sobre isso.
No entanto, mesmo sabendo da existência dessa lei, por que há os que insistem em contrariá-
la? Se você é uma dessas pessoas, já pensou em qual é seu nível de ética?
Essa discussão é essencial para nossa cidadania, para termos nossos direitos respeitados
em qualquer situação.
Componentes do IDE
Inserção de Componentes
Janela de Error List
Error
Não será possível executar a aplicação se o erro não for corrigido.
Warnings
Não são tão graves. De modo geral, são só avisos que não impedem a
execução do programa.
Messages
Não são tão graves. De modo geral, são só avisos que não impedem a
execução do programa.
A MessageBox é uma caixa de mensagem predefinida que tem como função dar algum
retorno ao usuário, por meio do Visual Studio.
A MessageBox é disparada exibindo uma mensagem com um texto especificado. A caixa de
mensagem pode ter algumas opções adicionais, incluindo legenda, ícone e botões de ajuda e
pode ser configurada pelo usuário.
O exemplo “Hello World” é uma string. Pode-se escrever a mensagem que deseja que
apareça, dentro dos parênteses e aspas: .Show significa “para mostrar”.
Para entrar no modo código, devemos clicar com o botão direito no formulário (View Code)
ou pressionar a tecla F7.
Tipos de Dados
Os tipos de dados disponíveis em C#? Os tipos de dados mais comuns são bool, char,
decimal, double, float, int.
TIPO REPRESENTAÇÃO RANGE PADRÃO
Bool Boolean True or False False
Byte 8-bit unsigned Integer 0 to 255 0
Char 16-bit Unicode character U +0000 to U +ffff '\0'
128-bit precise decimal values with 28-29
decimal (-7.9 x 1028 to 7.9 x 1028) / 100 to 28 0.0M
significant digits
double 64-bit double-precision floating point type (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
Float 32-bit single-precision floating point type -3.4 x 1038 to + 3.4 x 1038 0.0F
Int 32-bit signed integer type -2,147,483,648 to 2,147,483,647 0
923,372,036,854,775,808 to
Long 64-bit signed integer type 0L
9,223,372,036,854,775,807
Sbyte 8-bit signed integer type -128 to 127 0
Short 16-bit signed integer type -32,768 to 32,767 0
Uint 32-bit signed integer type 0 to 4,294,967,295 0
Ulong 64-bit signed integer type 0 to 18,446,744,073,709,551,615 0
Ushort 16-bit signed integer type 0 to 65,535 0
Nomeação dos Componentes
As boas práticas de nomeação dos componentes determinam, por exemplo, a utilização de
um prefixo de duas ou três letras para identificar o tipo de objeto utilizado.
Variáveis
Variável é o espaço para o armazenamento de dados na memória do computador. Cada
variável tem um tipo específico. Cada tipo de variável determina o seguinte.
O tamanho e a disposição da variável na memória.
O intervalo de valores que pode ser armazenado.
O conjunto de operações que pode ser aplicado à variável.
Os valores das variáveis ficam guardados na memória somente enquanto o programa está em
execução.
Chamamos o processo de armazenamento de valores durante a execução do programa de
memória volátil.
A variável armazena somente um valor de cada vez. Dessa forma, quando a variável recebe
um novo valor, ele substitui o valor antigo.
Para declarar uma variável em C#, a sintaxe deve ficar da seguinte forma. string nome;
Pode inicializar uma variável e atribuir-lhe um valor no momento da declaração, do seguinte
modo: int quantidade = 100;
Palavras-chave reservadas
As palavras-chave reservadas são predefinidas e reservadas para o compilador C#. Por isso,
não podem ser usadas para definir nomes de variáveis ou objetos dentro da programação.
Palavras-chave contextuais
Em C#, alguns identificadores têm significado especial no contexto do código, como get e set.
Os identificadores são chamados de palavras-chave contextuais.
Operadores.
A função dos operadores é mostrar ao programa que algumas operações matemáticas
específicas, ou lógicas, devem ser realizadas. A linguagem C# é rica em operadores internos.
Operadores aritméticos:
(+) Adição
O operador de adição soma dois operandos.
Por exemplo: A + B = 30
(-) Subtração
O operador de subtração subtrai o segundo operando do primeiro.
Por exemplo: A - B = -10
(*) Multiplicação
O operador de multiplicação multiplica ambos os operandos.
Por exemplo: A * B = 200
(/) Divisão
O operador de divisão divide o numerador pelo denominador.
Por exemplo: B / A = 2
(%) Módulo/Resto
O operador módulo indica o resto após a divisão.
Por exemplo: B / A = 2. Logo, B % A = 0.
(++) Incremento
O operador de incremento aumenta o valor inteiro do operando em um. Esse operador
funciona de modo similar ao operador de soma: A++ equivale a A = A + 1
Por exemplo: A++= 11
(- -) Decremento
O operador de decremento diminui o valor inteiro do operando em um. Esse operador
funciona de modo similar ao operador de subtração: i-- equivale a A = A – 1.
Por exemplo: A -- = 9
Atenção! O operador de decremento, assim como o de incremento, somente funciona para
variáveis do tipo numérico.
Operadores relacionais:
Os operadores relacionais servem para fazer comparações. Desse modo, seu resultado
sempre será true ou false – verdadeiro ou falso.
(==) igual
Verifica se o valor de dois operandos é igual ou não. Se o valor for igual, a condição se torna
verdadeira. Repare que se trata de um operador de comparação.
(!=) diferente
Verifica se o valor de dois operandos é diferente ou não. Se os valores não são iguais, a
condição se torna verdadeira.
Operadores lógicos:
Os operadores lógicos servem de junção a diversas comparações simultâneas.
(&&) and
O operador and (e) é utilizado quando se quer restringir mais de uma comparação. Ele
assume que ambas as condições sejam satisfeitas.
(||) or
O operador or (ou) é contrário do and. Basta que qualquer uma das comparações seja
verdadeira para que a condição seja satisfeita.
(!) not
O operador not (não) é o inverso daquilo que se está afirmando ou negando. Ele inverte a
condição lógica proposta.
Estruturas de Decisão
Neste tópico, vamos entender quais são as estruturas de decisão no C# e como elas são
utilizadas.
Conteúdo:
Estruturas de decisão.
Ao finalizar este tópico, você será capaz de:
Compreender a utilização de estruturas de decisão.
Por exemplo, vou fazer uma festa, mas tenho uma condição: SE CHOVER...
SIM – Comando A: Faço a festa em lugar fechado.
NÃO – Comando B: Faço a festa em lugar aberto.
If é uma decisão condicional simples.
If (condição verdadeira)
{
Instrução 1 - Instruções a serem executadas se a condição for verdadeira;
}
Comando if-else – Decisão Condicional Composta
A expressão if-else é utilizada para executar uma condição por meio de uma expressão
booleana.
A cláusula else é opcional, de modo que seu conteúdo somente será executado se o
resultado da expressão for false - falso. Quando temos mais de uma condição, ocorre o que
chamamos de encadeamento de ifs.
A condição if-else if pode ser seguida por uma instrução if opcional. Tal instrução é
executada quando a expressão booleana é verdadeira ou falsa. Em outras palavras, temos if
dentro de if.
O encadeamento de ifs também pode ser chamado de estrutura encadeada ou aninhada. A
estrutura encadeada será utilizada quando for necessário satisfazer mais de uma condição.
De acordo com a necessidade e complexidade da situação-problema, podemos ter um código
com uma série de ifs, até que a condição seja satisfeita.
Temos ainda a opção de usar o switch.
A instrução switch permite utilizar várias opções em uma única estrutura. Com isso, a
instrução é uma forma de reduzir a complexidade do uso de vários ifs.
A instrução switch é utilizada em situações que pedem diversos testes condicionais. Nesse
contexto, o switch examina a condição e especifica o bloco de código que deve ser
executado.
if ( expressãoCondicional )
{
codigo1 – Instrução a ser executada caso verdadeiro
}
else
{
codigo2 - Instrução a ser executada caso falso
}
If encadeado
Quando temos mais de uma condição, ocorre o que chamamos de encadeamento de ifs.
Nesse sentido, a condição if-else if pode ser seguida por uma instrução if opcional. Tal
instrução é executada quando a expressão booleana é verdadeira ou falsa. Em outras
palavras, temos if dentro de if.
If (condição verdadeira)
{
Instruções a serem executadas se for verdadeira;
}
else if (nova condição)
{
Instruções a serem executadas se a nova condição for verdadeira;
}
else if (nova condição)
{
Instruções a serem executadas se a nova condição for verdadeira;
}
else
{
Instruções a serem executadas se for falsa;
if (nova condição)
{
Instruções a serem executadas se a nova condição for verdadeira;
}
}
Usos da Condição If
Podemos desenvolver uma estrutura apenas com if – sem else.
Nesse caso, temos uma estrutura condicional simples.
Usos da Condição If
Instrução Switch
A instrução switch é utilizada em situações que pedem diversos testes condicionais. Nesse
contexto, o switch examina a condição e especifica o bloco de código que deve ser
executado.
A estrutura de decisão if-else utiliza uma expressão booleana true / false (verdadeiro / falso)
durante a sua execução.
A cláusula else é opcional, portanto, seu conteúdo só será executado se o resultado da
expressão for false.
A estrutura switch é aplicada quando se necessita utilizar diversos testes condicionais,
reduzindo assim a necessidade de aninhar uma sequência muito grande de ifs. O modo
default de uma estrutura switch é opcional e é executado quando todos os testes
condicionais da estrutura switch não resultarem em um valor verdadeiro, ou seja, quando
todos os testes forem falsos.
Estruturas de Repetição
Estrutura de repetição é um trecho de código utilizado para repetir uma tarefa várias vezes,
até que determinada condição seja satisfeita. Essa estrutura funciona como um looping!
While
É usada quando um bloco de código é repetido e enquanto uma condição for verdadeira. Em
outras palavras, quando não sabemos quantas vezes o bloco de código precisa ser repetido,
pois ela testa a condição antes de executar o looping
while (expressão booleana)
{
//instruções que serão testadas até que a condição seja satisfeita
}
do/while
Tem quase o mesmo funcionamento da estrutura while. A diferença é que o do/while testa a
condição no final de cada ciclo.
do
{
// corpo do loop
}
while(condição);
for
Executa uma sequência de códigos até que a condição seja verdadeira. Para realizar essa
tarefa, a instrução é feita em três partes: inicialização, condição e atualização.
for (inicialização; condição; atualização)
{
// Esse código será executado enquanto a condição for verdadeira
}
O trecho de código apresenta uma estrutura de repetição while (enquanto), utilizada quando
um bloco de código é repetido, enquanto uma condição for verdadeira. Nesse caso, a variável
i é inicializada com o valor 20 e, com a condição enquanto i for maior do que 1, será
executado o laço decremento, exibindo assim a sequência decrescente de todos os valores
de 19 a 1.
Estrutura de Decisão versus Estrutura de Repetição
Array
Array
Array Multidimensional.
É um array de 4 elementos, de 0 a 3
Para declarar um array podemos usar a seguinte sintaxe:
Significa que foi criado um array do tipo double com o nome resultados e do
com dez posições ou elementos.
Também é possível atribuir valores para o array no momento da declaração. Por exemplo:
double[] resultados = {100, 250, 320, 150, 110, 170, 130, 190, 180, 260};
Ou ainda:
vetor[0] = 7;
vetor[1] = 3;
vetor[2] = 5;
vetor[3] = 1;
for (int index = 0; index < 4; index++) // Condição - Para index menor que 4
MessageBox.Show(vetor[index].ToString(), "Array");
}
semana[0] = "Domingo";
semana[1] = "Segunda-Feira";
semana[2] = "Terça-Feira";
semana[3] = "Quarta-Feira";
semana[4] = "Quinta-Feira";
semana[5] = "Sexta-Feira";
semana[6] = "Sábado";
for (int index = 0; index < 7; index++) // Condição Para index menor que 7 (de 0 a 6),
// ele exibe uma msgcom o vetor na MessageBox, ou seja cada dia da semana.
MessageBox.Show(semana[index].ToString(), "Array");
}
Array Multidimensional
Um array multidimensional é uma estrutura homogênea de dados. Tal estrutura é formada por
um conjunto de valores com o mesmo tipo de dados, trabalhando com linhas e colunas.
Arrays multidimensionais também são chamadas de matrizes.
Veja como é a declaração da array multidimensional desse exemplo. Observe que [,] indica
duas posições – Linhas (2) e Colunas (4).
A localização da nota 9.0 do curso de Sistemas está no vetor bidimensional [0, 2], ou seja, na
linha [0] da coluna [2].
Na prática:
notas[0, 0] = 8.0;
notas[0, 1] = 7.5;
notas[0, 2] = 9.0;
notas[0, 3] = 8.5;
notas[1, 0] = 9.5;
notas[1, 1] = 8.5;
notas[1, 2] = 8.0;
notas[1, 3] = 9.0;