You are on page 1of 15

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre

de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Objetivo de esta gua Brindar un marco conceptual, referencial y de vocabulario, para el desarrollo de los cursos de programacin I, que se llevan a cabo de manera unificada en la universidad. Programacin 1 Objetivo del Curso: Adquirir habilidad en la solucin de problemas por medio del computador, mediante el desarrollo del pensamiento algortmico. Desarrollar habilidades en el uso de por lo menos un lenguaje y una herramienta de programacin. Desarrollar aptitudes de anlisis, diseo y codificacin de soluciones a problemas bsicos de programacin. Contenidos del curso 1. Generalidades 1.1Conceptos de mquina y computador 1.2 Componentes funcionales del computador 1.2.1 Software 1.2.1.1 Conceptos 1.2.1.2 Clasificacin 1.2.2 Hardware 1.2.2.1 Concepto 1.2.2.2 Divisin Funcional (CPU, Memoria y dispositivos de entrada y salida) 1.3 Medicin de capacidad de almacenamiento 1.4 Tipos de datos 2. Resolucin de Problemas 2.1. Metodologa para la resolucin de problemas 2.2 Conceptos preliminares (Algoritmo, dato, variable, constante, expresin, tipos de expresiones) 2.3 Diagramas de Flujo 2.4 Estructuras de Control 2.4.1 Secuenciales o lineales 2.4.2 De seleccin 2.4.3 De repeticin (Para, Mientras que, hacer mientras) 2.5 Programacin modular 2.5.1 funciones 2.5.2 Parmetros por valor 3. Lenguaje de programacin 3.1 Fundamentos de C 3.2 Herramienta de programacin en C (dev c++) 3.3 Procedimientos para la edicin, compilacin y ejecucin de programas Bibliografa Recomendada [1] Fundamentos de Programacin, Algoritmos, Estructuras de datos y Objetos, Luis Joyanes Aguilar, Tercera edicin. Editorial McGraw Hill. [3] Fundamentos de Programacin, Algoritmos y Estructuras de datos, Luis Joyanes Aguilar, Segunda edicin. Editorial McGraw Hill. [4] Fundamentos de Programacin, Libro de problemas, Luis Joyanes Aguilar, Editorial McGraw Hill. [5] Turbo C/C++ 3.1 Manual de referencia, Herbert Schildt, McGraw Hill

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

El semestre acadmico consta de 16 semanas de clase, incluidas las tres semanas de exmenes, por lo tanto se deduce que durante el semestre se dan aproximadamente 26 encuentros con los estudiantes, considerando que los horarios de la asignatura se da en dos bloques por semana, por lo tanto se considera un encuentro es terico y el otro prctico donde la temtica por lo general es la misma, en este semestre se presenta esta guia por semanas asumiendo que durante la semana se trata una misma temtica solo que en uno de los bloques se dan las explicaciones tericas y en el otro bloque se desarrollan las practicas correspondientes a la misma temtica.. Semana Temas Objetivos 1 Introduccin del curso Presentar los objetivos, contenidos, bibliografa, guia y cd de la asignatura Clasificacin de datos bsicos en Introducir los conceptos de mquina, computador, programacin, y componentes programacin funcionales del computador Conceptos preliminares de Introducir el concepto de Byte como unidad de medida de capacidad de programacin almacenamiento junto con sus mltiplos y submltiplos Presentar los tipos de datos que se utilizan tpicamente en cualquier lenguaje de programacin estructurada Introducir la tabla de cdigos ascci como mecanismo de representacin de caracteres Clarificar y ejemplificar los conceptos de: algoritmo y expresin Diferenciar las fases dentro de la metodologa de solucin de problemas utilizada en el curso Presentar las diferentes notaciones de algoritmos y resaltar el diagrama de flujo como herramienta para la representacin de algoritmos en este curso. Dentro del concepto de expresin clarificar los conceptos de: operando (constante, variable) operadores (aritmticos, lgicos, relacionales, alfanumricos), signos de agrupacin y funciones 2 Estructuras de control Introducir y ejercitar las estructuras de control: Entrada de datos, Asignacin y secuenciales salida de datos 3 Introduccin al lenguaje C Definir la estructura general de un programa en C Ejercitacin de estructuras de Representar en lenguaje C las estructuras de control lineales control lineales Analizar, disear y codificar soluciones a problemas que usen estructuras de control lineales. Realizar el anlisis, diseo y codificacin de problemas que utilicen estructuras de control lineales dentro de la solucin. 4 Introduccin y ejercitacin de las Introducir el concepto de estructura de seleccin estructuras de control de Representacin en diagramas de flujo y seudo cdigo de las estructuras de seleccin seleccin secuenciales (no anidadas) Estructuras de control de Representacin en lenguaje C de las estructuras de seleccin o condicionales seleccin anidadas Realizar el Anlisis, diseo y codificacin a problemas que requieren el uso de estructuras de control de seleccin. Introducir el concepto de estructura de seleccin Anidadas Realizar el Anlisis, diseo y codificacin a problemas que requieren el uso de estructuras de control de seleccin anidadas 5 Ejercitacin de estructuras de Realizar diversos ejercicios que involucren estructuras de seleccin secunciales y control de seleccin anidadas. 6 7 Primer examen Introduccin y ejercitacin de las estructuras de control repetitivas para secuenciales y anidadas Estructuras de control repetitivas Mientras que secuenciales y anidadas Estructuras de control repetitivas Hacer Mientras secuenciales y anidadas Un ejercicio de Estructuras de seleccin anidadas y un punto de teora sobre expresiones, evaluacin de expresiones y uso de operadores Introducir el concepto de estructura de control repetitiva Representacin en diagramas de flujo, seudo cdigo y C de las estructuras repetitivas para Ejemplificar el uso de estructuras repetitivas para

8 9

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

10

11 12 13 14 15 16 Examen Final Desarrollo de temas

Ejercicios miscelneos sobre estructuras de control repetitivas Segundo Examen Introduccin a las funciones

Semana 1. Presentacin del curso, objetivos, contenidos, bibliografa, guia y cd de la materia Iniciacin de conceptos de mquina y computador Componentes funcionales del computador. Cuando se define la memoria de datos comentar sobre los siguientes tipos de datos que pueden ser almacenados ntese que por no incluir el sistema de numeracin binario, no es necesario hablar de los enteros cortos, propiamente dichos como estn en la gua del estudiante Enteros Numricos Reales

Tipos de datos Alfanumricos

Caracteres Cadenas de Caracteres (String)

Boolenos Tambin como parte de la descripcin de la memoria, se introducen las unidades de medida de capacidad de almacenamiento. Explicar la equivalencia de Byte, KB, MB, GB, TB y realizar procesos de convertir por ejemplo 3.25 GB a KB y a Bytes (recordar que el factor real de conversin es 1024... pero que por facilitar los clculos siempre se utiliza el 1000 como factor de conversin) Conceptos tericos sobre la programacin. Concepto de algoritmo, ejemplo de un algoritmo cotidiano (no de programacin) Metodologa para la resolucin de problemas (mtodo en cascada)

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Enunciados claros, sin ambigedad de la situacin que se quiere automatizar mediante la construccin de un programa de computador Indentificacin de los datos que el usuario tiene que proveer al computador cuanto el programa est ya construido (datos de entrada), y de los datos que el computador entrega al usuario como solucin del problema (datos de salida)

Problema a solucionar

Anlisis Diseo Codificacin Prueba

Descripcin de los pasos que debe seguir el computador (algoritmo) para a partir de los datos de entrada, d solucin al problema. Estos pasos pueden ser descritos mediante diferentes tcnicas como diagramas de flujo o seudocdigo

Implantacin Mantenimiento

Traduccin de los algoritmos especificados en el diseo a un lenguaje de alto nivel entendible por el computador en este caso a C

Reingeniera

Verificacin de que el algoritmo, soluciona el problema.

Conceptos de algoritmo de programacin, dato, constante, variable, expresin, tipos de expresiones validas en programacin. Algoritmo: Conjunto de pasos lgicos, secuenciales y finitos para dar solucin a un problema general. Dato: Es una caracterstica de un objeto o entidad, que adquiere un valor. Por ejemplo, si se piensa en los datos asociados a un estudiante (la entidad es el estudiante), podemos identificar datos como su nombre, edad, sexo, estado civil, fecha de nacimiento, y muchos otros ms datos, que pueden relacionarse con el estudiante. Constante: Un datos se dice que es constante si su valor nunca cambia dentro de un algoritmo. Variable: Una variable es un dato cuyo valor cambia por lo menos una vez dentro de un algoritmo. Toda variable debe ser identificada mediante un nombre nico dentro de un algoritmo. Los nombres de las variables son palabras descriptivas del dato que contienen, sin espacios ni signos de puntuacin, usando solo letras del alfabeto ingles y nmeros, comenzado siempre en letra. Tipos de datos: Los datos se clasifican segn el tipo de valor que contenga as: Numrico (si su contenido es un nmero) Alfanumrico (si su contenido es un carcter o una cadena de caracteres) y Booleanos (si su contenido es un valor de verdad, es decir un verdadero o un Falso). Expresin: Es una combinacin apropiada de operandos, operadores, signos de agrupacin y funciones. Los operandos son datos constantes o variables, los signos de agrupacin son los parntesis y las funciones son las predefinidas por el lenguaje o construidas por el programador. Nota: en este curso slo esta permitido el uso de los operadores aqu definidos. Suma + Resta Divisin real / Multiplicacin * Divisin entera div Residuo de divisin entera And X

Aritmticos

mod Y X and Y X or Y Not X

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Lgicos Operadores

Or not

V V F F

V F V F

V F F F

V V V F

F F V V

Relacionales

Mayor > Menor < Mayor o igual Menor o Igual Igual = = Diferente El operador de concatenacin que tiene algunos lenguajes de programacin y que bsicamente sirve para pegar dos cadenas de caracteres

Alfanumricos

Evaluar una expresin: Es el proceso mediante el cual se realizan las operaciones indicadas en una expresin, con los valores que en ese instante tengan las variables, respentando el orden que plantean los signos de agrupacin y obteniendo un nico valor que puede ser un nmero, un carcter o cadena de caracteres, o un valor de verdad (un falso o un verdadero) Tipos de expresin: Una expresin puede ser numrica, alfanumrica o booleana. Es numrica si despus de evaluar (calcular la expresin) su resultado es un nmero; es alfanumrica si despus de evaluar la expresin el resultado es un carcter o cadena de carcter y es booleana si despus de evaluar la expresin su resultado es un valor de verdad (un verdador o un falso) Ejemplos: si a, b y c son datos numricos (a+b)*c es una expresin numrica ((a+b)*c) > 5 es una expresin boleana ((a>b) and (c>a+b)) or (c >3) es una expresin booleana (a div 4) = 0 es una expresin booleana (a mod 5) > ( b div 4) es una expresin boolena ((a mod 5) > 4)*c no es una expresin vlida ((a mod 5) - 4)*c es una expresin numrica Ejemplo de ejercicio Verificar si cada uno de los siguientes items corresponde o no a una expresin... en caso afirmativo decir de que tipo y evaluar cuando a=2 b= -- 1 y c= 0. En caso negativo justificar porque no es una expresin vlida. ( ( a * 2 ) > ( a * 7 ) ) and ( c * 5 ) ((ab)*c)a ( a * ( ( 3 + b ) > 2 ) and (b < c ) ( ( a b ) > ( c + 5 ) ) and ( c < 4 ) not ( ( a b ) > ( c + 5 ) ) or ( c < 4 ) Semana 2 Resumen general sobre estructuras de control (cuadro sinptico)

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Lineales o secuenciales

Entrada de datos Salida de datos Asignacin

Estructuras de control

No Lineales

De seleccin o condicionales Repetitivas Para Mientras que Hacer mientras

Estructuras de control secuenciales (entrada, asignacin y salida): explicar estos conceptos haciendo uso del grfico que representa las componentes funcionales del computador Diagramas de flujo como tcnica de diseo de programas para este curso. Simbologa bsica de los diagramas de flujo Explicar los siguientes conceptos: Entrada: Proceso mediante el cual el computador captura un dato, dado por el usuario mediante un dispositivo de entrada, y este dato es llevado a un espacio de memoria (variable) dentro de la memoria de datos. Salida: Proceso mediante el cual el computador muestra un dato por medio de un dispositivo de salida. Asignacin: Proceso mediante el cual el computador cambia el valor de una posicin de memoria (variable) en la memoria de datos. Es necesario erradicar la palabra leer en los enunciados de lo ejercicios, es mejor usar la frase capturar por teclado, que tiene mas relacin con la interaccin del usuario del programa con el computador. La palabra leer solo debe usarse en seudocdigo como representacin de la captura de datos por teclado. Entrada o captura de datos Leer b scanf ( %d , &b );

b
Salida o impresin de datos

a
Asignacin

Imprimir a

printf (cadena de formateo , a );

a = b+c

a=b+c

a=b+c;

Explicar la simbologa necesaria para representar estos tres procesos dentro de un diagrama de flujo. Explicar que puede ir dentro de estos smbolos: Para una entrada: una variable (el nombre de la variable) Para una salida: una variable, una expresin (recordar el concepto de expresin descrito con anterioridad) o un mensaje que siempre se escribe dentro de comillas dobles. Para una asignacin: identificar las tres partes de una asignacin. Una variable a la izquierda que es donde se va a almacenar el dato resultante. Un smbolo de asignacin (que por lo general es el =) . Y una expresin a la derecha que ser evaluada y cuyo valor resultante ser almacenado en la variable de la izquierda. Ej a=b+c ... a es la variable de la izquierda, = es el smbolo de asignacin y b + c es la expresin de la derecha. (en este caso expresin numrica)

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Variable cuyo valor va a cambiar

Smbolo de asignacin

En una asignacin, primero se calcula el valor de la expresin y luego el resultado es almacenado en la variable de la izquierda

a = b+c

En una asignacin, el tipo de dato de la variable de la izquierda debe ser igual al tipo de expresin de la derecha

Expresin que va a ser calculada, y cuyo resultado ser almacenado en la variable de la izquierda

Resolver el siguiente problema, explicando el funcionamiento con el grfico anterior. Sumar dos nmeros enteros, dados por el usuario mediante el teclado. Realizar en clase como mnimo los ejercicios 14, 17, 19 y 21 de la gua del estudiante Semana 3 Introducir el concepto de lenguaje de programacin y listar algunos lenguajes Representar la estructura de un programa en C recuerde que es C bsico y no debemos incluir notaciones abreviadas ni conceptos orientados a objetos Diferenciar entre lenguaje de programacin y Entorno de programacin.. Recordar que para el lenguaje C existen muchos entornos integrados de desarrollo en y que en clase se usara DEVC++. Instruir en el uso del entorno DEVC++. Es necesario que nos pongamos de acuerdo y hacer el proceso desde la creacin del proyecto.. recordar que en esa herramienta se pueden desarrollar diferentes tipos de aplicaciones en C, pero que en clase solo usaremos aplicaciones de consola (explicar en que se diferencian de otro tipo de aplicaciones) De igual manera cuando se selecciona la aplicacin de consola es necesario decir que es en C y no en C++, puesto que el asistente genera de manera automtica la estructura del programa e incluye las librerias correspondientes como la stdio.h y no la iostream.h que es para C++. Realizar como ejercicio de clase por parte de los estudiantes el nmero 22 de la gua del estudiante y otros que se consideren pertinentes en cuanto al tiempo dedicado. Semana 4 Estructuras de seleccin o condicional Si condicin entonces
no Condicin si

if ( condicin ) {

...... Instrucciones para ...... ...... Instrucciones en cuando la condicin sea ...... c ...... para cuando verdadera la ....... condicin sea ....... verdadera Sino } else { ....... Instrucciones para ....... cuando la ...... Instrucciones en condicin ....... sea falsa c ...... para cuando la ....... condicin sea Fin si ........ falsa };

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Una estructura de seleccin es el proceso mediante el cual el computador selecciona para ejecutar un conjunto de instrucciones u otro, dependiendo de una expresin booleana que ser evaluada para decidir que conjunto de instrucciones se debe ejecutar. Su representacin en diagramas de flujo es
Expresin booleana que se evaluar para decidir que conjunto de instrucciones se ejecutar Llegada a la estructura

Conjunto de instrucciones que se ejecutarn, cuando la condicin sea verdadera

no

Condicin

si

Conjunto de instrucciones que se ejecutarn, cuando la condicin sea Falsa

Terminacin de la estructura Aqu se deben encontrar los caminos del si y del no para continuar el algoritmo

Explicar el funcionamiento de una estructura de seleccin mediante el siguiente ejercicio: Leer un nmero y escriba el valor absoluto del mismo. Explicar que las instrucciones por el lado del s o por el lado del no, pueden ser entradas, asignaciones, salidas o tambin otras estructuras de seleccin., organizadas en cualquier cantidad. Introducir el concepto de estructuras de seleccin anidadas y para ello resolver el siguiente ejercicio.. Dados 3 nmeros enteros, determinar e imprimir el mayor ( o el menor en otro algoritmo) primero sin utilizar anidamiento y despus con anidamiento para el primer caso sin anidamiento utilizar el siguiente algoritmo. Inicio Leer a,b,c Mayor=a Si b>mayor entonces Mayor =b Sino Fin si Si c>mayor entonces Mayor =c Sino Fin si Imprimir mayor Fin Aplicacin de estructuras de seleccin y utilizacin de los diferentes operadores definidos con anterioridad (especialmente el div y el mod).

Universidad de Pamplona Facultad de Ingenieras y Arquitectura Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Semana 5. Esta semana ser preparativa para el primer examen, por lo tanto se debe resolver ejercicios de la gua que los estudiantes sugieran o que pregunten por su solucin. En caso de que los estudiantes no sugieran ni pregunten ejercicios en particular, se sugiere rrealizar en clase como mnimo los ejercicios de la gua del estudiante 67,69,70,71, y 72 De igual manera aprovechar las clases en el laboratorio para que los estudiantes realicen ejercicios de la guia, con la asesoria del profesor, sin resolverlos en el tablero. Semana 6 Primer Examen Este examen estar compuesto de dos puntos unos terico y el otro un problema al cual se le debe hacer anlisis, diseo y codificacin. El problema se resolver con las estructuras de control secunciales (entrada, asignacin, salida) y estructuras de seleccin tanto secunciales como anidadas con mximo tres niveles de anidamiento. Semana 7 Una estructura repetitiva es el proceso mediante el cual el computador repite un conjunto de instrucciones, ya sea sabiendo cuantas veces tiene que repetirlas o simplemente repitiendo las instrucciones hasta que una condicin (expresin booleana) se deje de cumplir. Estructura repetitiva para: Se utiliza cuando previamente dentro del algoritmo se conoce el nmero de veces que se tienen que repetir un conjunto de instrucciones Para i=1 hasta n inc 1 haga for ( i =1 ; i<=n ; i=i+1 ){ ..... Instrucciones a repetir };

i=1; n ; 1

..... Instrucciones a repetir fin para

Variable que cuenta las vueltas que va dando el ciclo Llegada por primera vez al ciclo repetitivo

Valor inicial del contador

Valor final, hasta el cual el contador debe llegar

i = 1; n ; 1

Valor que se utiliza para incrementar el contador cada vez que se ejecuta el conjunto de instrucciones

Continua el proceso de repeticin si el contador no ha superado el lmite especificado Terminacin del proceso de repeticin del conjunto de instrucciones

Conjunto de instrucciones que se repetirn

Explicar el uso de estructuras repetitivas para mediante el siguiente ejercicio

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 10 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

El banco Santander tiene una modalidad de ahorro llamada todo da, consistente en que todos los das liquida los intereses de acuerdo al saldo de ese da. Hacer un programa en C, que lea un capital inicial y un nmero n y calcule el saldo de la cuenta despus de transcurridos los n das. Las condiciones para la liquidacin de los intereses son las siguientes: si el saldo actual es menor o igual a $500000 pesos se sumar un inters del 0.2% del saldo actual, si el saldo actual est entre $500000 pesos y un milln se liquidar un inters del 0.25% y si es superior a un milln, se liquidar 0.3%. Desarrollar en clase los siguientes ejercicios de la gua del estudiante: xx xxxx Semana 8 Estructura repetitiva MQ: Se utiliza cuando previamente dentro del algoritmo NO se conoce el nmero de veces que se tienen que repetir un conjunto de instrucciones y por lo tanto el computador ejecuta repetidas veces el conunto de instrucciones hasta que se deje de cumplir una condicin (expresin boolena). MQ condicin haga ..... Instrucciones a repetir fin MQ while ( condicin ) { ..... Instrucciones a repetir };

Condicin si

no

Expresin booleana que se evaluar y determina si se sigue o no repitiendo las instrucciones

Llegada por primera vez al ciclo repetitivo

Condicin si
Regreso para evaluar la expresin booleana que permite decidir si se continua o no la repeticin del conjunto de instrucciones

no

Conjunto de instrucciones que se repetirn

Terminacin del proceso de repeticin del conjunto de instrucciones

Explicar el uso de estructuras repetitivas mientras que mediante el siguiente ejercicio, resaltando la necesidad de usar una estructura repetitiva Mientras Que, dado que cuando se inicia el proceso de repeticin no se conoce el nmero de vueltas que se dar, por lo tanto el computador repetir las instrucciones hasta que se deje de cumplir una condicin (expresin booleana)

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 11 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Realizar el siguiente ejercicio cuyo enunciado es similar al realizado en la introduccin a las estructuras repetitivas para, sin embargo el anlisis y diseo es diferente y se requiere el uso de estructuras repetitivas mientras que. El banco Santander tiene una modalidad de ahorro llamada todo da, consistente en que todos los das liquida los intereses de acuerdo al saldo de ese da. Hacer un programa en C, que capture por teclado un capital inicial y calcule cuantos das se requieren para que el saldo de la cuenta supere un determinado monto (capturado por teclado). Las condiciones para la liquidacin de los intereses son las siguientes: si el saldo actual es menor o igual a $500000 pesos se sumar un inters del 0.2% del saldo actual, si el saldo actual est entre $500000 pesos y un milln se liquidar un inters del 0.25% y si es superior a un milln, se liquidar 0.3%. Hacer el anlisis diseo y codificacin en C, que permita hallar el cociente y el residuo de una divisin entera mediante restas sucesivas (sin usar el operadores div ni mod % en c).. Para el clculo del cociente y del residuo de una divisin entera, usando restas sucesivas tenga en cuenta los siguientes ejemplos: El residuo de la divisin entera El residuo de la divisin entera El residuo de la divisin entera entre 10 y 4 entre 19 y 5 entra 31 y 7 10 4 = 6 19 - 5 = 14 31 - 7 = 24 64 =2 14 - 5 = 9 24 - 7 = 17 9 - 5= 4 17 - 7 = 10 10 - 7 = 3 Cociente 2 pues se hicieron dos El cociente es 3 pues se hicieron Cociente es 4 restas tres restas Residuo es 3 El residuo es 2 puesto que es el El residuo es 4 puesto que es el ltimo resultado de la resta ltimo resultado de la resta Desarrollar en clase los siguientes ejercicios de la gua del estudiante: xx xxxx Semana 9 Estructura repetitiva hacer mientras: Se utiliza cuando se tiene que repetir por lo menos una vez un conjunto de instrucciones. Es ideal para la validacin de datos y para la elaboracin de mens entre otras muchas aplicaciones. Hacer un ejercicio para el cual se necesite capturar por teclado un dato y no pasar de la captura (seguir capturando) hasta que est entre un rango determinado. Hacer ..... Instrucciones a repetir MQ condicin Do { ..... Instrucciones a repetir } while ( condicin );

si

Condicin no

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 12 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Regreso para repetir nuevamente el conjunto de instrucciones

Llegada por primera vez al ciclo repetitivo

Expresin booleana que se evaluar y determina si se sigue o no repitiendo las instrucciones

si
Conjunto de instrucciones que se repetirn

Condicin no
Terminacin del proceso de repeticin del conjunto de instrucciones

Elaboracin de mens que se repiten hasta que el usuario teclee cierto nmero de opcin dentro del men Desarrollar los siguientes ejercicios de la gua del estudiante: Semana 10 Aplicacin se estructuras repetitivas de diferente tipo y anidadas. Esta semana es de preparacin para el segn examen, por lo tanto se debe tratar de resolver ejercicios de la gua propuestos por los estudiantes y aprovechar la clase de laboratorio para que los estudiantes resuelvan ejercicios en el computador con asesoria del profesor pero sin resolverlos en el tablero. En caso de que los estudiantes no siguieran ningn ejercicio, resolver en el tablero los siguientes: Hacer el anlisis, diseo, codificacin, ejecucin y prueba de los siguientes ejercicios Juan Pablo Montoya, entrena todos los das, recorriendo cierta cantidad de kilmetros, de tal forma que todos los das recorre el doble de lo que recorri el da anterior ms 10 km. Pero cada 3 das recorre solo la mitad de lo que recorri el da anterior. Hacer un programa en C que lea el nmero de kilmetros recorridos el primer dia del entrenamiento y un nmero n de das y halle el total de kilmetros acumulados hasta ese da (el n-simo da). Por ejemplo, si el primer da recorri 5 Km.... Dia Kms Recorridos Acumulado 1 5 5 2 (5*2)+10= 20 25 3 20/2 = 10 35 4 (10*2)+10 = 30 65 5 (30*2)+10 = 70 135 6 70/2 = 35 170 7 (35*2) +10 = 80 250 Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de inters mensual. Cul ser la cantidad de dinero que esta persona tendr al cabo de 12 meses si la ganancia de cada mes es reinvertida y si cada mes hace m consignaciones?. Hacer nfasis en las estructuras mientras que, utilizadas en programas que enuncian repetir un proceso por ejemplo hasta que un dato ledo por teclado cumpla una condicin. Realizar el siguiente ejercicio.

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 13 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

Tenemos la informacin de las personas mayores de edad que viven en un barrio de la ciudad de Pamplona. Por cada una de ellas se piden tres datos: la cedula, la edad y el sexo (1= Hombre, 2= Mujer). No sabemos cuantos son, pero en el ltimo registro el dato de la cdula es igual a cero. Hacer el programa en C que averige e imprima: Cuantos hombres y cuantas mujeres hay en el barrio. Cuntas mujeres ancianas (mayores de 70 aos) hay en el barrio. El anciano (mayores de 70 aos) de mayor edad El promedio de edad de los hombres. nfasis en ejercicios de sumatorias como principal aplicacin de las estructuras repetitivas para. Explicar el concepto de sumatoria Resolver el siguiente ejercicio:

Calcular la siguiente sumatoria

k3 + kk k 5 k =a
b
8

, para los valores de a y b dados por teclado (validando que a sea mayor que b),

k 5 y teniendo en cuenta que k no puede ser 5 pues generaria una divisin por cero.

Ejemplo si a= 4 y b=8 entonces

k 3 + k k 43 + 4 4 63 + 66 7 3 + 7 7 83 + 88 k 5 = 45 + 65 + 75 + 85 k =4
k 5

nfasis en ejercicios de series Resolver los siguientes ejercicios: 1. Hacer un programa que calcule los N primeros trminos de la serie: 1, 4, 2, 8, 4, 16, 8, ...... Determinada por: a1=1 a2= 22 / a1 = 4 a3= 23 / a2 = 2 a4 = 24 / a3 = 8 ..... ak= 2k / ak-1 2. Imprimir los trminos de la serie de Fibonacci que sean menores a un nmero n dado por teclado. Los dos primeros trminos de esta serie son 1 y cada nuevo trmino se va obteniendo sumando los dos anteriores. La serie quedara 1, 1, 2, 3, 5, 8, 13, 21, ... etc. nfasis en anidamientos mayores de 2 niveles Realice un programa en C para determinar el valor que deben pagar los clientes de un restaurante (factura) y el total recaudado por el restaurante. El restaurante tiene 15 mesas, cada mesa realiza un nmero no determinado de pedidos (cantidad y valor) hasta que el pedido (cantidad) sea 0. Adicional al valor de la factura se incrementa el 10% por concepto de propina. nfasis en la resolucin de un problema de manera eficiente. Para ello hacer un programa que diga si un nmero dado por teclado es primo o no. Primero realizar el programa con un ciclo para, contando los divisores desde 1 hasta el nmero dado Despus hacer el mismo programa pero contando solo hasta la mitad del nmero dado (analizar la eficiencia del uno respecto del otro programa. Finalmente hacer el mismo programa con una estructura mientras que... Es decir contar los divisores hasta que se llegue a la mitad del nmero o hasta que encuentre dos divisores. Comparar la eficiencia de estos tres diferentes programas Semana 11. Segundo Examen El examen consistir en el desarrollo de uno ejercicio (anlisis, diseo y codificacin) que incluya estructuras repetitivas secunciales y anidadas, de diferente tipo (para, mientras que y hacer mientras), y que tambin hagan uso de estructuras de

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 14 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

seleccin. En caso de no se consiga un ejercicio de estas caractersticas, el parcial ser de dos puntos uno con estructuras para y otro con estructuras mientras que. Clase 20. Programacin modular Definicin de funcin como un subprograma. Explicar la estrategia divide y vencers. Resaltar la importancia de las funciones, como mecanismo de simplificacin de soluciones y de reutilizacin de cdigo, puesto que la funcin se define una vez y se utiliza (llama) cuantas veces sea necesaria. Las partes de una funcin: valor que devuelve la funcin, nombre de la funcin, datos que recibe (parmetros) y cuerpo de la funcin. Diferenciar los conceptos de definicin de la funcin y llamado de la funcin. Diferenciar los conceptos de parmetros y argumentos. Los parmetros son los datos definidos en la funcin y que recibe como entrada (son variables que se definen en el encabezado de la funcin) y los argumentos son los datos que se le entregan a la funcin cuando se realiza un llamado a la funcin. Realizar Los siguientes ejercicios 1. Hacer la funcin Factorial y construir un main que utilice varias veces la funcin.

0 si n = 0 n!= 1x 2 x3 x 4....n si n > 0


Clase 21. nfasis en la estrategia divide y vencers Resolver el siguiente ejercicio usando funciones. Primero identificar y justificar el uso de las funciones, potencia, factorial y seno. Construir el main que capture por teclado un ngulo en grados, haga la conversin a grados mediante una funcin, calcule el seno de ese ngulo y compare el resultado con el obtenido mendicante la funcin sin(x) que tiene predefinido el lenguaje C. Calcule la siguiente formula

S n ( x ) = ) eo ( 1
k= 0

1 5

1 x 2k + ( 2 k + )! 1

Clase 22. Especial nfasis en el llamado de funciones desde otra funcin Hacer un programa en Lenguaje C de forma modular que calcule los nmeros narcisistas del 1 al 10000, el programa deber generar una lista de aquellos nmeros que cumplan con el requisito de ser narcisista. Un nmero narcisista es un Nmero de n dgitos que resulta ser igual a la suma de las potencias de orden n de sus dgitos. Ejemplo: 1 = 11 153 = 1 + 5 + 3. 9474 = 94 + 44 + 74 + 44 El programa deber contener las siguientes funciones: Funcin potencia que calcule x y y que sirva para calcular el resultado del dgito elevado a dicha potencia. Funcin que cuente el nmero de dgitos que tiene un nmero entero dado como parmetro Una funcin donde se desglosar el nmero en cifras y calcular la suma de las potencias Una funcin que retorne un 1 si un nmero es narcisista y in 0 si no es narcisista En el main generar la lista de los narcisistas comprendidos entre 1 y 10000 Clase 23. Especial nfasis en funciones que retornen datos que no son numricos.. por ejemplo que retorne un caracter. Realizar las siguientes funciones: Una funcin denominada calcular_sumatoria_divisores que reciba un valor n y devuelva la sumatoria de los divisores propios del valor n. Una funcin denominada valorar que reciba dos valores (el valor n y la sumatoria de los divisores propios de dicho nmero) y devuelva : p si es perfecto a si es abundante d si es deficiente

Universidad de Pamplona Facultad de Ingenieras y Arquitectura 15 Programa de Ingeniera de Sistemas Gua del profesor para Programacin 1- Primer Semestre de 2011 Luis Alberto Esteban Villamizar ________________________________________________________________________________________________

El programa principal (main) debe calcular entre X y Y ledos por teclado, cuantos nmeros son deficiente, abundantes y perfectos. Para realizar estos procesos debe utilizar las funciones anteriores definidas en el presente enunciado. Nmero perfecto es un nmero en el cual la suma de sus divisores propios es igual a l mismo nmero. ejemplo el 6 sus divisores son 1+2+3 = 6 Nmero deficiente cuando la suma de sus divisores es menor al nmero ejemplo 4 Divisores 1+2 =3 Nmero abundante cuando la suma de sus divisores es mayor al nmero ejemplo 12 Divisores 1+2+3+4+6 =16 Clase 24. nfasis en funciones que tienen como parmetros diferentes tipos de datos (enteros, reales y caracteres) Ejercicio libre Clase 25. Refuerzo de funciones La brigada de salud de la universidad preocupada por la salud de los estudiantes realizara una jornada de vacunacin para todos los estudiantes de la universidad. Existen 1535 estudiantes y se les solicita la fecha de nacimiento da, mes, ao, el sexo (1. Hombre o 2 Mujer). El programa debe pedir por teclado y una sola vez... la fecha actual Dia, Mes y Ao Realice: Main Funcin Validar Fecha: Esta funcin debe validar que la fecha sea valida (ver nota 1) retorna un 1 si es valida o un 0 si no lo es. Una fecha es vlida si el nmero de mes corresponde con el nmero de das que tiene ese mes. Funcin Clculo Edad: Esta funcin debe recibir la fecha de nacimiento y la fecha actual y retornar la edad cumplida de la persona (en aos). Funcin vacunar: Esta funcin recibe la edad del estudiante y el sexo, para determinar la vacuna que se debe aplicar (segn las siguientes tablas) y retorna el cdigo de la vacuna. Edad Hombre Mujer 15 18 Vacuna Paperas Vacuna Sarampin 18 22 Vacuna Influenza Vacuna Hepatitis 22 en adelante Vacuna Fiebre Amarilla Vacuna Fiebre Amarilla Cdigo de vacuna Cdigo Vacuna Nombre vacuna 01 Vacuna Paperas 02 Vacuna Sarampin 03 Vacuna Influenza 04 Vacuna Hepatitis 05 Vacuna Fiebre Amarilla Nota 1: Para validar una fecha debe tener en cuenta la cantidad de das que tiene cada mes es: Ene 31, Feb 28, Maz 31, Abr 30, May 31, Jun 30, Jul 31, Ago 31, Sep 30, Oct 31, Nov 30, Dic 31. ** Asuma que no existen aos bisiestos.