Você está na página 1de 21

Captulo 3 EL PARADIGMA DE LA PROGRAMACIN ESTRUCTURADA

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 el cual 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 COBOL (para aplicaciones administrativas), Fortran (para aplicaciones cientficas) y BASIC 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.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUIS LPEZ G./ ANGEL GUTIRREZ G. Alfaomega

52 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

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: 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 mientras 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 Orientada a 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 lo sucedido 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.

3.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:

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 53

Pseudocdigo: 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.

3.2

ELEMENTOS BSICOS EN LA LOGICA DE PROGRAMACIN

La gran ventaja y, al mismo tiempo, la gran desventaja del pseudocdigo es que no existen reglas formales para escribirlo. Cada persona puede establecer sus propios 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: Variables. Una variable es un lugar de memoria que puede guardar un valor, el cual puede cambiar a lo largo del programa. 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 las variables 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, etctera. 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. Igual que en matemticas, se pueden utilizar parntesis 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. Leer se utilizar para recibir un dato del teclado. Por ejemplo: leer x significar 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.
LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

54 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

3.3

CONDICIONALES

Las condicionales establecen una decisin con la estructura siguiente:


si (condicin) bloque 1 de instrucciones en caso contrario bloque 2 de instrucciones termina si

En diagrama de flujo se identificara como sigue:

Diagrama 3-1. La representacin de condicionales en diagrama de flujo.

En prcticamente todos los lenguajes de programacin el si se identifica con un if y en caso contrario con un else. El si (condicin) es obligatorio, mientras el 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-end en Pascal, endif en SQL, etctera. 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 pseudocdigo quedara como sigue:
declarar a, b,c y promedio como decimales desplegar Por favor, teclee sus tres calificaciones leer a, b y c promedio = (a + b + c) / 3 desplegar El promedio es desplegar promedio si promedio >= 8 desplegar APROBADO en caso contrario desplegar REPROBADO termina si

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 55

3.4

CICLOS

Los ciclos indican que una accin se realizar mientras se cumpla la instruccin sealada. Tendr la siguiente estructura:
mientras (condicin) instrucciones termina mientras

Hay que hacer hincapi que la condicin significa mientras que. que Una condicin que siempre se cumpla generara un ciclo infinito. Por el contrario, una condicin que nunca se cumpla implicara que no se ejecutarn 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. En diagrama de flujo, los ciclos se representan de la siguiente manera: Su diagrama es como sigue:

Diagrama 3-2. La representacin de ciclos en diagrama de flujo.

La condicin mientras que se identifica con la palabra while en casi todos los lenguajes. 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:

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

56 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

A manera de ejemplo, suponga que se desea recibir tres calificaciones y desplegar el promedio. El pseudocdigo quedara como sigue:
declarar dato, suma y promedio como decimales declarar i como entera suma = 0 desplegar Por favor, teclee sus tres calificaciones mientras (i < 3) leer dato suma = suma + dato termina mientras promedio = suma / 3 desplegar El promedio es desplegar promedio

3.5

CICLOS

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 se aplican 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 manera coherente. Los principales elementos de los diagramas de flujo son:

FALTAN ELEMENTOS

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 57

3.6

EJERCICIOS DE CONSTRUCCIN DE LGICA A PARTIR DEL PROBLEMA

Reflexin 33-1. Sobre los ejercicios de construccin construccin de lgica Algunos docentes suelen comenzar con ejercicios de lgica del tipo: cmo se hacen huevos con jamn? Consideramos que una primera analoga de este tipo es til para resaltar su parecido con algunos elementos de un algoritmo, pero sin ir ms all, pues son actividades lejanas a la formalidad de un lenguaje de programacin. Qu es vlido y qu no en ejemplos como ste? Con qu criterios establecer esta diferenciacin? Existe un riesgo latente de que el estudiante quede con la impresin de que se trabajar a contentillo del profesor. 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 de secuencias y ciclos. Se recomienda la siguiente estrategia de trabajo: 1. En la primera etapa los estudiantes buscarn la forma de clculo y se pondrn de acuerdo sobre la interpretacin del requerimiento. El usuario final para definir cualquier ambigedad podr ser el profesor o algn estudiante familiarizado con el problema. Por cuestin formativa, el estudiante que acte como usuario final deber disear el lote de pruebas y aplicarlo al programa final, pero l no ser el que realice la codificacin. Esta etapa abarcar los primeros tres pasos del mtodo de trabajo expuesto: especificacin de requerimientos del usuario, diseo preliminar de la pantalla y diseo del lote de pruebas. Pudiera darse la pantalla desde un inicio o que el mismo grupo la definiera. 2. En la siguiente etapa se tiene que elaborar el algoritmo que d solucin al problema a travs de pseudocdigo o diagrama de flujo. Este algoritmo ser realizado por un estudiante y verificado por otro; slo podrn usar operadores, condicionales y ciclos (omitir por el momento, arreglos, archivos y subrutinas). Los estudiantes que ya tengan familiaridad con un lenguaje de programacin podrn codificar dicho algoritmo para confirmar su validez. 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.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

58 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

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: 120 Indique el nmero de libros: 3 El total a pagar es 349.20

Realice un programa que calcule el promedio de varias calificaciones redondeado a un decimal. 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? 3 Captrelas: 7 6 4 El promedio es 5.7

Realice un programa que calcule el promedio final de tres calificaciones redondeado a un entero. Si el promedio es mayor o igual a 6 el resultado se redondear al entero ms cercano; en caso contrario, no se tomarn en cuenta los decimales.
Indique las tres calificaciones a promediar: 6 2 9 El promedio final es 5

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 -1 El promedio es 5.7

Un trabajador tiene un salario por hora (el salario diario supone 8 horas laboradas). Si 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 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.5 Sus percepciones en el da son: 275.00

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 59

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? 5 El dado arroj un 4. Acaba de perder $1.00 Su saldo es $6.00 Qu nmero saldr en el dado? 5

En una feria haba un kiosco llamado menor-7-mayor, que se refera a un juego con dos dados. Quien deseaba participar apostaba $1.00 a alguna de tres opciones: a) menor: 2-6; b) 7 exacto; c) mayor: 8-12. Si apostaba a menor y resultaba un valor entre 2 y 6, ganaba $1.00. En forma similar, si apostaba a mayor y resultaba un valor entre 8 y 12 ganaba $1.00. Si apostaba al 7 y sala exactamente ese valor, ganaba $5.00. Si no atinaba en su apuesta, perda $1.00 en cualquiera de los tres casos. Iniciar con $5.00 y el juego termina cuando llega a $10.00 o pierde todo su capital.
A) Menor 2-6 B) 7 C) Mayor 8-12

Cul es su apuesta? A Lo sentimos, el nmero fue 9 (mayor) Su saldo es de $4.00 A) Menor 2-6 B) 7 C) Mayor 8-12

Cul es su apuesta?

A continuacin se muestran varios ejercicios sencillos en donde los estudiantes tienen que iniciar el trabajo desde la elaboracin de las pantallas. o o o o Recibir los tres lados de un tringulo y desplegar su rea. Capturar los tres lados de un tringulo y desplegar si es issceles, escaleno o equiltero. Capturar 3 nmeros y desplegar el mayor de ellos. Recibir n datos y calcular su promedio y su desviacin estndar.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

60 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

3.7

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:

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 favor 5 Su sumatoria es 120

El lote de pruebas es el siguiente: valores 5 0 -3 resultados 120 1 No existen factoriales de nmeros negativos Pas la prueba?

El pseudocdigo que se presenta est descrito a continuacin.


variables a utilizar: i, suma, despliegue Bienvenido despliegue Este programa obtendr el factorial de un nmero. despliegue Teclee el nmero, por favor leer dato si dato < 0 despliega No existen factoriales de nmeros negativos en caso contrario i = 1 acumula = 1 mientras i <= dato acumula = acumula * i i = i + 1 despliegue Su factorial es despliegue acumula despliegue Oprima cualquier tecla para continuar

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 61

Y la prueba de escritorio se coloca a continuacin: Antes del ciclo i acumula dato ___1___ ___1___ ___5___

Durante el ciclo Nmero de repeticin Valor de acumula Valor de i

1 1 2

2 2 3

3 6 4

4 24 5

5 120 6

Observe que se sale del ciclo cuando ya no se cumple la condicin. El valor final de acumula fue 120, que era el resultado esperado.

3.8

EJERCICIOS PROPUESTOS PARA PRUEBAS DE ESCRITORIO

A continuacin se sealan varios ejercicios para realizar la prueba de escritorio. Observar que muchos de ellos se refieren a calcular un promedio, aunque con diferentes variantes. 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.

Indique el resultado del siguiente pseudocdigo tal y como est escrito. Suponga que los valores de a, b y c son 8 9 y 10, respectivamente:
1 2 3 4 5 6 7 8 9 numdatos = 1 leer a numdatos = numdatos + 1 leer b numdatos = numdatos + 1 leer c numdatos = numdatos + 1 promedio = a + b + c / numdatos desplegar promedio

Reescriba la(s) lnea(s) que estn mal escritas. # de lnea Correccin

Dado el siguiente cdigo:

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

62 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

mayor = b si (b > a) y (b > c) mayor = b if (c > a) y (c > b) mayor = c despliega "El resultado es: despliega mayor

Indique el resultado de la tradas sealadas a continuacin, tal y como est Datos de prueba 7 8 9 8 9 8 8 9 9 9 8 7

Resultado

Qu mensaje desplegar el siguiente pseudocdigo tal y como est escrito suponiendo que el usuario responde 5.5 cuando se le pide el dato?
x = calificacin proporcionada por el usuario si (x > 5) Desplegar aprobado termina si si (x < 5) Desplegar reprobado termina si

Ordene el siguiente pseudocdigo para obtener el promedio de 3 nmeros


declarar dato, suma y promedio como decimales declarar i como entera desplegar El promedio es desplegar Por favor, teclee sus tres calificaciones desplegar promedio i = 0 i = i + 1 leer dato mientras (i < 3) promedio = suma / 3 suma = 0 suma = suma + dato termina mientras

Qu desplegar en pantalla el siguiente pseudocdigo tal y como est escrito? Suponga que el usuario teclea: 5 6 7 8
suma = 0 n = 4 i = 1

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 63

mientras i <= n despliega Teclee los 4 datos: leer dato suma = suma + dato i = i + 1 fin de mientras despliega El promedio es: despliega suma / i

El siguiente pseudocdigo pretende obtener el promedio de 3 nmeros. Reescrbalo correctamente sin cambiar el nombre de las variables.
definir suma, dato y i como entero i = 1 leer dato mientras i < 3 suma = suma + dato i = i + 1 termina mientas promedio = suma / i desplegar promedio

Este programa pretende obtener el promedio de 3 nmeros. Qu valor tendr promedio al final del siguiente pseudocdigo, suponiendo que se ejecuta sin problemas?
1 define promedio como entero 2 define dato1 = 9, dato2 = 6, dato3 = 8 3 promedio = dato1 + dato2 + dato3 / 3

Reescriba la(s) lnea(s) que estn mal escritas. # de lnea Correccin

Qu valor tendr x y w despus de las siguientes instrucciones?


x = 1 w = x mientras (x <=5) w = w * x x = x + 1 termina mientras

Qu valor tendr x despus de las siguientes instrucciones (cada inciso es independiente)?

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

64 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

a) x = 8 x= x + 2 b) x x x x = = = = 8 x + 2 5 x * x

c) w = 8 t = 5 x = w * t d) a b c x = = = = 8 10 9 a + b + c / 3

e) x = 8 * 6 + 2 * 6 / 2 + 1

CONDICIONALES Ejemplo: determinar el rea de un tringulo Paso 1. Requerimientos del usuario: 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 los lados. Ejemplo: si los lados valieran 6, 8 y 10, s valdra 16 y el rea valdra 24.

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 65

Paso 2. Diseo preliminar de la pantalla que se obtendr al finalizar el programa.

Bienvenido. Este programa obtiene el rea de un tringulo a partir de sus datos. Teclee sus datos separados por un espacio. 7 8 10 El rea del tringulo es de 24.0 Oprima cualquier tecla para terminar

Paso 3. Diseo del lote de pruebas que se aplicar al terminar el programa. Datos del usuario 6 8 10 3 5 9 Resultado esperado El rea del tringulo es de 24.0. No puede formarse un tringulo de esas dimensiones.

Paso 4. Elaborar el algoritmo.


comentario: pseudocdigo para obtener el rea de un tringulo desplegar el texto Bienvenido solicitar los 3 lados del tringulo al usuario comentario: antes de calcular verificamos si puede hacerse el tringulo si (a > b + c) (b > a + c) (c > a + b) Despliega No puede formarse un tringulo de esas dimensiones en caso contrario s = (a + b + c) / 2 _________ rea = s * (s a) * (s b) * (s-c) desplegar rea despliega Oprima cualquier tecla para terminar

Paso 5. Elaborar el cdigo.


// Programa que recibe los 3 lados de un tringulo y devuelve su rea. #include <conio.h> #include <stdio.h> #include <math.h> main() { float a, b, c, s, area; printf("Bienvenido.\n\n"); printf("Este programa obtiene el area de un triangulo a partir de sus datos.\n"); printf("Teclee sus datos separados por un espacio.\n\n"); scanf("%f %f %f", &a, &b, &c); // previamente se validar que sea posible construir el tringulo if ( (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");

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

66 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

printf("El area del triangulo es: %4.1f \n", area); } printf("\n\n Oprima cualquier tecla para terminar..."); getch(); }

Paso 6. Conjuntar la documentacin. 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 los lados. Ejemplo: si los lados valieran 6, 8 y 10, s valdra 16 y el rea valdra 24. Cdigo:
// Programa que recibe los 3 lados de un tringulo y devuelve su rea. #include <conio.h> #include <stdio.h> #include <math.h> main() { float a, b, c, s, area; printf("Bienvenido.\n\n"); printf("Este programa obtiene el area de un triangulo a partir de sus datos.\n"); printf("Teclee sus datos separados por un espacio.\n\n"); scanf("%f %f %f", &a, &b, &c); // previamente se validar que sea posible construir el tringulo if ( (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 triangulo es: %4.1f \n", area); } printf("\n\n Oprima cualquier tecla para terminar..."); getch(); }

Pruebas aplicadas: Datos del usuario 6 8 10 3 5 9 Pantalla final: Resultado esperado El rea del tringulo es de 24.0. No puede formarse un tringulo de esas dimensiones.

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 67

Niveles de Andrea: 2,990 3% 7,490 5% 13,990 7% 54,990 10% Realice un programa que simule un volado. El programa le pedir al usuario que atine si saldr cara o cruz y a continuacin le dir el resultado de la moneda. Nota: utilice un tipo char para capturar el Piedra, papel y tijera Ecuacin de 2o. grado Validacin que no se divida entre cero Mayor de 3 nmeros Taller de clnica Mayor Si a>=b y a>=c El mayor es a Si b>=a y b>=c El mayor es b Else El mayor es c

Realizar un programa que lea tres calificaciones, despliegue el promedio final y diga 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.

CICLOS Juego menor-mayor Realice un programa que reciba un nmero y despliegue su sumatoria. Obtener la divisin de dos nmeros sin utilizar el operador de divisin.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

68 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

Ciclos y buenas prcticas de codificacin suma=0, cuenta=0 despliega "D sus calificaciones..." repite leer dato si dato >= 0 suma = suma + dato cuenta = cuenta + 1 mientras dato>= 0 promedio = suma / cuenta despliega promedio ARREGLOS Juego de lotera Memorama El juego de la vida Juego del ahorcado Burbuja o seleccin directa El problema de las 8 reinas Frecuencia de calificaciones REGISTROS Tarjetas de crdito SUBRUTINAS Sumatoria Torres de Hanoi Juego de gato Quicksort Hashing APUNTADORES Las lneas del metro Recorriendo el pas por entidad federativa TRABAJOS FINALES Un caballo que toque todas las casillas Un laberinto Un gato que aprenda El problema de las 8 reinas La simulacin de las lneas del metro Simulacin de un banco Recorriendo las provincias

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 69

Paradigma de programacin

Los primeros elementos

Condicionales

Un primer acercamiento

Ejercicio \ tema

Promedio de 2 nmeros Leer el lado de un cuadrado y calcular su rea Leer el dimetro de un crculo y calcular su rea Leer un dato y desplegar su raz cuadrada Descuento sobre descuento

X X Ej. X Ej. X Ej. X Ej.

Calcular descuentos Calcular descuentos (primeros auxilios) Dividir 7/3 (primeros auxilios) Dividir dos nmeros (primeros auxilios) Hola mundo (primeros auxilios) Despliegue al azar un nmero del 1 al 6 Despliegue al azar un nmero del 2 al 12 Desglose de billetes

X X

X Ej. X Ej. X Ej.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

Subrutinas

Arreglos

Ciclos

70 | Captulo 3

El Paradigma de la Programacin Estructurada _________________

Tres letras siguientes en cdigo ASCII Leer un nmero y desplegar hasta la cuarta potencia El mayor de tres nmeros (prueba de escritorio) Promedio de 3 nmeros y despliegue de aprobado (con condicionales, en pseudocdigo) Promedio de 3 nmeros y despliegue de aprobado (con ciclos, en pseudocdigo) Descuentos segn volumen

X Ej. X Ej. X Ej. . X Ej. X Ej. X Ej.

Promedio de n calificaciones preguntando nmero de datos Promedio de tres calificaciones con redondeo Promedio de n nmeros terminando con -1 Clculo con horas extras

X Ej. X Ej. X Ej. X Ej.

Apuesta para adivinar el valor de un dado Juego mayor-menor

X Ej. X Ej.

Tres lados de un tringulo y calcular su rea Capturar los tres lados de un tringulo y desplegar el tipo Capturar 3 nmeros y desplegar el mayor de ellos Recibir n datos, calcular promedio y desviacin estndar Factorial (ejemplo con prueba de escritorio)

X Ej. X Ej. X Ej. X Ej. X Ej.

Alfaomega LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G.

_____________

Captulo 2. Los primeros elementos para codificar en Lenguaje C | 71

Promedio sin ciclos (qu resulta de) Mayor de tres nmeros (qu resulta de) Aprobado y condicionales (qu resulta de) Ordenar pseducdigo (con ciclos) Promedio de 4 nmeros (qu resulta de) Promedio de 3 nmeros con ciclos (corregir pseudocdigo) Promedio de 3 nmeros sin ciclos (corregir pseudocdigo) Valor de diversas aritmticas operaciones reprobado con

X Ej. X Ej. X Ej. X Ej. X Ej. X Ej. X Ej. X Ej.

LGICA DE PROGRAMACIN CON LENGUAJE C JOS LUS LPEZ G./ NGEL GUTIRREZ G. Alfaomega

Você também pode gostar