capítulo 2 condicionales y ciclos

download capítulo 2 condicionales y ciclos

of 42

Transcript of capítulo 2 condicionales y ciclos

  • 7/22/2019 captulo 2 condicionales y ciclos

    1/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 1

    Captulo 2. El paradigma de la programacin estructurada

    En el captulo 1 se introdujo el primer ejemplo del cdigo y la forma general detrabajo.. En este captulo abordaremos las reglas que debe cubrir la codificacin.

    Por qu estamos trabajando en la forma descrita? En algunos sentidos,

    codificar se asemeja a jugar un deporte. Se deben conocer las reglas que rigen el

    juego. No obstante, eso sera insuficiente sino hubiera estrategias para ganar el

    partido y jugadas prefabricadas. La sintaxis son las reglas; la lgica de

    programacin conforma la estrategia. Por eso es primordial que el estudiante logre

    desarrollar y aplicar los conceptos de condicionales y ciclos, incluyendo la pruebadel algoritmo.

    Prosiguiendo con esta analoga, prcticamente nadie esperara poder jugar

    bien un deporte sin practicar cotidianamente. No obstante, un gran nmero de

    estudiantes aspira a aprender a programar estudiando dos das antes del examen.

    Adentrmonos, pues, en la lgica de la programacin.

    21.

    . G ,

    ,

    .

    . D

    , .

    ,

    .

    ,

  • 7/22/2019 captulo 2 condicionales y ciclos

    2/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 2

    ,

    . E

    .

    El desarrollo de software tiene poco ms de seis dcadas, tomando como

    referencia el nacimiento de la ENIAC, en 1946. Se trata de un rea joven si la

    comparamos con ciencias como la fsica, qumica o matemticas, que adquirieron

    una madurez desde hace siglos.

    En sus primeros aos, la programacin se basaba en instrucciones muy

    cercanas al cdigo mquina y necesitaba un conocimiento del hardware sobre elcual se trabajaba. Realizar una multiplicacin o alguna instruccin de complejidad

    similar- requera de al menos una docena de instrucciones. Era la poca del

    lenguaje ensamblador, que hoy se sigue empleando en microprocesadores y

    cdigo embebido.

    Posteriormente se agruparon instrucciones y se inventaron programas que

    traducan estos comandos a lenguaje ensamblador. Nacieron de esta forma

    Fortran en 1957 (para aplicaciones cientficas), COBOL en 1959 (paraaplicaciones administrativas) y BASIC en 1964, como lenguaje de uso general.

    Sin embargo, el estilo de programar en estos lenguajes presentaba un

    problema: el salto incondicional, representado sobre todo por la instruccin goto

    de BASIC, la cual permita ir directamente a cualquier lnea de cdigo. El empleo

    continuo del salto incondicional se convirti en un gran dolor de cabeza para dar

    mantenimiento a los programas.

    Para solucionar ese problema naci la programacin estructurada, cuyos

    representantes ms notorios fueron Pascal y C. La programacin estructurada

    propugnaba porque todos los programas se basaran en tres estructuras bsicas:

  • 7/22/2019 captulo 2 condicionales y ciclos

    3/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 3

    a) Secuencia.- el cdigo se ejecutaba de arriba hacia abajo. La secuencia

    queda implcita a la hora de leer, compilar y ejecutar los programas.

    b) Condicionales- elementos de decisin que permitan realizar un bloque de

    instruccin si se cumpla una condicin y, opcionalmente, llevar a cabo otro

    conjunto de comandos si no se cumpla.

    c) Ciclos.- repetir una secuencia de instrucciones mientra se cumpliera una

    condicin.

    Aunque conservaban el salto incondicional hacan hincapi en que ste no se

    empleara.

    El avance natural en esta lnea fue el nacimiento de la Programacin Orientadaa Objetos (POO), cuyo representante ms famoso es Java. La POO retoma los

    tipos de datos y las rutinas de la programacin estructurada y crea con ellos una

    estructura de mayor potencia: las clases.

    Este breve recorrido intenta contextualizar a la programacin estructurada,

    aunque resulta demasiado simplificado y deja fuera de manera injusta a lenguajes

    de propsito especfico como el ya mencionado COBOL y a otros paradigmas,

    entre ellos los dedicados al campo de Inteligencia Artificial. Tampoco describe losucedido con lenguajes para modo grfico como Visual Basic (basado en la

    programacin estructurada), que posteriormente se transformara en Visual .NET

    (basado en la Programacin Orienta a Objetos - POO).

    En cuanto a la programacin WEB, sta se basa parcialmente en la

    programacin estructurada (ASP clsico, PHP, JavaScript, etc.) y en la

    Programacin Orientada a Objetos (J2EE, tecnologa .NET, etc).

    En sntesis, la programacin estructurada sigue siendo vigente en dos sentidos:varios lenguajes todava la aplican y su conocimiento es base para el aprendizaje

    de la Programacin Orientada a Objetos.

  • 7/22/2019 captulo 2 condicionales y ciclos

    4/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 4

    2.1. Qu es un algoritmo?

    Como ya se mencion, los ciclos y las condicionales son las estructuras

    bsicas de la programacin estructurada y sobre stas deben fincarse la creacin

    de algoritmos bsicos.

    Un algoritmo es un conjunto de pasos debidamente ordenados y sin

    ambigedades, que en un tiempo finito dan la solucin a un problema claramente

    planteado.

    Un algoritmo puede plantearse de diversas formas, desde la palabra escrita

    hasta mecanismos formales. Entre los ms conocidos estn:

    Pseudocdigo: se escriben en el idioma nativo (el espaol, en nuestro caso)palabras cercanas a las instrucciones de un lenguaje de programacin. Es muy

    recomendable como paso intermedio entre el problema y la codificacin de la

    solucin en un lenguaje de programacin (Pascal, C, Java, etc.).

    Diagrama de flujo: establece de manera grfica la solucin del problema,

    utilizando conos para cada estructura de programacin (ciclos, decisiones, etc.).

    Sumamente utilizado para aspectos didcticos.

    UML (Unified Modeling Languaje): la forma de diagramacin utilizada para

    programacin orientada a objetos. Su conjunto de smbolos se aplica para todas

    etapas del proceso de desarrollo de software.

    Elementos bsicos para expresar el algoritmo en pseudocdigo

    La gran ventaja y, al mismo tiempo, la gran desventaja del pseudocdigo es

    que no existen reglas formales para escribirlo. Cada persona puede establecer suspropios criterios. Ciertamente, esto puede dar lugar a ambigedades. Para

    evitarlo, deber orientarse al alumno hacia las estructuras bsicas de control y

    establecer claramente los pasos a seguir.

    Sugerimos al inicio limitar el pseudocdigo a las siguientes convenciones.

  • 7/22/2019 captulo 2 condicionales y ciclos

    5/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 5

    Variables. Una variable es un lugar de memoria que puede guardar un valor, el

    cual puede cambiar a lo largo del programa, considerando siempre que cuando se

    asigna un nuevo valor, el valor anterior se pierde. Debe ser identificado por un

    nombre determinado, el cual slo se utilizar para esa variable. Todas lasvariables a utilizar deben ser declaradas al inicio del programa.

    Nombres de identificadores. Los identificadores son nombres que ubican a

    los diferentes elementos de los programas: el nombre del propio, programa, las

    variables, etc.

    Reglas de prioridad. La ejecucin de los operadores aritmticos se realiza con

    las mismas reglas de lgebra. Primero se harn las multiplicaciones y divisiones, y

    posteriormente las sumas y restas. De esta forma 8 + 3 * 4 ser igual a 20. Se

    pueden utilizar parntesis al igual que en matemticas para forzar a que en primer

    lugar se haga lo que est dentro de ellos. Cabe aclarar que en programacin slo

    se usan los parntesis circulares.

    Leerse utilizar para recibir un dato del teclado. Por ejemplo: leer xsignificar

    que se recibir el valor de la variable x del teclado.

    Desplegar se manejar para mostrar un mensaje textual o el valor de una

    variable en la pantalla.

    Condicionales. Indican una decisin.

    Ciclos. Indica que una accin se realizar mientras se cumpla la instruccin

    sealada.

    A manera de ejemplo, suponga el ejercicio que fue presentado en el captulo 2:

    Hacer un programa que reciba el precio normal de un producto y su

    correspondiente descuento. Como salida, entregue el precio final (con el

    descuento incluido).

  • 7/22/2019 captulo 2 condicionales y ciclos

    6/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 6

    El algoritmo que lo soluciona, expresado en pseudocdigo, queda como sigue:

    ,

    "B"

    "E "

    " "

    " "

    = ( * / 100)

    "E "

    Elementos bsicos para expresar el diagrama de flujo

    Como ya se coment, el pseudocdigo no es la nica forma de representar los

    algoritmos. Los diagramas de flujo son una forma ms didctica y ampliamente

    recomendable al iniciar un curso de programacin estructurada, aunque no seaplican mucho en la programacin a nivel profesional por el tiempo que consumen.

    En los libros de texto suelen haber variaciones entre la forma de

    representacin, aunque todos guardan el propsito general de forma coherente.

    Nosotro utilizaremos la versin que se muestra en la figura 2-1.

    .

    E D

    ( )

    E

    F 21. E

  • 7/22/2019 captulo 2 condicionales y ciclos

    7/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 7

    2.2. Elementos bsicos de programacin: condicionales y ciclos

    Condicionales

    Las condicionales establecen una decisin con la estructura siguiente: ( )

    1

    ()

    2

    La condicin puede llevar inmersa ms de una condicin que al final se evala

    en su conjunto. El caso calificacin >= 6 y calificacin =9). En diagrama de flujo se

    identificara como lo muestra la figura 2-2.:

    ()

    F 22.

    En prcticamente todos los lenguajes de programacin el si se identifica con

    un ify en caso contrario con un else. El si (condicin)es obligatorio, mientras

  • 7/22/2019 captulo 2 condicionales y ciclos

    8/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 8

    en caso contrario (bloque 2 de instrucciones) es opcional. Existen diversas

    formas para indicar sin ambigedades hasta donde abarca cada bloque de

    instrucciones: llaves en lenguaje C, begin-enden Pascal, endifen SQL, etc.

    A manera de ejemplo, suponga que se desea recibir tres calificaciones,

    desplegar el promedio e indicar si la calificacin es o no es aprobatoria. La

    calificacin mnima aprobatoria es 8. El algoritmo en diagrama de flujo se muestra

    en la figura 2-3 y a continuacin se proporciona el pseudocdigo:

    , ,

    ,

    ,

    = ( + + ) / 3

    E

    >= 8

    ABAD

    EBAD

    F 23. A 3

    declara a, b, c y promedio como decimales

    leer a, b y c

    promedio = (a + b + c) / 3

    desplegar promedio

    promedio >= 8

    desplegar "aprobado" desplegar "reprobado"

  • 7/22/2019 captulo 2 condicionales y ciclos

    9/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 9

    Ciclos

    Los ciclos Indican que una accin se realizar mientras se cumpla la

    instruccin sealada. Tienen la estructura mostrada en la figura 2-4:

    ()

    F 24.

    Hay que hacer hincapi que la condicin significa mientras que. Por lo tanto,

    una condicin que siempre se cumpla generara un ciclo infinito. Por el contrario,

    una condicin que nunca se cumpla implicara que no se ejecutaran las

    instrucciones del cuerpo del ciclo ni una sola vez.

    Un error muy frecuente es no identificar claramente aqullo que es repetitivo (va

    a ir dentro del ciclo) con lo que debe hacerse una sola vez antes o despus del

    ciclo (debe ir fuera del ciclo). El resultado de este error suele dar resultadosequivocados o generar ciclos infinitos.

    La condicin mientras que se identifica con la palabra whileen casi todos los

    lenguajes.

  • 7/22/2019 captulo 2 condicionales y ciclos

    10/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 10

    Al igual que en condicionales, existen diversas formas para indicar sin

    ambigedades hasta donde abarca cada bloque de instrucciones: llaves, begin-

    end, endWhile, etc., segn el lenguaje de programacin.

    Aparte del ciclo mencionado existen otras variantes, cuya conceptualizacin

    vara un poco segn el lenguaje de programacin. En lenguaje C y Java se

    manejan tres posibilidades: while, for y do-while.

    A manera de ejemplo, suponga el mismo ejemplo ya planteado pero con ms

    calificaciones: se desea recibir ocho calificaciones y desplegar el promedio.

    Obviamente, podramos declarar 8 variables, pero es ms fcil hacerlo a travs de

    ciclos. El algoritmo expresado en diagrama de flujo se encuentra en la figura 2-5:

    F 25. A 8

    declarar dato, suma y promedio como decimales

    declarar a como entero

    suma = 0, a = 0

    leer dato

    desplegar "Por favor, teclee sus ocho calificaciones"

    suma = suma + datoa = a + 1

    a < 8 ?

    desplegar "El promedio es"

    promedio = suma / 8

    s

  • 7/22/2019 captulo 2 condicionales y ciclos

    11/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 11

    ,

    = 0

    ,

    ( < 8)

    = +

    = / 8

    E

    2.3. Prueba de escritorio

    La prueba de escritorio consiste en tratar de seguir paso a paso lo que hace

    el algoritmo. En otras palabras, tratar de actuar como si uno fuera el equipo de

    cmputo. Hay que hacer hincapi en ello: no debe pensarse lgicamente ni como

    se supone que debe ser; es menester desprenderse de la condicin humana y

    "tratar de actuar como mquina", siguiendo instruccin por instruccin lo que

    sucede en el cdigo.

    No hay una representacin formal de la prueba de escritorio. Sugerimos poner

    una casilla por cada variable e ir anotando su valor. En el caso de ciclos, realizar

    un cuadrado y utilizar una columna por cada iteracin.

    Para ejemplificar, suponga que se tiene la siguiente definicin del problema:

    o Realizar un programa que lea un nmero y despliegue su factorial. El

    factorial de un nmero n est dada por la siguiente serie: 1 * 2 * 3 * * (n-

    1) * n. El factorial de 0 es 1 y no existen factoriales de nmeros negativo.

    Este programa obtendr el factorial de un nmero.Teclee el nmero, por favor5Su sumatoria es 120

    El lote de pruebas es el siguiente:

  • 7/22/2019 captulo 2 condicionales y ciclos

    12/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 12

    ?

    5 120

    0 1

    3

    E . : , ,

    B

    E .

    ,

    < 0

    = 1

    = 1

  • 7/22/2019 captulo 2 condicionales y ciclos

    13/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 13

    2.4. Ejercicios de construccin de lgica a partir del problema

    22.

    A :

    ?. C

    , ,

    .

    ? C

    ? E

    .

    Con las descripciones vistas hasta este punto tenemos los elementos

    suficientes para iniciar ejercicios de construccin de lgica.

    Un primer bloque de ejercicios puede partir de una descripcin general de un

    requerimiento que debe ser llevado a detalle. En este bloque pueden incorporarse

    todas las sugerencias de los estudiantes que sean viables con la aplicacin desecuencias y ciclos.

    La estrategia sugerida es formar tres equipos de trabajo, conformados por un

    "usuario final", un "programador" y un "tester". El "usuario final" deber recibir del

    profesor la especificacin de requerimientos y realizar un ejemplo de clculo con

    datos reales, as como el lote de pruebas que debe pasar su sistema (pudiera

    darse la pantalla desde un inicio o que el mismo usuario la definiera). El

    "programador" realizar el algoritmo expresado en pseudocdigo y/o diagrama deflujo, nicamente partiendo de los elementos vistos (se omitir por el momento el

    uso de arreglos, archivos y subrutinas). Finalmente, el "tester" har la prueba de

    escritorio. La prueba definitiva se har en el captulo relativo a la codificacin de

    condicionales y ciclos

  • 7/22/2019 captulo 2 condicionales y ciclos

    14/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 14

    La siguiente es una lista de ejercicios propuestos, con los dos primeros

    elementos: especificacin de requerimientos del usuario y diseo preliminar de la

    pantalla. Por razones de espacio, se omiti en la pantalla las palabras de

    bienvenida y despedida, que s deberan estar en el programa definitivo.

    o Una librera ofrece descuentos por volumen: 3% a partir de tres libros; 5% si

    son ms de 3 libros y 10% si son ms de 10. Los descuentos no se

    acumulan. Realice un programa que reciba el costo del libro, el nmero de

    libros y despliegue el total a pagar.

    Seale el costo unitario del libro: 120Indique el nmero de libros: 3El total a pagar es 349.20

    o Realice un programa que calcule el promedio de varias calificaciones. Al

    inicio se le preguntar al usuario cuantos nmeros va a capturar (suponga

    que el usuario capturar los datos adecuadamente).

    Cuntas calificaciones se van a capturar? 3Captrelas: 7 6 4El promedio es 5.7

    o Realice un programa que calcule el promedio de varios nmeros. El usuario

    capturar datos y al final pondr un -1 para sealar que ya no existen ms

    datos (suponga que el usuario capturar los datos adecuadamente).

    Capture las calificaciones (indique un -1 para finalizar):7 6 4 -1El promedio es 5.7

    o Un trabajador tiene un salario por hora (el salario diario supone 8 horas

    laboradas). Si que trabaja ms de 8 horas recibe pago por horas extras. De

    la novena a la undcima percibe el doble; de la dcimo segunda en adelante

    es el triple. Las horas pueden ser fraccionadas. Realice un programa que

  • 7/22/2019 captulo 2 condicionales y ciclos

    15/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 15

    reciba el salario diario y las horas trabajadas; a partir de esos datos seale

    el monto a recibir por el salario normal, las horas extras y el total.

    Indique el sueldo diario: 200

    Indique las horas trabajadas: 9.5Sus percepciones en el da son: 275.00

    A continuacin se varios ejercicios sencillos en donde los estudiantes tienen

    que iniciar el trabajo desde la elaboracin de las pantallas.

    o Capturar los tres lados de un tringulo y desplegar si es issceles, escaleno

    o equiltero.

    o Capturar 3 nmeros y desplegar el mayor de ellos.

    o Realizar un programa que lea la altura del agua, el dimetro y la longitud de

    un tanque cilndrico completamente horizontal. A partir de esos datos se

    desea saber el volumen de agua que tiene en litros1.

    Enseguida se sealan varios ejercicios para realizar la prueba de escritorio. La

    intencin es que el estudiante visualice que un problema puede solucionarse de

    diferentes formas y que existen errores clsicos escondidos, independientemente

    del procedimiento utilizado.

    o Dado el siguiente cdigo:

    =

    ( > ) ( > )

    =

    ( > ) ( > )

    =

    "E :

    Indique el resultado de la tradas sealadas a continuacin, tal y como estescrito.

    1La solucin a este ejercicio tiene que ver ms con elementos bsicos de trigonometra y lgebra. Y ese es,justamente, el motivo de ponerlo aqu: que el estudiante viva situaciones en que el clculo es lo ms difcil.Dejamos al docente la valoracin si hacerlo opcional u obligatorio.

  • 7/22/2019 captulo 2 condicionales y ciclos

    16/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 16

    D

    7 8 9

    8 9 8

    8 9 9

    9 8 7

    o Qu mensaje desplegar el siguiente pseudocdigo tal y como est escrito

    suponiendo que el usuario responde 5.5 cuando se le pide el dato?

    =

    ( > 5)

    D

    ( < 6)

    D

    o El siguiente pseudocdigo est en orden alfabtico. Acomdelo para obtener el

    promedio de 3 nmeros adecuadamente.

    ,

    E

    ,

    = 0

    = + 1

    ( < 3)

    = / 3

    = 0

    = +

    o Qu desplegar en pantalla el siguiente pseudocdigo tal y como est

    escrito? Suponga que el usuario teclea: 5 6 7 8

  • 7/22/2019 captulo 2 condicionales y ciclos

    17/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 17

    = 0

    = 4

    = 1

  • 7/22/2019 captulo 2 condicionales y ciclos

    18/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 18

    Todas las condiciones preguntan acerca de una condicin (if). Una respuesta

    afirmativa provocar que se realice el bloque de instrucciones indicada; en caso

    contrario se ejecuta un segundo bloque de instrucciones (else). El ifes obligatorio,

    mientras el else es opcional. Para indicar el inicio y final de cada bloque se

    emplean llaves, aunque pueden omitirse si el bloque est compuesto por una sola

    instruccin.

    La condicional en pseudocdigo se expresa de la siguiente forma:

    () 1

    2

    A nivel cdigo la instruccin quedara como la siguiente:

    if (calificacion >= 6)printf("aprobado);

    elseprintf("reprobado");

    Tcnicamente, una condicin verdadera "devuelve" el valor de 1; una condicin

    falsa retorna el valor de 0. Por eso, la instruccin z = (a > b)es perfectamente

    vlida: z valdr 1 si a es mayor que b, o valdr 0 si la condicin no se cumple.

    El operador ? es una forma abreviada de if-else, que se emplea cuando se

    trata de una asignacin con base en un if. La instruccin

    z = (a > b) ? a : b;

    es equivalente a

    if (a > b)z = a;

    elsez = b;

  • 7/22/2019 captulo 2 condicionales y ciclos

    19/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 19

    23. C

    A

    :

    ) . : ( >= 6)

    ( > 5)

    , .

    ) C :

    .

    ) D "" . E

    :

    if (calificacion >= 6)

    printf("aprobado);

    if (calificacion < 6)

    printf("reprobado");

    .

    8,

    .

    24.

    E

    . : ,

    (. 30 ).

  • 7/22/2019 captulo 2 condicionales y ciclos

    20/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 20

    A continuacin, un ejemplo para determinar el rea de un tringulo (programa

    2-1). Observe que la condicional se utiliz para validar que el tringulo s puede

    ser construido.

    Requerimiento:

    Hacer un programa que reciba los tres lados de un tringulo y devuelva su rea. El

    rea queda determinada bajo la siguiente frmula:

    s = (a + b + c) / 2____________________

    rea = s * (s a) * (s b) * (s-c) , donde a, b y c son las longitudes de loslados.Ejemplo: si los lados valieran 6, 8 y 10, s valdra 16 y el rea valdra 24.

    Cdigo:

    // Programa 2-1 recibe los 3 lados de un tringulo y devuelve su rea.#include #include #include int main() {

    float a, b, c, s, area;printf("Bienvenido.\n\n");printf("Este programa obtiene el rea de un tringulo.\n");printf("Teclee el valor de los lados separados por un espacio.\n\n");scanf("%f %f %f", &a, &b, &c);// previamente se validar que sea posible construir el tringuloif ( (a > b + c) || (b > a + c) || (c > a + b))printf("No puede formarse un triangulo de esas dimensiones.\n");else {s = (a + b + c ) / 2;area = sqrt( s * (s - a) * (s - b) * (s - c));printf("\n");printf("El area del tringulo es: %4.1f \n", area);

    }printf("\n\n Oprima cualquier tecla para terminar...");getch();

    }

  • 7/22/2019 captulo 2 condicionales y ciclos

    21/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 21

    Pruebas aplicadas:

    D

    6 8 10 E 24.0.

    3 5 9 .

    Pantalla final:

    Aspectos a cuidar en el uso de condicionales

    Las condicionales pueden anidarse. Las condicionales se pueden escribir de

    manera anidada, como en el programa 2-2 (hay que tener especial cuidado con la

    anidacin):

    // Programa 2-2:// promedio de 3 calificacines con condicionales anidadas#include #include

    int main(void){

    int a, b, c;float promedio;printf("Por favor, teclee sus tres calificaciones: ");scanf("%d %d %d", &a, &b, &c);promedio = (a + b + c) / 3;printf("El promedio es: %6.1f", promedio);if (promedio == 10)

    printf(" EXCELENTE");else

    if (promedio >= 8) {printf(" MUY BIEN. ");

    printf("FELICITACIONES.");}else

    printf(" REPROBADO");

    printf("\nOprime cualquier tecla..");getch();

    }

  • 7/22/2019 captulo 2 condicionales y ciclos

    22/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 22

    Cuidar el alcance de los bloques. En todo momento se debe tener presente

    que los bloques quedan delimitados por las llaves. Si stas no se colocan se

    asume el bloque abarca una sola instruccin. Como ejemplo, observe el cdigo del

    programa 2.3:

    // Programa 2-3: condicionales con mal manejo de llaves#include #include int main () {

    int x;x = 8;if (x >= 6)

    printf("Aprobado.\n");else

    printf("Reprobado.\n");printf("A estudiar ms.\n");

    printf("\nOprime cualquier tecla para continuar...");getch();

    }

    La frase A estudiar msse desplegar siempre. El programa asume a falta

    de llaves- que el else abarca slo a una instruccin. La correccin sera como

    sigue:else {

    printf("Reprobado.\n");printf("A estudiar ms.\n");

    }

    No utilizar el operador de asignacin (=) en lugar del de comparacin (==).

    Es muy comn que en las condiciones se requiera comparar una variable o una

    operacin con un valor determinado, Por ejemplo: si x es igual a 8. En este caso

    hay que recordar que el operador de comparacin es ==. Observe el cdigo del

    programa 2-4.

  • 7/22/2019 captulo 2 condicionales y ciclos

    23/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 23

    // Programa 2-4: condicionales con comparacin mal aplicada#include #include int main () {

    int opcion;

    printf("Bienvenido al cine.\n\n");printf("1) Amores Perros\n");printf("2) Babel\n");printf("\nElija una opcin: ");scanf("%d", &opcion);if (opcion = 1)

    printf("\nUsted desea ver Amores Perros");else

    printf("\nUsted desea ver Babel");

    printf("\n\nOprima cualquier tecla para continuar...");getch();

    }

    En este programa siempre aparecer el letrero Usted desea ver Amores

    Perros. La razn es la siguiente: la instruccin if (opcion = 1) indica que se

    asigne un 1 a la variable opcin, si esto es posible (lo cual es obvio en este caso),

    se desplegar Usted desea ver Amores Perros. La instruccin en realidad se

    debi haber manejado como if (opcion == 1)2.

    Este error es tan comn y tan difcil de rastrear que el lenguaje Java (basado

    en la sintaxis de C) ya no permite la instruccin if (opcion = 1).

    Problemas propuestos para decisiones sencillas

    Los siguientes problemas -extrados de problemas reales- pueden resolverse

    con decisiones sencillas. Son ejercicios que a esta altura el estudiante debe poder

    resolver.

    o Realizar un programa que lea tres calificaciones, despliegue el promedio final ydiga si el alumno aprob o no. La calificacin final ser el promedio ponderado

    de las 3 calificaciones, las cuales valen 20%, 30% y 50%, respectivamente. La

    calificacin mnima aprobatoria es 8.

    2Cabe aclarar que ZinjaI hace una advertencia (warning) cuando se compila el cdigo.

  • 7/22/2019 captulo 2 condicionales y ciclos

    24/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 24

    o Realice un programa que obtenga el promedio entero de 3 calificaciones. Se

    redondea al entero ms cercano si el promedio es cuando menos de 6. En

    caso contrario, la calificacin bajar al entero inferior.

    o Realice un programa que reciba 3 calificaciones de tipo entero e indique cual

    fue la calificacin ms alta. Por ejemplo: si el usuario captura los datos 8 9 10,

    el programa desplegar que el dato ms grande es 10.

    o Simulemos un volado en la computadora. La computadora solicita la apuesta y

    genera al azar la suya. Si coincide, el usuario gana; en caso contrario, pierde.

    Qu crees que salga (S=sol; A=aguila)? SLa moneda cay guila. Usted perdi!Gracias por participar!

    o Realice un programa que reciba los coeficientes de una ecuacin cuadrtica y

    despliegue sus races.

    o Realice un programa que reciba dos datos para realizar una divisin y

    despliegue el resultado a dos decimales. Por ejemplo: si el usuario captura 9 y

    4, el programa indicar como resultado 4.25. Nota importante: debe validarse

    que el programa no intente realizar una divisin entre cero.

    o Realice un programa que reciba los 3 lados de un tringulo e indique si esequiltero (tres lados iguales), issceles (dos lados iguales) o escaleno (tres

    lados diferentes).

    o Dado el siguiente cdigo:

    1 mayor = b;2 if ((b > a) && (b > c))3 mayor = b;4 if ((c > a) && (c > b))5 mayor = c;6 printf("El resultado es: %d\n", mayor);

    a) Asuma que el programa va a correr tal y como est escrito. Cul serael resultado bajo las condiciones siguientes?

    D

  • 7/22/2019 captulo 2 condicionales y ciclos

    25/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 25

    7 8 9

    8 9 88 9 9

    9 8 7

    b) Coloque los parntesis que hagan falta para que el programa puedaejecutarse correctamente (slo hay errores en algunas lneas):

    . C

    2.7. Casos de decisin mltiple

    Es muy comn que en diversas ocasiones se tenga que seleccionar alguna

    opcin con base en un valor determinado. Por ejemplo, desplegar el nombre del

    mes. Esto podra realizarse a travs de condicionales mltiples, como en el

    programa 2-5, que despliega el nmero de das transcurridos del 1 de enero del

    ao 2000 a la fecha capturada.

    En este caso, dejaremos que el estudiante "descifre" el programa con base en

    los siguientes puntos clave:

    o se suman los aos completos multiplicndolos por 365

    o se suman los das que corresponden a los meses completos del ao en

    curso. Por ejemplo: si estamos en febrero, ya transcurri enero en su

    totalidad, es decir, hay 31 das por meses completos transcurridos.

    o se suman los das que corresponden por aos bisiestos: 29 de febrero

    de 2004, 29 de febrero de 2004, etc. Se suma un da por cada cuatro

    aos. Cuando es un ao bisiesto, se tiene cuidado en contar el da

    bisiesto slo si se est marzo o mes posterior.

    o finalmente, se suman los das del mes en curso.

  • 7/22/2019 captulo 2 condicionales y ciclos

    26/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 26

    25. E E

    . E 1. 1900 . E

    . ,

    1//2000.

    ,

    .

    :

    .

    // Programa 2-5: das transcurridos del 01/01/2000 a la fecha indicada#include #include int main(void){

    int anio, mes, dia, suma;

    printf("Por favor, indique una fecha posterior al ao 2000");printf(" (dd mm aaaa).\n");scanf("%d", &dia);scanf("%d", &mes);scanf("%d", &anio);suma = (anio - 2000 ) * 365; // das por aos completos

    // das por meses completos del ao en cursoswitch (mes) {case 1: suma += 0; break;case 2: suma += 31; break;case 3: suma += 59; break;case 4: suma += 90; break;case 5: suma += 120; break;case 6: suma += 151; break;case 7: suma += 181; break;case 8: suma += 212; break;case 9: suma += 243; break;case 10: suma += 273; break;case 11: suma += 304; break;case 12: suma += 334; break;

    }

  • 7/22/2019 captulo 2 condicionales y ciclos

    27/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 27

    suma += (anio - 2000) / 4 + 1; // das por aos bisiestosif ((anio % 4 == 0) && (mes < 3))suma--;

    suma += dia; // das del mes en cursoprintf("\nEl resultado es: %d", suma);

    printf("\n\nOprime cualquier tecla..");getch();

    }

    Al final se obtendr una pantalla como la siguiente:

    Como se puede observar, los das del mes dependen del valor de la variable

    mes. Este el caso en que se aplica una instruccin switch: diferentes acciones en

    razn del valor de una variables. Su estructura general es la siguiente:

    switch (variable)case valor: {bloque de instrucciones}

    break; // el break es opcional/* pueden repetirse tantos case como se deseen */default: {bloque de instrucciones}

    El breakindica que ya no siga explorando los siguientes casos. En la mayora

    de las situaciones se desea un breakpara cada opcin, pero en otras ocasiones

    es deseable que adems de lo realizado en el caso anterior- se lleven a cabo

    otras instrucciones, en cuyo caso no se coloca ningn breaken la opcin que est

    finalizando. Finalmente, si ninguna de las opciones se cumpli, se ejecutar el

    bloque de comandos sealado por default.

    Problemas propuestos para decisiones mltiples

    Una tienda comercializadora maneja un nivel de descuentos con base en elmonto total de la compra, segn la siguiente tabla:

  • 7/22/2019 captulo 2 condicionales y ciclos

    28/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 28

    Monto de compra % dedescuento

    $ 2,990.00 3%$ 7, 490.00 5%

    $ 13,990.00 7%$ 54,990.00 10%

    Elabore un programa que reciba el monto de compra original. En razn de ese

    dato, localice el porcentaje de descuento y lo aplique. Finalmente, desplegar

    el monto final a pagar.

    o Realice un programa que "juegue" piedra, papel o tijera. El usuario elige una

    opcin de las tres y la computadora genera al azar una de ellas.

    Posteriormente, el resultado se dar bajo las siguientes reglas; la piedra legana a la tijera; la tijera le gana al papel; el papel le gana a la piedra;si ambos

    casos son iguales, resulta un empate3

    o Realice un programa que reciba dos datos enteros: el da y el mes. Con base

    en ellos despliegue el da y el mes. Por ejemplo: si recibe como datos 19 12,

    desplegar 19 de diciembre.

    2.8. Uso de ciclos

    En lenguaje C todos los ciclos indican que un determinado bloque de

    instrucciones se repita mientras se cumpla determinada condicin. Existen tres

    tipos, como se sintetiza en el cuadro 2-1.

    Cuadro 2-1. Los ciclos en lenguaje C y Java

    while Mientras que, se valida al inicio por lo cual el bloque de instrucciones

    puede no ejecutarse ni una sola vez.

    3Existe una versin menos conocida, pero un poco ms divertida, con base en conejo, flecha y muro.

  • 7/22/2019 captulo 2 condicionales y ciclos

    29/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 29

    do-while Mientras que, se valida al final por lo cual el bloque de instrucciones

    se ejecuta al menos una vez.

    for Por lo general se aplica cuando se conoce de antemano las vecesque se repetir un conjunto de instrucciones. Aunque en lenguaje C

    tiene la misma potencialidad que el while: la condicin se coloca al

    principio y se ejecuta el bloque de instrucciones mientras se cumpla

    la condicin.

    El ciclo while

    En el while se repite un bloque de instrucciones mientras se cumple una

    determinada condicin. La condicin se verifica al inicio, como lo muestra la figura

    2-7.

    F 27.

    En resumen:

    mientras (condicin)bloque de instrucciones

    termina mientras

    Hay que hacer hincapi que la condicin significa mientras que. Una condicin

    que siempre se cumpla generara un ciclo infinito; por el contrario, una condicin

  • 7/22/2019 captulo 2 condicionales y ciclos

    30/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 30

    que nunca se cumpla implicara que no se ejecutaran las instrucciones del cuerpo

    del ciclo ni una sola vez.

    Un error muy frecuente es no identificar claramente aquello que es repetitivo (va

    a ir dentro del ciclo) con lo que debe hacerse una sola vez antes o despus del

    ciclo (debe ir fuera del ciclo). El resultado de este error suele dar resultados

    equivocados o generar ciclos infinitos.

    A manera de ejemplo, suponga que desea obtener el promedio de varios

    nmeros proporcionados por el usuario. La pantalla que desea es similar a la

    siguiente.

    Este programa obtiene el promedio de calificaciones.

    Cuntas calificaciones se van a introducir?3Capture las calificaciones, por favor.8910El promedio es 9.00

    Oprima cualquier tecla para terminar...

    Qu debe ir dentro del ciclo (color amarillo)? Resulta obvio que la lectura de

    las calificaciones. Como el valor de una variable se pierde al recibir un segundovalor, entonces se requiere ir sumando las calificaciones en otra variable. Lasdems partes del programa irn fuera del ciclo. El cdigo finalmente quedaracomo lo indica el programa 2-6 y en la figura 2-8 se muestra el diagrama de flujocorrespondiente producido automticamente por ZinjaI a travs del men deHerramientas.

    // Programa 2-6: promedio de calificaciones con while#include #include int main() {

    int i, n;

    float suma = 0.0, promedio, dato;printf ("Este programa obtiene el promedio de

    calificaciones.\n");printf ("Cuntas calificaciones se van a introducir?\n");scanf("%d",&n);if (n > 0) {printf("Capture las calificaciones, por favor.\n");i = 1;

  • 7/22/2019 captulo 2 condicionales y ciclos

    31/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 31

    while (i

  • 7/22/2019 captulo 2 condicionales y ciclos

    32/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 32

    El ciclo for

    En lenguaje C, en realidad el ciclo for es otra forma de expresar la misma

    funcionalidad que el ciclo while, por lo cual su diagrama es el mismo. Sin

    embargo, en otros lenguajes su sintaxis les permite nicamente hacer un ciclo

    cuando ya se conoce exactamente el nmero de veces que se repetir algo. Su

    sintaxis es la siguiente:

    for (sentencias antes del ciclo; condicin; ltimas sentencias a repetir)

    Cabe aclarar que cualquiera de las tres partes que constituyen el for puede

    omitirse. En un caso exagerado, un ciclo podra expresarse como for (;;). Como

    recomendacin general, hay que evitar este tipo de instrucciones poco

    entendibles.

    Como ejemplo de un for bien aplicado, el programa 2-7 despliega cuatro veces

    hola:

    // Programa 2-7: despliegue de hola con ciclo for#include #include int main() {

    int i;printf(Este programa ejemplifica un for desplegando 4 veces

    hola);for (i=0; i

  • 7/22/2019 captulo 2 condicionales y ciclos

    33/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 33

    scanf("%d",&n);if (n > 0) {printf("Capture las calificaciones, por favor.\n");for (i=1; i

  • 7/22/2019 captulo 2 condicionales y ciclos

    34/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 34

    F 29. E

    // Programa 2-9: promedio de calificaciones con do-while#include #include int main() {

    int i, n;float suma = 0.0, promedio, dato;printf ("Este programa obtiene el promedio de calificaciones.\n");printf ("Cuntas calificaciones se van a introducir?\n");scanf("%d",&n);if (n > 0) {printf("Capture las calificaciones, por favor.\n");i=1;do {

    scanf("%f", &dato);suma += dato;i++;

    } while (i

  • 7/22/2019 captulo 2 condicionales y ciclos

    35/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 35

    Cuando usar cada tipo de ciclo

    En muchas ocasiones un problema puede resolverse por cualquiera de los tres

    ciclos existentes. Sin embargo, conviene recalcar algunos puntos para facilitar su

    seleccin:

    o En todos los lenguajes, el while puede hacer lo que realice el for y el do-

    while.

    o Especficamente en lenguaje C y Java, el for tiene la funcionalidad de un

    while.

    o Aunque el fores tan potente como el while, se recomienda usarlo solamente

    cuando se conoce exactamente el nmero de veces que se va a repetir unbloque de instrucciones. Aplicarlo a otras situaciones traer como

    consecuencia cdigos confusos.

    o En el do-while, el bloque de instrucciones al menos se ejecuta una vez.

    El ejemplo anterior se prestaba, de una u otra manera, para todos los tipos de

    ciclos. Ahora suponga que el requerimiento cambia al siguiente:

    Este programa obtiene el promedio de calificaciones.

    Capture las calificaciones. Digite -1 para terminar.8910-1El promedio es 9.00

    Oprima cualquier tecla para terminar...

    El cdigo utilizando un whilequeda como lo muestra el programa 2-10:

    // Programa 2-10: promedio de datos con while#include #include int main() {

    int i;float suma = 0.0, promedio, dato;printf ("Este programa obtiene el promedio de

    calificaciones.\n");

  • 7/22/2019 captulo 2 condicionales y ciclos

    36/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 36

    printf ("Capture las calificaciones. Digite -1 paraterminar.\n");

    i = 0;scanf ("%f", &dato);while (dato >= 0) {

    suma+=dato;i++;scanf("%f",&dato);

    }if (i > 0) {promedio = suma / i;printf("El promedio es: %5.2f\n", promedio);}elseprintf("No es posible obtener el promedio si no teclea ningn

    nmero.");printf("\n\nOprima cualquier tecla para terminar...\n");getch();

    }

    Como ya mencion, se puede realizar ese mismo programa con un for, pero el

    cdigo pierde claridad, independientemente de cmo quede. El programa 2-11

    muestra una de las distintas posibilidades:

    // Programa 2-11: promedio de datos con un for nada claro#include #include int main() {

    float suma = 0.0, promedio, dato;int i;printf("Este programa obtiene el promedio de calificaciones. ");printf( "Capture -1 para terminar.\n");i = 0;for ( ; dato >= 0 ; ) {scanf("%f", &dato);if (dato >= 0) {

    suma += dato;i++;

    }}if (i > 0) {promedio = suma / i;

    printf("El promedio es: %5.2f\n", promedio);}elseprintf ("No se proporcion ninguna calificacin.\n");

    printf ("\nOprima cualquier tecla para terminar...\n");getch();

    }

  • 7/22/2019 captulo 2 condicionales y ciclos

    37/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 37

    2.9. Ejercicios sobre ciclos a nivel cdigo

    A continuacin se enlistan diversos ejercicios. Algunos de ellos estn en el

    contexto de un programa con una finalidad orientada hacia el usuario final; otros

    pretenden nicamente que el estudiante practique la codificacin a travs de la

    correcta aplicacin de ciclos.

    o Realice un programa que despliegue 4 veces hola utilizando: a) while; b) for; c)

    do-while.

    Cmo obtendra el siguiente despliegue?

    Cuntas veces deseas desplegar hola? 3hola hola hola

    o Cmo obtendra el siguiente despliegue?

    hola hola holaa todos a todos a todos

    o Cmo obtendra el siguiente despliegue?

    holaa todos

    a todosa todoshola

    a todosa todosa todos

    o Cmo obtendra el siguiente despliegue?

    Cuntas veces deseas desplegar hola? 3Cuntas veces deseas a todos? 2hola

    a todosa todos

    holaa todosa todos

    holaa todosa todos

  • 7/22/2019 captulo 2 condicionales y ciclos

    38/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 38

    Transforme el siguiente cdigo a un for

    i = 0;while (i

  • 7/22/2019 captulo 2 condicionales y ciclos

    39/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 39

    scanf("%f", & dato);suma += dato;i++;promedio = suma / numDatos;printf("El promedio es: %6.1f\n", promedio);

    }printf("\n\nOprima cualquier tecla para continuar...");getch();

    }

    o Un usuario desea obtener la siguiente pantalla:

    Este programa calcula el promedio de varias calificaciones:

    Cuntas calificaciones va a capturar?3Teclee las calificaciones

    6.67.29.9El promedio es 7.9

    Oprima cualquier tecla para continuar...

    Elija las siguientes instrucciones en el orden correcto para llegar al

    resultado deseado. Las instrucciones pueden utilizarse ms de una vez,

    sobran algunas y usted debe darles la sangra adecuada. Hay ms de una

    solucin correcta.

    i++;while (i < n){float i, n;i = 0;getch();printf(Oprima cualquier tecla para continuar...);i = 1;}while (i

  • 7/22/2019 captulo 2 condicionales y ciclos

    40/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 40

    #include printf(Este programa calcula...);float dato;printf(Teclea las calificaciones);suma = suma + dato;suma += dato;scanf(%f%, &dato);printf(Cuntas calificaciones va a capturar);printf(El promedio es %5.1f, promedio);

    o Realice el programa que responda al siguiente requerimiento.

    Voy a contar las calificaciones aprobadas.Teclea las calificaciones (termina con -1)748

    10-1Obtuviste 3 calificacin(es) aprobatoria(s) y 1 calificacin(es)reprobatoria(s).Tu promedio fue: 7.25

    El siguiente programa debe obtener la multiplicacin de x * n. Codifique la

    parte que haga falta para obtener el resultado sin emplear la multiplicacin, es

    decir, con base en sumas sucesivas:

    int main() {

    float x, resultado;int n, i;scanf(%f, x);scanf(%d, n);

    /* poner cdigo */

    printf(Resultado=%f, resultado);}

    o Realice un programa que calcule el factorial de un nmero indicado por

    el usuario. No existen factoriales de nmeros negativos; el factorial de 0es uno. Para guardar el factorial se requiere de un tipo de dato que

    guarde rango de valores mayores que el int. La pantalla ser similar a la

    siguiente:

  • 7/22/2019 captulo 2 condicionales y ciclos

    41/42

    G G G

    Programacin Estructurada y Orientada a Objetos. Un acercamiento interdisciplinario. 41

    Bienvenido.Este programa calcula el factorial de un nmero.Qu nmero es?5Resultado: 1 * 2 * 3 * 4 * 5 = 120

    o Realice un programa que obtenga la divisin de dos nmeros enteros sin

    utilizar el operador de divisin (a travs de restas sucesivas)

    o Un apostador asiduo tiene la costumbre de apostar si atina al nmero que

    resulta al tirar un dado. Si lo logra gana $5.000; en caso contrario, pierde

    $1.00. l comienza con $7.00 y el juego termina cuando gana $6.00 o

    pierde todo su capital.

    Qu nmero saldr en el dado? 5El dado arroj un 4. Acaba de perder $1.00Su saldo es $6.00

    Qu nmero saldr en el dado? 5

    o Juguemos a menor-mayor. Usted tiene que apostar un peso a alguna de las

    siguientes opciones:

    Menor 7 Mayor

    2-6 7 8-12

    despus tira dos dados. Si le apost a menor y la suma de los dados est

    en el rango de 2 a 6 gana un peso. Algo similar sucede con el caso de

    mayor. Si le apost a 7 y la suma de los dados coincide con 7, entonces

    gana 5 pesos. Arranca con 5 pesos y termina su participacin cuando tiene

    10 pesos o pierde todo su capital.

    Partiendo del siguiente cdigo, indique cual sera el resultado si el usuario

    tecla 3 para el valor de n:

    #include #include

  • 7/22/2019 captulo 2 condicionales y ciclos

    42/42

    G G G

    #include int main() {

    /* las iteraciones se declararan flotantesporque pueden exceder el rango de enteros */

    float i, numiteraciones;double sumatoria=0.0, resultado;printf("Este programa obtendr un valor muy cercano a PI ");printf("aplicando la frmula\n PI = 1 / 2 * raz ");printf("cuadrada(sumatoria(1..n de 24/(i*i))).");printf("\n\nTeclee el valor de n, por favor.\n");scanf("%f", &numiteraciones);for (i = 1.0; i