Bloque 3.2
Operadores aritméticos Suma <+> : x + y Resta <-> : x y Multiplicación <*>: x * y División </> : x / y Módulo <%> : x % y (resto de la división Si los operandos son enteros tipo del resultado es entero. Si hay un real el resultado es tipo real
Expresiones aritméticas Ejemplo: 5x 4 3 z 10y 6 Las expresiones se evaluan de izquierda a derecha Las multiplicaciones y divisiones prevalecen sobre las sumas y restas Para especificar el orden de operación se utilizán paréntesis
Operadores lógicos y relacionales Operadores relacionales - == : es igual? -!= : es diferente? - < : es menor? - > : es mayor? - <= : es menor o igual? - >= : es mayor o igual? Operadores lógicos -! : NOT : Negación lógica -> cambia el valor booleano - && : AND : Es un y lógico -> verdad si ambos son verdad - : OR : Es on o inclusivo -> verdad si al menos uno es verdad - ^ : XOR : Es un o exclusivo -> verdad si ambos son diferentes
Ejemplos Números x de 0 a 10: (x>=0) && (x<=10) Números x fuera del intervalo [0,10]: (x<0) (x>10)
Estructuras de control Estructuras condicionales - if - else - encadenamiento y estructuras anidadas - switch Estructuras repetitivas - El bucle while - El bucle for - Bucles anidados
Programación estructurada IDEA PRINCIPAL: La estructura de control de un programa sólo debe tener un punto de entrada y un punto de salida Este tipo de estructura es predecible y disciplinada, no salta de un lado a otro de forma impredecible. Si no, será muy complicado depurar un programa y probarlo
If La sentencia if nos permite elegir si se ejecuta o no un bloque de instrucciones. Sintaxis if (condición) instruccion1(); if (condición) { instruccion2();
Consideraciones acerca del uso de la sentencia if - Olvidar los paréntesis al poner la condición del if es un error sintáctico (los paréntesis son necesarios) - Confundir el operador de comparación == con el operador de asignación = puede producir errores inesperados Un error común: if (condición); sentencia; es interpretado como if (condición) ; // Sentencia vacía sentencia; - Los operadores de comparación ==,! =, <= y >= han de escribirse sin espacios. - => y =< no son operadores válidos en C. Ejercicio: Pedir un número al usuario e imprimirlo sólo si es mayor de cero
else Permite ejecutar un trozo de código si una condición se cumple y otro si no se cumple if (condición) { bloque3 else { bloque4
Encadenamiento Podemos encadenar muchos if else para ver cuándo se cumplen unas condiciones específicas: #include <stdio.h> //libreria de entrada/salida void main () { float nota; printf( Déme una nota: ); //imprime por pantalla scanf( %f,¬a); //recoge lo que escribe un usuario if (nota>=9) { printf( Sobresaliente ); else if (nota>=7) { printf( Notable ); else if (nota>=5) { printf( Aprobado ); else { printf( Suspenso );
If anidados Los if se pueden ir anidando, es decir, incluir más sentencias if dentro de los trozos de código a ejecutar cuando se cumplen las condiciones #include <stdio.h> void main() { float a,b; printf( Escriba un número a dividir y un divisor ); scanf ( %f %f,&a,&b); if (b==0) { printf( La solución es infinito ); else { if (a==0) { printf( La solución es cero ); else { printf( La solución es &f, a/b );
switch Evaluamos una expresión o variable y en caso de que valga un valor determinado ejecutamos un trozo de código diferente switch (expresión) { case expr_cte1: sentencia1; case expr_cte2: sentencia2;... case expr_cten: sentencian; default: sentencia;
Estructuras repetitivas for y while - Se utilizan cuando tenemos que repetir un trozo de código muchas veces. En vez de escribir las mismas lineas muchas veces las metemos en un bucle de repetición. El bucle de repetición se ejecuta hasta que se deja de cumplir una condición
El bucle for El bucle se ejecuta hasta que una condición se deja de cumplir Sólo se puede utilizar cuando sabemos el número de iteraciones de nuestro bucle
Ejemplo: int j=0 for (int i=0; i < 100; i++) { j=j+i Qué hace este código?
while
Ejemplo: Sumar una serie de números hasta que el usuario introduzca un cero #include <stdio.h> void main() { double suma; // Suma de los datos double n; // Número leído desde el teclado suma = 0; // Inicialización de la suma printf ( Introduzca un número (0 para terminar) ); scanf ( %f, &n); while (n!=0) { suma = suma + n; printf ( Introduzca un número (0 para terminar): ); scanf ( %f, &n); printf( Suma total = %lf\n, suma);
Depuración - Depuramos un código cuando no tiene errores pero no da los resultados que nosotros esperamos. - Cuando los programas son largos o complicados el tiempo de depuración supera en muchas veces el tiempo de edición. - Los métodos más inmediatos de depuración: - ejecutando el código paso a paso - poniendo trazas en el código - mediante ventanas de inspección