# 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}]"}
Expand menu