SlideShare uma empresa Scribd logo
Algoritmos e 
Programação 
Prof. Marcos Saúde 
marcosr@pitagoras.com.br
Linguagem C# 
 Conhecendo mais da linguagem C# 
 Seqüências de Escape 
 Adição de referências 
 Substituições na Leitura 
 Operadores Aritméticos, Relacionais e Lógicos 
 Estruturas de Controle (if/else, switch)
Linguagem C#
Linguagem C#
Linguagem C#
Linguagem C#
Linguagem C#
Linguagem C#
Linguagem C#
Exercício:
Resultado
Exercício:
Algop - aula 03
Algop - aula 03
Algop - aula 03
Linguagem C#
Linguagem C#
Linguagem C#
Operadores lógicos e relacionais 
 Os operadores lógicos disponíveis na linguagem C 
são: 
 E ( && ) 
 Ou ( || ) 
 Não ( ! ) 
 Tabela verdade dos operadores lógicos 
p q p && 
q 
V V V 
V F F 
F V F 
F F F 
p q p || q 
V V V 
V F V 
F V V 
F F F 
p !p 
V F 
F V
Estrutura de Decisão
Estrutura de Decisão 
 O fluxo de controle de um programa diz respeito a 
como as instruções serão encadeadas; 
 Sequencia lógica é o que já temos intuitivamente 
assimilado com os estudos ao calcular fórmulas 
simples tipo conversão de temperatura de Fahrenheit 
para Celsius; 
 No caso, uma instrução é executada após a outra, 
sem desvios, sem repetições; 
 É o exemplo de programas resolvidos em que o 
ponto chave era algum cálculo com base em uma 
fórmula;
Estrutura de Decisão 
 Com as estruturas de decisão, a 
sequencia de instruções a executar é 
alterada conforme uma decisão 
baseada em alguma operação lógica; 
 Dois são os comandos para 
implementar estruturas de decisão 
 Se (no C# é if) 
 Caso (no C# é switch)
Estrutura de Decisão 
 Veremos primeiro o comando de decisão if: 
 Empregado em situações 
 De condições flexíveis combinando operações 
relacionais e lógicas; 
 Que apresentam apenas duas alternativas de fluxo. 
Para se obter mais caminhos, vários IF’s podem ser 
combinados; 
 O comando “IF” escrito no C# é tratado com a seguinte 
sintaxe 
if (condição) 
{ ... 
} 
else 
{ ... 
}
Estrutura de Decisão 
 Exemplo: 
... 
int numero; 
Console.Write( “Digite um número:”); 
numero = Int32.Parse(Console.ReadLine()); 
if ( (numero % 2) == 0 ) 
{ 
Console.Write(“O numero é par.”); 
} 
else 
{ 
Console.Write(“O numero é ímpar.”); 
}. 
..
Estrutura de Decisão 
 Considere o seguinte trecho de algoritmo: 
 início 
 real x,y; 
 leia(x,y); 
 se ((12-7) > y) E ((13-x) >= 27) então 
 início 
 se (x * y >0) então 
 escreva ('Jogo 1') 
 senão 
 escreva ('Jogo 2'); 
 fim 
 senão 
 início 
 se (x * y >0) então 
 escreva ('Jogo 3'); 
 senão 
 escreva ('Jogo 4'); 
 fim 
 fim
Estrutura de Decisão 
 O que acontece na execução do algoritmo dadas as 
seguintes condições? 
 a) O primeiro valor entrado é 5 e o segundo é 14. 
 b) O primeiro valor entrado é -5 e o segundo é 14. 
 c) O primeiro valor entrado é -14 e o segundo é -5. 
 d) O primeiro valor entrado é -14 e o segundo é 5;
Exercícios 
 1) Faça um algoritmo que leia os 
valores A, B, C e imprima na tela se a 
soma de A + B é menor que C; 
 2) Faça um algoritmo que leia o nome, 
o sexo e o estado civil de uma pessoa. 
Caso sexo seja “F” e estado civil seja 
“CASADA”, solicitar o tempo de casada 
(anos);
Para casa 
 Os exercícios a seguir foram elaborados para que o aluno 
procure exercitar os conhecimentos até aqui adquiridos. A 
implementação dos algoritmos podem ser expressos em 
Linguagem Algorítmica, mas é recomendável que se tente 
implementá-los usando a ferramenta de desenvolvimento 
utilizada em aula (Visual Studio – Visual C#). Na prática é que 
serão identificadas as dificuldades encontradas na 
aprendizagem. Nas próximas aulas serão trazidos os gabaritos 
para conferência das respostas – marcaremos oportunamente 
(antes da 1ª prova) aula(s) em dia de sábado para os que 
necessitarem dirimir as dúvidas; 
 1) Desenvolva um algoritmo que lê dois valores inteiros e exibe 
uma mensagem indicando qual o maior; 
 2) Desenvolva um algoritmo que lê três números inteiros A, B e 
C, e exibe uma mensagem indicando o maior e o menor. 
Considere que os valores devam ser distintos;
Para casa 
 3) Preparar um algoritmo para ler os comprimentos dos três 
lados de um triângulo (S1, S2 e S3) e determinar que tipo de 
triângulo temos, com base nos seguintes casos. Sejam A o 
maior dos lados de S1, S2 e S3 e B e C os outros lados. Então: 
 Se A >= B + C Nenhum triângulo é formado 
 Se A2 = B2 + C2 Um triângulo retângulo é formado 
 Se A2 > B2 + C2 Um triângulo obtusângulo é formado 
 Se A2 < B2 + C2 Um triângulo acutângulo é formado 
 Obs: Para se obter o quadrado de um número no C# há duas 
possibilidades: 
 Multiplicar o número por ele mesmo: A*A 
 Utilizar o método Math.Pow: Math.Pow(A,2) – eleva o valor da variável 
A ao quadrado (A deve ser declarada como tipo double);
Para casa 
 4) Preparar um algoritmo para ler os comprimentos dos três 
lados de um triângulo (S1, S2 e S3) e determinar que tipo de 
triângulo temos, com base nos seguintes casos. Sejam A o 
maior dos lados de S1, S2 e S3 e B e C os outros lados. Então: 
 Se A >= B + C Nenhum triângulo é formado 
 Se A2 = B2 + C2 Um triângulo retângulo é formado 
 Se A2 > B2 + C2 Um triângulo obtusângulo é formado 
 Se A2 < B2 + C2 Um triângulo acutângulo é formado 
 Obs: Para se obter o quadrado de um número no C# há duas 
possibilidades: 
 Multiplicar o número por ele mesmo: A*A 
 Utilizar o método Math.Pow: Math.Pow(A,2) – eleva o valor da variável 
A ao quadrado (A deve ser declarada como tipo double);
Para casa 
 5) O Departamento do Meio Ambiente mantém três 
listas de indústrias conhecidas por serem altamente 
poluentes da atmosfera. Os resultados de várias 
medidas são combinados para formar o que é 
chamado de “índice de poluição”. Isto é controlado 
regularmente. Normalmente os valores caem entre 
0.05 e 0.25. Se o valor atingir 0.30, as indústrias da 
lista A serão chamadas a suspender as operações 
até que os valores retornem ao intervalo normal. Se 
o índice atingir 0.40, as indústrias da lista B serão 
notificadas também. Se o índice exceder 0.50, 
indústrias de todas as três listas serão avisadas para 
suspenderem as atividades. Faça um algoritmo que 
leia o índice de poluição e indique as notações 
apropriadas;
Para casa 
 6) Faça um algoritmo que leia dois 
valores inteiros A e B. Se os valores 
forem iguais deverá se somar os dois, 
caso contrário multiplique A por B. Ao 
final de qualquer um dos cálculos deve-se 
atribuir o resultado para uma 
variável C e mostrar seu conteúdo na 
tela;
Para casa 
 7) Encontrar o dobro de um número caso ele 
seja positivo e o seu triplo caso seja 
negativo, exibindo na tela o resultado. 
 8) Tendo como dados de entrada a altura e o 
sexo de uma pessoa, construa um algoritmo 
que calcule seu peso ideal, utilizando as 
seguintes fórmulas: 
 para homens: (72.7 * h) – 58; 
 para mulheres: (62.1 * h) – 44.7.
Para casa 
 9) O IMC – Indice de Massa Corporal é um critério da 
Organização Mundial de Saúde para dar uma indicação sobre a 
condição de peso de uma pessoa adulta. A fórmula é IMC = 
peso / ( altura ) 2. Elabore um algoritmo que leia o peso e a 
altura de um adulto e mostre sua condição de acordo com a 
tabela abaixo.
Para casa 
 10) Escreva um algoritmo que leia o número de identificação, as 3 
notas obtidas por um aluno nas 3 verificações e a média dos exercícios 
que fazem parte da avaliação, e calcule a média de aproveitamento, 
usando a fórmula: 
 A atribuição dos conceitos obedece a tabela abaixo. O algoritmo deve 
escrever o número do aluno, suas notas, a média dos exercícios, a 
média de aproveitamento, o conceito correspondente e a mensagem 
'Aprovado' se o conceito for A, B ou C, e 'Reprovado' se o conceito for 
D ou E.

Mais conteúdo relacionado

PPTX
Algop - aula 05
PPT
Algop - aula 06
PDF
1ª lista de_algoritmos
PPT
Algop - aula 06 resposta exercícios
PPT
Algop - aula 04
PDF
Lista de exercícios resolvidos
PPT
Aula 3 - 06/04/11
TXT
Exercicios resolvidos visuAlg
Algop - aula 05
Algop - aula 06
1ª lista de_algoritmos
Algop - aula 06 resposta exercícios
Algop - aula 04
Lista de exercícios resolvidos
Aula 3 - 06/04/11
Exercicios resolvidos visuAlg

Mais procurados (20)

PDF
Relatorio de Estrutura de Dados
PPTX
Aula 2 - Programação 1
PPT
Algoritmo
PDF
Lista de exercício resposta
PDF
Lista exercícios
PPTX
Aula 5 - Programação 1
PPTX
Aula 1 - Programação 1
ODT
Lista Exercicios 05
PPTX
Algoritmo e lógica de programação - aula 5
TXT
Exercicios resolvidos visu alg vetores
PDF
Ficha RevisõEs Mii
ODT
Lista Exercicios 01
PDF
Aula03 repeticao
PPTX
Algoritmo e lógica de programação - aula 6
PDF
Algoritmos resolvidos lista 2
PDF
Fundamentos de Programação
DOCX
Alguns algoritmos resolvidos
PDF
Lógica de Programação - Unimep/Pronatec - Aula10
PDF
Lógica de Programação com Javascript - Aula #01
PPTX
Algoritmo e lógica de programação - aula 3
Relatorio de Estrutura de Dados
Aula 2 - Programação 1
Algoritmo
Lista de exercício resposta
Lista exercícios
Aula 5 - Programação 1
Aula 1 - Programação 1
Lista Exercicios 05
Algoritmo e lógica de programação - aula 5
Exercicios resolvidos visu alg vetores
Ficha RevisõEs Mii
Lista Exercicios 01
Aula03 repeticao
Algoritmo e lógica de programação - aula 6
Algoritmos resolvidos lista 2
Fundamentos de Programação
Alguns algoritmos resolvidos
Lógica de Programação - Unimep/Pronatec - Aula10
Lógica de Programação com Javascript - Aula #01
Algoritmo e lógica de programação - aula 3
Anúncio

Destaque (7)

PPT
Algop - aula 08
PPT
Algop - aula 07 resposta exercícios
PPT
Algop - aula 02
PPTX
Algoritmos e Técnicas de Programação - Aula 01
PDF
Big Data: Explore Hadoop and BigInsights self-study lab
PPT
Estruturas de Dados em C#
PPTX
Introdução a linguagem C# (CSharp)
Algop - aula 08
Algop - aula 07 resposta exercícios
Algop - aula 02
Algoritmos e Técnicas de Programação - Aula 01
Big Data: Explore Hadoop and BigInsights self-study lab
Estruturas de Dados em C#
Introdução a linguagem C# (CSharp)
Anúncio

Semelhante a Algop - aula 03 (20)

PPT
Aula 3 algoritmos
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
PPT
Introdução a Algoritmos e Programas.ppt
PPTX
Algoritmo e lógica de programação - Aula 1
PDF
Caderno de exercicios algoritmos-v.1.3
PPTX
Aula 5 algoritimos(continuacao)
PPTX
Aula 3-lógica.pptx
PDF
mod2-mecanismos
PPTX
Logica de Programação - Aula (1) (1).pptx
ODP
Algoritmo aula 01-f
PDF
Aula 02 - Lógica de programação.pdfddddddddddddddddddddddd
PPT
Algoritmos
PPTX
decisão aninhada programaçao de cmputadores
PDF
Aula 5 – Algoritmos – Estrutura Sequencial – Parte 2.pdf
PPTX
Logica de Programacao
PPTX
algoritmo-m03-tiposdedados-151221150545.pptx
DOC
Algoritmos e linguagem pascal
Aula 3 algoritmos
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Unidade-I-Introdução-a-Algoritmos-e-Programas.ppt
Introdução a Algoritmos e Programas.ppt
Algoritmo e lógica de programação - Aula 1
Caderno de exercicios algoritmos-v.1.3
Aula 5 algoritimos(continuacao)
Aula 3-lógica.pptx
mod2-mecanismos
Logica de Programação - Aula (1) (1).pptx
Algoritmo aula 01-f
Aula 02 - Lógica de programação.pdfddddddddddddddddddddddd
Algoritmos
decisão aninhada programaçao de cmputadores
Aula 5 – Algoritmos – Estrutura Sequencial – Parte 2.pdf
Logica de Programacao
algoritmo-m03-tiposdedados-151221150545.pptx
Algoritmos e linguagem pascal

Último (20)

PPTX
Integração SMS introdutorio 111111111111
PDF
Treinamento apostila_seguranca_na_soldagem_rev1
PPTX
Apresentação de brainstorm geométrica colorida.pptx
PDF
Aula 2 Normas Regulamentadoras (PARTE I).pdf
PDF
PROJETO DE PESQUISA PRONTO BIOMEDICINA 2025 ABNT.pdf
PPTX
TR_Seguranca em Elevadores de Obras.pptx
DOCX
Integração de Segurança do Trabalho.docx
PDF
Aula_1-ConceitosBasicos de circuito eletricos.pdf
PPTX
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
PPTX
Aula 04 - Fisica teorica e experimental.pptx
PDF
Treinamento Apostila eletrodos revestidos_ok
PPTX
MAPEAMENTO DE RISCOS - MAPA DE RISCOS 1.pptx
PDF
Aula 12-13 e 14 - UC2 NR 23 Combate a Incêndios.pdf
PPTX
Treinamento NR-18 - Canteiro de obras.pptx
PPTX
Mecânico de Máquinas Industriais .pptx
PDF
TBSSMA_Tubarão_05_10_20 - SSMA.......pdf
PPTX
erro balela so para baixar naã perca tempo.pptx
PPTX
Apresentação PF MACAVE no curso de mestrado em Ciencias florestais
PPTX
2 - introducao a ciencia do solo para o curso de agronomia.ppt
PDF
eletronica-basica_capitulo_01_2017_1s.pdf
Integração SMS introdutorio 111111111111
Treinamento apostila_seguranca_na_soldagem_rev1
Apresentação de brainstorm geométrica colorida.pptx
Aula 2 Normas Regulamentadoras (PARTE I).pdf
PROJETO DE PESQUISA PRONTO BIOMEDICINA 2025 ABNT.pdf
TR_Seguranca em Elevadores de Obras.pptx
Integração de Segurança do Trabalho.docx
Aula_1-ConceitosBasicos de circuito eletricos.pdf
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
Aula 04 - Fisica teorica e experimental.pptx
Treinamento Apostila eletrodos revestidos_ok
MAPEAMENTO DE RISCOS - MAPA DE RISCOS 1.pptx
Aula 12-13 e 14 - UC2 NR 23 Combate a Incêndios.pdf
Treinamento NR-18 - Canteiro de obras.pptx
Mecânico de Máquinas Industriais .pptx
TBSSMA_Tubarão_05_10_20 - SSMA.......pdf
erro balela so para baixar naã perca tempo.pptx
Apresentação PF MACAVE no curso de mestrado em Ciencias florestais
2 - introducao a ciencia do solo para o curso de agronomia.ppt
eletronica-basica_capitulo_01_2017_1s.pdf

Algop - aula 03

  • 1. Algoritmos e Programação Prof. Marcos Saúde marcosr@pitagoras.com.br
  • 2. Linguagem C#  Conhecendo mais da linguagem C#  Seqüências de Escape  Adição de referências  Substituições na Leitura  Operadores Aritméticos, Relacionais e Lógicos  Estruturas de Controle (if/else, switch)
  • 19. Operadores lógicos e relacionais  Os operadores lógicos disponíveis na linguagem C são:  E ( && )  Ou ( || )  Não ( ! )  Tabela verdade dos operadores lógicos p q p && q V V V V F F F V F F F F p q p || q V V V V F V F V V F F F p !p V F F V
  • 21. Estrutura de Decisão  O fluxo de controle de um programa diz respeito a como as instruções serão encadeadas;  Sequencia lógica é o que já temos intuitivamente assimilado com os estudos ao calcular fórmulas simples tipo conversão de temperatura de Fahrenheit para Celsius;  No caso, uma instrução é executada após a outra, sem desvios, sem repetições;  É o exemplo de programas resolvidos em que o ponto chave era algum cálculo com base em uma fórmula;
  • 22. Estrutura de Decisão  Com as estruturas de decisão, a sequencia de instruções a executar é alterada conforme uma decisão baseada em alguma operação lógica;  Dois são os comandos para implementar estruturas de decisão  Se (no C# é if)  Caso (no C# é switch)
  • 23. Estrutura de Decisão  Veremos primeiro o comando de decisão if:  Empregado em situações  De condições flexíveis combinando operações relacionais e lógicas;  Que apresentam apenas duas alternativas de fluxo. Para se obter mais caminhos, vários IF’s podem ser combinados;  O comando “IF” escrito no C# é tratado com a seguinte sintaxe if (condição) { ... } else { ... }
  • 24. Estrutura de Decisão  Exemplo: ... int numero; Console.Write( “Digite um número:”); numero = Int32.Parse(Console.ReadLine()); if ( (numero % 2) == 0 ) { Console.Write(“O numero é par.”); } else { Console.Write(“O numero é ímpar.”); }. ..
  • 25. Estrutura de Decisão  Considere o seguinte trecho de algoritmo:  início  real x,y;  leia(x,y);  se ((12-7) > y) E ((13-x) >= 27) então  início  se (x * y >0) então  escreva ('Jogo 1')  senão  escreva ('Jogo 2');  fim  senão  início  se (x * y >0) então  escreva ('Jogo 3');  senão  escreva ('Jogo 4');  fim  fim
  • 26. Estrutura de Decisão  O que acontece na execução do algoritmo dadas as seguintes condições?  a) O primeiro valor entrado é 5 e o segundo é 14.  b) O primeiro valor entrado é -5 e o segundo é 14.  c) O primeiro valor entrado é -14 e o segundo é -5.  d) O primeiro valor entrado é -14 e o segundo é 5;
  • 27. Exercícios  1) Faça um algoritmo que leia os valores A, B, C e imprima na tela se a soma de A + B é menor que C;  2) Faça um algoritmo que leia o nome, o sexo e o estado civil de uma pessoa. Caso sexo seja “F” e estado civil seja “CASADA”, solicitar o tempo de casada (anos);
  • 28. Para casa  Os exercícios a seguir foram elaborados para que o aluno procure exercitar os conhecimentos até aqui adquiridos. A implementação dos algoritmos podem ser expressos em Linguagem Algorítmica, mas é recomendável que se tente implementá-los usando a ferramenta de desenvolvimento utilizada em aula (Visual Studio – Visual C#). Na prática é que serão identificadas as dificuldades encontradas na aprendizagem. Nas próximas aulas serão trazidos os gabaritos para conferência das respostas – marcaremos oportunamente (antes da 1ª prova) aula(s) em dia de sábado para os que necessitarem dirimir as dúvidas;  1) Desenvolva um algoritmo que lê dois valores inteiros e exibe uma mensagem indicando qual o maior;  2) Desenvolva um algoritmo que lê três números inteiros A, B e C, e exibe uma mensagem indicando o maior e o menor. Considere que os valores devam ser distintos;
  • 29. Para casa  3) Preparar um algoritmo para ler os comprimentos dos três lados de um triângulo (S1, S2 e S3) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de S1, S2 e S3 e B e C os outros lados. Então:  Se A >= B + C Nenhum triângulo é formado  Se A2 = B2 + C2 Um triângulo retângulo é formado  Se A2 > B2 + C2 Um triângulo obtusângulo é formado  Se A2 < B2 + C2 Um triângulo acutângulo é formado  Obs: Para se obter o quadrado de um número no C# há duas possibilidades:  Multiplicar o número por ele mesmo: A*A  Utilizar o método Math.Pow: Math.Pow(A,2) – eleva o valor da variável A ao quadrado (A deve ser declarada como tipo double);
  • 30. Para casa  4) Preparar um algoritmo para ler os comprimentos dos três lados de um triângulo (S1, S2 e S3) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de S1, S2 e S3 e B e C os outros lados. Então:  Se A >= B + C Nenhum triângulo é formado  Se A2 = B2 + C2 Um triângulo retângulo é formado  Se A2 > B2 + C2 Um triângulo obtusângulo é formado  Se A2 < B2 + C2 Um triângulo acutângulo é formado  Obs: Para se obter o quadrado de um número no C# há duas possibilidades:  Multiplicar o número por ele mesmo: A*A  Utilizar o método Math.Pow: Math.Pow(A,2) – eleva o valor da variável A ao quadrado (A deve ser declarada como tipo double);
  • 31. Para casa  5) O Departamento do Meio Ambiente mantém três listas de indústrias conhecidas por serem altamente poluentes da atmosfera. Os resultados de várias medidas são combinados para formar o que é chamado de “índice de poluição”. Isto é controlado regularmente. Normalmente os valores caem entre 0.05 e 0.25. Se o valor atingir 0.30, as indústrias da lista A serão chamadas a suspender as operações até que os valores retornem ao intervalo normal. Se o índice atingir 0.40, as indústrias da lista B serão notificadas também. Se o índice exceder 0.50, indústrias de todas as três listas serão avisadas para suspenderem as atividades. Faça um algoritmo que leia o índice de poluição e indique as notações apropriadas;
  • 32. Para casa  6) Faça um algoritmo que leia dois valores inteiros A e B. Se os valores forem iguais deverá se somar os dois, caso contrário multiplique A por B. Ao final de qualquer um dos cálculos deve-se atribuir o resultado para uma variável C e mostrar seu conteúdo na tela;
  • 33. Para casa  7) Encontrar o dobro de um número caso ele seja positivo e o seu triplo caso seja negativo, exibindo na tela o resultado.  8) Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:  para homens: (72.7 * h) – 58;  para mulheres: (62.1 * h) – 44.7.
  • 34. Para casa  9) O IMC – Indice de Massa Corporal é um critério da Organização Mundial de Saúde para dar uma indicação sobre a condição de peso de uma pessoa adulta. A fórmula é IMC = peso / ( altura ) 2. Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condição de acordo com a tabela abaixo.
  • 35. Para casa  10) Escreva um algoritmo que leia o número de identificação, as 3 notas obtidas por um aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação, e calcule a média de aproveitamento, usando a fórmula:  A atribuição dos conceitos obedece a tabela abaixo. O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de aproveitamento, o conceito correspondente e a mensagem 'Aprovado' se o conceito for A, B ou C, e 'Reprovado' se o conceito for D ou E.