quinta-feira, 9 de janeiro de 2020

Emprego do Linq Parte1

Recebi um teste para resolver algumas questões e quero mostrar as soluções.

LINQ

Seja uma classe

List employee = new List()
{
 new Employee() { Name = "John", Salary = 2500, Bonus = 100 },
 new Employee() { Name = "Ed", Salary = 3000, Bonus = 100 },
 new Employee() { Name = "Taylor", Salary = 2650, Bonus = 150 },
 new Employee() { Name = "Mike", Salary = 1580, Bonus = 120 },
 new Employee() { Name = "Ted", Salary = 1950, Bonus = 150 },
 new Employee() { Name = "Adam", Salary = 2300, Bonus = 0 },
};

1. Implemente um método que retorne a média salarial desta lista.
2. Retorne os nomes das pessoas que ganham acima da média.
3. Faça uma nova lista que retorne a soma do salário e do bonus.
4. Aproveitando o item anterior, retorne uma nova lista das pessoas que ganham abaixo da média (salário + bonus) e acrescente 15%.

Solução:

Para manipular uma lista com 3 colunas foi preciso fazer a classe Employee e o conteúdo foi:

    class Employee
    {
        public string Name { get; set; }
        public double Salary { get; set; }
        public double Bonus { get; set; }
    }

Para manipular uma lista com 2 colunas foi preciso fazer a classe NomeSalario e o conteúdo foi:

    class NomeSalario
    {
        public string Name { get; set; }
        public double SalarioTotal { get; set; }
    }

O código-fonte completo no método Main() está abaixo:

static void Main(string[] args)
{
 List employee = new List()
 {
  new Employee() { Name = "John", Salary = 2500, Bonus = 100 },
  new Employee() { Name = "Ed", Salary = 3000, Bonus = 100 },
  new Employee() { Name = "Taylor", Salary = 2650, Bonus = 150 },
  new Employee() { Name = "Mike", Salary = 1580, Bonus = 120 },
  new Employee() { Name = "Ted", Salary = 1950, Bonus = 150 },
  new Employee() { Name = "Adam", Salary = 2300, Bonus = 0 },
 };

 Console.WriteLine("A média salarial é {0}", GetMeanSalary(employee));
 Console.WriteLine("Os funcionários que ganham acima da média são: ");
 var nomeSalarioAcimaMedia = NamesAboveMeanSalary(employee);
 foreach (var item in nomeSalarioAcimaMedia)
 {
  Console.WriteLine(item.Name);
 }


 Console.WriteLine("\nA lista com nomes e salário total é: ");
 var nomeSalario = SumSalaryBonus(employee);
 foreach (var item in nomeSalario)
 {
  Console.WriteLine("{0,-7} {1,10}", item.Name, item.SalarioTotal);
 }
 
 Console.WriteLine("A média (salário + bonus) é: {0:C2}\n", GetMeanSalary(nomeSalario));
 
 Console.WriteLine("As pessoas que ganham abaixo da média e tiveram reajuste de 15% são: ");
 var listaReajustada = GetTotalSalaryBelowMeanApply15percent(nomeSalario);
 foreach (var item in listaReajustada)
 {
  Console.WriteLine("{0,-7} {1,10}", item.Name, item.SalarioTotal);
 }
}

static double GetMeanSalary(List lista)
{
 return lista.Sum(x => x.Salary) / lista.Count();
}

static List NamesAboveMeanSalary(List lista)
{
 return lista.Where(x => x.Salary > GetMeanSalary(lista)).ToList();
}

static List SumSalaryBonus(List lista)
{
 List nomeSal = new List();
 foreach (var item in lista)
 {
  nomeSal.Add(new NomeSalario() { Name = item.Name, SalarioTotal = item.Salary + item.Bonus});
 }
 return nomeSal;
}

static double GetMeanSalary(List lista)
{
 return lista.Sum(x => x.SalarioTotal) / lista.Count();
}

static List GetTotalSalaryBelowMeanApply15percent(List lista)
{
 var abaixoMediaSalarioTotal = lista.Where(x => x.SalarioTotal < GetMeanSalary(lista));
 foreach (var item in abaixoMediaSalarioTotal)
 {
  item.SalarioTotal = item.SalarioTotal * 1.15;
 }
 return lista;
}

A saída do programa da implementação é:

A média salarial é 2330
Os funcionários que ganham acima da média são:
John
Ed
Taylor

A lista com nomes e salário total é:
John          2600
Ed            3100
Taylor        2800
Mike          1700
Ted           2100
Adam          2300
A média (salário + bonus) é: R$2.433,33

As pessoas que ganham abaixo da média e tiveram reajuste de 15% são:
John          2600
Ed            3100
Taylor        2800
Mike          1955
Ted           2415
Adam          2645


Conceitos

1. Sem citar código/tecnologia defina o que é abstração. Cite um exemplo.
2. O que é herança? Quais as vantagem de usá-la?
3. O que é polimorfismo?
4. O que é classe e o que é objeto?

O que é débito técnico?

Git

Se você tem uma branch chamada task1234 e quer fazer um merge com a branch master, qual o procedimento?

a) Estar na branch task1234 e digitar git merge master
b)
c)
d) Estar na branch master e digitar git merge task1234

O stash tem uma estrutura de dados:

a) Fila
b)
c) Pilha
d) Árvore

Nenhum comentário:

Postar um comentário