0% acharam este documento útil (0 voto)
4 visualizações21 páginas

Apostila de C# - Arrays 1. Conceito de Arrays Array Vários Elementos Do Mesmo Tipo Índice

O documento é uma apostila sobre arrays em C#, abordando conceitos, declaração, inicialização e acesso a arrays, além de exercícios práticos. Inclui exemplos de código para resolver problemas comuns, como encontrar números pares, calcular médias e ordenar dados. Também apresenta mini-projetos que aplicam o uso de arrays em situações reais, como cadastro de estudantes e controle de vendas.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações21 páginas

Apostila de C# - Arrays 1. Conceito de Arrays Array Vários Elementos Do Mesmo Tipo Índice

O documento é uma apostila sobre arrays em C#, abordando conceitos, declaração, inicialização e acesso a arrays, além de exercícios práticos. Inclui exemplos de código para resolver problemas comuns, como encontrar números pares, calcular médias e ordenar dados. Também apresenta mini-projetos que aplicam o uso de arrays em situações reais, como cadastro de estudantes e controle de vendas.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

📘 APOSTILA DE C# – ARRAYS

1. Conceito de Arrays

Um array é uma estrutura de dados que armazena vários elementos do mesmo tipo em
posições consecutivas de memória. Cada elemento tem um índice que começa em 0.

Exemplo:

int[] numeros = {10, 20, 30};


[Link](numeros[0]); // 10
[Link](numeros[1]); // 20
[Link](numeros[2]); // 30

Truque mental: imagina o array como uma gaveta com divisórias numeradas, onde cada
divisória guarda um valor.

2. Declaração de Arrays

2.1 Vetores (uma dimensão)

int[] idade = new int[2];


string[] nomes = new string[2];

2.2 Matrizes (várias dimensões)


int[,] matriz2D = new int[2,3]; // 2 linhas, 3 colunas
int[,,] matriz3D = new int[2,3,2]; // 3 dimensões

2.3 Arrays Irregulares (Jagged)


int[][] jagged = new int[2][];
jagged[0] = new int[4] {1,2,3,4};
jagged[1] = new int[2] {2,4};

Truque:

 Vetor → linha
 Matriz → tabela
 Jagged → caixa de arrays diferentes
3. Inicialização
int[] vetor = {3, 5, 7};
string[,] matriz = { {"C#", "Java"}, {"Framework", "[Link]"} };

4. Acesso por índice


int[] numeros = {1,2,3,4};
[Link](numeros[0]); // imprime 1

Lembre-se: o índice inicial é sempre 0.

5. Exercícios do Texto e Resoluções


Exercício 1 – Ordem inversa

Enunciado:

 Leia 5 números do teclado e armazene num array.


 Mostre todos os números na ordem inversa.

Solução:

using System;

class Program
{
static void Main()
{
int[] numeros = new int[5];

for (int i = 0; i < 5; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());
}

[Link]("\nNúmeros na ordem inversa:");


for (int i = 4; i >= 0; i--)
{
[Link](numeros[i]);
}
}
}

Dica de lógica: usar for reverso para imprimir do último para o primeiro.
Exercício 2 – Números pares

Enunciado:

 Leia 10 números e mostre apenas os pares.

Solução:

using System;

class Program
{
static void Main()
{
int[] numeros = new int[10];

for (int i = 0; i < 10; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());
}

[Link]("\nNúmeros pares:");
for (int i = 0; i < 10; i++)
{
if (numeros[i] % 2 == 0)
[Link](numeros[i]);
}
}
}

Truque: número par = n % 2 == 0.

Exercício 3 – Valores abaixo da média

Enunciado:

 Leia 20 números.
 Calcule a média.
 Mostre os valores abaixo da média.

Solução:

using System;

class Program
{
static void Main()
{
int[] valores = new int[20];
int soma = 0;

for (int i = 0; i < 20; i++)


{
[Link]("Digite o número {0}: ", i+1);
valores[i] = [Link]([Link]());
soma += valores[i];
}

double media = soma / 20.0;

[Link]("\nValores abaixo da média ({0}):", media);


for (int i = 0; i < 20; i++)
{
if (valores[i] < media)
[Link]("Índice {0} → Valor {1}", i, valores[i]);
}
}
}

Dicas:

 Média = soma ÷ quantidade


 Percorrer o array duas vezes: primeiro para somar, depois para comparar
 Usar double para não perder casas decimais

Exercício 4 – Sistema estudantes e docentes

Enunciado resumido:

 Estudantes: nome, teste1, teste2 → mostrar média, positivos nos 2 testes, contar médias
negativas.
 Docentes: nome, nº de estudantes → mostrar docentes com turmas > 50.
 Sistema encerra ao digitar 5.

Observação: este é um mini-projeto, combina arrays, loops e condições (while + if).

Exercício 5 – Multiplicar arrays

 Dois arrays do mesmo tamanho:


1. 0 a 100
2. múltiplos de 5
 Criar um terceiro array que seja produto elemento a elemento.
Exercício 6 – Ordenação

 Receber várias idades e mostrar em ordem crescente.

Exercício 7 – Estatísticas

 Valores entre 35 e 300.


 Mostrar média e quantidade de números ímpares.

6. Exercícios Propostos Extras


1. Lê 10 números → mostrar maior e menor.
2. Lê 15 números → contar pares e ímpares.
3. Lê 8 números → mostrar na ordem inversa.
4. Lê 10 números → mostrar apenas os não repetidos.
5. Lê 12 números → calcular média de posições pares e ímpares.

Truques gerais:

 % 2 → par ou ímpar
 for reverso → imprimir do fim para o início
 Média → soma ÷ quantidade
 Array como gaveta numerada → índice inicia em 0

Perfeito! Vamos continuar a apostila, agora com as soluções completas dos exercícios
propostos e desafios extras, comentadas e prontas para copy-paste.

📘 APOSTILA DE C# – ARRAYS
(CONTINUAÇÃO)
7. Exercícios Propostos – Soluções
🔹 Exercício 1 – Maior e menor valor

Enunciado:

 Lê 10 números e mostra o maior e o menor.

Solução:

using System;

class Program
{
static void Main()
{
int[] numeros = new int[10];
int maior, menor;

for (int i = 0; i < 10; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());
}

maior = menor = numeros[0]; // inicializar com o primeiro valor

for (int i = 1; i < 10; i++)


{
if (numeros[i] > maior) maior = numeros[i];
if (numeros[i] < menor) menor = numeros[i];
}

[Link]("\nMaior número: {0}", maior);


[Link]("Menor número: {0}", menor);
}
}

Dica: inicializar maior e menor com o primeiro elemento ajuda a não precisar de valores fixos.

🔹 Exercício 2 – Contar pares e ímpares


using System;

class Program
{
static void Main()
{
int[] numeros = new int[15];
int pares = 0, impares = 0;
for (int i = 0; i < 15; i++)
{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());

if (numeros[i] % 2 == 0) pares++;
else impares++;
}

[Link]("\nPares: {0}", pares);


[Link]("Ímpares: {0}", impares);
}
}

Truque: % 2 identifica par ou ímpar imediatamente.

🔹 Exercício 3 – Ordem inversa


using System;

class Program
{
static void Main()
{
int[] numeros = new int[8];

for (int i = 0; i < 8; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());
}

[Link]("\nNúmeros na ordem inversa:");


for (int i = 7; i >= 0; i--)
[Link](numeros[i]);
}
}

Truque: índice do último elemento = [Link] - 1.

🔹 Exercício 4 – Valores únicos


using System;
using [Link];

class Program
{
static void Main()
{
int[] numeros = new int[10];
List<int> unicos = new List<int>();

for (int i = 0; i < 10; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());
}

for (int i = 0; i < 10; i++)


{
bool repetido = false;
for (int j = 0; j < 10; j++)
{
if (i != j && numeros[i] == numeros[j])
{
repetido = true;
break;
}
}
if (!repetido) [Link](numeros[i]);
}

[Link]("\nValores únicos:");
foreach (int num in unicos)
[Link](num);
}
}

Truque: compara cada elemento com todos os outros; se não houver repetição, adiciona à lista
de únicos.

🔹 Exercício 5 – Média por posição par/ímpar


using System;

class Program
{
static void Main()
{
int[] numeros = new int[12];
int somaPar = 0, somaImpar = 0, contPar = 0, contImpar = 0;

for (int i = 0; i < 12; i++)


{
[Link]("Digite o número {0}: ", i+1);
numeros[i] = [Link]([Link]());

if (i % 2 == 0) { somaPar += numeros[i]; contPar++; }


else { somaImpar += numeros[i]; contImpar++; }
}
[Link]("\nMédia das posições pares: {0}", somaPar /
(double)contPar);
[Link]("Média das posições ímpares: {0}", somaImpar /
(double)contImpar);
}
}

Truque: posição par/ímpar → índice % 2.

🔹 Exercício 6 – Multiplicar arrays


using System;

class Program
{
static void Main()
{
int[] array1 = new int[21]; // 0 a 20
int[] array2 = new int[21]; // múltiplos de 5
int[] produto = new int[21];

for (int i = 0; i <= 20; i++)


{
array1[i] = i;
array2[i] = i * 5;
produto[i] = array1[i] * array2[i];
}

[Link]("Produtos dos arrays:");


for (int i = 0; i <= 20; i++)
[Link](produto[i]);
}
}

Truque: usar mesmo índice para multiplicar elementos correspondentes.

🔹 Exercício 7 – Ordenação de idades


using System;

class Program
{
static void Main()
{
int[] idades = new int[10];

for (int i = 0; i < 10; i++)


{
[Link]("Digite a idade {0}: ", i+1);
idades[i] = [Link]([Link]());
}

[Link](idades); // função pronta do C# para ordenar

[Link]("\nIdades em ordem crescente:");


foreach (int idade in idades)
[Link](idade);
}
}

Truque: C# tem [Link]() → simplifica muito ordenação.

🔹 Exercício 8 – Estatísticas
using System;

class Program
{
static void Main()
{
int[] valores = new int[10];
int soma = 0, impares = 0;

for (int i = 0; i < 10; i++)


{
[Link]("Digite um valor (35 a 300) {0}: ", i+1);
valores[i] = [Link]([Link]());
soma += valores[i];
if (valores[i] % 2 != 0) impares++;
}

double media = soma / 10.0;

[Link]("\nMédia dos valores: {0}", media);


[Link]("Quantidade de ímpares: {0}", impares);
}
}

Truque: aproveita o mesmo for para somar e contar ímpares, economizando linhas de código.

✅ Dicas gerais para arrays


 Índices começam em 0
 Vetor = 1 dimensão, Matriz = 2 ou mais dimensões, Jagged = array de arrays
 % 2 → par ou ímpar
 Média → soma ÷ quantidade
 for reverso → imprimir do fim para o início
 [Link]() → ordenação pronta

📘 APOSTILA DE C# – ARRAYS
AVANÇADOS E MINI-PROJETOS

1. Declaração de Arrays segundo o modelo da docente


Vetor (1 dimensão)
tipo[] nomeDoArray = new tipo[tamanho];
int[] idades = new int[10];
string[] nomes = new string[5];

Matriz (2 ou mais dimensões)


tipo[,] nomeDaMatriz = new tipo[linhas, colunas];
int[,] notas = new int[3,2]; // 3 linhas, 2 colunas
string[,] turmas = new string[2,3];

Inicialização de valores
int[] numeros = new int[3] {1,2,3};
string[,] linguagens = new string[2,2] { {"C#","Java"}, {"Python","[Link]"} };

Truque:

 Sempre que o número de elementos não é fixo, podemos usar int quant =
[Link]([Link]()); e depois int[] array = new int[quant];.

2. Mini-Projetos Inspirados em Situações Reais


🔹 Projeto 1 – Sistema de Estudantes

Situação: cadastro de estudantes com nome, teste1, teste2. Mostrar médias, positivos, negativos.

 Exemplo de declaração da docente:


string[] nomes = new string[quantidade];
int[] teste1 = new int[quantidade];
int[] teste2 = new int[quantidade];

Código base: já apresentado no item anterior.

🔹 Projeto 2 – Pescadores

Situação:

 Cada pescador captura peixes em kg.


 Mostrar total de peixe, média por pescador, quem ultrapassou 50 kg.

string[] pescadores = new string[5];


int[] kgPeixe = new int[5];

for (int i=0;i<5;i++){


[Link]("Nome do pescador: ");
pescadores[i] = [Link]();
[Link]("Kg de peixe capturado: ");
kgPeixe[i] = [Link]([Link]());
}

int total=0;
for(int i=0;i<5;i++){
total+=kgPeixe[i];
if(kgPeixe[i]>50)
[Link]("{0} ultrapassou 50 kg", pescadores[i]);
}
[Link]("Total de peixe: {0} kg", total);
[Link]("Média por pescador: {0} kg", total/5.0);

🔹 Projeto 3 – Comerciante com descontos

Situação:

 Guardar valores de vendas e aplicar 10% de desconto se valor > 100.


 Mostrar valores finais.

string[] produtos = new string[4];


double[] precos = new double[4];

for(int i=0;i<4;i++){
[Link]("Produto: "); produtos[i] = [Link]();
[Link]("Preço: "); precos[i] = [Link]([Link]());
}

for(int i=0;i<4;i++){
double final = precos[i];
if(precos[i]>100) final *=0.9;
[Link]("Produto: {0}, Preço final: {1:F2}", produtos[i],
final);
}

🔹 Projeto 4 – Parque de Carros

Situação:

 Cada carro paga um valor por hora.


 Calcular total arrecadado e valor médio.

string[] carros = new string[6];


int[] horas = new int[6];
double[] tarifa = new double[6];

for(int i=0;i<6;i++){
[Link]("Placa do carro: "); carros[i] = [Link]();
[Link]("Horas estacionado: "); horas[i] =
[Link]([Link]());
tarifa[i] = horas[i]*5; // R$5 por hora
}

double total=0;
for(int i=0;i<6;i++){
total += tarifa[i];
[Link]("Carro {0} → valor a pagar: {1}", carros[i], tarifa[i]);
}
[Link]("Total arrecadado: {0}", total);
[Link]("Média por carro: {0:F2}", total/6.0);

🔹 Projeto 5 – Banco

Situação:

 Guardar saldo de clientes.


 Identificar clientes com saldo negativo e calcular saldo total.

string[] clientes = new string[5];


double[] saldos = new double[5];

for(int i=0;i<5;i++){
[Link]("Cliente: "); clientes[i]=[Link]();
[Link]("Saldo: "); saldos[i]=[Link]([Link]());
}

double total=0;
for(int i=0;i<5;i++){
total += saldos[i];
if(saldos[i]<0)
[Link]("{0} possui saldo negativo: {1}", clientes[i],
saldos[i]);
}
[Link]("Saldo total do banco: {0}", total);

🔹 Projeto 6 – Hotel

Situação:

 Cada quarto tem ocupação em dias.


 Calcular total de diárias e faturamento.

string[] quartos = new string[4];


int[] dias = new int[4];
double precoDiaria = 120;

for(int i=0;i<4;i++){
[Link]("Número do quarto: "); quartos[i]=[Link]();
[Link]("Dias ocupados: "); dias[i]=[Link]([Link]());
}

double total=0;
for(int i=0;i<4;i++){
double faturamento = dias[i]*precoDiaria;
total += faturamento;
[Link]("Quarto {0} → Faturamento: {1}", quartos[i],
faturamento);
}
[Link]("Faturamento total do hotel: {0}", total);

3. Exercícios Propostos Extras (Para prática)


1. Criar um sistema de biblioteca: livros, autor, quantidade disponível.
2. Cadastro de funcionários: nome, salário, departamento → mostrar média salarial por
departamento.
3. Sistema de supermercado: produtos, preço unitário, quantidade → calcular total e
aplicar desconto para compras acima de 200.
4. Parque de estacionamento com tarifa variável: moto, carro, caminhão → calcular
arrecadação total e média.
5. Banco com clientes e limites de crédito → listar clientes que ultrapassaram o limite.

Truques gerais:

 Vetor para quantidade fixa de dados, lista para quantidade variável.


 Matrizes se precisar organizar em linhas e colunas (ex.: turmas, tabelas de preços).
 Sempre usar for para percorrer arrays e calcular totais, médias ou aplicar condições.
 Usar if para aplicar descontos, limites, ou validar condições (positivos, negativos, maior
que X).

Perfeito! Vamos organizar todos esses exercícios do teu texto com soluções completas em C#,
usando a forma de declaração da docente, arrays, validações e comentários, prontos para copy-
paste.

📘 APOSTILA DE C# – EXERCÍCIOS
RESOLVIDOS

Exercício 1 – Nomes e Idades


Enunciado:

 Armazenar vários nomes no array N e idades correspondentes no array I.


 Validar a idade (ex.: entre 0 e 120).
 Mostrar:
a) Todos os nomes com suas idades.
b) Nomes com idade abaixo de 20.

Solução:

using System;

class Program
{
static void Main()
{
int quant;
[Link]("Quantas pessoas deseja cadastrar? ");
quant = [Link]([Link]());

string[] N = new string[quant];


int[] I = new int[quant];

for(int i = 0; i < quant; i++)


{
[Link]("Nome: ");
N[i] = [Link]();

do
{
[Link]("Idade: ");
I[i] = [Link]([Link]());
if(I[i]<0 || I[i]>120) [Link]("Idade inválida,
tente novamente.");
} while(I[i]<0 || I[i]>120);
}

[Link]("\n--- Todos os nomes e idades ---");


for(int i=0;i<quant;i++)
[Link]("{0} → {1} anos", N[i], I[i]);

[Link]("\n--- Idades abaixo de 20 ---");


for(int i=0;i<quant;i++)
if(I[i]<20)
[Link]("{0} → {1} anos", N[i], I[i]);
}
}

Exercício 2 – Soma de arrays e ímpares


Enunciado:

 Receber dois arrays M e N do mesmo tamanho, valores entre 1 e 100.


 Mostrar:
a) Um terceiro array S que é a soma de M e N.
b) Quantos números ímpares existem no array N.

Solução:

using System;

class Program
{
static void Main()
{
int tamanho;
[Link]("Digite o tamanho dos arrays: ");
tamanho = [Link]([Link]());

int[] M = new int[tamanho];


int[] N = new int[tamanho];
int[] S = new int[tamanho];

for(int i=0;i<tamanho;i++)
{
do {
[Link]("M[{0}] (1-100): ", i); M[i] =
[Link]([Link]());
} while(M[i]<1 || M[i]>100);

do {
[Link]("N[{0}] (1-100): ", i); N[i] =
[Link]([Link]());
} while(N[i]<1 || N[i]>100);

S[i] = M[i]+N[i];
}

[Link]("\nArray S (soma de M e N):");


for(int i=0;i<tamanho;i++)
[Link](S[i]);

int impares = 0;
for(int i=0;i<tamanho;i++)
if(N[i]%2 !=0) impares++;

[Link]("Quantidade de números ímpares no array N: {0}",


impares);
}
}

Exercício 3 – Valores e negativos


Enunciado:

 Armazenar N valores.
 Mostrar: quantidade de números negativos e elementos das primeiras 3 posições.

Solução:

using System;

class Program
{
static void Main()
{
int tamanho;
[Link]("Digite a quantidade de valores: ");
tamanho = [Link]([Link]());

int[] valores = new int[tamanho];


int negativos = 0;

for(int i=0;i<tamanho;i++)
{
[Link]("Valor[{0}]: ", i);
valores[i] = [Link]([Link]());
if(valores[i]<0) negativos++;
}

[Link]("\nQuantidade de números negativos: {0}",


negativos);

[Link]("Elementos das primeiras 3 posições:");


for(int i=0;i<[Link](3,tamanho);i++)
[Link]("Posição {0} → {1}", i, valores[i]);
}
}

Exercício 4 – Sistema de Estudantes e Docentes


Enunciado resumido:

 Estudantes: nome, teste1, teste2 (1 a 20). Mostrar média, positivos nos 2 testes, contagem
de médias negativas.
 Docentes: nome, nº de estudantes. Mostrar docentes com turmas > 50.
 Sistema termina ao digitar 5.

Solução: (usando arrays como a docente)

using System;

class Program
{
static void Main()
{
int opcao = 0;
string[] nomesEst = new string[100];
int[] teste1 = new int[100];
int[] teste2 = new int[100];
int contEst = 0;

string[] nomesDoc = new string[50];


int[] qtdTurma = new int[50];
int contDoc = 0;

while(opcao != 5)
{
[Link]("\nMenu: 1-Estudante 2-Docente 3-Relatório Est
4-Relatório Doc 5-Sair");
opcao = [Link]([Link]());

switch(opcao)
{
case 1:
[Link]("Nome do estudante: ");
nomesEst[contEst] = [Link]();
[Link]("Teste1: "); teste1[contEst] =
[Link]([Link]());
[Link]("Teste2: "); teste2[contEst] =
[Link]([Link]());
contEst++;
break;
case 2:
[Link]("Nome do docente: ");
nomesDoc[contDoc] = [Link]();
[Link]("Quantidade de estudantes: ");
qtdTurma[contDoc] = [Link]([Link]());
contDoc++;
break;
case 3:
[Link]("\n--- Estudantes ---");
int neg = 0;
for(int i=0;i<contEst;i++)
{
double media = (teste1[i]+teste2[i])/2.0;
[Link]("{0} → Média: {1}", nomesEst[i],
media);
if(teste1[i]>0 && teste2[i]>0)
[Link]("{0} teve nota positiva nos 2
testes", nomesEst[i]);
if(media<10) neg++;
}
[Link]("Quantidade com média negativa: {0}",
neg);
break;
case 4:
[Link]("\n--- Docentes ---");
for(int i=0;i<contDoc;i++)
if(qtdTurma[i]>50) [Link]("Docente com
turma > 50: {0}", nomesDoc[i]);
break;
case 5:
[Link]("Encerrando...");
break;
}
}
}
}

Exercício 5 – Multiplicação de Arrays


using System;

class Program
{
static void Main()
{
int[] A = new int[21]; // 0 a 20
int[] B = new int[21]; // múltiplos de 5
int[] C = new int[21]; // produto

for(int i=0;i<=20;i++)
{
A[i]=i;
B[i]=i*5;
C[i]=A[i]*B[i];
}

[Link]("Produto de arrays:");
for(int i=0;i<=20;i++)
[Link](C[i]);
}
}

Exercício 6 – Idades em ordem crescente


using System;

class Program
{
static void Main()
{
int[] idades = new int[10];
for(int i=0;i<10;i++)
{
[Link]("Idade[{0}]: ", i);
idades[i] = [Link]([Link]());
}

[Link](idades);

[Link]("\nIdades em ordem crescente:");


foreach(int idade in idades)
[Link](idade);
}
}

Exercício 7 – Valores entre 35 e 300


using System;

class Program
{
static void Main()
{
int[] valores = new int[10];
int soma=0, impares=0;

for(int i=0;i<10;i++)
{
do
{
[Link]("Valor[{0}] (35-300): ", i);
valores[i] = [Link]([Link]());
} while(valores[i]<35 || valores[i]>300);

soma += valores[i];
if(valores[i]%2 != 0) impares++;
}

[Link]("Média: {0}", soma/10.0);


[Link]("Quantidade de ímpares: {0}", impares);
}
}

Você também pode gostar