programación recortada

41
30 Programación en C Ing. Leonel Antonio Quijano Acuña Unidad II Unidad II INTRODUCCIÓN INTRODUCCIÓN La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora, además de lo anterior, también podemos diseñar soluciones a la medida de problemas específicos que se nos presenten. Mas aún, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Conceptos de Programación Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output). Proceso de información en la computadora Datos de Proceso Datos de entrada salida

Upload: edgar

Post on 11-Dec-2015

13 views

Category:

Documents


2 download

DESCRIPTION

Programacion, ejercicios basicos para entender el funcionamiento de como programar mediante diagramas de flujoPuede ser utilizado en cualquier nivel como inicio de...

TRANSCRIPT

Page 1: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

INTRODUCCIÓN INTRODUCCIÓN

La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora, además de lo anterior, también podemos diseñar soluciones a la medida de problemas específicos que se nos presenten. Mas aún, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos.

El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones.

A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico.

Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma.

Conceptos de Programación

Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output).

Proceso de información en la computadora

Datos de Proceso Datos de entrada salida

Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas

secuencialmente resuelven un problema especifico.

Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación.

La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes:* Los mensajes deben correr en un sentido a la vez.* Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje.

Page 2: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Lenguajes de Programación

Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora.

Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.

Los lenguajes de programación se clasifican en:

Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1).

Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.

Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, frotran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa.

Definición de Algoritmo

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.

Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico.

Lenguajes algorítmicos

Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.

Tipos de Lenguajes Algoritmicos

Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).

Page 3: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Gráficos : Diagrama de Flujo

Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados.

Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI).

Recomendaciones para el diseño de Diagramas de Flujo Se deben se usar solamente líneas de flujo horizontales y/o verticales. Se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar líneas de flujo son conectar. Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.

Diagramas estructurados (Nassi-Schneiderman)

El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la sig. forma:

Modelo: Inicio Accion1 Accion2 . . .Fin

No Grágicos: Pseudocodigo

Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos.

Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.

Page 4: Programación Recortada

30

SUMA = B + 3 IDENTIFICADOR OPERADOR IDENTIFICADOR OPERADOR CONSTANTE

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de pseudocodigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.

Modelo:

Accion1 Accion2 . . AccionNFin

Ejemplos de Algoritmos Ejemplos de Algoritmos

Identificador:Es el carácter alfabético o grupo de caracteres alfabéticos o alfanuméricos que se emplean para representar algo en la solución de un problema.

Redactar el algoritmo para leer 2 números

cualesquiera y calcular la suma de ambos.

Paso 1. inicio

Paso 2. leer N1 IDENTIFICADOR

Paso 3. leer N2

Paso 4. total = N1 + N2

Paso 5. fin.

Calcular el área de envoltura de papel de

una lata cilíndrica que tiene una altura H y

un diámetro D. Redactar el algoritmo para

leer la H y el diámetro D y calcular el área

solicitada.

Paso 1. inicio

Paso 2. leer D IDENTIFICADOR

Paso 3. leer H

Paso 4. PC = 3.1416 * (D/2)

Paso 5. Area = PC*H

Paso 6. Fin

Page 5: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejemplo: Dada la figura del triangulo ABC, el coseno de ángulo A puede calcularse mediante la formula

dada posteriormente. Redactar un algoritmo para calcular el coseno para cada uno de los ángulos, si se

proporciona como único dato el valor de los lados.

1. Inicio.2. leer a.3. leer b.4. leer c5. Cos_A = b2 + c2 + a2/2bc6. Cos_B = a2 + c2 – b2/2ac7. Cos_C = b2 + a2 – c2/2ab 8. Imprimir el coseno del ángulo que es : cos_A9. Imprimir el coseno del ángulo que es : cos_B10. imprimir el coseno del ángulo que es : cos_C11. Fin.

Estructuras Algoritmicas

Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

- AsignaciónSecuenciales - Entrada

- Salida

- Simples Estructuras Condicionales

Algoritmicas - Múltiples

- Hacer paraCíclicas - Hacer mientras

- Repetir hasta

Estructuras Secuenciales

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma:

Figura: Triángulo ABCFormula: Cos A = b2 + c2 + a2/2bc

Cos B = a2 + c2 – b2/2ac

Cos C = b2 + a2 – c2/2ab

C

a

b

A c B

Page 6: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Inicio Accion1 Accion2 . . AccionNFin

- Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

Simples: Consiste en pasar un valor constate a una variable (a=15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un

proceso (a=a+1) Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre

muchas variables (a=c+b*2/4).- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue:

Leer a, b

Donde “a” y “b” son las variables que recibirán los valores

-Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue:

Escribe “El resultado es:”, R

Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.

Estructuras de Condicionales

Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples.

Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma:

Si <condición> entoncesAcción(es)

Fin-si

Page 7: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Decisión: Es una comparación o relación existente entre 2 identificadores y un valor. Es decir, dados los

valores A y B se puede tener de ellas la siguiente relación:

A>B A es mayor que B.

A=B A es igual que B.

A<B A es menor que B.

Ejemplo: Dados 2 números cualesquiera redactar el algoritmo para leer y calcular el producto de ambos si

el primer valor es menor que el segundo y en caso contrario efectuar la suma de ellos.

1. Inicio 9. fin

2. leer A

3. leer B Realizar prueba de Escritorio

4. Comparar A con B

si A<B, ir al paso 7

si no continuar

5. multiplicación = A*B

6. imprimir (el valor de multiplicación es, multiplicación) ir al paso 9

7. suma = A+B

8. imprimir ( el valor de suma es, suma)

9. fin

Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma:

Si <condición> entoncesAcción(es)

si noAcción(es)

Fin-si

Donde:

Si ………………… Indica el comando de comparaciónCondición………… Indica la condición a evaluarentonces……..…… Precede a las acciones a realizar cuando se cumple la condiciónacción(es)………… Son las acciones a realizar cuando se cumple o no la condiciónsi no……………… Precede a las acciones a realizar cuando no se cumple la condición

Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.

Page 8: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente:

Si <condición> entonces

Acción(es) si no

Si <condición> entoncesAcción(es)

si no.. Varias condiciones.

Forma GeneralCasos Variable Op1: Acción(es) Op2: Acción(es)

. .

OpN: acciónFin-casos

Page 9: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Diagramas de Flujo (D.F.)

Diagrama de Flujo o Organigrama. Representación semigráfica del algoritmo en cuestión y representa la

solución de un problema por medio de símbolos estandarizados, que se colocan en una secuencia

adecuada para indicar las fases lógicas de la solución de un problema.

Esto nos facilita la visión descriptiva de la ejecución del programa, así como la generación de la traza

del algoritmo o del Diagrama de Flujo . Se denomina traza de un algoritmo o Diagrama de Flujo, a la

ejecución manual de un programa obteniendo para cada paso un resultado.

El sentido de la ejecución de un D.F. es de arriba hacia abajo y de izquierda a derecha. El D.F.,

proporciona algo más que una descripción detallada del flujo o procesamiento de información, sirve

también como:

Medio de comunicación eficiente.

Herramienta de análisis.

Forma concisa de documentación.

Símbolos generales:

Inicio y fin de un programa.

Operaciones de I/O , aritméticas y lógico-aritméticas.

Decisiones lógicas.

Flujo de la ejecución.

Los D.F., sólo tienen una entrada y una salida, es decir, que es la representación gráfica de un algoritmo

estructurado (subalgoritmo).

Traza de un Diagrama de Flujo.

La traza (también conocido como: Prueba de Escritorio) de un Algoritmo o Diagrama de Flujo, se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Así, la la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando

un programa.

Page 10: Programación Recortada

30

+- Diagrama de Flujo

Inicio a=0, b=0

a,b

c = a + b

c terminar

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona

correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar

el algoritmo al máximo e incrementar su eficacia y velocidad.

Simbología básica del los Diagrama de Flujo

Todos los símbolos se unen mediante líneas que tiene un solo sentido, y se les conoce como líneas de

flujo, las cuales indican el sentido de la ejecución del D.F. de arriba abajo y de izquierda a derecha.

Empleado para marcar el inicio y el fin de un D.F. (Delimita cuerpo lógico del D.F.)

Símbolo de lectura. Se encierra lo que será leído.

Inicio

N

T R A Z A

Comentario ValoresLeemos a: a <- 4Leemos b: b <- 5Calcula c: c <- a+b <- 9Escribe c: c <- 9

Page 11: Programación Recortada

30

A=BNo Si

Instrucción Instrucción

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Símbolo de impresión. Empleado para la impresión de los valores que tienen los indentificadores o

citar mensajes.

Bloque de procesamiento. Se usan para representar: asignaciones o para realizar cálculos.

Conectores. Empleados para indicar hacia donde continua el D.F.

Colectores. Son para recibir dos líneas de flujo y tener una línea resultante.

Símbolo de Condición o Decisión.

No Condición Si

Decisión: Se utiliza para buscar una comparación o relación lógica entre dos valores. Si la condición se

cumple, la dirección lógica tamará el camino del “si” y ejecutará la instrucción o instrucciones

correspondientes; en caso contrario, tomará el camino del “no (si no )”. Al tomar la alternativa del

“no”, podría ser necesario no realizar una instrucción o grupos de instrucciones, ya que puede ser deseable

que por las condiciones del problema, no se necesite realizar ninguna instrucción.

Simbolo de decisión anidados. Esta simbología, es semejante a la anterior. Al implantar una

simbología de condición y agregar inmediatamente otro símbolo igual al anterior (en lugar de una

Resultado

A=B+C

Instrucción

A=BNo Si

Page 12: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

instrucción) independientemente de la posición lógica “si o si no“, en ese momento se puede decir

que se está utilizando simbología de decisión anidada.

Cabe mencionar, que mientras más condiciones anidadas se implanten, más complejidad de interpretación

o confusión se presentará al analizar el diagrama de flujo. Para tal caso, se crea simbología que sigue a

continuación.

Instrucción Según—hacer (case)

Es una instrucción de selección múltiple de opciones. En esta simbología de multiples caminos, solamente

uno es el que se ejecutará (de acuerdo al deseado) e inmediatamente terminará el módulo del flujo lógico.

Instrucción Instrucción Instrucción Instrucción Instrucción Instrucción Instrucción

Según Valor

Fin Según

No Si

No Si No Si

No Si

No Si

Condición

Condición

Condición

Condición

CondiciónInstrucción Instrucción Instrucción

Instrucción Instrucción

Page 13: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Otros símbolos:

Símbolo Uso Ejemplo

Expresa, la tomar la parte entera

de un identificador

A = 3.567

A = 3

Expresa, tomar el módulo a

residuo de una división entera

A = 20

A / 2 = 0

Expresa, El valor absoluto de que

tine un identificador.

A= -55

A = 55

Ejemplos resueltos:

Diagrama de Flujo. (Utilizando simbología básica) Lee dos números cualesquiera y calcula la suma de

ambos.

Ejercicio utilizando (if-else).-Hacer un D.F. para leer las coordenadas de un punto y las coordenadas del

centro de una circunferencia con radio R, determinar la posición del punto (dentro, sobre, fuera de la

circunferencia).

INICIO

A,B

SUMA = A + B

SUM

ATERMINAR

INICIO

R,Xc,Yc,Xp,Yp

D= (Xc-Xp) 2 + (Yc-Yp)2

R>D Dentro

Inicio

Terminar

Fuera R=D Sobre

Page 14: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Realizar un diagrama de flujo para leer una calificación que debe ser entera y legal. Determinar si la

calificación es reprobatoria, si saco 70, si saco 80, si saco 90, o excelente.

CAL >= 0And Cal <=100

Según CAL

Terminar

Problemas Secuenciales para Diagramar

1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual.

Inicio‘’ Leer cap_inv

gan = cap_inv * 0.02 Imprimir ganFin

2) Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.

Inicio Leer sb, v1, v2, v3 tot_vta = v1 + v2 + v3 com = tot_vta * 0.10 tpag = sb + com Imprimir tpag, comFin

3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra.

Reprobado Saco 70 Saco 80 Saco 90 Excelente

CAL

INICIO

Terminar Según

Page 15: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Inicio Leer tc d = tc * 0.15 tp = tc - d Imprimir tpFin

4) Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes:

55% del promedio de sus tres calificaciones parciales.30% de la calificación del examen final. 15% de la calificación de un trabajo final.Inicio Leer c1, c2, c3, ef, tf prom = (c1 + c2 + c3)/3 ppar = prom * 0.55 pef = ef * 0.30 ptf = tf * 0.15 cf = ppar + pef + ptf Imprimir cfFin

5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.

Inicio Leer nh, nm ta = nh + nm ph = nh * 100 / ta pm = nm * 100 / ta Imprimir ph, pmFin

Problemas Condicionales

Problemas Selectivos Simples para diagramar

1) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta.

Inicio Leer p_int, cap int = cap * p_int si int > 7000 entonces

cap = cap + int fin-si Imprimir capf

fin

Page 16: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.

Inicio Leer calif1, calif2, calif3 prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces

Imprimir “alumno aprobado” si no

Imprimir “alumno reprobado” Fin-siFin

3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra?

Inicio Leer compra Si compra > 1000 entonces desc = compra * 0.20 si no

desc = 0 fin-si tot_pag = compra - desc imprimir tot_pagfin.

Problemas Selectivos Compuestos para diagramar1) Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. Inicio

Leer num1, num2 *si num1 = num2 entonces

resul = num1 * num2 si no

-si num1 > num2 entoncesresul = num1 - num2

si noresul = num1 + num2

-fin-si * fin-si

fin

2) Leer tres números diferentes e imprimir el numero mayor de los tres.Inicio Leer num1, num2, num3 Si (num1 > num2) and (num1 > num3) entonces

mayor = num1

Page 17: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

si noSi (num2 > num1) and (num2 > num3) entonces

mayor = num2 si no

mayor = num3fin-si

fin-si Imprimir mayorfin

3) Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.

Inicio Leer ht, pph Si ht < = 40 entonces

tp = ht * pph si no

he = ht - 40Si he < = 8 entonces

pe = he * pph * 2 si no

pd = 8 * pph * 2pt = (he - 8) * pph * 3pe = pd + pt

fin-sitp = 40 * pph + pe

fin-si Imprimir tpfin

4) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla:

Tiempo UtilidadMenos de 1 año 5 % del salario1 año o mas y menos de 2 años 7% del salario2 años o mas y menos de 5 años 10% del salario5 años o mas y menos de 10 años 15% del salario10 años o mas 20% del salario

Inicio Leer sm, antig Si antig < 1 entonces

util = sm * 0.05 si no

Si (antig > = 1) and (antig < 2) entoncesutil = sm * 0.07

Page 18: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

si noSi (antig > = 2) and (antig < 5) entonces

util = sm * 0.10 si no

Si (antig > = 5) and (antig < 10) entoncesutil = sm * 0.15

si noutil = sm * 0.20

fin-sifin-si

fin-si fin-si Imprimir utilfin

5) En una tienda de descuento se efectúa una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores mencionados. Inicio

leer tc, b$ si b$ = ‘blanca’ entonces d=0 si no si b$ = ‘verde’ entonces d=tc*0.10 si no

si b$ = ‘amarilla’ entonces d=tc*0.25 si no

si b$ = ‘azul’ entonces d=tc*0.50

si no d=tc

fin-si fin-si fin-si fin-si

fin

Page 19: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Estructuras Cíclicas

Hasta el momento las instrucciones vistas, sirven para realizar todo el proceso una sola vez. Si se quisiera

repetir estas sentencias, deberá ejecutarse de nuevo el programa. Para evitar este problema surge un

mecanismo iterativo llamado instrucciones repetitivas. Estas instrucciones cíclicas, son controladas

(abortadas, canceladas o terminadas) mediante el cumplimiento de una condición o a través de un

contador automático.

Por lo tanto, Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en:

a) Mientras-hacer-fin de mientras

b) Repetir-hasta

c) Desde-hasta-hacer-fin desde

a) Mientras-hacer- fin de mientras (Do while).

Realiza repetitivamente un proceso mientras la condición dada sea verdadera, saliéndose del ciclo en el

momento que la condición sea falsa.

Simbología General : Simbología ejemplo:

NoCondición

SiInstrucciones

No N<0

SiI

N

N

Page 20: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejercicio.- Diagrama de flujo para leer un número entero que debe ser no negativo. Calcular el factorial de

dicho número. (Ejemplo: Factorial 5! =5x4x3x2x1 =120)

Observación importante. Si al iniciar el ciclo repetitivo, la concición no se cumple, se sale del proceso

sin que se realice alguna vez el bloque de instrucciones repetitivas.

b) Repetir-Hasta (repet-until)

Realizar repetitivamente un proceso mientras la condición es falsa. Es necesario que un componente de la

condición se altere para evitar caer en un ciclo repetitivo infinito.

Simbología General Simbología de ejemplo: N tiene que ser mayor que cero.

No N<0

SiI

N

N

Inicio

Fact = 1 Aux = N

No Aux > 1

Si Fact, N

Terminar

Fact = Fact * AuxAux = Aux -1

No Condición

N

Si

Instrucción

NoN>0

Si

Page 21: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejercicio - Realizar un D.F. para calcular la suma de los primeros 10 números impares.

C)Desde-hasta-hacer-fin desde (For)

Realiza repetitivamente un ciclo de instrucción(es) hasta cumplir con el número de veces previamente

conocido. Existen dos variantes de este ciclo de control.

To

For

Downto

El For to: El For Downto(forma inversa):

NoCont = 10

Si

Sumimp

Terminar

Genimp = Genimp + 2Cont = cont+ 1

Sumimp = sumimp + Genimp

Inicio

Genimp=1Cont=1

Sumimp = 1

I = 1 to N

Intrucciones

I = N Downto 1

Intrucciones

Page 22: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

El identificador I (pudo ser cualquiera). Es un auxiliar que se utiliza para llevar el control cíclico

automático.

Caso for to; el identificador variable I, tendrá el valor numérico uno (1) cuando el flujo lógico pase la

primera vez. Mientras no salga de la primera vuelta I siempre tendrá el valor nuérico uno (1).

El ciclo lógico terminará cuando I alcance el valor de N (número máximo de vueltas previamente

conocido).

Caso for downto; el identificador variable I, tendrá el valor numérico N (número máximo de vueltas

previamente conocido) y cada vez que pase por el flujo lógico decrementará de manera automática, por lo

tanto, antes de entrar de nuevo al ciclo repetitivo de instrucciones (en la parte alta del ciclo) se comparará

el valor de I con el valor númerico de uno ( pasa por última vez), de tal forma que cuando I tenga como

valor numérico cero (0), el flujo saldrá del ciclo.

Ejemplo:

Problemas ( Hacer para )1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos

Inicio Sum=0 Leer Nom Hacer para c = 1 a 7 Leer calif

Sum = sum + calif Fin-para prom = sum /7 Imprimir promFin.

2) Leer 10 números y obtener su cubo y su cuarta.Inicio Hacer para n = 1 a 10

Leer numcubo = num * num * numcuarta = cubo * numImprimir cubo, cuarta

Fin-para

I = 10 Downto 1

I

Se imprimirá en la pantalla como resultado los valores numéricos del 10 al 1 en forma descendente. Si se deseara realizar el en forma ascendente se tendría que utilizar el ciclo repetitivo For To

Page 23: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejercicio. Realizar un Diagrama de Flujo para calcular hasta el n-ésimo termino (al menos uno ) de la

siguiente serie.

El valor de X, tendrá que estar en un intervalo cerrado de 1 a 20

Serie = X 1 + X 2 + X 3 + X 4 + . . . X N 2 4 6 8 ( N par)

serie

Terminar

Par = Par + 2PotX = Potx * X

Term = PotX/ Parserie = serie + term

Inicio

Serie=0, Term=0Par = 0

PotX=1,N=0

I = 1 T o N

N

No N > 0 Si

X

NoX>0 and X <21 Si

Page 24: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Arreglos

Arreglo:Es un conjunto o colección de variables del mismo tipo, donde cada elemento ocupa una posición

determinada, única y que se referencian utilizando un nómbre común.

Los arreglos se caracterizan por: Almacenan los elementos en posiciones contiguas de memoria Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia a

esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo.

Notación del arreglo: Identificador [subíndice]

Los subíndices indican la posición del elemento dentro del arreglo y son variables ordinales (enteros o

caracteres).

Tipos de arreglos de acuerdo a su dimensión:

Unidimensionales O VECTORES

Bidimensionales O MATRICES

Tridimensionales O MATRICES

Arreglo de una dimensión:

Numeros Nombre del Arreglo Dato de las posiciones

25 1 8 5 34 1256 0

1 2 3 4 5 6 7

Posición de los elementos Acceso al quinto elemento: Numero[5] = 34

Arreglos Multidimensionales: Según el Lenguaje de Programación que se utilice, será el número de dimensiones que soportará el Lenguaje. El Lenguaje C, contempla hasta 7 dimensiones. Los arreglos Tridimensionales por lo general, son los que se utilizan como máximo.

Page 25: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Vectores

Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual indica una posición en particular del vector. Por ejemplo:

Vec[x]

Donde:Vec………… Nombre del arreglox…………… Numero de datos que constituyen el arreglo

Representación gráfica de un vector

78910

Llenado de un Vector

Hacer para I = 1 a 10 Leer vec[I]Fin-para

Hacer mientras I <= 10 Leer vec[I]Fin-mientras

I=1Repetir Leer vec[I] I = I + 1

Hasta-que I>10

Vec[1]Vec[2]Vec[3]Vec[4]

Page 26: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejemplo: Se Proporciona un arreglo unidimensional de orden N. Dibujar un Diagrama de Flujo para leer

dicho arreglo y determinar todos los elementos pares e impares. Formar dos vectores uno de pares y otro

de impares y guardar los valores anteriores correspondientes en dichos vectores.

Inicio

N=0Par = 0

Impar = 0

N

No N > 2

I = 1 to N

X[ I ]

X[ I ]/2 = 0No Si

X[ par ]= X[ I ]X[ impar ]= X[ I ]

Terminar

Page 27: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Matriz

Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas.

Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompañado de dos índices.

Mat [R,C]

Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato.

Representación gráfica de una matriz

Mat [R,C]

1,1 1,2 1,3 1,42,1 2,2 2,3 2.43,1 3,2 3,3 3,44,1 4,2 4,3 4,4

Acceso a la matriz

Matriz_letras Acceso a la letra C: Matriz_letras[2,2]

1 2 3

A P F 1

h C u 2

L z H 3

Llenado de una matriz

Por renglonesHacer para R = 1 a 5 Hacer para C = 1 a 5

Leer Mat [R,C] Fin-paraFin-para

Fila o Renglon

[R]

Columna[C]

Page 28: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Por columnasHacer para C = 1 a 5 Hacer para R = 1 a 5

Leer Mat [R,C] Fin-paraFin-para

Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se utilizan 2 ciclos uno para los renglones y otro para las columnas; a estos ciclos se les llama ciclos anidados (un ciclo dentro de otro ciclo).

Ejemplo: Dada la matríz cuadrada de MxN, desarrollar la lógica en D.F., para leer dicha matríz.

M

2 5 5 3

67 8 8 4

346 -9 0 1

10 8 32 -6

M = 1 to 4

N = 1 to 4

M = 1 to 4

N = 1 to 4

Page 29: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

EJERCICIOS DE LA UNIDAD

Ejercicio 1: Redactar un algoritmo para ir a la escuela.

Ejercicio 2: Diseñar un diagrama de flujo para calcular el promedio de las tres calificaciones de un

alumno.

Ejercicio 3: Diseñar un diagrama de flujo para calcular la suma de los 10 primeros números impares.

Ejercicio 4: Dado dos números cualesquiera, diseñar un diagrama de flujo para leer y calcular el

producto de ambos, si el primer valor es menor que el segundo, en caso contrario, efectuar la suma.

Ejercicio 5: Leer N números enteros y calcular el promedio de los pares, contar la cantidad de impares

y calcular el promedio de los números proporcionados.

Ejercicio 6: Se tiene las calificaciones de un grupo de 10 alumnos, se necesita saber, ¿cuántos

alumnos tienen una calificación superior al promedio del grupo?. Realizar un D. F., (No utilice

arreglos).

Ejercicio 7: Hacer un D.F., para generar y sumar los N primeros números de la secuencia de la serie de

Leonardo Fibonacci. La secuencia de Fibonacci es: 1,2,3,5,8,13,21,..., es decir, dados los primeros

dos números (1 y 2) la generación de cada nuevo término se pueden encontrar sumando los dos

términos predecentes.

Ejercicio 8: Realizar D.F. para simular una calculadora que realice las operaciones básicas (+,-,*,-).

Mientras el usuario, no presione el símbolo de “=”, se introducirán valores y estos se acumularan

aritméticamente según corresponda, de otro modo, si el usuario desea dar una sólo valor y luego

presiona el “=”, se entiende que el programa tendrá que terminar, en caso contrario, se preguntará por

el siguiente valor y se ejercerá la operación deseada. (Valor = Valor1 Oper_Arit Valor2)

Ejercicio 9: Se proporciona un grupo de N números, redactar el D.F. para sumar los cuadrados de los

negativos y contarlos, el producto de los positivos y contarlos e indicar en que momento se

proporciona él numero cero como dato. Debe imprimirse todo lo solicitado.

Ejercicio 10: Se proporciona un grupo de N números que deben ser enteros. Realizar un D.F. para

determinar el menor de todos, calcular el producto de los impares y determinar el mayor y la posición

en la cual se proporcionó.

Ejercicio 11: Realizar la siguientes series, hasta el N-ésimo término.

b) Serie = -1 + x 1 - x 2 + x 3 - x 5 + x 8 ... N x+1! x+3! x+5! x+7! x+9!

a) Serie = 5 - x 2 + x 4 - x 6 + x 8 - x 10 ... N x+1 x+3 x+5 x+7 x+9

Page 30: Programación Recortada

30

Programación en C Ing. Leonel Antonio Quijano Acuña

Unidad IIUnidad II

Ejercicio 12: Grafique, como se representaría un arreglo tridimensional y etiquete indicando ¿qué es?

y ¿Para qué se utiliza? (Todo lo que grafique).

jercicio 13:Calcular el promedio de 50 valores almacenados en un vector. Determinar además cuántos son

mayores que el promedio, imprimir el promedio, el numero de datos mayores que el promedio y una lista

de valores mayores que el promedio .

Ejercicio 14: Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A

con el elemento uno del vector B y así sucesivamente hasta 45, almacenar el resultado en un vector C,

e imprimir el vector resultante.

Ejercicio 15: Llenar un vector de 20 elementos, imprimir la posición y el valor del elemento mayor

almacenado en el vector. Suponga que todos los elementos del vector son diferentes.

Ejercicio 16: Almacenar 500 números en un vector, elevar al cuadrado cada valor almacenado en el

vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante

Ejercicio 17: Se tiene las calificaciones de un grupo de 10 alumnos, se necesita saber, ¿cuántos

alumnos tienen una calificación superior al promedio del grupo?. Utilizar arreglos.

Ejercicio 18: Se proporciona un arreglo unidimensional de orden N. Representar el D.F., para leer

dicho vector y determinar cual es el elemento menor y la posición que ocupa; y formar un vector con

los elementos que sean mayores al promedio del arreglo leído. En el vector resultante, analizar si

existen elementos pares y sumarlos, excepto los terminados en dos y en cuatro.

Ejercicio 19: Hacer un algoritmo que almacene números en una matriz de 5 * 6. Imprimir la suma de

los números almacenados en la matriz.

Ejercicio 20: Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posición

[renglon,columna] del numero mayor almacenado en la matriz. Los números son diferentes.

Ejercicio 21: Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada renglón y

almacenarla en un vector, la suma de cada columna y almacenarla en otro vector.