Algoritmo e Estrutura de Dado II2
Algoritmo e Estrutura de Dado II2
Algoritmo e Estrutura de Dado II2
Índice
INTRODUÇÃO
LINGUAGEM DE PROGRAMAÇÃO
ALGORITMO:
PROGRAMAS
Linguagem de máquina
Linguagem de alto nível (uso de compilador)
TIPOS BÁSICOS EM C#
-128 a 127.
short Corresponde a 2 bytes (16 bits), podendo -10000, 0, 10, 128 20000
representar valores numéricos inteiros
de -32768 a 32767
-9223372036854775808 a
9223372036854775807
float Tal como o tipo int, este utiliza 4 bytes da -10.0, 0.1, 0.22, 3.1415926,
memória, porém os dados são 2344.123,
armazenados de maneira que se possa
representar de números reais, portanto
com casas decimais. Um float permite
números reais com até 7 digitos e é
capaz de representar valores com
expoentes de até 10-38 ou 1038.
double Da mesma forma que o float, neste tipo -1.0, 0.0, 3.1415926535897
os bytes são formatados de maneira a
suportarem números reais, porém aqui
utilizam-se 8 bytes, podendo-se
representar números com até 15 dígitos
e é capaz de representar valores com
expoentes de até 10-308 ou 10308.
char letra;
letra = ´A´
String mensagem;
Continuação... Aula nº 03
Os tipos de dados têm um valor máximo a suportar e mínimo a receber que
chamamos de funções para valores mínimos e máximos:
int.MinValue
int.MaxValue
sbyte.MaxValue
long.MaxValue
decimal.MaxValue
etc...
Errado: Correto:
int 5minutos; int _5minutos;
int salário; int salario;
int salario do funcionário; int salarioDoFuncionario;
CONVENÇÕES
SAÍDA DE DADOS EM C#
Saída de dados é quando o programa informa dados para usuário, no caso será
imprimir dado na tela do computador através do terminal.
Comandos
Console.WriteLine(valor);
Console.Write(valor);
Placehold
Interpolação
Concatenação de String
EXERCÍCIO DE FIXAÇÃO
Continuação... Aula nº 04
Entrada de dados
CONVERSÕES IMPLITA E CASTING
Conversão implícita entre tipos
É quando um conteúdo do certo tipo pode ser naturalmente atribuído para uma
variável de outro tipo.
float x = 4.5f;
double y = x;
Console.Writeline(y);
EXERCÍCIO DE FIXAÇÃO
Fazer um programa para executar a Saída esperada (número reais com duas casas
seguinte interação com usuário, lendo decimais):
os valores destacados em vermelho, e
depois mostrar os dados na tela
Alex Green
Entre com seu nome completo:
3
Alex Green
500.50
Quantos quartos tem na sua casa?
Green
3
21
Entre com o preço de um produto:
1.73
500.50
Entre seu último nome, idade e altura
(mesa linha):
Green 21. 1. 73
Continuação... Aula nº 05
OPERADORES
Comparativos
Aritméticos: Pesquisa.
Atribuição
Expressão Comparativas
Expressão Lógica
Precedência:
NÃO
Ter uma média a baixo de 14 valores.
Continuação... Aula nº 06
ESTRUTURA CONDICIONAIS
Simples
Composta
Encadeada/aninhada
Switch –case: Pesquisa
Conceito
Estrutura condicional:
É uma estrutura de controle que permite definir que
um certo bloco de comandos somente será executado
dependendo de uma condição.
Fazer um programa para ler as duas notas que um estudante do ISPCAN obteve no
primeiro e segundo semestre de uma disciplina anual. Em seguida, mostrar a nota
final que o estudante obteve no ano juntamente com um texto explicativo. Caso a
nota final do estudante seja inferior a 10.00, mostra a mensagem “REPROVADO”,
conforme exemplos. Todos os valores devem ter uma casa decimal.
Entrada: Saída:
Entrada: Saída:
EXERCÍCIO DE FIXAÇÃO
Leia 3 valores de ponto flutuante e efetue o cálculo das raízes da equação de
Bhaskara. Se não for possível calcular as raízes, mostre a mensagem
correspondente “impossível calcular”, caso haja uma divisão por 0 ou raiz de
número negativo.
Entrada
Leia três valores de ponto flutuante (double) A, B e C
Saída
Se não houver possibilidade de calcular as raízes, apresente a mensagem
“impossível calcular”. Caso contrário imprima o resultado as raizes com 5 digito
após o ponto, com uma mensagem correspondente conforme exemplo abaixo.
Imprima sempre o fina da linha após cada mensagem.
Pesquisa
ESCOPO E INICIALIZAÇÃO.
Continuação... Aula nº 07
ESTRUTURA CONTROLE
WHILE
DO – WHILE
FOR
Continuação... Aula nº 07
ESTRUTURA CONTROLE
WHILE
Entrada Saída
5 11
2
4
0
Sintaxe / regra
Resolvido:
using System;
namespace whileAula1
{
class Program
{
static void Main(string[] args)
{
int num, soma;
num = int.Parse(Console.ReadLine());
soma = 0;
while (num != 0)
{
soma = soma + num;
num = int.Parse(Console.ReadLine());
}
Console.WriteLine(soma);
Console.ReadLine();
}
}
}
Entrada
A entrada contém vários casos de teste. Cada caso contém dois valores
inteiros X e Y. A leitura deve ser encerrada ao ser fornecido valores para X e Y
Saída
Para cada caso de teste imprima “Crescente” caso os valores tenham sido
digitados na ordem crescente, caso contrário imprima a mensagem
“Descrescente”.
54 Descrescente
72 Descrescente
38 Crescente
22
31 34.67
27
46
-5
Resumo da aula
Estrutura repetitiva enquanto
Recomendada quando não se sabe previamente a quantidade de
repetições
Regra:
o V: Executa e volta
o F: Pula fora
Continuação... Aula nº 08
FOR
Continuação... Aula nº 08
ESTRUTURA CONTROLE
FOR(Para)
3 11
5
2
4
Sintaxe / regra
Resolvido:
using System;
namespace For
{
class Program
{
static void Main(string[] args)
{
int N, x, soma;
N = int.Parse(Console.ReadLine());
soma = 0;
for (int i = 1; i <= N; i++)
{
x = int.Parse(Console.ReadLine());
soma = soma + x;
}
Console.WriteLine(soma);
Console.ReadKey();
}
}
}
Importante
Perceba que a estrutura “para” é ótima para se fazer uma repetição baseada em
uma CONTAGEM:
using System;
namespace for1._1
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine($" O valor de i {i}");
}
Console.ReadKey();
}
}
}
Contagem regressiva
using System;
namespace for1._1
{
class Program
{
static void Main(string[] args)
{
for (int i = 4; i >= 0; i--)
{
Console.WriteLine($" O valor de i {i}");
}
Console.ReadKey();
}
}
}
Resumo da aula
Estrutura repetitiva para
Usar quando se sabe previamente a quantidade de repetições
Ótima para fazer contagens (progressiva ou regressiva)
Regra:
Entrada Saída
Continuação... Aula nº 09
ESTRUTURA CONTROLE
Continuação... Aula nº 09
ESTRUTURA CONTROLE
DO – WHILE
Resposta
using System;
using System.Globalization;
namespace do_while_ahrenheit_
{
class Program
{
static void Main(string[] args)
{
double f, c;
char repetir;
do {
Console.Write("Digite a temperatura em Celsius:");
c = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
f = 9 * c / 5 + 32;
Console.WriteLine($"Equivalente em Fahrenheit: {f.ToString("F1",
CultureInfo.InvariantCulture)}");
Console.Write("Deseja repetir (s/n)?");
repetir = char.Parse(Console.ReadLine());
} while (repetir == 's');
Console.ReadKey();
}
}
}
Resumo da aula
Estrutura repetitiva "faça-enquanto"
Aula nº 10
ESTRUTURA DE DADOS
VETORES
Memória RAM
0 0
Como criar um vetor? 0
1
int[] A; 1
2 1
double[]B; 2
2
declaração 3
3
string[] C; 4 3
4
4
5
A = new int[10]; 5
B
6
B = new double[5]; 6
instanciação
7
C = new string[8]; 7
8
9
A C
Memória RAM
Como acessar os
0 0
elementos de um vetor? 10
0 1 1
11
Maria
1 2 2
12
A[3] = 10; 2 3 3
3 13 4 4
10
for (int i=0; i<5; i++) 4 14 B 5
{ B[i] = i + 10; 5 6
} 7
6
7 C
C[1] = "Maria";
8
9
A
Problema exemplo
Fazer um programa para ler um número inteiro positivo N, depois ler N números
quaisquer e armazená-los em um vetor. Em seguida, mostrar na tela todos
elementos do vetor.
Entrada Saída
4 10.5
10.5 4.2
4.2 -7.1
-7.1 15.0
15.0
using System;
using System.Globalization;
namespace VetorLista
{
class Program
{
static void Main(string[] args)
{
int N;
double[] vet;
N = int.Parse(Console.ReadLine());
vet = new double[N];
Resumo da aula
0
Vetor: coleção de dados
Tamanho fixo 1
Arranjo unidimensional
Indexada 2
Homogênea
3
Declaração: double[] B;
4
Exercícios:
Testes de mesa com vetores execute manualmente os testes de mesa a seguir,
preenchendo o comportamento das variáveis (se alguma variável não for usada
no teste de mesa, apenas ignore-a).
Exercícios propostos
Exemplo:
2. faça um programa que leia N números inteiros e armazena-os em um vetor. Em
seguida, mostre na tela:
Todos os números pares
A quantidade de números pares
Entrada Saída
6 8 2 14 20
8 2 11 14 13 20 4
Exemplo:
Exemplo:
Entrada Saída
5 Menor altura = 1.54
1.70 F Maior altura = 1.83
1.83 M Media das alturas das mulheres =
1.54 M 1.69
1.61 F Numero de homens = 2
1.75 F
Aula nº 11
ESTRUTURA DE DADOS
MATRIZ
Obs. Segundo Semestre
Índice
1. Estrutura de dados
a. Matriz
b. Projeto do Grupo (Apresentado como defesa geral)
2. Lista de Prioridade
a. Criando a Primeira Lista de Inteiros
b. Criando Uma Lista de String e Adicionando Itens
c. Trabalhando Com a Propriedades Capacity e Count
d. Percorrendo a Lista Com Foreach
e. Percorrendo a Lista com For
f. Utilizando os Métodos Insert e InsertRange
g. Utilizando os Métodos Remove e RemoveAt
h. Utilizando o Método Sort
i. Projeto do Grupo (Apresentado como defesa geral)
j. Árvores B
3. Grafos
a. Definições básicas
b. Representação e implementação
c. Grafos ponderados
d. Caminhamentos: largura e profundidade
e. Operações sobre grafos
1. Detenção de ciclos e ordenação topológica
2. Detenção de componentes
3. Aplicações
Exercício - enunciado
* Os produtos devem ser ordenados por nome, e depois decrescentemente por preço
Aula nº 11
ESTRUTURA DE DADOS
MATRIZ
Memória RAM
Memória RAM
Como acessar os
elementos de uma matriz? 0 1 2 3
0
1 10
A[1, 2] = 10;
2
A
Problema exemplo
Fazer um programa para ler dois números inteiros positivos M e N, depois ler uma
matriz de M linhas e N colunas contendo números inteiros. Em seguida, mostrar na
tela a matriz lida conforme exemplo.
Entrada Saída
2 3 6 3 10
6 3 10 8 12 5
8 12 5
using System;
namespace Matriz
{
class Program
{
static void Main(string[] args)
{
int M, N;
int[,] A;
M = int.Parse(Console.ReadLine());
N = int.Parse(Console.ReadLine());
A = new int[M, N];
Resumo da aula
0 1 2 3
• Matriz: coleção de dados
• Tamanho fixo 0
• Arranjo bidimensional
• Indexada 1 10
• Homogênea
2
• Declaração: double[,] A; A
• Instanciação: A = new double[3, 4];
• Acesso: A[1, 2] = 10;
Exercícios Propostos:
Fazer um programa para ler um número inteiro N e uma matriz quadrada de
ordem N contendo números inteiros. Em seguida, mostrar a diagonal principal e a
quantidade de valores negativos da matriz.
Exemplo:
Entrada Saída
3 DIAGONAL PRINCIPAL
5 -3 10 5 8 -4
15 8 2 QUANTIDADE DE NEGATIVOS = 2
7 9 -4
2) fazer um programa para ler duas matrizes de M linhas e N colunas, contendo números
inteiros. Depois, gerar uma terceira matriz onde cada elemento desta é a soma dos elementos
correspondentes das matrizes originais. Imprimir na tela a matriz gerada.
Entrada:
Saída:
Exemplo:
Entrada Saída
2 3 5 9 7
3 5 2 5 13 9
4 5 1
2 4 5
1 8 8
3) Ler um inteiro N e uma matriz quadrada de ordem N. Mostrar qual o maior elemento de
cada linha. Suponha não haver empates.
Exemplo:
Entrada Saída
4 12
10 5 12 3 7
4 7 0 6 8
3 3 8 1 15
15 13 4 7
4) Ler um inteiro N e uma matriz quadrada de ordem N. Mostrar a soma dos elementos acima
da diagonal principal.
Exemplo:
Entrada Saída
3 12
10 3 2
5 15 7
8 6 4
Entrada:
A entrada inicia com um número inteiro N (1 < N < 1000) indicando a quantidade de casos de
testes. Cada caso de teste contém a matriz, seguida da posição da torre. É garantido que a
posição da torre não chocará com a posição de outra peça.
Saída:
A saída contém, para cada caso de teste, a letra "S" (maiúscula) se a torre tem condição de
capturar alguma peça, ou a letra "N" (maiúscula) caso contrário.
Exemplo:
Entrada Saída
2 S
0 0 0 0 0 0 0 0 N
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0
0 5 3
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
5 4
Aula nº 12
LISTA DE PRIORIDADE
Criando a Primeira Lista de Inteiros
Criando Uma Lista de String e Adicionando Itens