---
# System prepended metadata

title: 'SESSION SIX | Fundamentos da Lógica:'

---

# SESSION SIX | Fundamentos da Lógica:
> **Aluna:** Patricia Oliveira Paulino
> **Número:** 41
> **Turma:** Info D

## Exercício 1

> Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo
> a especificação das situações a serem resolvidas:
> ▪ Realize a lógica para implementar uma função que gere uma sequência de valores iniciando
> do zero até um valor final recebido por parâmetro. Ex. (5) => {0,1,2,3,4,5}, (3) =>
> {0,1,2,3}, (0) => { }
>
> ▪ Realize a lógica para implementar uma função que gere uma sequência de valores a partir > de um número inicial e final. Ex. (2,4) => {2,3,4}, (1, 2) => {1,2}, (0,0) => { 0 }
> 
> ▪ Realize a lógica para implementar uma função que gere uma sequência de valores pares a
> partir de um número inicial e final.Ex. (2,7) => {2,4,6}, (1, 2) => { 2 }, (0,0) => { 0 }
>
> ▪ Realize a lógica para implementar uma função que some os números naturais de 0 até um
> número final informado. Ex. (5) => 15, (3) => 6
> 
> ▪ Realize a lógica para implementar uma função que calcule a média a partir de uma lista
> de notas. Ex. ({5,5,5}) => 5, ({6,8}) => 7, ({4,6,8, 10}) => 7
> 
> ▪ Realize a lógica para implementar uma função que calcule a média para cada aluno a
> partir de uma lista de Notas.
> 
> ▪ Realize a lógica para implementar uma função que calcule a potência ao quadrado para
> cada número em uma lista. Ex. ({2,3,4}) => {4,9,16}
> 
> ▪ Realize a lógica para implementar uma função que calcule a área do retângulo.
> 
> ▪ Realize a lógica para implementar uma função que calcule a área do retângulo pra cada 
> Retângulo da lista.

csharp=
using System;
using System.Collections.Generic;		

public class Notas
{
	public double Nota1 {get; set;}
	public double Nota2 {get; set;}
	public double Nota3 {get; set;}
}

public class Retangulo
{
	public double Base {get; set;}
	public double Altura {get; set;}
}

public class TreinoFocadoA
{
	public List<int> GerarSequencia(int fim)
	{
		List<int> l = new List<int>();
		for (int i = 0; i <= fim; i++)
		{
			l.Add(i);
		}
		return l;
	}
	
	public List<int> GerarSequencia(int inicio, int fim)
	{
		List<int> l = new List<int>();
		for (int i = inicio; i <= fim; i++)
		{
			l.Add(i);
		}
		return l;
	}
	
	public List<int> GerarSequenciaPares(int inicio, int fim)
	{
		List<int> l = new List<int>();
		for (int i = inicio; i <= fim; i++)
		{
			if (i % 2 == 0)
				l.Add(i);
		}
		return l;
	}
	
	public int SomarAte(int fim)
	{
		int soma = 0;
		for (int i = 1; i <= fim; i++)
		{
			soma += i;	
		}
		return soma;
	}
	
	public double CalcularMedias(List<double> notas)
	{
		double soma = 0;
		for (int i = 0; i < notas.Count; i++)
		{
			double n = notas[i];
			soma = soma + n;
		}
		
		double media = soma / notas.Count;
		return media;
	}
	
	public List<double> CalcularMedias(List<Notas> notas)
	{
		List<double> mediasAlunos = new List<double>();
		
		for (int i = 0; i < notas.Count; i++)
		{
			Notas notasAluno = notas[i];
			double media = (notasAluno.Nota1 + notasAluno.Nota2 + notasAluno.Nota3) / 3;
			mediasAlunos.Add(media);
		}

		return mediasAlunos;
	}
	
	public List<double> Quadrados (List<double> numeros)
	{
		List<double> quads = new List<double>();
		for (int i = 0; i < numeros.Count; i++)
		{
			double n = numeros[i];
			double q = Math.Pow(n, 2);
			
			quads.Add(q);
		}
		return quads;
	}
	
	private double AreaRetangulo(Retangulo r)
	{
		return r.Base * r.Altura;	
	}
	
	public List<double> AreaRetangulos(List<Retangulo> retangulos)
	{
		List<double> areas = new List<double>();
		for (int i = 0; i < retangulos.Count; i++)
		{
			Retangulo r = retangulos[i];
			double area = AreaRetangulo(r);
			
			areas.Add(area);
		}
		
		return areas;
	}
	
}

TreinoFocadoA treinoA = new TreinoFocadoA();

List<int> x1 = treinoA.GerarSequencia(0);
Console.WriteLine(string.Join("-", x1));

List<int> x2 = treinoA.GerarSequencia(2, 4);
Console.WriteLine(string.Join("-", x2));

List<int> x3 = treinoA.GerarSequenciaPares(2, 4);
Console.WriteLine(string.Join("-", x3));

int x4 = treinoA.SomarAte(3);
Console.WriteLine(x4);

List<double> lx5 = new List<double>() {4, 6, 8, 10};
double x5 = treinoA.CalcularMedias(lx5);
Console.WriteLine(x5);

Notas n1 = new Notas();
n1.Nota1 = 8;
n1.Nota2 = 9;
n1.Nota3 = 7;

Notas n2 = new Notas();
n2.Nota1 = 6;
n2.Nota2 = 10;
n2.Nota3 = 8;

Notas n3 = new Notas();
n3.Nota1 = 10;
n3.Nota2 = 10;
n3.Nota3 = 7;

List<Notas> notas = new List<Notas>() {n1, n2, n3};

List<double> x6 = treinoA.CalcularMedias(notas);
Console.WriteLine(string.Join("-", x6));

List<double> n7 = new List<double>() {2,3,4,5};
List<double> x7 = treinoA.Quadrados(n7);
Console.WriteLine(string.Join("-", x7));
 
List<Retangulo> retangs = new List<Retangulo>() 
{
	new Retangulo() {Base = 10, Altura = 2},
	new Retangulo() {Base = 5, Altura = 5},
	new Retangulo() {Base = 2, Altura = 5}
};

List<double> areas = treinoA.AreaRetangulos(retangs);
Console.WriteLine(string.Join("-", areas));

// 0
// 2-3-4
// 2-4
// 6
// 7
// 8-8-9
// 4-9-16-25
// 20-25-10


## Exercício 2

> Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo a
> especificação das situações a serem resolvidas:
>
> ▪ Realize a lógica para implementar uma função que gere uma sequência de datas de um
> tamanho informado por parâmetro, iniciando da data atual. Ex. (2) => { [14/06/2021],
> [15/06/2021] }
> 
> ▪ Realize a lógica para implementar uma função que gere uma sequência de datas de um
> tamanho informado por parâmetro, iniciando de uma data também informada. Ex. (2,
> [14/06/2021]) => { [14/06/2021], [15/06/2021] }
> 
> ▪ Realize a lógica para implementar uma função que gere uma sequência de datas com dias
> pares de um tamanho informado por parâmetro, iniciando de uma data também informada. Ex.
> (2, [14/06/2021]) => { [14/06/2021], [16/06/2021] }
>
> ▪ Realize a lógica para implementar uma função que identifique o signo de uma paessoa
> baseado em uma data. Ex. ([22/10/1989]) => "Libra", ([23/10/1989]) => "Escorpião"
> 
> ▪ Realize a lógica para implementar uma função que identifique os signos para cada data de
> uma lista. Ex. ({[22/10/1989], [23/10/1989]}) => { "Libra", "Escorpião“ }
> 
> ▪ Realize a lógica para implementar uma função que retorne uma lista com as pessoas
> maiores de 18 anos a partir de uma lista de pessoas.
> 
> ▪ Realize a lógica para implementar uma função que retorne se todos de uma lista de
> pessoas são maiores de 18 anos.

csharp=
using System;
using System.Collections.Generic;		

public class Pessoa
{
	public string Nome {get; set;}
	public DateTime Nascimento {get; set;}
	
	public override string ToString()
	{
		return Nome + "," + Nascimento.ToString("dd/MM/yyyy");
	}
};

public class TreinoFocadoB
{
	public List<DateTime> GerarSequencia(int fim)
	{	
		List<DateTime> listaa = new List<DateTime>();
		
		DateTime inicio = DateTime.Now.Date;
		
		for (int i = 0; i <= fim; i++)
		{
			inicio = inicio.AddDays(1);
			listaa.Add(inicio);
		}
		
		return listaa;
	}
	
	public List<DateTime> GerarSequencia(int fim, DateTime data)
	{	
		List<DateTime> listaa = new List<DateTime>();
		
		DateTime inicio = data;
		
		for (int i = 0; i <= fim; i++)
		{
			inicio = inicio.AddDays(1);
			listaa.Add(inicio);
		}
		
		return listaa;
	}
	
	public List<DateTime> GerarSequenciaPares(int qtd, DateTime data)
	{
		List<DateTime> listaa = new List <DateTime>();

		if (data.Day % 2 == 0)
		{
			for (int i= 0; i <= qtd; i++)
			{
				if (i % 2 == 0 )
				{
					DateTime inicio = data.AddDays(i);
					listaa.Add(inicio);
				}
			}
		}

		else 
		{
			for (int i= 0; i <= qtd; i++)
			{
				if (i % 2 != 0)
				{
					DateTime inicio = data.AddDays(i);
					listaa.Add(inicio);
				}
			}

		}
		return listaa;
	}
	
	public string Signo(DateTime nasc)
	{
		string signoo = string.Empty;
		
		if ((nasc.Day > 20 && nasc.Month == 3) || (nasc.Day < 21 && nasc.Month == 4)) 
		{
			signoo = "Áries";
		}
		else if ((nasc.Day > 20 && nasc.Month == 4) || (nasc.Day < 21 && nasc.Month == 5))
		{
			signoo = "Touro";
		}
		else if ((nasc.Day > 20 && nasc.Month == 5) || (nasc.Day < 21 && nasc.Month == 6))
		{
			signoo = "Gêmeos";
		}
		else if ((nasc.Day > 20 && nasc.Month == 6) || (nasc.Day < 23 && nasc.Month == 7))
		{
			signoo = "Câncer";
		}
		else if ((nasc.Day > 22 && nasc.Month == 7) || (nasc.Day < 23 && nasc.Month == 8))
		{
			signoo = "Leão";
		}
		else if ((nasc.Day > 22 && nasc.Month == 8) || (nasc.Day < 23 && nasc.Month == 9))
		{
			signoo = "Virgem";
		}
		else if ((nasc.Day > 22 && nasc.Month == 9) || (nasc.Day < 23 && nasc.Month == 10))
		{
			signoo = "Libra";
		}
		else if ((nasc.Day > 22 && nasc.Month == 10) || (nasc.Day < 22 && nasc.Month == 11))
		{
			signoo = "Escorpião";
		}
		else if ((nasc.Day > 21 && nasc.Month == 11) || (nasc.Day < 22 && nasc.Month == 12))
		{
			signoo = "Sargitário";
		}
		else if ((nasc.Day > 21 && nasc.Month == 12) || (nasc.Day < 21 && nasc.Month == 1))
		{
			signoo = "Capricórnio";
		}
		else if ((nasc.Day > 20 && nasc.Month == 1) || (nasc.Day < 19 && nasc.Month == 2))
		{
			signoo = "Aquário";
		}
		else if ((nasc.Day > 18 && nasc.Month == 2) || (nasc.Day < 21 && nasc.Month == 3))
		{
			signoo = "Peixes";
		}
				
    	return signoo;
	}
	
	public List<string> Signos(List<DateTime> nasc)
	{
		List<string> signos = new List<string>();

		for (int i = 0; i < nasc.Count; i++)
		{
			DateTime d = nasc [i];
			string s = Signo(d);

			signos.Add(s);
		}
		
		return signos;
	}	
	
	public List<Pessoa> FiltrarMaiores18(List<Pessoa> pessoas)
	{	
		List<Pessoa> filtrados = new List<Pessoa>();
	
		for (int i = 0; i < pessoas.Count; i++)
		{
			Pessoa p = pessoas[i];
			if (p.Nascimento <= DateTime.Now.AddYears(-18))
			{
				filtrados.Add(p);
			}
		}
		
		return filtrados;
	}
	
	public bool TodosMaiores18(List<Pessoa> pessoas)
	{	
		bool TodosMaiores = true; 
	
		for (int a = 0; a < pessoas.Count; a++)
		{
			Pessoa p = pessoas[1];
			if (p.Nascimento <= DateTime.Now.AddYears(-18))
			{
				TodosMaiores = false; 
			}
		}
		
		return TodosMaiores;
	}
}

TreinoFocadoB treinoB = new TreinoFocadoB();

List<DateTime> x1 = treinoB.GerarSequencia(2);
Console.WriteLine(string.Join("-", x1));

List<DateTime> x2 = treinoB.GerarSequencia(2, new DateTime(2021, 6, 10));
Console.WriteLine(string.Join("-", x2));
	
List<DateTime> x3 = treinoB.GerarSequenciaPares(2, new DateTime(2021, 6, 10));
Console.WriteLine(string.Join("-", x3));

DateTime data1 = new DateTime(2004, 3, 17);

string x4 = treinoB.Signo(data1);
Console.WriteLine(string.Join(" - ", x4));

List<DateTime> data = new List<DateTime>();

data.Add(new DateTime(2005, 04, 02));
data.Add(new DateTime(2002, 11, 15));
data.Add(new DateTime(2002, 08, 28));
data.Add(new DateTime(2002, 05, 1));

List<string> x5 = treinoB.Signos(data);
Console.WriteLine(string.Join(" - ", x5));

List<Pessoa> pessoas = new List<Pessoa>();
{
	new Pessoa() { Nome = "Patricia", Nascimento = new DateTime(1995, 3, 17) };
	new Pessoa() { Nome = "Luan", Nascimento = new DateTime(1999, 10, 27) };
	new Pessoa() { Nome = "Larissa", Nascimento = new DateTime(2005, 4, 13) };
};

List<Pessoa> x6 = treinoB.FiltrarMaiores18(pessoas);
Console.WriteLine(string.Join(" - ", x6));

bool x7 = treinoB.TodosMaiores18(pessoas);
Console.WriteLine(string.Join("-", x7));

// 6/27/2021 12:00:00 AM-6/28/2021 12:00:00 AM-6/29/2021 12:00:00 AM
// 6/11/2021 12:00:00 AM-6/12/2021 12:00:00 AM-6/13/2021 12:00:00 AM
// 6/10/2021 12:00:00 AM-6/12/2021 12:00:00 AM
// Peixes
// Escorpião - Peixes - Virgem - Touro
// 
// True


## Exercício 3

> Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo a
> especificação das situações a serem resolvidas:
> 
> ▪ Realize a lógica para implementar uma função que separe cada caractere de uma frase por
> um hífen. Ex. ("Olá, tudo bem?") => "O-l-á- t-u-d-o- -b-e-m-?-"
> 
> ▪ Realize a lógica para implementar uma função que inverte os caracteres de uma frase. Ex. 
> ("Olá, tudo bem?") => "?meb odut ,álO"
> 
> ▪ Realize a lógica para implementar uma função que verifica se todos caracteres de uma
> frase são vogais. Ex. ("Olá") => false, ("Eaee") => true
> 
> ▪ Realize a lógica para implementar uma função que retorne o último nome a partir de um 
> nome completo. Ex. ("Bruno de Oliveira") => "Oliveira"
> 
> ▪ Realize a lógica para implementar uma função que retorne os últimos nomes a partir de
> uma lista de nomes completos. Ex. (["Bruno de Oliveira", "João Silva"]) => ["Oliveira",
> "Silva"]
> 
> ▪ Realize a lógica para implementar uma função que verifique se todas as cores em uma
> lista são primárias. Ex. (["Azul", "Amarelo", "Vermelho"]) => true
> 
> ▪ Realize a lógica para implementar uma função que verifique se uma senha é forte. Para
> ser forte, ela precisa ter pelo menos 2 caracteres especiais, 2 números e 8 digitos. Ex. 
> ("senha@123") => false, ("s&nha@87") => true, ("aaaa@@00") => true.

csharp=
using System;
using System.Collections.Generic;		

public class Pessoa
{
	public string Nome {get; set;}
	public DateTime Nascimento {get; set;}
	public string Cidade {get; set;}
};

public class TreinoFocadoC
{
	public string SepararLetras(string frase)
	{
		string nova = string.Empty;
		for (int i = 0; i < frase.Length; i++)
		{
			char letra = frase[i];
			nova = nova + letra + "-";
		}
		
		return nova;
	}
	
	public string Inverter(string frase)
	{
		string nova = string.Empty;
		for (int i = 0; i < frase.Length; i++)
		{
			char letra = frase[i];
			nova = letra + nova;
		}
		
		return nova;
	}
	
	public bool TodasVogais (string frase)
	{
		bool resposta = true;

		for (int i = 0; i < frase.Length; i ++)
		{
			char letra = frase [i];
			if (letra != 'a' && letra != 'e' && letra != 'i' && letra != 'o' && letra != 'u')
			{
				resposta = false;
			}
			
		}
			
			return resposta;
	}
	
	public string UltimoNome(string nome)
	{
		int posicaoUltEspaco = nome.LastIndexOf(" ");
		string sobrenome = nome.Substring(posicaoUltEspaco + 1);
		return sobrenome;
	}
	
	public List<string> UltimosNomes (List<string> nome)
	{
		List<string> ultimoNome = new List<string> ();
		for (int i = 0; i < nome.Count; i++)
		{
			string nomes = nome[i];
			string ultNome = UltimoNome(nomes);

			ultimoNome.Add(ultNome);
		}

		return ultimoNome;
	}
	
	public bool ApenasCoresPrimarias(List<string> cores)
	{
		bool todasPrimarias = true;
		
		for (int i = 0; i < cores.Count; i++)
		{
			string cor = cores[i];
			if (cor != "vermelho" && cor != "amarelo" && cor != "azul")
			{
				todasPrimarias = false;	
			}
		}
		
		return todasPrimarias;
	}
	
	public bool SenhaForte(string senha)
    {
        bool senhaforte = false;
        for(int i = 0; i < senha.Length; i++)
        {
            bool caracter = senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || 
				            senha.Contains("$") || senha.Contains("%") || senha.Contains("&") || 
							senha.Contains("+") || senha.Contains("-") ||  senha.Contains("*");
            bool digitos = senha.Length >= 8;
            bool senhaf = caracter == digitos;
            if(senhaf)
            {
                senhaforte = true;
            }
        }
        return senhaforte;
    }
}

TreinoFocadoC treinoC = new TreinoFocadoC();

string x1 = treinoC.SepararLetras("Patricia");
Console.WriteLine(x1);

string x2 = treinoC.Inverter("Patricia");
Console.WriteLine(x2);

bool frase = treinoC.TodasVogais("eaee");
Console.WriteLine(frase);

string a = treinoC.UltimoNome("Patricia Oliveira Paulino");
Console.WriteLine(a);

List<string> n = new List<string>()
{"Patricia Oliveira", "Thiago Neves", "Larissa Santos"};

List<string> nomecomp = treinoC.UltimosNomes(n);
Console.WriteLine(string.Join(", ", nomecomp));
	
bool x3 = treinoC.ApenasCoresPrimarias(new List<string>() {"preto", "branco", "azul"});
Console.WriteLine(x3);

bool senhaF = treinoC.SenhaForte("eu-amo-csarp-rs");
Console.WriteLine(senhaF);

// P-A-T-R-I-C-I-A-
// aicirtaP
// True
// Paulino
// Oliveira, Neves, Santos
// False
// True
