sentencias de control 2010 if sabatino - …...ejemplo #1: calcule el total a pagar por la compra de...
TRANSCRIPT
2010
UNAN – LEON
FACULTAD DE CIENCIA Y TECNOLOGIA
Departamento de Computación
Autor: MSc. Ana María Salgado G.
Asignatura:
Programación II
Ingeniería en Sistemas Sabatino
SENTENCIAS DE CONTROL SENTENCIA if
Este documento es una extracción del libro Programación en C, metodología, estructura de datos y objetos, de Luis Joyanes Aguilar e Ignacio Zahonero Martínez. Fue recopilado por la MsC. Ana María Salgado G. y completado con ejercicios obtenidos de otros textos e Internet.
Sentencias de control
MSc. Ana María Salgado G. 2
ESTRUCTURAS DE CONTROL
Las estructuras de control controlan el flujo de ejecución de un programa o
función. Las estructuras de control permiten combinar instrucciones o sentencias
individuales en una simple unidad lógica con un punto de entrada y un punto de
salida.
Las instrucciones o sentencias se organizan en tres tipos de estructuras de control
que sirven para controlar el flujo de la ejecución: secuencia, selección y repetición.
Hasta este momento sólo se ha utilizado el flujo secuencial. Una sentencia
compuesta es un conjunto de sentencias encerradas entre llaves ({ y } ) que se
utiliza para especificar un flujo secuencial.
{
sentencia1;
sentencia2;
.
.
.
sentencian;
}
El control fluye de la sentencia1, a la sentencia2, y así sucesivamente. Sin embargo
existen problemas que requieren etapas con dos o más opciones o alternativas a
elegir en función del valor de una condición o expresión.
Sentencias de control
MSc. Ana María Salgado G. 3
LA SENTENCIA if
En C, la estructura de control de selección es una sentencia if. La sentencia if tiene
dos alternativas o formatos posibles. El formato más sencillo tiene la sintaxis
siguiente:
if(condición)
sentencia;
condición es una expresión entera lógica
sentencia es cualquier sentencia ejecutable, que se ejecutará sólo si la condición
toma un valor distinto de cero.
La sentencia if funciona de la siguiente manera:
Cuando se llega a la sentencia if dentro de un programa, se evalúa la condición
entre paréntesis que viene a continuación de if. Si condición es verdadera, se
ejecuta sentencia; en caso contrario no se ejecuta sentencia. En cualquier caso la
ejecución del programa continúa con la siguiente sentencia del programa.
Ejemplo #1:
Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre
la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses
siempre y cuando estos excedan a $7000, y en ese caso desea saber cuánto dinero
tendrá finalmente en su cuenta.
Pseudocódigo:
Inicio
Leer p_int, cap
interes = cap * p_int
Si int > 7000 entonces
capf = cap + interes
Fin-si
Imprimir capf
Fin
Sentencias de control
MSc. Ana María Salgado G. 4
Solución en Lenguaje C:
//if1.c
#include <stdio.h>
float p_int, cap, interes, capf;
void main(void)
{
printf("Introduzca su capital inicial: ");
scanf("%g", &cap);
printf("Cual es el porcentaje de interes?: ");
scanf("%g", &p_int);
interes = cap * p_int;
if(interes > 7000)
capf = cap + interes;
printf("El capital final es: %.2f\n",capf);
}
Ejecución:
Sentencias de control
MSc. Ana María Salgado G. 5
Ejemplo #2:
Este programa lee dos números enteros y comprueba cuál es el valor del resto de
la división (n %d). Si el resto es cero, n es divisible por d (en nuestro caso 36 es
divisible por 4, ya que 36 / 4 = 9 y el resto es 0)
Pseudocódigo:
Inicio Leer n,d Si (n mod d = 0) entonces
Imprimir n, “es divisible por “,d Fin-si Fin
Solución en Lenguaje C:
//divisibilidad.c
#include <stdio.h>
void main(void)
{
int n, d;
printf("Introduzca dos enteros:");
scanf("%d %d",&n,&d);
if(n % d = = 0)
printf("%d es divisible por %d \n",n,d);
}
Ejecución:
Sentencias de control
MSc. Ana María Salgado G. 6
Ejemplo #3:
Construya un programa tal, que dados como datos los valores enteros P y Q,
determine si los mismos satisfacen la siguiente expresión:
P3 + Q4 – 2P2 < 680
En caso afirmativo debe imprimir los valores de P y Q.
//expresion.c
#include <stdio.h>
#include <math.h>
int p,q,r;
void main(void)
{
printf("Introduzca dos enteros:");
scanf("%d %d",&p,&q);
r = pow(p,3) + pow(q,4) – 2 * pow(p,2);
if(r < 680)
printf("p = %d, q = %d, r = %d\n",p,q,r);
}
Ejemplo #4: La tangente de un ángulo se define como el cociente entre el seno y el coseno de
dicho ángulo.
tan(αααα) = sen(αααα)
cos(αααα)
Construya un programa, que permita calcular la tangente de un ángulo,
considerando que se conoce el valor del seno y del coseno del mismo.
//tang.c
#include <stdio.h>
float seno,coseno,tang;
void main(void )
{
printf("seno= ");
Sentencias de control
MSc. Ana María Salgado G. 7
scanf("%f",&seno);
printf("coseno= ");
scanf("%f",&coseno);
if(coseno != 0)
{
tang=seno/coseno;
printf("El valor de la tangente es: %.4f",tang);
}
}
Ejemplo #5:
El siguiente ejercicio, visualiza la tarifa de luz según el gasto de corriente
eléctrica. Para un gasto menor de 1000Kw por hora, la tarifa es 1.2, entre 1000 y
1850Kw por hora es 1.0 y mayor de 1850Kw por hora es 0.9
Pseudocódigo:
Inicio
TARIFA1 = 1.2
TARIFA2 = 1.0
TARIFA3 = 0.9
Leer gasto
Si(gasto < 1000) entonces
tasa = TARIFA1;
Fin-si
Si(gasto >= 1000 and gasto <= 1850) entonces
tasa = TARIFA2;
Fin-si
Si(gasto > 1850)
tasa = TARIFA3;
Fin-si
Imprimir "Tasa que le corresponde a “,gasto, “Kw x h es de “, tasa
Fin
Sentencias de control
MSc. Ana María Salgado G. 8
Solución en Lenguaje C:
//tarifaluz.c
#include <stdio.h>
#define TARIFA1 1.2
#define TARIFA2 1.0
#define TARIFA3 0.9
void main()
{
float gasto, tasa;
printf("\n Gasto de corriente: ");
scanf("%f",&gasto);
if(gasto < 1000)
tasa = TARIFA1;
if(gasto >=1000 && gasto <= 1850)
tasa = TARIFA2;
if(gasto > 1850)
tasa = TARIFA3;
printf("\n Tasa que le corresponde a %.1f Kw x h es de %f \n",gasto, tasa);
}
Ejercicios propuestos
1. Escriba un programa que compare un número introducido por el usuario y
compruebe si el número es positivo, negativo o nulo.
2. En un almacén se hace un 20% de descuento a los clientes cuya compra
supere los $1000 ¿Cuál será la cantidad que pagará una persona por su
compra?
Sentencias de control
MSc. Ana María Salgado G. 9
3. El número de sonidos emitidos por un grillo en un minuto, es una función
de la temperatura. Como resultado de esto, es posible determinar el nivel
de la temperatura haciendo uso de un grillito como termómetro. La
fórmula para la función es:
t = n/4 + 40
Escriba un programa que le permita calcular la temperatura, teniendo en
cuenta el número de sonidos emitidos por el grillo.
SENTENCIA if DE DOS ALTERNATIVAS: if – else
Un segundo formato de la sentencia if es la sentencia if-else. Este formato de la
sentencia if tiene la siguiente sintaxis:
if(condición)
sentencia1
else
sentencia2
condición Expresión lógica que determina la acción a ejecutar.
sentencia1 Acción que realiza si la condición lógica es verdadera.
sentencia2 Acción que se ejecuta si la expresión lógica es falsa.
En este formato sentencia1 y sentencia2 son individualmente, o bien una única
sentencia que termina con punto y coma(;) o un grupo de sentencias encerrado
entre llaves. Se evalúa la condición. Si condición es verdadera, se ejecuta
sentencia1 y en caso contrario se ejecuta sentencia2.
Sentencias de control
MSc. Ana María Salgado G. 10
Ejemplo #1: Calcule el total a pagar por la compra de camisas. Si se compran tres camisas o
más se aplica un descuento del 20% sobre el total de la compra y si son menos
de tres camisas un descuento del 10%.
//descuento.c
#include <stdio.h>
int numcamisas;
float prec, totcomp,totpag;
void main(void)
{
printf("Cuantas camisas comprara?");
scanf("%d",&numcamisas);
printf("Ingrese el precio:");
scanf("%f",&prec);
totcomp = numcamisas * prec;
if(numcamisas >= 3)
totpag = totcomp - totcomp * 0.20;
else
totpag = totcomp - totcomp * 0.10;
printf("Total a pagar = %.2f \n",totpag);
}
Ejemplo #2:
Calcular el número de pulsaciones que debe tener una persona por cada 10
segundos de ejercicio aeróbico; la fórmula que se aplica cuando el sexo es
femenino es:
numpulsaciones = (220 - edad)/10
y si el sexo es masculino:
numpulsaciones = (210 - edad)/10
Sentencias de control
MSc. Ana María Salgado G. 11
//pulsaciones.c
#include <stdio.h>
int edad, numpulsaciones;
char sexo;
void main(void)
{
printf("Sexo(F/M):");
sexo = getchar();
printf("Ingrese la edad:");
scanf("%d",&edad);
if(sexo == 'F' || sexo == 'f')
numpulsaciones = (220 - edad)/10;
else
numpulsaciones = (210 - edad)/10;
printf("Numero de pulsaciones = %d \n",numpulsaciones);
}
Ejemplo #3:
Una compañía de seguros está abriendo un dpto. de finanzas y estableció un
programa para captar clientes, que consiste en lo siguiente: Si el monto por el
que se efectúa la fianza es menor que $50 000 la cuota a pagar será por el 3% del
monto, y si el monto es mayor que $50 000 la cuota a pagar será el 2% del monto.
La afianzadora desea determinar cuál será la cuota que debe pagar un cliente.
//fianza.c
#include <stdio.h>
float montofianza, cuota;
void main(void)
{
printf("Ingrese el monto de la fianza:");
scanf("%f",&montofianza);
Sentencias de control
MSc. Ana María Salgado G. 12
if(montofianza < 50000)
cuota = montofianza * 0.03;
else
cuota = montofianza * 0.02;
printf("Cuota = %.2f \n",cuota);
}
Ejemplo #4: Una empresa quiere hacer una compra de varias piezas de la misma clase a una
fábrica de refacciones. La empresa, dependiendo del monto total de la compra,
decidirá qué hacer para pagar al fabricante.
Si el monto total de la compra es $500 000 ó más, la empresa tendrá la
capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir
prestado al banco un 30% y el resto lo pagará solicitando un crédito al fabricante.
Si el monto total de la compra no excede de $500 000, la empresa tendrá
capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagará
solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le
pague a crédito. Realice el pseudocódigo correspondiente al programa en
Lenguaje C presentado:
//refacciones.c
#include <stdio.h>
float costopza, totcomp, cantinv, prestamo, credito, interes;
int numpza;
void main( )
{
printf("Costo de la pieza: ");
scanf("%f", &costopza);
printf("Numero de piezas: ");
scanf("%d", &numpza);
totcomp = costopza * numpza;
Sentencias de control
MSc. Ana María Salgado G. 13
if(totcomp >= 500000)
{
cantinv = totcomp * 0.55;
prestamo = totcomp * 0.30;
credito = totcomp * 0.15;
}
else
{
cantinv = totcomp * 0.70;
prestamo = 0;
credito = totcomp * 0.30;
}
interes = credito * 0.20;
printf("\nCantidad invertida: %.2f\nPrestamo:%.2f\n",cantinv, prestamo);
printf("Credito = %.2f\nIntereses = %.2f\n",credito, interes);
}
Ejemplo #5: Escriba un programa que determine si un número entero, es divisible por otro
número entero, leídos ambos del teclado.
//divisibilidad2.c
#include <stdio.h>
void main(void)
{
int n, d;
printf("Introduzca dos enteros:");
scanf("%d %d",&n,&d);
if(n % d = = 0)
printf("%d es divisible por %d \n",n,d);
else
printf("%d no es divisible por %d \n",n,d);
}
Sentencias de control
MSc. Ana María Salgado G. 14
Ejemplo #6: Dada la función f(x) calcular la función para un valor dado x y visualizarlo en
pantalla.
x2 – x para x <= 0.0
-x2 + 3x para x > 0
//funcion.c
#include <stdio.h>
#include <math.h>
void main()
{
float f, x;
printf("Elige un valor de x: ");
scanf("%f",&x);
/* seleccion del rango en que se encuentra x */
if(x <= 0.0)
f = pow(x,2) - x;
else
f = -pow(x,2) + 3 * x;
printf("f(%.1f) = %.3f", x,f);
}
f(x)=
Sentencias de control
MSc. Ana María Salgado G. 15
Ejercicios propuestos
1. Un obrero necesita calcular su salario semanal, el cual se obtiene de la
siguiente manera:
• Si trabaja 40 horas o menos se le paga $16 por hora
• Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40
horas y $20 por cada hora extra.
2. Determinar si un alumno aprueba o reprueba un curso, sabiendo que
aprobará si su promedio de tres calificaciones es mayor o igual a 70;
reprueba en caso contrario. Para ambos casos, imprima también su
promedio.
3. Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber
cuántas calorías consume su cuerpo durante todo el tiempo que realice una
misma actividad. Las actividades que tiene permitido realizar son
únicamente dormir o estar sentado en reposo. Los datos que tiene son que
estando dormido consume 1.08 calorías por minuto y estando sentado en
reposo consume 1.66 calorías por minuto.
4. Calcular el mayor de dos números leídos del teclado y visualizarlo en
pantalla.
5. Calcular el total que una persona debe pagar en una llantera, si el precio de
cada llanta es de $800 si se compran menos de 5 llantas y de $700 si se
compran 5 o más.
6. Una empresa de bienes raíces ofrece casas de interés social, bajo las
siguientes condiciones: Si los ingresos del comprador son $8000 o más, el
enganche será del 15% del costo de la casa y el resto se distribuirá en pagos
mensuales, a pagar en diez años. Si los ingresos del comprador son menos
de $8000, el enganche será del 30% del costo de la casa y el resto se
distribuirá en pagos mensuales a pagar en 7 años. La empresa quiere
obtener cuanto debe pagar un comprador por concepto de enganche y
cuanto por cada pago parcial.
Sentencias de control
MSc. Ana María Salgado G. 16
7. Una persona desea iniciar un negocio, para lo cual piensa verificar cuánto
dinero le prestará el banco por hipotecar su casa. Tiene una cuenta bancaria,
pero no quiere disponer de ella a menos que el monto por hipotecar su casa
sea muy pequeño. Si el monto de la hipoteca es menor que $1 000 000
entonces invertirá el 50% de la inversión total y un socio invertirá el otro
50%. Si el monto de la hipoteca es de $ 1 000 000 o más, entonces invertirá el
monto total de la hipoteca y el resto del dinero que se necesite para cubrir la
inversión total se repartirá a partes iguales entre el socio y él.
SENTENCIAS if – else ANIDADAS
Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama
falsa, es a su vez una sentencia if. Una sentencia if anidada se puede utilizar para
implementar decisiones con varias alternativas o multialternativas.
Sintaxis:
if(condición1)
sentencia1
else if(condición2)
sentencia2
.
.
. else if(condición n)
sentencia n
else
sentencia e
Sentencias de control
MSc. Ana María Salgado G. 17
Ejemplo:
/* incrementar contadores de números positivos, números negativos o ceros */
La ejecución de la sentencia if anidada se realiza como sigue:
Se comprueba la primera condición (x > 0); si es verdadera, num_pos se incrementa
en 1 y se salta el resto de la sentencia if. Si la primera condición es falsa, se
comprueba la segunda condición (x < 0); si es verdadera num_neg se incrementa en
uno; en caso contrario se incrementa num_ceros en uno. Es importante considerar
que la segunda condición se comprueba sólo si la primera condición es falsa.
Ejemplo #1: Haga un programa que permita calcular el valor de f(x), según la expresión:
X2 si (x mod 4)=0
X/6 si (x mod 4)=1
√√√√x si (x mod 4)=2
x3 + 5 si (x mod 4)=3
if (x > 0) num_pos = num_pos + 1; else
if(x < 0) num_neg = num_neg + 1; else num_ceros = num_ceros + 1;
f(x)=
Sentencias de control
MSc. Ana María Salgado G. 18
//if3.c
#include <stdio.h>
#include <math.h>
int x;
float y ;
void main(void)
{
printf("x = ");
scanf("%d",&x);
if (x % 4 == 0)
y = x * x;
else if (x % 4 == 1)
y = (float)x / 6;
else if(x % 4 == 2)
y = sqrt((double)x);
else if(x % 4 == 3)
y = pow(x,3) + 5;
printf(" y = %.2f \n ",y);
}
Ejemplo #2: Leer tres números enteros diferentes e imprimir el número mayor de los tres.
Pseudocódigo:
Inicio
Leer num1, num2, num3
Si (num1 > num2) and (num1 > num3) entonces
mayor = num1
si no
Si (num2 > num1) and (num2 > num3) entonces
mayor = num2
si no
Sentencias de control
MSc. Ana María Salgado G. 19
mayor = num3
Fin-si
Fin-si
Imprimir mayor
Fin
Solución en Lenguaje C:
//mayor.c
#include <stdio.h>
void main(void)
{
int num1, num2, num3, mayor;
printf("Introduzca tres enteros diferentes: ");
scanf("%d %d %d", &num1, &num2, &num3);
if((num1 > num2) && (num1 > num3))
mayor = num1;
else if((num2 > num1) && (num2 > num3))
mayor = num2;
else
mayor = num3;
printf("El mayor es %d \n",mayor);
}
Ejemplo #3:
Una frutería ofrece las manzanas con descuento según la siguiente tabla:
NUM. DE KILOS COMPRADOS % DESCUENTO
0 - 2 0%
2.01 - 5 10%
5.01 - 10 15%
10.01 en adelante 20%
Determinar cuánto pagará una persona que compre manzanas es esa frutería.
Sentencias de control
MSc. Ana María Salgado G. 20
//manzanas.c
#include <stdio.h>
float nkilos,compra, pkilo,pago, descuento;
void main(void)
{
printf("Cuantos kilos de manzana comprara?:");
scanf("%f",&nkilos);
printf("Precio del kilo?:");
scanf("%f",&pkilo);
compra = nkilos * pkilo;
if(nkilos >= 0 && nkilos <= 2)
descuento = 0;
else if(nkilos >= 2.01 && nkilos <= 5)
descuento = compra * 0.10;
else if(nkilos >= 5.01 && nkilos <= 10)
descuento = compra * 0.15;
else
descuento = compra * 0.20;
pago = compra - descuento;
printf("Pago = %.2f\n",pago);
}
Ejemplo #4:
El IMSS requiere clasificar a las personas que se jubilaran en el año de 1997.
Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por
antigüedad adulta. Las personas adscritas a la jubilación por edad deben tener
60 años o más y una antigüedad en su empleo de menos de 25 años. Las personas
adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y
una antigüedad en su empleo de 25 años o más.
Las personas adscritas a la jubilación por antigüedad adulta deben tener
60 años o más y una antigüedad en su empleo de 25 años o más.
Determinar en qué tipo de jubilación, quedara adscrita una persona.
Sentencias de control
MSc. Ana María Salgado G. 21
//jubilacion.c
#include <stdio.h>
int edad,ant;
void main(void)
{
printf("Edad?:");
scanf("%d",&edad);
printf("Antiguedad?:");
scanf("%d",&ant);
if(edad >= 60 && ant < 25)
printf("La jubilacion es por edad\n");
else if(edad < 60 && ant >= 25)
printf("La jubilacion es por antiguedad joven\n");
else if(edad >= 60 && ant >= 25)
printf("La jubilacion es por antiguedad adulta.\n");
else
printf("No tiene por que jubilarse\n");
}
Ejemplo #5: En una tienda de descuento se efectúa una promoción en la cual se hace un
descuento sobre el valor de la compra total según el color de la bolita que el cliente
saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento
alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul
un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá
pagar por su compra. Se sabe que sólo hay bolitas de los colores mencionados. Se
presenta su psudocódigo, realice el programa correspondiente en Lenguaje C:
Sentencias de control
MSc. Ana María Salgado G. 22
Inicio
leer tc, b
si b = “blanco” entonces
d = 0
si no
si b = “verde” entonces
d = tc*0.10
si no
si b = “amarilla” entonces
d = tc*0.25
si no
si b = “azul” entonces
d = tc*0.50
si no
d = tc
Fin-si
Fin-si
Fin-si
Fin-si
Tpagar = tc – d
Imprimir Tpagar
Fin
Solución en lenguaje C:
//colorbolita.c
#include <stdio.h>
#include <string.h>
float tc, d, tpagar;
char color[20];
void main(void)
{
printf("Ingrese el total de la compra: ");
scanf("%f",&tc);
printf("Color de la bolita?: ");
fflush(stdin);
gets(color);
Sentencias de control
MSc. Ana María Salgado G. 23
if(strcmp(color, "blanco") == 0)
d=0;
else if(strcmp(color,"verde") == 0)
d = tc*0.10;
else if(strcmp(color,"amarilla") == 0)
d = tc*0.25;
else if(strcmp(color,"azul") == 0)
d= tc*0.50;
else
d = tc;
tpagar = tc - d;
printf("Total a pagar = %.2f\n", tpagar);
}
Ejercicios propuestos
1. Leer 2 números enteros; si son iguales que los multiplique, si el primero es
mayor que el segundo que los reste y si no que los sume.
2. Calcular la utilidad que un trabajador recibe en el reparto anual de
utilidades si este se le asigna como un porcentaje de su salario mensual que
depende de su antigüedad en la empresa de acuerdo con la sig. tabla:
Tiempo Utilidad
Menos de 1 año 5 % del salario
1 año o más y menos de 2 años 7% del salario
2 años o más y menos de 5 años 10% del salario
5 años o más y menos de 10 años 15% del salario
10 años o más 20% del salario
Sentencias de control
MSc. Ana María Salgado G. 24
3. Un individuo debe realizar un muestreo para determinar en qué categoría
se encuentran las personas que viven en su zona habitacional. Se
determinan las categorías con base en la siguiente tabla:
CATEGORIA EDAD
Niños 0 - 12
Jóvenes 13 - 29
Adultos 30 - 59
Viejos 60 en adelante
4. Determinar la cantidad de dinero que recibirá un trabajador por concepto de
las horas extras trabajadas en una empresa, sabiendo que cuando las horas
de trabajo exceden de 40, el resto se consideran horas extras y que estas se
pagan al doble de una hora normal cuando no exceden de 8; si las horas
extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las
horas normales y el resto al triple.
5. En una fábrica de computadoras se planea ofrecer a los clientes un
descuento que dependerá del número de computadoras que compre. Si las
computadoras son menos de cinco se les dará un 10% de descuento sobre el
total de la compra; si el número de computadoras es mayor o igual a cinco
pero menos de diez se le otorga un 20% de descuento; y si son 10 o más se
les da un 40% de descuento. El precio de cada computadora es de $11,000
6. La Cía. Automovilística Mexicana, S.A. de C.V premia anualmente a sus
mejores vendedores de acuerdo a la siguiente tabla:
Si vendió Le corresponde de Comisión
sobre ventas totales
1,000,000 <= v < 3,000,000 3%
3,000,000 <= v < 5,000,000 4%
5,000,000 <= v < 7,000,000 5%
7,000,000 <= v 6%
Diseñar un programa que lea las ventas de un vendedor y que escriba la comisión
que le corresponde.