Informática Tema5- Estructuras de Control en C:

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Condicional if y switch
ESTRUCTURAS DE CONTROL
Estructura selectiva anidada
Sesión 2 Programación Estructurada
Programación Interactiva Fundamentos de Programación
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Estructuras de decisión
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
Estructuras de decisión en C
Introducción a los Algoritmos
Estructuras de control
Estructuras de Control
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Curso de Programación I Parte III
Aprende C en una lluviosa tarde de domingo (en algo más de un par de horas) Sintaxis del lenguaje C para implementar un programa imperativo.
Estructuras de control
Ocurre con frecuencia, tanto en programación como en la vida real, que las decisiones que se nos pide tomar son más complicadas que una simple selección.
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
4: Control de flujo Condicionales y bucles

Estructuras de control
ESTRUCTURAS DE CONTROL
Tema 3 Entrada y Salida.
ESTRUCTURAS CONTROL SECUENCIAL
Programación de Computadores
LÓGICA - DECISIONES Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa.
Programación en Matlab
Switch en PHP Programación en Internet II. Switch en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa Elegir.
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Elseif en PHP Programación en Internet II. Elseif en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa Elseif.
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Capítulo 1 “Elementos de Programación”
SENTENCIAS DE CONTROL Ing. José Antonio Poma G..
Sentencias de selección
Informática Tema 5 - Estructuras de Control Estructuras de Repetición.
Informática Ingeniería en Electrónica y Automática Industrial
EXPRESIONES Y SENTENCIAS
Unidad II: Fundamentos de Programación

Estructuras de Control.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/08/2006.
Estructuras de Decisión Simples y Dobles
ESTRUCTURA DE DECISION LOGICA EN LENGUAJE C
Estructuras de control condicional
Estructuras de control Resolución de problemas y algoritmos.
Sesión 12: Python (3) – Estructura Decisión. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Programación Básica con NQC Patricio A. Castillo 10/05/2008.
Términos algoritmo diseñar algoritmo implementar algoritmo
Fundamentos de Computación Sentencias de Control I Parte.
ÁLGEBRA.
Cualquier x real Este valor, para cualquier x, siempre estará en el intervalo Supongamos entonces que y es un número conocido positivo Se trata de resolver.
Estructuras selectivas
Técnica Profesional en Programación de Sistemas de Información CONSTRUCCIÓN DE ELEMENTOS DE SOFTWARE 1 CURSO CONSTRUCCIÓN DE ELEMENTOS DE SOFTWARE 1 SESIÓN.
Estructuras de Decisión
Sentencia Condicional
Estructuras básicas Sentencias de control
CICLOS EN C – PARTE 3.
1 Desarrollo Web en Entorno Servidor Tema 4: Estructuras de control. Estructuras Selectivas. Operadores de comparación. Operadores Lógicos. Operadores.
ESTRUCTURA DE CONTROL REPETITIVAS: WHILE, DO… WHILE
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
LENGUAJE DE PROGRAMACIÓN
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
Prof. Yesika Medina ESTRUCTURAS DE DATOS OBJETIVO III. APLICAR A LOS PROGRAMAS EN.
Presenta: Dr. Jorge Rodríguez Arce.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Tema – 5 Construcciones condicionales Introducción En un programa es usual ejecutar unas instrucciones u otras en función de unas condiciones especificadas.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
ESTRUCTURAS SELECTIVAS Elaborado por; Ing. Alberto Pérez.
Estructuras Repetitivas Consideraciones. Estructuras Repetitivas  Son aquellas que van a ejecutar un número determinado de veces una instrucción o un.
Transcripción de la presentación:

Informática Tema5- Estructuras de Control en C: Estructuras selectivas o condicionales

Estructuras de control Van a controlar la ejecución de las instrucciones: Tipos: Selectivas (Eligen las instrucciones ejecutar). Repetitivas (Repiten un cjto de instrucciones).

Estructuras selectivas Selección simple. (if) Selección complementaria (if-else) Anidamiento Selección múltiple (switch)

Selectivas: Elegir qué hacer!! ¿Cómo se ejecuta un programa? ¿Podemos alterar el orden de ejecución? ¿Podemos decidir qué ejecutar y qué no? Ejemplo: Decir si un número es positivo o negativo Solución: emplear instrucciones que nos permitan hacer una cosa u otra

Conceptos previos Bloque de instrucciones: Conjunto de instrucciones que se encuentra encerradas entre dos llaves {....} p.e. { printf(“Deme un numero”); /* mensaje de cortesia*/ scanf(“%d”,&numero); /* se introduce el numero*/ } Comentarios

Selección simple: if La instrucción if permite elegir si se ejecuta o no un bloque de instrucciones. Sintaxis: if (exp_condicional) bloque_instrucciones Ejemplo: Decir si un número introducido por teclado es positivo.

Ejemplo 1 main(){ int x; printf(“Deme un numero”); /* mensaje indicando lo que se pide */ scanf(“%d”,&x); /* se introduce el número */ if (x>=0) /* expresión condicional del if */ { printf(“El numero %d es positivo”,x); /* bloque */ } Indentación

Esquema del if if Falso(0) x>0 Cierto(1) Bloque Resto de instrucciones

Ampliemos el problema: Decir si un número introducido por teclado es positivo o negativo. Este problema plantea dos alternativas que además son complementarias y excluyentes: O el número es positivo o es negativo En estos casos se emplea el if...else

Selección complementaria:if..else Un if..else permite ejecutar un bloque si se cumple la condición y otro si no se cumple. Sintaxis: if (exp_condicional) bloque1 else bloque2

main(){ int x; printf(“Deme un numero”); /* mensaje indicando lo que se pide*/ scanf(“%d”,&x); /* se introduce el número */ if (x>=0) /* expresión condicional del if */ { printf(“El numero %d es positivo”,x); /* bloque1*/ } else printf(“El numero %d es negativo”,x); /* bloque2*/

Otra posibilidad main(){ int x; printf(“Deme un numero”); /* mensaje indicando lo que se pide */ scanf(“%d”,&x); /* se introduce el número */ if (x>=0) /* expresión condicional del if */ { printf(“El numero %d es positivo”,x); /* bloque1*/ } if (x<0) printf(“El numero %d es negativo”,x); /* bloque2*/

Esquema if...else Falso(0) x>0 if...else Cierto(1) Bloque1 Bloque2 Resto de instrucciones

Instrucciones de selección anidadas Supongamos el siguiente problema: Resolver una ecuación de primer grado ax+b=0 Análisis de las soluciones: Si a distinto de 0 entonces x=-b/a Si a=0 b distinto de 0 entonces solución imposible. b=0 entonces “solución indeterminada”

main(){ double a,b; printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */ scanf(“%lf%lf”,&a,&b); /* se introduce el número */ if (a!=0) { printf(“El resultado es: %lf”,-b/a); } else { if (b!=0) { printf(“La solución es imposible”); else { printf(“La solución es indeterminada”);

main(){ double a,b; printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */ scanf(“%lf%lf”,&a,&b); /* se introduce el número */ if (a!=0) printf(“El resultado es: %lf”,-b/a); else if (b!=0) printf(“La solución es imposible”); printf(“La solución es indeterminada”); }

main(){ double a,b; printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */ scanf(“%lf%lf”,&a,&b); /* se introduce el número */ if (a!=0) /*sin identación*/ printf(“El resultado es: %lf”,-b/a); else if (b!=0) printf(“La solución es imposible”); printf(“La solución es indeterminada”); }

Esquema anidado Falso(0) a!=0 if...else anidado Cierto(1) Falso(0) Bloque1 b!=0 Cierto(1) Bloque2 Bloque3 Resto de instrucciones

Otra solución, condiciones compuestas main(){ double a,b; printf(“Deme un numero a y b”); /* mensaje indicando lo que se pide */ scanf(“%lf%lf”,&a,&b); /* se introduce el número */ if (a!=0) printf(“El resultado es: %lf”,-b/a); if ((a==0) && (b!=0)) printf(“La solución es imposible”); if ((a==0) && (b==0)) printf(“La solución es indeterminada”); } Realiza 5 comparaciones Frente las dos del programa anterior.

Problema: Se desea diseñar un programa en C que lea desde teclado una calificación alfabética A,B,C,D,E y las convierta en las numéricas 9,7,5,3,1 respectivamente.

Posible solución main(){ char nota; printf(“Deme una calificación”); /* mensaje indicando lo que se pide */ scanf(“%c”,&nota); /* se introduce el número */ if ((nota<‘A’) || (nota>’E’)) printf(“Calificación desconocida”); else { if (nota==‘A’) printf(“La nota es 9”); if (nota==‘B’) printf(“La nota es 7”); if (nota==‘C’) printf(“La nota es 5”); if (nota==‘D’) printf(“La nota es 3”); if (nota==‘E’) printf(“La nota es 1”); }

La selección múltiple con switch Permite seleccionar entre infinitos caminos sin necesidad de anidar y evaluando una única expresión. Sintaxis: switch (expresion){ case valor1 : bloque1 break; case valor2 : bloque2 break; ...... } Estos bloques no precisan de llaves pues van precedidos por “:” y acaban con un break;

scanf(“%c”,&nota); /* se introduce el número */ main(){ char nota; printf(“Deme una calificación”); /* mensaje indicando lo que se pide */ scanf(“%c”,&nota); /* se introduce el número */ switch (nota) { case ‘A’: printf(“La nota es 9”); break; case ‘B’: printf(“La nota es 7”); break; case ‘C’: printf(“La nota es 5”); break; case ‘D’: printf(“La nota es 3”); break; case ‘E’: printf(“La nota es 1”); break; default : printf(“Nota desconocida”); }

Propiedades del break Problema: Supongamos que deseamos saber la calificación de un alumno (Aprobado, Suspendido, Notable, Sobresaliente, Matricula, etc...) Valores: [0-5[ corresponde a Suspendido [5-7[ corresponde a Aprobado [7-9[ corresponde a Notable [9-10[ corresponde a Sobresaliente 10 corresponde a matricula.

main(){ int nota; printf(“Deme una calificación”); scanf(“%d”,&nota); /* se introduce el número */ switch (nota) { case 1: case 2: case 3: case 4: printf(“La nota %d = Suspendido”,nota); break; case 5: case 6: printf(“La nota %d = Aprobado”,nota); break; case 7: case 8: printf(“La nota %d = Notable”,nota); break; case 9: printf(“La nota %d = Sobresaliente”,nota); break; case 10: printf(“La nota %d = Matricula”,nota); break; default : printf(“Nota desconocida”); }

Inconvenientes del switch Sólo se selecciona en base a la evaluación de una única expresión. Los valores de cada case (caso) del switch pueden ser resultado de una expresión, en ese caso debe estar formada por ctes, por lo tanto no se puede utilizar nombres de variables. El resultado de las expresiones de cada case deben ser números enteros.

/* Con reales */ main(){ double nota; printf(“Deme una calificación”); scanf(“%lf”,&nota); /* se introduce el número */ if ((nota<0)||(nota>10)) printf(“Calificación desconocida”); else { if ((nota>0) && (nota<5)) printf(“La nota %lf es Suspenso”,nota); if ((nota>=5) && (nota<7)) printf(“La nota %lf es Aprobado”,nota); if ((nota>=7) && (nota<9)) printf(“La nota %lf es Notable”,nota); if ((nota>=9) && (nota<10)) printf(“La nota %lf es Sobresaliente”,nota); if (nota==10) printf(“La nota %lf es Matricula”,nota); } /* Con reales */

Menú con un switch Hacer un programa que construya una calculadora básica. Debe pedirse que se introduzcan dos números. Se debe de elegir una operación a través de un menú de opciones: suma, resta, multiplicación, división. Realizar la operación correspondiente. Nota: (No se puede dividir un número por cero)

/* ejemplo de menu de opciones */ ..... printf(“Menu de opciones\n\t1-suma\n\t2-resta\n\t3-multiplicación\n\t4-division\n”); printf(“deme una opción de 1-4”); scanf(“%d”,&opc); switch(opc){ case 1: ..... case 2: ..... case 3: ..... case 4: ..... default: printf(“opción incorrecta”); } ....

main() { int opc; double a,b; printf(“Deme el primer numero”); scanf(“%lf”,&a); printf(“Deme el segundo numero”); scanf(“%lf”,&b); printf(“Menu de opciones\n\t1-Sumar\n\t2-Restar\n\t3-Multiplicar\n\t4-dividir\nDeme una opcion de 1-4: ”); switch(opc){ case 1: printf(“el resultado es %f”,a+b);break; case 2: printf(“el resultado es %f,a-b);break; case 3: printf(“el resultado es %f”,a*b);break; case 4: if (b!=0) printf(“el resultado es%f,a/b); else printf(“el resultado es indefinido”); break; default: printf(“opción incorrecta”); }