Buscar

Aula00_Nivelamento

Prévia do material em texto

Introdução à Linguagem C#
Histórico
Operadores
Professora: Juliana Santiago Teixeira
C# - Definição
● É uma linguagem de programação visual dirigida por eventos e 
totalmente orientada a objetos, na qual os programas são criados 
usando-se um IDE (Integrated Development Environment).
● A linguagem C# foi criada pela Microsoft junto com a arquitetura .NET. 
Embora existam várias outras linguagens que suportam essa 
tecnologia (como VB.NET, C++, JAVA), C# é considerada a linguagem 
símbolo do .NET, devido as funcionalidades da plataforma .NET terem 
sido desenvolvidas em C#.
C# - Definição
● A linguagem C# (Sharp) foi influenciada das linguagens C++ e Java 
que ganhou popularidade na comunidade de informática quando a 
Microsoft decidiu incluí-la no pacote Visual Studio.
● Utiliza muitas regras de programação para reduzir a possibilidade de 
erros.
● C# também tem como objetivo permitir o desenvolvimento de 
qualquer tipo de aplicação: Web service, aplicação Windows 
convencional, aplicações para serem executadas num palmtop ou 
handheld, aplicações para Internet etc. 
C# - Caracteristicas
● Simples, fácil e poderosa;
● Fortemente tipada;
● Case Sensitive
○ diferencia maiúsculas de minúsculas
● Trabalha em ambiente gerenciado 
○ O programador não precisa se preocupar, 
por exemplo, com liberação e alocação de 
memória isso é feito de forma automática. 
Linguagem
Linguagem Sintaxe Semâtica
Código Exemplo
Tipos primitivos
Tipos primitivos
Exemplos:
char ‘1’, ‘a’, ‘$’
int -56, 0, 1, 1234
float -23.5, 0.0, 1.0, 3.1415, 1234.0
double Idem float
void Sem valor
Identificadores
• Identificadores definem os nomes de variáveis, funções e vários 
outros objetos definidos pelo usuário. 
 Identificadores podem variar de um a vários caracteres, o primeiro 
caractere deve ser uma letra ou um sublinhado e os caracteres 
seguintes devem ser letras, números ou sublinhados.
• Letras maiúsculas e minúsculas são tratadas diferentemente.
• Um identificador não pode ser igual a uma palavra-chave de C#.
Identificadores
Identificadores válidos
• Nota, nota, idade, x1, media, fgts, nome, salario, nome_aluno
Identificadores inválidos
• 5X, e(13), A:B, Nota/2, !x, nome aluno, salário
Variáveis
• Uma variável é uma posição de memória, com um nome, que é 
usada para guardar um valor que pode ser modificado pelo programa
• Uma variável pode ter seu valor alterado durante a execução do 
algoritmo
• Todas as variáveis em C# devem ser declaradas antes de serem 
usadas
Variáveis
• A forma geral de uma declaração é:
tipo lista_de_variáveis;
onde tipo é um tipo de dado válido em C#.
lista_de_variáveis pode consistir em um ou mais nomes de 
identificadores separados por vírgulas.
Variáveis
Exemplos:
char letra, nome[50];
int idade, x, y;
float peso, altura, media;
Inicialização de variáveis
• Você pode dar à maioria das variáveis em C# um valor, no mesmo 
momento em que elas são declaradas 
• A forma geral de uma inicialização é: 
tipo nome_da_variável = valor; 
Exemplo:
int x = 0;
Constantes
• Constantes referem-se a valores fixos que o programa não pode 
alterar
• Constantes em C# podem ser de qualquer um dos cinco tipos de 
dados básicos
• A forma geral de uma declaração de constante é: 
const tipo nome_da_constante = valor;
Exemplo:
const float pi = 3.1415; 
Operador de atribuição
• Em C#, você pode usar o operador de atribuição dentro de qualquer 
expressão válida de C#. 
• A forma geral do comando de atribuição é: 
nome_da_variável = expressão; 
onde expressão pode ser tão simples como uma única constante ou tão 
complexa quanto você necessite.
Operador de atribuição
Exemplo:
int a, b, c;
a = 5; // variável recebe um valor constante
b = a; // variável recebe uma variável
c = a + b – 2; // variável recebe uma expressão aritmética
Atribuições múltiplas
• C# permite a atribuição do mesmo valor a muitas variáveis usando 
atribuições múltiplas em um único comando: 
x = y = z = 0;
Operadores aritméticos
Operador Ação
- Subtração, também menos unário 
+ Adição
* Multiplicação
/ Divisão
% Resto da divisão inteira
++ Incremento
-- Decremento
Operador de atribuição
Exemplo:
int a, b, c;
a = 5; 
b = a;
c = a + b – 2; 
a++; // a = a + 1;
b--; // b = b – 1;
c = a + b;
Operadores aritméticos
• A precedência dos operadores aritméticos é a seguinte: 
Mais alta Parênteses e funções
++ --
- (menos unário) 
* / % 
Mais baixa + -
Expressões aritméticas
Linearização de Expressões
• Para escrever programas todas as expressões aritméticas devem ser 
linearizadas, ou seja, colocadas em linhas.
• É importante também ressalvar o uso dos operadores correspondentes da 
aritmética tradicional para a computacional.
Expressões aritméticas
Linearização de Expressões
  


  135
3
2
(2/3+(5-3))+1=
Expressão matemática tradicional Expressão computacional
Operadores relacionais
Operador Ação Exemplos
== Igual a 3 == 3, x == y
!= Diferente de 5 != 4, x != y
> Maior que 3 > 6, x > y
>= Maior ou igual a 5>= 3, x >= y
< Menor que 3 < 5, x < y
<= Menor ou igual a 8 <= 9, x <= y
Operadores lógicos
Operador Ação
! Não 
&& E
|| Ou
Operadores lógicos
• A precedência dos operadores lógicos é a seguinte: 
Mais alta !
&& 
Mais baixa ||
Entrada e saída de Dados
Professora: Juliana Santiago Teixeira
ENTRADA E SAÍDA DE DADOS
Programa
Entrada 1
Entrada 2
...
Entrada n
Saída 1
Saída 2
...
Saída m
FUNÇÕES DE ENTRADA E SAÍDA DE DADOS
Programa
Número 1
Número 2
Soma
Classe Console
• Representa os fluxos de entrada, saída e erro padrão para aplicativos
de console. Essa classe não pode ser herdada.
Saída de Dados via Classe Console
● Método Console.Write
○ Grava a representação de texto do valor especificado ou valores
para o fluxo de saída padrão.
Saída de Dados via Classe Console
● Método Console.WriteLine
○ Grava a representação de texto do valor especificado ou valores
para o fluxo de saída padrão e avança o cursor para a próxima
linha.
Entrada de Dados via Classe Console
● Método Console.ReadLine
○ Lê a próxima linha de caracteres do fluxo de entrada padrão.
Conversão de Tipos
● Método double.Parse (String)
○ Converte a representação da cadeia de caracteres de um número
no equivalente do número de ponto flutuante de precisão dupla.
Estrutura Sequencial
Professora: Juliana Santiago Teixeira
ESTRUTURA SEQUENCIAL
É uma estrutura de controle básica, em que os comandos
em um programa (função) são executados um após o outro
(na ordem em que são especificados).
A estrutura sequencial mais básica consiste de:
• Entrada de dados
• Processamento
• Saída de dados
ESTRUTURA CONDICIONAL
Professora: Juliana Santiago Teixeira
Até o momento todas as instruções do programa 
são executadas (estrutura sequencial).
Algumas instruções dependem de condições.
Nem sempre todas as instruções são executadas.
Necessidade de tomada de decisão pelos 
programas.
MOTIVAÇÃO
A estrutura condicional permite determinar qual é a 
ação a ser tomada com base no resultado de um 
teste lógico.
A estrutura condicional pode ser formada por uma 
alternativa simples ou composta.
ESTRUTURA CONDICIONAL
Se o valor da condição for VERDADEIRO, os 
comandos que estão dentro do bloco if são 
executados.
Caso contrário, o bloco if será ignorado.
ESTRUTURA CONDICIONAL SIMPLES
if (condição)
{
C1;
C2;
...
Cn;
}
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
if (condição)
{
C1;
C2;
...
Cn;
}
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
FALSO
Exemplo: Elabore um algoritmo para ler dois números 
reais, se o valor de segundo número informado for diferente 
de zero, calcular e imprimir o resultado da divisão.
ESTRUTURA CONDICIONAL SIMPLES
ESTRUTURA CONDICIONAL COMPOSTA
Se o valor da condição for VERDADEIRO os comandosque 
estão no bloco do if serão executados.
Se o valor da condição for FALSO, os comandos que estão 
no bloco do else serão executados.
if (condição)
{
α1;
α2;
...
αn;
}
else
{
β1;
β2;
...
βm;
}
onde condição é qualquer 
expressão cujo resultado 
seja verdadeiro ou falso
αis são comandos, 1 ≤ i ≤ n
βjs são comandos, 1 ≤ j ≤ m
VERDADEIRO
if (condição)
{
α1;
α2;
...
αn;
}
else
{
β1;
β2;
...
βm;
}
onde condição é qualquer 
expressão cujo resultado 
seja verdadeiro ou falso
αis são comandos, 1 ≤ i ≤ n
βjs são comandos, 1 ≤ j ≤ m
VERDADEIRO
FALSO
ESTRUTURA CONDICIONAL ANINHADA
if (cond1)
cmd1;
else if (cond2)
cmd2;
else if (cond3)
cmd3;
...
if (condn)
cmdn;
else cmdn+1;
ESTRUTURA DE MÚLTIPLA ESCOLHA
switch (x)
{
case v1: cmd1;
cmd2;
break;
case v2: cmd3;
break;
...
case vn: cmdm-1;
break;
default: cmdm;
}
onde x é qualquer expressão do tipo char ou int
vis são constantes inteiras, 1 ≤ i ≤ n
cmdjs são comandos, 1 ≤ j ≤ m
ESTRUTURAS DE REPETIÇÃO
Professora: Juliana Santiago Teixeira
A estrutura de repetição permite que um conjunto de 
instruções seja executado mais de uma vez.
É útil sempre que uma ou mais instruções (comandos) 
devem ser repetidas enquanto uma certa condição estiver 
sendo satisfeita.
Também são conhecidos como laços ou loops ou 
estruturas de iteração.
MOTIVAÇÃO
Três tipos de estruturas de repetição:
 while
 do .. while
 for(...)
ESTRUTURAS DE REPETIÇÃO
Estrutura de repetição com teste lógico no início.
Os comandos que estão dentro dessa estrutura de repetição 
serão executados enquanto o valor da condição for 
verdadeiro
LAÇO while
while (condição)
{
C1;
C2;
...
Cn;
}
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
while (condição)
{
C1;
C2;
...
Cn;
}
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
FALSO
Estrutura de repetição com teste lógico no final.
Isso significa que um laço do .. while sempre será 
executado ao menos uma vez.
O laço do .. while repete até que a condição se torne falsa.
LAÇO do .. while
do
{
C1;
C2;
...
Cn;
} while (condição);
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
do
{
C1;
C2;
...
Cn;
} while (condição);
VERDADEIRO
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
do
{
C1;
C2;
...
Cn;
} while (condição);
onde condição é qualquer expressão cujo 
resultado seja verdadeiro ou falso
Cis são comandos, 1 ≤ i ≤ n
FALSO
Estrutura de repetição que deve ser utilizada quando 
sabemos o número de vezes que determinado conjunto de 
instruções será executado
LAÇO for
for (inicialização; condição; incremento)
{
C1;
C2;
...
Cn;
}
onde inicialização é valor inicial que é atribuído à variável de controle do laço
condição é qualquer expressão cujo resultado seja verdadeiro ou falso
incremento é a forma como a variável de controle do laço será atualizada em 
cada iteração
Cis são comandos, 1 ≤ i ≤ n
VETORES E MATRIZES
Professora: Juliana Santiago Teixeira
Vetor é um conjunto de variáveis do mesmo tipo.
O compilador aloca um espaço contínuo na memória para 
armazenar os elementos do vetor.
VETOR
Exemplos:
Conjunto de inteiros:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Conjunto de strings:
[“José”, “Maria”, “João”, “Ana”, “Ester”]
Vetor
A declaração é dada assim:
tipo[] nome;
DECLARAÇÃO
Exemplos:
int []idades = new int[6]; // vetor de tamanho 6 do tipo int 
DECLARAÇÃO
8
0
2
1
5
2
7
3
1
4 5
6idades
Exemplos:
float []pesos = new float[10]; // vetor de tamanho 10 do tipo float
DECLARAÇÃO
55.6
0
62.8
1
47.1
2
73.9
3
19.8
4 5
62.3pesos 19.9
6 7
89.1 48.0
8 9
25.6
Os elementos do vetor são acessados de maneira indexada.
Em C#, o vetor sempre é indexado de 0 a n-1 onde n é o tamanho do vetor.
MANIPULAÇÃO
0 1 2 3 4 5
vetor
Índices
Os elementos do vetor são acessados de maneira indexada.
Em C#, o vetor sempre é indexado de 0 a n-1 onde n é o tamanho do vetor.
MANIPULAÇÃO
0 1 2 3 4 5
vetor
Índices
vetor[4]
Matematicamente:
x =
3x3
Usada em álgebra linear, resolução de sistemas de 
equações, logística, otimização, computação gráfica etc.
MATRIZ
2. 4 8
1 3 7
1 5 11
Em C# podemos ter as seguintes estruturas de matriz:
 1 dimensão (Vetor/Arranjo);
 2 dimensões (tamanhos iguais ou não);
 Multidimensionais 
Cada dimensão possui seu próprio índice e tamanho. 
DEFINIÇÃO
Exemplos:
DEFINIÇÃO
1
0
2
1
3
2
4
3
5
4
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
0
1
2
3
4
Matriz bidimensional
DEFINIÇÃO
1
0
2
1
3
2
4
3
5 6 7 8
9 10 11 12
13 14 15 16
0
1
2
3
17
0
18
1
19
2
20
3
21 22 23 24
25 26 27 28
29 30 31 32
0
1
2
3
0 1
Matriz tridimensional
A declaração de uma matriz é da seguinte forma:
tipo [, , ... , ]nome_variavel = new tipo[d1, d2, ... ,dn];
onde:
tipo é o tipo dos dados que serão armazenados na matriz;
nome_variavel é o nome dado à variável do tipo matriz;
d1 representa o tamanho da 1ª dimensão da matriz;
d2 representa o tamanho da 2ª dimensão da matriz;
dN representa a n-ésima dimensão da matriz.
DECLARAÇÃO
Exemplos:
double[ , ] X = new double[2,6];
char[ , ] MAT = new char[4,3]; 
Assim como nos vetores, todos os índices das matrizes 
iniciam em zero
DECLARAÇÃO
0 1 2
0
1
2
3
0 1 2 3
0
1
4 5
Para acessar um elemento em uma matriz precisamos
especificar os índices do elemento.
Em uma matriz bidimensional especificamos primeiro o 
índice da linha seguido do índice da coluna.
MANIPULAÇÃO
MANIPULAÇÃO
0 1 2 3
0
1
2
3
Índices de linha
Índices de coluna
mat[2,3]
Atribuição de valores:
X[1, 4] = 5; // grava o valor 5 na 2ª linha, 5ª coluna
MAT[3, 2] = ‘D’; // grava o caractere D na 4a linha, 3ª coluna
MANIPULAÇÃO
Podemos preencher uma matriz usando o laço for:
int matrizExemplo = new int[3,2];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 2; j++)
matrizExemplo[i,j] = int.Parse(Console.ReadLine());
MANIPULAÇÃO
Acesso aos elementos:
numero = matriz[3,2];
MANIPULAÇÃO
Podemos criar laços cujos índices de controle nos permitem 
acessar os elementos da matriz:
for(int i = 0; i < 3; i++){
for(int j = 0; j < 2; j++)
Console.Write(matrizExemplo[i,j];
Console.WriteLine();
}
MANIPULAÇÃO
Funções/Procedimentos
Professora: Juliana Santiago Teixeira
O software deve ser dividido em partes bem definidas e, em 
alguns casos, reutilizáveis.
Essa organização recebe o nome de modularização.
DEFINIÇÃO
Objetivos:
 Evitar repetição de código → reutilização
 Estruturar o código
 Aumentar a legibilidade → código ficar menor e mais 
organizado
DEFINIÇÃO
Tipos de módulos:
 Procedimento: não retorna valor
 Função (nome mais usado): retorna valor
DEFINIÇÃO
O programador pode criar quantas funções/procedimentos 
quiser.
Às vezes, as funções precisam receber valores externos 
(parâmetros) e devolver algum valor produzido (retorno)
Os parâmetros são representados por uma lista de variáveis 
colocadas dentro de parênteses, logo após o nome da 
função/procedimento.
DEFINIÇÃO
Uma função/procedimento na linguagem C# tem a seguinte 
forma geral:
tipo_de_retorno nome_da_função (declaração_de_parâmetros)
{
// declaração de variáveis
c1;
c2;
...
cn;
}
DEFINIÇÃO
onde:
 tipo_de_retorno: é o tipo de valor que a função vai retornar
 declaração_de_parâmetros: é uma lista com a seguinte forma 
geral: tipo nome1, tipo nome2, ...., tipo nomen
 Cis são comandos, 1 ≤ i ≤ m
DEFINIÇÃO
IMPORTANTE!
 É na declaração de parâmetros que informamos ao compilador 
quais serão as entradas da função/procedimento, assim como 
informamos a saída no tipo_de_retorno.
 O tipo de cada parâmetro deve ser especificado.
DEFINIÇÃO
O tipo de uma função é definido pelotipo de valor que ela 
retorna por meio do comando return. 
Uma função é dita do tipo int quando retorna um valor do 
tipo int.
Os tipos de funções de C# são os mesmos tipos de 
variáveis, exceto quando a função não retorna nada.
Uma função que não retorna valor é do tipo void.
TIPO DA FUNÇÃO
O comando return termina a execução da função e retorna o 
controle para a instrução seguinte do código de chamada.
A sintaxe de uma instrução return tem uma das três formas 
seguintes:
return;
return expressao;
return (expressao); 
COMANDO return
IMPORTANTE!
 O comando return desacompanhado de expressão somente 
termina a função e indica uma função do tipo void.
 Nessa situação, a instrução return não é obrigatória.
 Enquanto vários valores podem ser passados para uma função, 
não é permitido o retorno de mais de um valor por meio do 
comando return.
COMANDO return
int funcao1(){ int funcao2(){
return 10; int x = 0;
} return x;
}
EXEMPLOS
É feita através de uma referência ao nome da função em 
qualquer parte do código do programa.
Ao ativar uma função, a sua execução é iniciada; após o 
término da função, a execução do programa continua a 
partir da instrução seguinte àquela que ativou a função.
ATIVAÇÃO
Comando1;
Comando2;
Função1();
Comando3;
…
/* Função1 é definida em outro local, no mesmo 
arquivo ou em outro arquivo */
Função1(){
...
}
ATIVAÇÃO
Função de um parâmetro:
 Formalizar a comunicação entre funções.
Parâmetro real:
 É o parâmetro passado para uma função qualquer de um 
programa, no momento de sua ativação.
Parâmetro formal:
 É o parâmetro definido no cabeçalho de uma função, 
funcionando como uma variável local desta função.
PARÂMETRO
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
Parâmetro formal
Parâmetro real
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
Console.WriteLine(“Resultado: “ + n3);
}
PARÂMETRO
n1 n2 n3
3 5
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
n1 n2 n3
3 5
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
n1 n2 n3
3 5
a b 
3 5
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
n1 n2 n3
3 5
a b 
3 5
8
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
n1 n2 n3
3 5
a b 
3 5
8
int soma(int a, int b){
return a + b;
}
main(){
int n1 = 3, n2 = 5, n3;
n3 = soma(n1, n2);
printf(“Resultado: %d\n”, n3);
}
PARÂMETRO
n1 n2 n3
3 5
a b 
3 5
8
Passagem de parâmetros por valor:
 Sintaxe: a declaração do parâmetro formal vista até agora
 Funcionamento: no momento da ativação da função, os 
parâmetros formais recebem os valores dos parâmetros reais 
automaticamente
 Consequência: alterações nos valores dos parâmetros formais 
dentro da função não alteram os valores dos parâmetros reais da 
ativação correspondente
 Utilização: recomenda-se o uso da passagem de parâmetros por 
valor quando os parâmetros guardam apenas os dados de 
entrada da função
PASSAGEM DE PARÂMETRO
Passagem de parâmetros por referência:
 Sintaxe: a declaração do parâmetro formal deve ter a palavra reservada 
ref antes do nome do parâmetro. 
 Funcionamento: no momento da ativação da função, os parâmetros 
formais recebem os endereços de memória dos parâmetros reais 
automaticamente, permitindo, assim, trabalhar com o próprio parâmetro 
real dentro da função de maneira indireta
 Consequência: alterações nos valores dos parâmetros formais dentro da 
função alteram os valores dos parâmetros reais da ativação 
correspondente
 Utilização: deve-se utilizar a passagem de parâmetros por referência 
quando os parâmetros funcionam como dados de saída da função
PASSAGEM DE PARÂMETRO
O nome de uma matriz é o endereço de memória do seu 
primeiro elemento.
Matrizes são sempre passadas por referência.
COMO PASSAR MATRIZES COMO PARÂMETRO?
Escopo de um objeto:
 É o local aonde um objeto (variável, constante ou tipo) existe.
ESCOPO
Objeto local:
 É o objeto declarado dentro de uma função qualquer, existindo apenas dentro desta 
função.
 É criado e alocado no momento da ativação da função, sendo automaticamente 
desalocado no momento do término da execução da função.
Objeto global:
 É o objeto declarado no início de um programa, existindo para todo o mesmo, 
inclusive dentro das funções.
 É criado e alocado no início da execução do programa, sendo desalocado apenas 
no término da execução do programa
ESCOPO
IMPORTANTE:
 Evite ao máximo o uso de variáveis globais. Elas 
ocupam memória o tempo todo (as locais só ocupam 
memória enquanto estão sendo usadas) e tornam o 
programa mais difícil de ser entendido.
 Trabalhe com parâmetros dentro de funções.
ESCOPO

Mais conteúdos dessa disciplina