# Session seven | Repetição FOREACH
autora: Isabela Silva Sousa
[toc]
## 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 recebendo uma lista de números
> inteiros, some apenas os números ímpares. Ex. ({2, 3, 4, 5}) => 8
> ▪ Realize a lógica para implementar uma função que recebendo uma lista de números
> inteiros, calcule a potência ao cubo de cada item. Ex. ({2, 3, 4}) => {8, 27, 64}
> ▪ Realize a lógica para implementar uma função que recebendo uma lista de números
> decimais, calcule a raiz quadrada de cada item. Ex. ({25, 16, 9}) => {5, 4, 3}
> ▪ Realize a lógica para implementar uma função que recebendo uma lista de números
> inteiros, retorne o maior número. Ex. ({25, 16, 39}) => 39
> ▪ Realize a lógica para implementar uma função que recebendo uma lista de números
> decimais, retorne a média dos números. Ex. ({6,7,5,6}) => 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 recebendo uma lista de Retângulos,
> retorne uma lista com a área de cada Retângulo. Ex. ({ [2,4], [4,4], [5,4] }) => {8, 16,
> 20}
```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 int SomaImpares(List<int> numeros)
{
int soma = 0;
foreach(int item in numeros)
{
if(item %2 == 1)
soma = soma + item;
}
return soma;
}
public List<int> CalcularCubo(List<int> numeros)
{
List<int> cubos = new List<int>();
foreach(int item in numeros)
{
double x = Math.Pow(item, 3);
int c = Convert.ToInt32(x);
cubos.Add(c);
}
return cubos;
}
public List<double> CalcularRaiz(List<double> numeros)
{
List<double> raiz = new List<double>();
foreach(int item in numeros)
{
double x = Math.Sqrt(item);
raiz.Add(x);
}
return raiz;
}
public int MaiorNumero(List<int> numeros)
{
int maior = 0;
foreach(int item in numeros)
{
if(item > maior)
maior = item;
}
return maior;
}
public double Media(List<double> numeros)
{
double soma = 0;
foreach(double item in numeros)
{
soma += item;
}
double media = soma / numeros.Count;
return media;
}
public List<double> CalcularMedias(List<Notas> notas)
{
List<double> mediasAlunos = new List<double>();
int soma = 0;
foreach(Notas item in notas)
{
double media = item.Nota1 + item.Nota2 + item.Nota3;
double medias = media / notas.Count;
mediasAlunos.Add (medias);
}
return mediasAlunos;
}
public double AreaRetangulo(Retangulo r)
{
return r.Base * r.Altura;
}
public List<double> AreaRetangulos(List<Retangulo> retangulos)
{
List<double> areas = new List<double>();
foreach(Retangulo item in retangulos)
{
double area = AreaRetangulo(item);
areas.Add(area);
}
return areas;
}
}
TreinoFocadoA treinoA = new TreinoFocadoA();
List<int> n1 = new List<int>() {2, 3, 4, 5};
int ex1 = treinoA.SomaImpares(n1);
Console.WriteLine(ex1);
List<int> n2 = new List<int>() {2, 3, 4};
List<int> ex2 = treinoA.CalcularCubo(n2);
Console.WriteLine(string.Join(", ", ex2));
List<double> n3 = new List<double>() {25, 16, 9};
List<double> ex3 = treinoA.CalcularRaiz(n3);
Console.WriteLine(string.Join(", ", ex3));
List<int> n4 = new List<int>() {25, 16, 39};
int ex4 = treinoA.MaiorNumero(n4);
Console.WriteLine(ex4);
List<double> n5 = new List<double>() {7, 8, 9};
double ex5 = treinoA.Media(n5);
Console.WriteLine(ex5);
Notas nota1 = new Notas(); {nota1.Nota1 = 9; nota1.Nota2 = 8; nota1.Nota3 = 7;}
Notas nota2 = new Notas(); {nota2.Nota1 = 8; nota2.Nota2 = 6; nota2.Nota3 = 10;}
Notas nota3 = new Notas(); {nota3.Nota1 = 10; nota3.Nota2 = 10; nota3.Nota3 = 10;}
List<Notas> notas = new List<Notas>() {nota1, nota2, nota3};
List<double> ex6 = treinoA.CalcularMedias(notas);
Console.WriteLine(string.Join(", ", ex6));
Retangulo re1 = new Retangulo(); {re1.Base = 5; re1.Altura = 2;}
double areas1 = treinoA.AreaRetangulo(re1);
Console.WriteLine(string.Join("-", areas1));
Retangulo r1 = new Retangulo(); {r1.Base = 2; r1.Altura = 4;}
Retangulo r2 = new Retangulo(); {r2.Base = 5; r2.Altura = 2;}
Retangulo r3 = new Retangulo(); {r3.Base = 5; r3.Altura = 4;}
Retangulo r4 = new Retangulo(); {r4.Base = 10; r4.Altura = 5;}
List<Retangulo> areas = new List<Retangulo>() {r1, r2, r3, r4};
List<double> ex8 = treinoA.AreaRetangulos(areas);
Console.WriteLine(string.Join("-", ex8));
// 8
// 8, 27, 64
// 5, 4, 3
// 39
// 8
// 8, 8, 10
// 10
// 8-10-20-50
```
## 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 recebendo uma lista de datas, gere uma
> lista com o último dia do mês de cada item da lista recebida. Ex. ({ [14/04/2021],[15/05/2021] }) => { [30/04/2021], [31/05/2021] }
> ▪ Realize a lógica para implementar uma função que recebendo uma lista de datas, retorne
> qual é a maior data entre elas. Ex. ({ [14/06/2021], [16/06/2021], [10/06/2021] }) => [16/06/2021]
> ▪ 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> UltDias(List<DateTime> dias)
{
List<DateTime> ultDias = new List<DateTime>();
foreach (DateTime item in dias)
{
DateTime ultimo = item.AddMonths(1).AddDays(-item.Day);
ultDias.Add(ultimo);
}
return ultDias;
}
public DateTime MaiorData(List<DateTime> datas)
{
DateTime maior = DateTime.MinValue;
foreach (DateTime item in datas)
{
if(item > maior)
maior = item;
}
return maior;
}
public List<Pessoa> FiltrarMaiores18(List<Pessoa> responsavel)
{
List<Pessoa> filtrados = new List<Pessoa>();
foreach (Pessoa item in responsavel)
{
if (item.Nascimento < DateTime.Now.AddYears(-18))
{
filtrados.Add(item);
}
}
return filtrados;
}
public bool TodosMaiores18(List<Pessoa> pessoas)
{
bool TodosMaiores = true;
foreach(Pessoa item in pessoas)
{
if (item.Nascimento <= DateTime.Now.AddYears(-18))
{
TodosMaiores = false;
}
}
return TodosMaiores;
}
}
TreinoFocadoB treinoB = new TreinoFocadoB();
List<DateTime> dias = new List<DateTime>();
dias.Add(new DateTime(2020, 04, 1));
dias.Add(new DateTime(2020, 05, 1));
List<DateTime> x1 = treinoB.UltDias(dias);
Console.WriteLine(string.Join(" - ", x1));
List<DateTime> datas = new List<DateTime>();
datas.Add(new DateTime(2021, 06, 14));
datas.Add(new DateTime(2021, 06, 16));
datas.Add(new DateTime(2021, 06, 10));
DateTime x2 = treinoB.MaiorData(datas);
Console.WriteLine(x2.ToString("dd/MM/yyyy"));
List<Pessoa> pessoas = new List<Pessoa>();
pessoas.Add(new Pessoa() { Nome = "Barbara", Nascimento = new DateTime(2000, 3, 17) });
pessoas.Add(new Pessoa() { Nome = "Yasmin", Nascimento = new DateTime(2001, 10, 27) });
pessoas.Add(new Pessoa() { Nome = "Larissa", Nascimento = new DateTime(2005, 4, 13) });
List<Pessoa> x3 = treinoB.FiltrarMaiores18(pessoas);
Console.WriteLine(string.Join(", ", x3));
bool x4 = treinoB.TodosMaiores18(pessoas);
Console.WriteLine(x4);
// 4/30/2020 12:00:00 AM - 5/31/2020 12:00:00 AM
// 16/06/2021
// (Barbara, 17/03/2000), (Yasmin, 27/10/2001)
// False
```
## 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 receba uma palavra e retorne uma lista
> contendo o código referente a tabela ASCII de cada caractere. Ex. (“Bruno”) => {66, 114,
> 117, 110, 111}
> ▪ 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 alterne entre maiúsculo e minúsculo
> cada caractere de um nome de pessoa. Ex. ["Bruno de Oliveira", [22/10/89], “SP”] =>
> “BrUnO De oLiVeIrA“
> ▪ 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 recebendo uma palavra, retorne
> true/false, caso essa palavra seja um palíndromo. Ex. (“osso”) => 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;
foreach(char item in frase)
{
nova = nova + item + "-";
}
return nova;
}
public List<int> CodigoAscii(string frase)
{
List<int> codascii = new List<int>();
frase.Replace("A", "65"); frase.Replace("B", "66"); frase.Replace("C", "67"); frase.Replace("D", "68"); frase.Replace("E", "69"); frase.Replace("F", "70");
frase.Replace("G", "71"); frase.Replace("H", "72"); frase.Replace("I", "73"); frase.Replace("J", "74"); frase.Replace("K", "75"); frase.Replace("L", "76");
frase.Replace("M", "77"); frase.Replace("N", "78"); frase.Replace("O", "79"); frase.Replace("P", "80"); frase.Replace("Q", "81"); frase.Replace("R", "82");
frase.Replace("S", "83"); frase.Replace("T", "84"); frase.Replace("U", "85"); frase.Replace("V", "86"); frase.Replace("W", "87"); frase.Replace("X", "88");
frase.Replace("Y", "89"); frase.Replace("Z", "90");
foreach (char letra in frase)
{
int x = Convert.ToInt32(letra);
codascii.Add(x);
}
return codascii;
}
public bool TodasVogais(string frase)
{
bool resposta = true;
foreach(char letra in frase)
{
if (letra != 'a' && letra != 'e' && letra != 'i' && letra != 'o' && letra != 'u')
{
resposta = false;
}
}
return resposta;
}
public string Alternar(Pessoa pessoa)
{
string nova = string.Empty;
foreach(char letra in pessoa.Nome)
{
int x = pessoa.Nome.IndexOf(letra);
if(x % 2 == 0)
{
nova += letra.ToString().ToUpper();
}
else
nova += letra.ToString().ToLower();
}
return nova;
}
public string Inverter(string frase)
{
string fraseinvertida = string.Empty;
foreach(char letra in frase)
{
fraseinvertida = letra + fraseinvertida;
}
return fraseinvertida;
}
public bool Palindromo(string frase)
{
frase = frase.ToLower();
return frase == Inverter(frase);
}
}
TreinoFocadoC treinoC = new TreinoFocadoC();
string x1 = treinoC.SepararLetras("Barbara");
Console.WriteLine(x1);
List<int> x2 = treinoC.CodigoAscii ("Barbara");
Console.WriteLine(string.Join(", ", x2));
bool x3 = treinoC.TodasVogais("eaee");
Console.WriteLine(x3);
Pessoa p1 = new Pessoa();
p1.Nome = "Barbara Barbosa";
p1.Nascimento = new DateTime(2004, 03, 17);
p1.Cidade = "São Paulo";
string x4 = treinoC.Alternar(p1);
Console.WriteLine(x4);
string x5 = treinoC.Inverter("Barbara");
Console.WriteLine(x5);
Console.WriteLine("Hannah é palindromo: " + treinoC.Palindromo("Hannah"));
// B-a-r-b-a-r-a-
// 66, 97, 114, 98, 97, 114, 97
// True
// BaRbaRa BaRbOsa
// arabraB
// Hannah é palindromo: True
```
{"metaMigratedAt":"2023-06-16T07:38:43.927Z","metaMigratedFrom":"Content","title":"Session seven | Repetição FOREACH","breaks":true,"contributors":"[{\"id\":\"efa8ac71-fa69-4ab5-8a89-20016d037e45\",\"add\":12245,\"del\":34}]"}