CENTRO DE BACHILLERATO TECNOLOGICO industrial y de servicios Nº 4 CURSO DEL MODULO 1: DESARROLLA SOFTWARE DE APLICACIÓN UTILIZANDO PROGRAMACIÓN ESTRUCTURADA CON ALMACENAMIENTO PERSISTENTE DE DATOS SUBMODULO 1: DESARROLLA SOFTWARE UTILIZANDO PROGRAMACIÓN ESTRUCTURADA ING. HUMBERTO DE LA ROSA GUAJARDO. Enero 2016, Cd. Lerdo, Dgo. [email protected] 1 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 SUBMODULO 1: DESARROLLA SOFTWARE UTILIZANDO PROGRAMACIÓN ESTRUCTURADA. CONTENIDO: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 160 Hrs. Conceptos, características y generalidades de principios de programación. Identificación, análisis y resolución de problemas informáticos. Algoritmos, Pseudocódigos, Simbología y Diagramación. Herramientas de software FreeDFD y PSeint. Fases de los problemas informáticos: Entrada, Proceso, Salida. Lenguajes de programación. Elementos de programación. Programación en C++. Resolución de ejercicios en C++. Estructuras de Control en C++. Estructuras de datos. Archivos en C++. COMPETENCIAS PROFESIONALES DEL SUBMÓDULO 1: DESARROLLA SOFTWARE UTILIZANDO PROGRAMACIÓN ESTRUCTURADA. COMPETENCIAS: 1. Soluciona Problemas. 2. Desarrolla diagramas de flujo de algoritmos. 3. Elabora Pseudocódigo de los diagramas de flujo. 4. Desarrolla el código en un lenguaje de programación estructurado. 2 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 BIBLIOGRAFÍA: JOYANES, Aguilar Luis. Programación en C++ algoritmos, estructuras de datos y objetos. McGraw Hill. España. 2003 Deitel, Harvey M, Deitel. Como programar en C++. Pearson. España, 2009. PERRY, Greg. Aprendiendo programación orientada a objetos con C++ en 21 días. Prentice Hall. 1995. BORES, Rosario, Román Rangel. Computación, metodología, lógica computacional y programación. Serie Schaum, McGraw Hill. México, 1995. FORSYTHE, I. Alexander / Thomas Kennan A. / Elliot Organick I. Lenguajes de diagramas de flujo. Limusa. México, 1989. MANNINO, M. V.. Administración de bases de datos diseño y desarrollo de aplicaciones. McGraw Hill, 2007. CUADRA, D., Castro, E., Iglesias, A. M., Martínez, P., Calle, F. J., De Pablo, C., y otros. Desarrollo de Bases de Datos. Alfaomega Ra-Ma. España, 2008 HERNÁNDEZ Muñoz, Pedro. Visual Fox Pro 5. Desarrollo de aplicaciones. Osborne-McGraw Hill. España, 1998. IGLESIAS, Rubén. Visual Fox Pro 5. Fundamentos y técnicas de programación. Rama Computec. Madrid, 1997. MIKE, H. SQL Server 2008. Grupo Anaya Comercial. México, 2009. HELM, S. Programación de Base de Datos Con MySQL y PHP. Alfaomega Marcombo. México, 2010. KENDALL y Kendall. Análisis y diseño de sistemas. Prentice Hall. México, 1997. MARTÍN, James. Objets-oriented Analysis & Design. Prentice Hall. USA, 1993. PRESSMAN, Roger S. Ingeniería del Software. Un enfoque práctico. McGraw Hill. México, 2005. http://www.elrincondelc.com/cursoc/cursoc.html http://c.conclase.net/curso/index.php 3 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PROGRAMA DE PRÁCTICAS DEL MÓDULO 1 DE PROGRAMACIÓN: SUBMÓDULO 1 N° 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. DESCRIPCIÓN ALGORITMOS CUALITATIVOS SIMPLES ALGORITMOS CUALITATIVOS COMPLEJOS ALGORITMOS CUANITATIVOS SIMPLES ALGORITMOS CUANITATIVOS COMPLEJOS SIMBOLOGIA PARA DIAGRAMAS DE FLUJO ENTORNO DE DESARROLLO FreeDFD ELABORACIÓN DE PSEUDOCODIGOS DIAGRAMAS DE FLUJO FREEDFD ALGORITMOS CUANTITATIVOS FREEDFD ALGORITMOS CUANTITATIVOS DIAGRAMAS A PARTIR DE PSEUDOCÓDIGOS PROBLEMA CALIFICACIÓN DE ALUMNOS ENTORNO BORLAND C++ MANEJO DE CONSTANTES Y VARIABLES EN C++ OPERACIONES DE ENTRADA Y SALIDA FUNCIONES MATEMATICAS FUNCIONES DE CARACTER USO DEL GOTOXY EJERCICIOS DE REFORZAMIENTO CALCULO DE AREAS Y VOLUMENES FIG. GEOMETRICAS ESTRUCTURAS SELECTIVAS IF SIMPLE Y DOBLE ESTRUCTURAS SELECTIVAS IF MULTIPLE ESTRUCTURAS SELECTIVAS SWITCH-CASE CICLOS FOR CICLOS WHILE ARREGLOS UNIDIMENSIONALES MATRICES METODOS DE ORDENAMIENTO PUNTEROS FUNCIONES Y PARAMETROS ESTRUCTURAS ARCHIVOS PRODUCTOS DE APDZJE *.DOC ( 4 EJERCICIOS) *.DOC ( 4 EJERCICIOS) *.DOC ( 4 EJERCICIOS) *.DOC ( 4 EJERCICIOS) *.CDR (DOC C/ 21 SIMBOLOS) *.DOC (COMPONENTES) *.DOC ( 4 EJERCICIOS) *.DFD ( 3 EJERCICIOS) *.DFD ( 4 EJERCICIOS) *.DFD ( 4 EJERCICIOS) *.DFD ( 4 EJERCICIOS) *.DOC y *.DFD ( 3 EJERC) *.CPP ( 2 EJERCICIOS) *.CPP ( 4 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 3 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.DFD *.CPP ( 4 EJERCICIOS) *.DFD *.CPP ( 4 EJERCICIOS) *.CPP ( 4 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 3 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 4 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 4 EJERCICIOS) *.CPP ( 4 EJERCICIOS) *.CPP ( 2 EJERCICIOS) *.CPP ( 5 EJERCICIOS) 4 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 SUBMODULO 1: DESARROLLA SOFTWARE UTILIZANDO PROGRAMACIÓN ESTRUCTURADA. I UNIDAD GENERALIDADES DE LA PROGRAMACIÓN: PROBLEMAS INFORMATICOS, ALGORITMOS, PSEUDOCÓDIGOS Y DIAGRAMACIÓN. ACT 1. FORO EN LÍNEA: DIAGNÓSTICO “PRINCIPIOS DE PROGRAMACIÓN”. Los alumnos, recuperan conocimientos previos sobre la programación sin consultar en ningún medio, analizan los cuestionamientos siguientes y expresan respuestas personales sobre: PRINCIPIOS DE PROGRAMACIÓN: 1. Que es un programa de cómputo? 2. Cual es la utilidad tienen los Algoritmos y la Diagramación? 3. Exprese en forma algebráica una suma. 4. Mencione 3 lenguajes de programación. Los comentarios vertidos deben ser breves, claros y concretos, además los alumnos pueden corregir conceptos inprecisos manifestados por otros compañeros, así mismo deberá evitarse confrontaciones personales y no utilizar lenguaje obsceno ni ofensivo, manteniendo en todo momento una actitud de cordialidad respeto. ACT 2. ACTIVIDAD EN PLATAFORMA: CUESTIONARIO EN BINAS: CONCEPTOS Y GENERALIDADES DE LA PROGRAMACIÓN. Los alumnos integrados por binas, investigan y elaboran y resuelven correctamente el siguiente cuestionario, a fin de recuperar conocimientos previos, debeiendo elaborar individualmente un documento electrónico de Word con el nombre (AGGNLXX.DOC), (donde A corresponde a Módulo 1, GG= N° Gpo en 2 dígitos, NL: N° lista, a 2 digitos y XX: N° actividad en 2 dígitos) y subirla a esta plataforma académica en internet y definiendo los siguientes conceptos: 1. Explique que entiendes por Identificación y Resolución de un problema? 2. Describa la fase: Análisis del Problema? 3. Determine la fase: Diseño en un problema informático? 4. Explique la fase: Codificación? 5. Determine las etapas: Compliación, Ejecución, Verificación y Depuración? 6. Describa la fase: Mantenimiento? 7. Explique la fase: Documentación? 8. Define Lenguaje? 9. Cite 5 lenguajes utilizados por el hombre. 10. Describa los 3 Lenguajes básicos reconocidos en la programación y características de cada uno. 11. Explicar que es la Compilación? 12. Que utilidad tiene un Diagrama de Flujo? 13. Mencione 3 formas de representar Diagramas en la programación? 14. Cite 10 operadores que Ud. reconozca. 15. Explique que es FreeDFD? Nota importante: Cada trabajo especifico debes subirlo en forma individual a plataforma, solo un archivo por actividad, sin exceder 2 Mb el tamaño máximo de cada archivo, con el nombre específicamente asignado y el texto debe contener: Portada (misma que se incluye en la primera parte, en Contenido), que incluya tus datos personales (Escuela, especialidad, logo, nombre del módulo, nombre del alumno, número de lista, grupo, No y nombre de la actividad, nombre del facilitador, lugar y fecha), Desarrollo de la actividad y por úlimo al final, debes incluir un párrafo de al menos 5 lineas con: Conclusiones Personales (el contenido íntegro del archivo nunca debe exceder un máximo de 6 cuartillas). 5 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Se informa que algunas de las competencias evaluadas en este módulo son: responsabilidad y honestidad, por lo que detección de copia o plagio de algún archivo de plataforma y/o práctica (parcial o íntegro) por parte de cualquier alumno será motivo de reprobación del submódulo en cuestión. ACTIVVIDAD EN CLASE: PROPUESTA DE SOLUCIÓN DE UN PROBLEMA COTIDIANO. Los alumnos integrados en equipos de 5, presentan y exponen en clase un problema cualitativo simple y su solución de acuerdo a la metodología utilizada en informática, para ello, esta actividad pueden realizar en láminas para rotafolio o mediante una presentación electrónica en Power Point para exponer su planteamiento.de ser en láminas de rotafolio, una o 2 láminas en que expongan su problema, de ser presentación electrónica, esta debe incluir en la 1ª diapositiva: portada (con logo de la escuela, especialidad, grupo, nombre de la actividad, integrantes del equipo por num. de lista de c/u y el tema abordado), con el nombre (AGGNL.PPTX), ( A= Módulo 01, GG= N° Gpo 2 dígitos, NL: a 2 dígitos del representante del equipo, una última diapositiva que debe incluir Comentarios de Equipo y remitirla al facilitador via email en la fecha indicada. Los alumnos realizan cuestionamientos a los equipos expositores a fin de resolver dudas, así mismo el facilitador apoya complementando cada explicación expuesta por los equipos, al final deberá guardarse y subirse el documento electrónico correspondiente de esta actividad de equipo, además debe cuidar los lineamientos de tamaño de archivo y fecha de cierre, previamente descritos para efectos de evaluación. Nota importante: Solo cada responsable de equipo debe subir la presentación a la plataforma académica, en representación del mismo, por ello, deberá contener la lista con los nombres de todos los participantes ordenados por apellidos en orden alfabético en su portada. ALGORITMOS: (CUALITATIVOS Y CUANTITATIVOS) CUALITATIVOS: ALGORITMO: REMPLAZAR UNA LLANTA PONCHADA: 1. Inicio 2. Extraer herramienta y llanta repuesto de la cajuela. 3. Colocar gato. 4. Retirar llanta ponchada. 5. Colocar llanta de repuesto en su lugar y asegurar. 6. Retirar gato. 7. Guardar llanta ponchada y herramienta en cajuela. 8. Fin. ALGORITMO: ELABORAR UNA PIZZA DE CARNES FRIAS: 1. Inicio. 2. Obtener ingredientes (Harina, levadura, sal, queso, salsa de tomate, orégano, salchicha, jamon, salami y chorizo). 3. Mezclar Harina, levadura y sal con agua tibia (consistencia no pegajosa pero suave). 4. Reposar mezla de masa por 30 min. 5. Mezclar la salsa de tomate, sal y orégano. 6. Elaborar torta plana de aproximadamente 45 cms de diámetro con el rodillo. 7. Agregar la mezcla de salsa de tomate sobre la torta. 8. Agregar queso rallado. 9. Agregar carnes frías y chorizo. 10. Hornear por 20 min. 11. Extraer del horno, reposar por 15 min y consumir pizza. 12. Fin 6 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PROCESOS COMPUTACIONALES ENTRADA PROCESO SALIDA CUANTIITATIVOS: ALGORITMO: CALCULO DEL PROMEDIO DE 3 NUMEROS: 1. Inicio. 2. Ingresar 1° número. 3. Ingresar 2° número. 4. Ingresar 3° número. 5. Sumar los 3 números. 6. Dividir entre 3 la suma de los números. 7. Devolver cociente obtenido. 8. Fin. PSEUDOCÓDIGO: 1. Inicio. 2. Leer “1° número: “ N1; 3. Leer “2° número: “ N2; 4. Leer “3° número: “ N3; 5. SUM=N1+N2+N3; 6. PROM=SUM/3 7. Escribir “Promedio de 3 números: “; PROM 8. Fin ALGORITMO: CALCULO DE HIPOTENUSA DE UN TRIANGULO RECTANGULO. 1. Inicio. 2. Proporcionar CatetoOP 3. Proporcionar CatetoADY 4. Calcular HIPOTENUSA=√𝐶𝑎𝑡𝑒𝑡𝑜𝑂𝑃 2 + 𝐶𝑎𝑡𝑒𝑡𝑜𝐴𝐷𝑌 2 CatetoOP 5. Desplegar resultado de la Hipotenusa. 6. Fin Hipotenusa CatetoADY PSEUDOCÓDIGO: 1. Inicio. 2. Leer CatetoOP 3. Leer CatetoADY 4. HIPO=SQRT((𝐶𝑎𝑡𝑒𝑡𝑜𝑂𝑃)2 + (𝐶𝑎𝑡𝑒𝑡𝑜𝐴𝐷𝑌)2 ); 5. Escribir “Resultado de la Hipotenusa: “; HIPO ACT 3. ACTIVIDAD EN PLATAFORMA: PROPUESTA DE SOLUCIÓN DE UN PROBLEMA FISICO Y/O MATEMÁTICO. Los alumnos integrados por equipos, presentan y exponen en clase la solución de un problema físico y/o matemático simple y su solución mediante un Algoritmo cuantitativo y su respectivo Pseudocódigo. Así mismo deberán crear una presentación electrónica en Power Point que incluya en la 1ª diapositiva: portada (con logo de la escuela, especialidad, grupo, nombre de la actividad, integrantes del equipo por num. de lista de c/u y el tema abordado), el número de diapositivas dependerá del grado dificultad del problema planteado y deberán nombrar el archivo:(AGGNLXX.PPTX), ( M1= Módulo1, GG= N° Gpo 2 dígitos, NL: El número de lista del representante del trio y XX: N° actividad en 2 dígitos), una última diapositiva que debe incluir Comentarios de Equipo. 7 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Los alumnos realizan cuestionamientos a los equipos expositores a fin de resolver dudas, así mismo el facilitador apoya complementando cada explicación expuesta por los equipos, al final deberá guardarse y subirse el documento electrónico correspondiente de esta actividad de equipo, además debe cuidar los lineamientos de tamaño de archivo y fecha de cierre, previamente descritos para efectos de evaluación. Nota importante: Solo cada responsable de equipo debe subir la presentación a la plataforma académica, en representación del mismo, por ello, deberá contener los nombres de todos los participantes ordenados por número de lista en su portada. NOTA IMPORTANTE: DATOS QUE DEBEN CONTAR TODOS LOS DOCUMENTOS DE PRÁCTICAS: NOMBRE DE LA ESCUELA. NOMBRE DEL ALUMNO, NL, GPO, ESPECIALIDAD. NOMBRE Y NÚMERO DE LA PRÁCTICA. NOMBRE DEL FACILITADOR. CONCLUSIONES (Este apartado debe aparecer al final de tu práctica, que genere un documento del tipo *.DOC ó *.CDR, es una descripción o párrafo de 5 líneas donde describa que utilidad te generó haber realizado esos ejercicios). PRÁCTICA N°1: AGGNL101.DOC EJERCICIOS DE ALGORITMOS CUALITATIVOS: Los alumnos en forma individual elaboran un documento de Word con nombre especificado arriba los siguientes Algoritmos, así mismo deberá subir al Servidor de red académica para efectos de evaluación (Algoritmo por página sin incluir conclusiones). 1. 2. 3. 4. ELABORAR UNA LIMONADA. AGENDA ACTIVIDADES PERSONALES DE 1 DIA POR HORA 6:00-23:00 HRS. PREPARAR SANDWICH. ELABORAR UN PASTEL. PRÁCTICA N°2: AGGNL102.DOC Elaborar los 4 Algoritmo en documento Word indicado con los siguientes ejercicios que se te proponen a continuación: 1. 2. 3. 4. REALIZAR LLAMADA EN TELEFONO PÚBLICO. CREAR CUENTA DE EMAIL EN HOTMAIL. REALIZAR REIRO DE UN CAJERO AUTOMÁTICO. COMPRAR ANTIBIOTICO EN LA FARMACIA. CUESTIONARIO DE COMPLEMENTO (ACTIVIDAD INDIVIDUAL): 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Determinar Algoritmo y citar sus características? Diferenciar un Algoritmo Cualitativo de uno Cuantitativo? Explicar que es Pseudocódigo? Diferenciar Algoritmo de Pseudocódigo. Describir que es Diagramación? Explicar que son Operadores y citar 5. Describir una Variable? Determinar que son las Constantes? Explicar que es una sentencia de asignación y representar un ejemplo de estas. Citar y explicar 3 tipos de errores en la programación. Explicar que importancia tienen las Estructuras de Control dentro de la Programación. Describir que es control flujo de un programa. Definir Programación lineal. Diferenciar Desiciones de Ciclos en la programación. Explicar que son las iteraciones en un ciclo. PRÁCTICA N°3: AGGNL103.DOC EJERCICIOS DE ALGORITMOS CUANTITATIVOS: Los alumnos en forma individual elaboran documento de Word con nombre especificado arriba los siguientes Algoritmos y Pseudocódigos, que se te proponen a continuación (definir fórmulas a aplicar), así mismo subir al Servidor de red 8 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 académica para efectos de evaluación (Cada uno de los 4 ejercicios de Algoritmo y Pseudocódigo iniciar en página nueva sin incluir conclusiones). 1. 2. 3. 4. CONVERSION DE PESOS A DÓLARES. COMPRA DE UN ARTÍCULO: INGRESAR ARTÍCULO, Y COSTO UNITARIO DEL PRODUCTO, PROCESAR, IVA, TOTAL A PAGAR, DEVOLVER: ARTICULO COMPRADO Y CALCULO DESGLOSADO: COSTO, IVA, y TOTAL A PAGAR. CALCULO DE ÁREA DE UN TRIANGULO RECTÁNGULO. CALCULO DE LA SUPERFICIE DE UN CÍRCULO. PRÁCTICA N°4: AGGNL104.DOC Elaborar Algoritmos y Pseudocódigos en documento Word especificado, los ejercicios propuestos a continuación: 1. CALIFICACIONES: INGRESAR 3 CALIFICACIONES, OBTENER EL PROMEDIO Y DEVOLVER RESULTADO CON SALIDA DE CALIFICACIÓN CON LA ETIQUETA APROBADO/REPROBADO DEPENDIENDO DEL PROMEDIO OBTENIDO. 2. VENTA CON DESCUENTO: INGRESAR ARTICULO Y COSTO DEL ARTICULO, SI ESTE ES <=$1000.00 APLICAR DESCUENTO DEL 15%, SI ES > DE 1000.00 APLICAR 30% DE DESCUENTO, CALCULAR DESCUENTO, Y DEVOLVER ARTICULO, PRECIO DE VENTA, MONTO DEL DESCUENTO Y TOTAL A PAGAR. 3. TABLA DE MULTIPLICAR DEL DE UN NÚMERO DEFINIDO DURANTE LA EJECUCIÓN DEL PROGRAMA. 4. NOMINA SEMANAL: INGRESAR NOMBRE DEL TRABAJADOR, DIAS LABORADOS, CONSIDERAR COMO DATOS PERCEPCIÓN/DIA $ 55.00, CUOTA IMSS 12%, ISPT: 5% E INFONAVIT 8%, SI EL TRABAJADOR LABORA 6 DIAS OTORGAR EL PAGO DEL SÉPTIMO DÍA Y DESCONTAR DE LOS INGRESOS TOTALES EL IMSS E INFONAVIT, CALCULAR TOTAL DE INGRESOS, DEDUCCIONES Y TOTAL DE PAGO QUE RECIBE EL TRABAJADOR. ACTIVIDAD DE CLASE: TÉCNICAS DE DIAGRAMACIÓN. Los alumnos integrados por equipos de 5, investigan un ejemplo de solución de un problema compuatacional (Algoritmo cuantitativo) y lo exponen en clase utilizando los tipos de diagramas: 1. Diagrama de Flujo. 2. Nassi Shneiderman. 3. Warnier Orr. Para ello, deberán crear una presentación electrónica en Power Point que incluya en la 1ª diapositiva: portada (con logo de la escuela, especialidad, grupo, nombre de la actividad, integrantes del equipo por num. de lista de c/u y el tema abordado), las siguientes 3 diapositivas la representación del problema, utilizando las 3 técnicas de diagramación mencionadas y nombrar el archivo:(AGG_NL.PPTX), ( A= Módulo1, GG= N° Gpo 2 dígitos, NL: El número de lista del representante del equipo), una última diapositiva que debe incluir Comentarios de Equipo. Los alumnos realizan cuestionamientos a los equipos expositores a fin de resolver dudas, así mismo el facilitador apoya complementando cada explicación expuesta por los equipos, al final deberá guardarse y subirse el documento electrónico correspondiente de esta actividad de equipo, además debe cuidar los lineamientos de tamaño de archivo y fecha de cierre, previamente descritos para efectos de evaluación. Nota importante: Solo cada responsable de equipo debe subir la presentación a la plataforma académica, en representación del mismo, por ello, deberá contener la lista con los nombres de todos los participantes ordenados por apellidos en orden alfabético en su portada. 9 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA N°5: AGGNL105. DOC ELABORAR LA SIMBOLOGÍA PARA DIAGRAMAS DE FLUJO EN COREL DRAW CON BREVE DESCRIPCIÓN DE CADA SÍMBOLO. 10 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA N°6: AGGNL106. DOC ENTORNO DE DESARROLLO DE FreeDFD: El facilitador describe la Interfaz del FreeDFD, Menús, submenús, barra de herramientas, forma de accesar y uso. Los alumnos elaboran el documento AGGNL106. DOC, en que describen cada uno de los elementos del entorno del FreeDFD Menús, submenús, Barra de herramientas y cada uno de sus elementos, además hacen correlación de símbolos utilizados en la Diagramación de flujos y las diferencias aplicadas por FreeDFD, incluir imagen del entorno del FreeDFD y conclusiones personales al final del reporte. EJEMPLO CÁLCULO DEL ÁREA DEL TRIÁNGULO RECTÁNGULO ALGORITMO 1. Inicio. 2. Proporcionar Base del triángulo. 3. Ingresar Altura del triángulo. 4. SUP= (𝐵𝐴𝑆𝐸)(𝐴𝐿𝑇𝑈𝑅𝐴) 2 5. Desplegar “Superf triangulo=”, SUP 6. Fin PSEUDOCÓDIGO 1. Inicio. 2. Leer BT. 3. Leer AT. 4. SUP= DIAGRAMA DE FLUJO INICIO (𝐵𝑇)(𝐴𝑇) 2 5. ESCRIBIR“Superf triangulo=”, SUP 6. Fin BT, AT SUP=(BT*AT)/2 DICCIONARIO DE DATOS: “SUPERFICIE TRIANGULO” SUP BT: Base del triángulo rectángulo. AT: Area del triángulo rectángulo. SUP: Superficie del triángulo. FIN 11 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA N°7: AGGNL107. DOC En la práctica 7, los alumnos en forma individual elaboran un documento de Word con el nombre indicado, en el que realizan los PSEUDOCÓDIGOS de los 4 diagramas propuestos en la figura siguiente. PRÁCTICA N°8: Realizar los Diagramas de flujo con la herramienta FreeDFD de los ejercicios 2-4 propuestos en las figuras anteriores con los nombres: 1. AGGNL108.DFD 4. AGGNL108A.PSC 2. AGGNL109.DFD 5. AGGNL109A.PSC 3. AGGNL110.DFD 6. AGGNL110A.PSC ACTIVIDAD DE CLASE: ENTORNO DE FreeDFD. Los alumnos integrados por equipos de 3, proponen la resolución de un problema computacional (Algoritmo cuantitativo) resuelto mediante la herramienta FreeDFD y definen 20 elementos del entorno de trabajo de la misma, Para ello, crear una presentación electrónica en Power Point que incluya en la 1ª diapositiva: portada (con logo de la escuela, especialidad, grupo, nombre de la actividad, integrantes del equipo por num. de lista de c/u y el tema abordado), las siguiente diapositiva la pantalla del FreeDFD con los 20 elementos mencionados, en las siguientes las necesarias para definir la función de los 20 elementos referidos y nombrar el archivo:(AGG_NL.PPTX A= Módulo1, GG= N° Gpo 2 dígitos, NL: El número de lista del representante del trio), una última diapositiva que debe incluir Comentarios de Equipo. Los alumnos realizan cuestionamientos a los equipos expositores a fin de resolver dudas, así mismo el facilitador apoya complementando cada explicación expuesta por los equipos, al final deberá guardarse y subirse el documento electrónico correspondiente de esta actividad de equipo, además debe cuidar los lineamientos de tamaño de archivo y fecha de cierre, previamente descritos para efectos de evaluación. Nota importante: Solo cada responsable de equipo debe subir la presentación a la plataforma académica, en representación del mismo, por ello, deberá contener los nombres de todos los participantes ordenados por Apellido en forma alfabética en su portada. 12 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA N°9: Realizar los Diagramas de flujo con la herramienta FreeDFD de los 4 ejercicios de Algoritmos cuantitativos propuestos en la práctica 3 con los nombres: 1. AGGNL111.DFD 2. AGGNL112.DFD 3. AGGNL113.DFD 4. AGGNL114.DFD PRÁCTICA N°10: Realizar los Diagramas de flujo con la herramienta FreeDFD de los 4 ejercicios de Algoritmos cuantitativos propuestos en la práctica 4 con los nombres: 1. AGGNL115.DFD 2. AGGNL116.DFD 3. AGGNL117.DFD 4. AGGNL118.DFD PRÁCTICA N°11: Realizar los Diagramas en la herramienta FreeDFD los siguientes ejercicios propuestos en la la figura de abajo, con los nombres: 1. AGGNL119.DFD 2. AGGNL120.DFD 3. AGGNL121.DFD 4. AGGNL122.DFD ACT 4. ACTIVIDAD EN PLATAFORMA: CRUCIGRAMA “PRINCIPIOS DE LA PROGRAMACIÓN”. Los alumnos en forma individual escriben sus datos personales solicitados y resuelven el CRUCIGRAMA propuesto en la liga de enlace, correspondiente a la 4 actividad. Para ello, deben contestar solo en MAYUSCULAS SIN ACENTOS, en un tiempo no mayor de 15 min. correctamente la actividad, en cada palabra puede solicitar hasta un máximo de 2 caracteres o pistas de la respuesta correcta para no ser penalizado, así mismo una vez resuelto el crucigrama (verifica que no tengas activado el bloqueo de ventanas emergentes), no cerrar la pantalla con el resultado, ya que debes capturar la pantalla con la calificación legible, cuando se despliegue el resultado obtenido (pulse las teclas Alt+Impr pantalla), misma que es el registro o evidencia de resolución del mismo. Para ello, debe elaborar individualmente un documento de Word con el nombre (AGGNLXX.DOC), en el que debes pegar la imagen previamente capturada del crucigrama, así mismo liste y defina cada uno de los términos correctos del 13 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 crucigrama, por último, no olvide anotar conclusiones personales al final de su documento a subir en plataforma académica. NOTA IMPORTANTE: Accesar a los crucigramas solo si se va a resolver estos, ya que el sistema deja registro de acceso y solo será válido el primer intento, en caso contrario se anulará quien registre más de 1 intento y la calificación será cero. ACT 5. ACTIVIDAD EN PLATAFORMA: QUIZ EN LINEA “PRINCIPIOS DE LA PROGRAMACIÓN”. Actividad de plataforma virtual EDMODO, consistente en un cuestionario en línea que tiene tiempo límite para su resolución, (Sub01: 20 minutos y 100 puntos) las preguntas pueden ser de los tipos: Complemento, True/False (Verdadero/Falso), Relacionar columnas y Opción múltiple, para ello después de contestar cada pregunta pulse el símbolo > que aparece en la parte superior y continuar con la siguiente pregunta hasta finalizar ACT 6. ACTIVIDAD EN PLATAFORMA: MAPA CONCEPTUAL “PRINCIPIOS DE LA PROGRAMACIÓN”. Los alumnos integrados en equipos de 5, realizan el diseño y exposición de una presentación electrónica en Power Point con nombre: (AGGNLXX.PPTX), que contenga un Mapa conceptual (Se sugiere ver y analizar el ejemplo que se encuentra en la sección Contenido del Curso: “Elaboración de Mapas Conceptuales” que se proporciona al inicio de esta plataforma académica, ya que de no apegarse al desarrollo de esta técnica el equipo será evaluado con un cero “0” en esta actividad) para ello la presentación deberá contar con Diapositiva 1: portada con los mismos datos y requisitos descritos en presentaciones anteriores, Diapositiva 2: o desarrollo, deberá contener el Mapa conceptual con los elementos que se especifican y en Diapositiva3: conclusiones de equipo, la diapositiva de desarrollo deberá contener lo siguientes elementos relacionados a continuación: MAPA CONCEPTUAL. 1. Problema informático. 2. Algoritmo. 3. Pseudocódigo. 4. Diagramación. 5. Variables y Constantes. Debiendo subir cada representante a plataforma, la última diapositiva, incluir conclusiones de equipo. Subir documento electrónico a plataforma académica, aplicando especificaciones descritas para efectos de evaluación. PRACTICA N°12: Los alumnos resuelven un problema de CALIFICACIONES DE ALUMNOS, para ello deben elaborar el Pseudocódigo y el Diagrama de flujo en FreeDFD, (se sugiere ver decisiones) con las indicaciones siguientes: OPERACIONES A REALIZAR Ingresar num. De control, nombre del alumno. Ingresar: Especialidad y semestre. Ingresar: 5 Materias. Ingresar : 5 calificaciones. Operaciones: obtener el promedio de las 5 calificaciones. Devolver datos: NC, Nom Devolver datos : Especialidad y semestre. Devolver datos: MatX y CalifiX (5). Devolver Prom Condición: Si el Prom es => 6 Devolver la etiqueta “APROBADO”, en caso contrario devolver la etiqueta “REPROBADO” DICCIONARIO DE DATOS NC: Número de Control. Nom: Nombre del Alumno. Esp: Especialidad. Sem: Semestre. Mat1: Materia 1. Mat2: Materia 2. Mat3: Materia 3. Mat4: Materia 4. Mat5: Materia 5. Calif1: Calificación de la materia 1. Calif2: Calificación de la materia 2 Calif3: Calificación de la materia 3. Calif4: Calificación de la materia 4. Calif5: Calificación de la materia 5. Prom: Promedio de las 5 calificaciones. Especificaciones de los tipos y nombres de archivos a subir en servidor para efectos de evaluación: AGGNL122.PSC: PSEUDOCÓDIGO AGGNL123.DFD: DIAGRAMA EN FreeDFD 14 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 II UNIDAD LENGUAJE PROGRAMACIÓN PROGRAMACIÓN ESTRUCTURADA C++: ESTRUCTURA DE UN PROGRAMA, TIPOS DE DATOS, LIBRERÍAS, FUNCIONES PREDEFINIDAS, OPERACIONES DE ENTRADA Y SALIDA Y ESTRUCTURAS DE CONTROL. ACT 7. ACTIVIDAD EN PLATAFORMA: 2° FORO EN LINEA: “LENGUAJES DE PROGRAMACIÓN ESTRUCTURADA”. Los alumnos, recuperan conocimientos previos sobre la programación sin consultar en ningún medio, analizan los cuestionamientos siguientes y expresan respuestas personales sobre: PROGRAMACIÓN C++: 1. Describa la utilidad del Lenguaje? 2. Que importancia tiene el Código Binario en la programación? 3. Describa 5 características de los Lenguaje de Alto nivel? 4. Cite 3 Lenguajes de alto nivel. 5. Que son reglas de sintaxis y su importancia en la programación. Comentarios vertidos deben ser breves, claros y concretos, además los alumnos pueden corregir conceptos inprecisos manifestados por otros compañeros, así mismo deberá evitarse confrontaciones personales y no utilizar lenguaje obsceno ni ofensivo, manteniendo en todo momento una actitud de cordialidad respeto. ACTIVIDAD DE CLASE: EVALUACIÓN DIAGNÓSTICA: GENERALIDADES DE LA PROGRAMACIÓN ESTTRUCTURADA EN C++. Los alumnos integrados por binas, investigan, elaboran y resuelven correctamente el siguiente cuestionario, a fin de recuperar conocimientos previos, debiendo elaborar individualmente un documento electrónico de Word con el nombre (AGG_NL.DOC), (donde A corresponde a Módulo 1, GG= N° Gpo en 2 dígitos, NL: N° lista, a 2 digitos) y definiendo los siguientes conceptos: 1. Describir Lenguaje C++. 2. Definir tipos de datos en C++. 3. Describir Archivos de Cabecera. 4. Explicar Funciones Predefinidas y mencionar 10 más comunes. 5. Definir Función principal de un programa en C++. 6. Explicar como se realizan las operaciones de entrada y salida de datos en C++. 7. Describir Estructuras de Control y su utilidad en C++. 8. Que son Instrucciones Secuenciales. 9. Describir Estrcuturas de Control Selectivo. 10. Describir Estrcuturas de Control Repetitivo. 15 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ACT 8. ACTIVIDAD EN PLATAFORMA: CRUCIGRAMA ”ELEMENTOS DE LA PROGRAMACIÓN ESTRUCTURADA EN C++". Los alumnos resuelven individualmente el crucigrama propuesto en la liga especificada para esta actividad, misma que no deberá exceder de un tiempo no mayor de 15 min. correctamente, en cada palabra puede solicitar hasta un máximo de 2 caracteres o pistas de la respuesta correcta para no ser penalizado, así mismo una vez resuelto el crucigrama, no cerrar la pantalla con el resultado, ya que debes capturar la pantalla con la calificación legible, cuando se despliegue el resultado obtenido (pulse las teclas Alt+Impr pantalla), misma que es el registro o evidencia de resolución del mismo. Para ello, debe elaborar individualmente un documento de Word con el nombre (AGGNLXX.DOC), en el que debes pegar la imagen previamente capturada del crucigrama, así mismo liste y defina cada uno de los términos correctos del crucigrama, por último, no olvide anotar conclusiones personales al final de su documento a subir en plataforma académica. ACT 9. ACTIVIDAD DE PLATAFORMA: “IDE DEL BORLAND C++ PARA WINDOWS”. Los alumnos integrados por equipos de 5, elaboran documento electrónico de Powerpoint, nombre (AGGNLXX.PPTX), (donde A corresponde a Módulo 1, GG= N° Gpo en 2 dígitos, NL: N° lista, a 2 digitos y XX: N° actividad en 2 dígitos) , sobre conceptos relevantes del entorno de Desarrollo de Borland C++ propuesto por el Facilitador, en que detallen los siguientes aspectos: 1. 2. 3. 4. Elementos de la ventana principal del IDE de C++. Descripción de Menús y Submenús. Requerimientos necesarios para ejecutar la aplicación. Mencionar otros IDE similares y características Grales. Barra de Título. Barra de Herramientas. Barra de Menú. Pantalla de ejecución o corrida del programa. Escritorio. Ventana de mensajes y depuración. Archivo CPP codificado en editor del IDE. Nota importante : Subir a plataforma, el archivo de la actividad, sin exceder 2 Mb el tamaño del archivo, con el nombre asignado y el Contenido, específico, que debe apegarse a las instrucciones previamente descritas sin omitir Conclusiones de equipo. 16 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 CODIGO ASCII 17 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA N°13: ENTORNO DE BORLAND C++: El Facilitador expone a los alumnos la instalación del IDE de Borland C++, los elementos principales, menús, subménus y forma de aplicación de la herramienta de software, además codificar y ejecutar correctamente los siguientes ejemplos de programas en C++. AGGNL124.CPP AGGNL125.CPP ACTIVIDAD DE COMPLEMENTO (Actividad individual): 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Analizar y comparar los ejercicios anteriores y explicar las diferencias. Explicar 5 reglas sintácticas básicas en un programa en C++. Que son los comentarios en C++. Describir los archivos de cabecera: iostream.h, conio.h y stdio.h. Determinar que es la función principal en C++ y cuando debe utilizarse. Diferenciar main de int main. Explicar el comando cout. Desescribir el comando printf. Definir el comando getch(). Explicar el comando return 0. Describir directiva de inclusión en C++. Explicar operaciones de salida en C++. Citar 10 diferencias entre los Lenguajes C y C++. 18 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ACTIVIDAD DE CLASE: CONCEPTOS DE LA PROGRAMACIÓN EN C++ . Los alumnos integrados en equipos de 5, realizan investigación y exposición del tema único que se especifica, debiendo elaborar para ello una presentación electrónica en Power Point que conste de 11 diapositivas como máximo que incluya: Portada (ya especifiicada), desarrollo (texto resumido, con imágenes relacionadas), al final conclusiones de equipo, que expongan uno de los siguientes tópicos, que se asignarán de manera específica por el facilitador a cada equipo : 1. Modelo Arquitectura Segmentada de John Von Newman El docente eligirá 3 de las investigaciones mejor documentadas, y solo las mejores podrán exponer el tema a sus compañeros, lo que acreditará la participación correspondiente, los alumnos pueden cuestionar a los equipos ponentes a fin de resolver dudas, así mismo el facilitador apoya complementando cada una de exposiciones, los equipos deberán guardar y subir el documento electrónico con el nombre (AGG_NL.PPTX), previamente detallado, cuidando lineamientos de contenido, tamaño de archivo, num. diapositivas y fecha de cierre, previamente descritos para efectos de evaluación. La última diapositiva debe incluir Comentarios de Equipo, así también, los temas serán abordados solo uno por equipo y previa asignación del facilitador docente. Nota importante: Solo el representante de equipo debe subir la presentación a la plataforma académica, conteniendo los nombres de integrantes organizados por orden alfabético de Apellido en su portada. PRÁCTICA 14: MANEJO DE CONSTANTES Y VARIABLES: Codificar, depurar, verificar, ejecutar individual, los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL126.CPP 19 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL127.CPP Aplicando los conceptos de constantes y variables de los ejercios anteriores: codificar (incluyendo los comentarios correspondientes), depurar, verificar y ejecutar correctamente los siguientes programas en C++: AGGNL128.CPP AGGNL129.CPP 20 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ACT 10. ACTIVIDAD EN PLATAFORMA: PRESENTACIÓN CONCEPTOS DE LA PROGRAMACIÓN EN C++ . Los alumnos integrados en equipos, realizan investigación y exposición de uno de los temas en la relación indicada en la actividad, misma que será asignada por el Facilitador, debiendo elaborar para ello una presentación electrónica en Power Point que conste de 11 diapositivas como máximo que incluya: Portada (ya especifiicada), desarrollo (texto resumido, con imágenes relacionadas), al final conclusiones de equipo, que expongan uno de los siguientes tópicos, que se asignarán de manera específica por el facilitador a cada equipo : 1. Diferencias entre la Programación lineal, Programación Estructurada, Programación Visual y la Programación Orientada a Objetos. 2. Diferencias entre los Lenguajes bajo nivel, nivel medio y alto nivel. 3. Diferencias entre los Lenguajes C y C++. 4. Estructura de un Programa en C++ (ejemplificado) y definir Tokens (identificadores, palabras reservadas, operadores). 5. Archivos de cabecera y especificar características de iostream.h, conio.h, math.h, ctype.h, float.h, stdlib.h y string.h. 6. Tipos de datos reconocidos por C++ y sus características requerimientos de Ram y rango numérico, formas de introducir valores a una variable. 7. Declaración de Datos constantes y Variables y tipos de variables 8. Operaciones de entrada y salida en C++ y operadores de flujo de entrada y operadores de flujo de salida. 9. Operadores reconocidos por C++ y su orden de precedencia, uso de los paréntesis. 10. Funciones en C++ (predefinidas y definidas por usuario). Los alumnos durante la sesión de exposiciones realizan cuestionamientos a los equipos ponentes a fin de resolver dudas, así mismo el facilitador apoya complementando cada una de exposiciones, los equipos deberán guardar y subir el documento electrónico con el nombre (AGGNLXX.PPTX), previamente detallado, cuidando lineamientos de contenido, tamaño de archivo, num. diapositivas y fecha de cierre, previamente descritos para efectos de evaluación. La última diapositiva debe incluir Comentarios de Equipo, así también, los temas serán abordados solo uno por equipo y previa asignación del facilitador docente. Nota importante: Solo el representante de equipo debe subir la presentación a la plataforma académica, conteniendo los nombres de integrantes organizados por número de lista en su portada. PRÁCTICA 15: OPERACIONES DE ENTRADA Y SALIDA DE DATOS: Codificar en C++, depurar, verificar, ejecutar, individualmente, c/archivo correctamante y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL130.CPP Programa de conversión de Grados Fahrenheit a Grados Centígrados y Grados Kelvin 1. 2. 3. 4. 5. 6. 7. PSEUDOCODIGO Inicio. Leer “Grados Fahrenheit a convertir: “, GF GC=(GF-32)*0.556 GK=GC+273 Escribir GF, “ ° Fahrenheit= “, GC “ ° Centígrados” Escribir GF, “ ° Fahrenheit= “, GK “ ° Kelvin” Fin DICCIONARIO DE DATOS GF: Grados Farenheit GC: Grados Centígrados GK: Grados Kelvin Flotantes: GF, GC, GK 21 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL131.CPP Programa Cálculo de cantidad de Block y costo total a pagar dependiendo de los Mt de muro requeridos. 2 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. PSEUDOCODIGO Inicio. Escribir “PROGRAMA PARA EL CALCULO Y COSTO DE BLOCK PARA MUROS” Escribir “Dimensión del block 15x40x20 (grosor x alto x ancho en cm.) Leer “Mt2 de Muro a construir: “ mt2 sb=0.4*0.2 cu=10 b= mt2/SB costobloc=b*cu Escribir “Blocks requeridos: “, b Escribir “Costo total de los Blocks sin IVA: “ costobloc Fin DICCIONARIO DE DATOS mt2: mts cuadrados muro. sb: superficie del block. cu: costo unitario block. b: número de blocks. Costobloc: costo total de los blocks. ACTIVIDAD DE CLASE: “CUESTIONARIO REGLAS PARA EL DISEÑO DE PROGRAMAS EN C++”. Los alumnos integrados por binas, investigan, elaboran y resuelven correctamente el siguiente cuestionario, a fin de recuperar conocimientos previos, debiendo elaborar individualmente un documento electrónico de Word con el nombre (AGG_NL.DOC), (donde A corresponde a Módulo 1, GG= N° Gpo en 2 dígitos, NL: N° lista, a 2 digitos) y subirla a esta plataforma académica en internet y definiendo los siguientes conceptos: 1. Diferenciar Instrucción de comando en C++. 2. Explique diferencias entre un compilador y un intérprete. 3. Cite y defina secuencias de escape en C++. 4. Describir que es inicializar variables y su importancia. 5. Explicar que son las sentencias de asignación. 6. Diferencias las directivas #include y #define. 7. Mencionar utilidad de math.h. 8. Diferenciar archivos *.C de los *.CPP. 9. Describir diferencias entre un error lógico y uno de regresión. 10. Explicar un error en tiempo de ejecución. Nota importante: Aplica mismas indicaciones de los trabajos de plataforma especificados: archivo no exceder 2 Mb, nombre según especificaciones, y contener: Portada, que incluya tus datos personales (Escuela, especialidad, logo, nombre del módulo, nombre del alumno, número de lista, grupo, No y nombre de la actividad, nombre del facilitador, lugar y fecha), Desarrollo: y al final, debes incluir sus: Conclusiones personales, recuerda que el contenido íntegro del archivo nunca exceder el máximo de 6 cuartillas). PRÁCTICA 16: CODIFICAR FUNCIONES DE math.h: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: 22 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL132.CPP AGGNL133.CPP 23 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL134.CPP PRÁCTICA 17: CODIFICAR FUNCIONES DE ctype.h: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL135.CPP 24 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL136.CPP LIBRERIAS (FUNCIONES DE BIBLIOTECA) La programación actual recomienda la técnica de la programación modular, es decir dividir el problema principal en pequeños fragmentos o módulos a fin de facilitar la solución de problema planteado, los módulos en C++ son denominados funciones o clases, por ello los programas en C++ se escriben combinando funciones nuevas que los programadores generan además de las funciones predefinidas o preempacadas que son disponibles a partir de las bibliotecas estándar de C++, que contienen un vasto conjunto de funciones que permiten realizar cálculos matemáticos comunes, manipulación de cadenas y caracteres, operaciones de entrada/salida de datos y comprobaciones de errores entre otras de manera simplificada y muchas otras operaciones de gran utilidad, simplificando el trabajo de los programadores. Funciones estándar o predefinidas: Son archivos o bibliotecas estándar de funciones en tiempo de ejecución que proporcionan soporte a las operaciones más comunes y que se incluyen en todas las versiones de C++, estas funciones permiten realizar operaciones con solo una llamada a la función sin necesidad de escribir el código fuente, todas las funciones de un mismo grupo se declaran en el mismo archivo de cabecera, dentro de un programa se pueden incluir mediante la sentencia : #include y para el uso de una función correspondiente al archivo de cabecera se debe conocer sus argumentos y valores de retorno. 25 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Grupos de FUNCIONES de BIBLIOTECA más comunes: E/S : Utilizada para operaciones de entrada/salida. Matemáticas : Operaciones matemáticas. Rutinas Std. : Operaciones estándar de programas. Visualización de ventanas de texto. Conversión : Rutinas de conversión de caracteres y cadenas. Diagnóstico : Proporciona rutinas de depuración incorporadas. Manipulación de memoria. Control de procesos. Clasificación : Procesos de ordenamiento. Directorios. Fecha y Hora. Interfaz. Búsqueda. Manipulación de cadenas. Gráficos. Diversas FUNCIONES DE BIBLIOTECA MÁS UTILIZADAS DE C++ FUNCIONES DE FLUJO DE ENTRADA-SALIDA <iostream.h> : En el contexto de C++ todo lo referente a "streams" puede visualizarse mejor si usamos un símil como un río o canal de agua. Imagina un canal por el que circula agua, si echamos al canal objetos que floten, estos se moverán hasta el final de canal, siguiendo el flujo del agua. Esta es la idea que se quiere transmitir cuando se llama "stream" a algo en C++. Por ejemplo, en C++ el canal de salida es "cout", los objetos flotantes serán los argumentos que queremos extraer del ordenador o del programa, la salida del canal es la pantalla. Los operadores "<<" representarían el agua, y la dirección en que se mueve. Cualquier cosa que soltemos en el agua: "hola", " " o endl, seguirá flotando hasta llegar a la pantalla, y además mantendrán su orden. En esta librería se definen algunas de las funciones aplicables a los "streams", pero aún no estamos en disposición de acceder a ellas. Baste decir de momento que existen cuatro "streams" predeterminados: cin, canal de entrada estándar. cout, canal de salida estándar. cerr, canal de salida de errores. clog, canal de salida de diario o anotaciones. Sobre el uso de "cin", que es el único canal de entrada predefinido, tenemos que aclarar cómo se usa, aunque a lo mejor ya lo has adivinado. Donde cada variable irá tomando el valor introducido mediante el teclado. Los espacios y los retornos de línea actúan como separadores. FUNCIONES DE CARÁCTER <ctype.h> : Define el grupo de funciones para la manipulación de caracteres, todas devuelven un valor verdadero (diferente de cero) o falso (cero), para su utilización de cualquiera de estas funciones se debe incluir el archivo de cabecera: #include <ctype.h> 26 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 FUNCIÓN int isalpha (int c) int isdigit (int c) int isupper (int c) int islower (int c) int iscntrl (int c) int isxdigit (int c) int isprint (int c) int isgraph (int c) int isspace (int c) int ispunct (int c) int toupper (int c) int tolower (int c) CBTis 4 PRUEBA Letra mayúscula o minúscula. Dígito Decimal. Letra mayúscula (A-Z). Letra minuscule (a-z). Carácter de control. Dígito hexadecimal. Carácter imprimible incluyendo espacio. Carácter imprimible excepto espacio. Espacio, avance de página, nueva línea, retorno de carro, tabulación, tabbulación vertical. Carácter imprimible no espacio, dígito o letra. Convierte a letras mayúsculas. Convierte a letras minúsculas. FUNCIONES NUMÉRICAS <math.h> : C++ permite realizar prácticamente cualquier operación aritmética, las funciones matemáticas disponibles son: 1. Matemáticas. 2. Trigonométricas. 3. Logarítmicas. 4. Exponenciales. 5. Aleatorias. Nota: la mayoría de las funciones numéricas se incluyen en los archivos math.h, y stdlib.h . FUNCIONES MATEMÁTICAS <math.h>: FUNCIÓN ceil (x) fabs (x) floor (x) fmod (x,y) DESCRIPCIÓN Redondeo al entero más próximo. Devuelve valor absoluto de x (positivo). Redondeo por defecto. Calcula resto flotante de la división x/y. y pow (x,y) sqrt (x) TRIGONOMÉTRICAS: Eleva la potencia de X Obtiene raíz cuadrada de x, esta debe ser >= a cero FUNCIÓN acos (x) asin (x) atan (x) cos (x) sin (x) tan (x) DESCRIPCIÓN Calcula arco coseno de x (x debe estar entre 1 y –1). Calcula a rco seno de x. Calcula a rco tangente de x. Calcula coseno del ángulo x (expresado en rads). Calcula seno del ángulo x (expresado en rads). Calcula tangente del ángulo x (expresado en rads). Para transformar un ángulo de grados a radianes (Grados)Pi/180 Pi=3.14159. 27 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 LOGARÍTMICAS Y EXPONENCIALES: FUNCIÓN exp (x) , expl (x) DESCRIPCIÓN Calcula exponencial de ex e es la base de logaritmos log (x) , logl (x) log10 (x) , log10l (x) naturales con valor de 2.718282, expl se declara como long double. Calcula el Log natural de x ; logl (long double). Logaritmo decimal de x. ALEATORIAS: FUNCIÓN rand (void) rand (void) srand (semilla) random (num) DESCRIPCIÓN Genera números aleatorios variando de 0 a Rand_Max Este último se define en stdlib.h como 2E15-1. Esta macro inicializa el generador de números aleatorios con la semilla obtenida a partir de la función time, por lo que ] requiere de archivo de cabecera time.h. Inicializa el generador de números aleatorios, ya que este fija el punto de inicio para la generación de series aleatorias. Genera un número aleatorio dentro de un rango especificado (0 y el limite max. definido por num). FECHA Y HORA: Para habilitar estas funciones se requiere el archivo de cabecera time.h que define estructuras, macros y funciones para la manipulación de fecha y hora. FUNCIÓN clock _strdate _strtime clock (void) time (hora) localtime (hora) mktime (t) DESCRIPCIÓN Devuelven la hora actual como el número de segundos transcurridos desde la medianoche del 1 de Enero de 1970 (GMT). Determina el tiempo de procesador transcurrido desde el inicio de la ejecución del programa. Obtiene la hora actual. Convierte la fecha y hora en una estructura de tipo tm. Convierte la hora en formato de calendario. ACTIVIDAD DE COMPLEMENTO (Actividad individual): 1. Explicar el uso de los signos: Punto y coma (;), y llaves ( { } ) en un programa en C++. 2. Diferenciar una sentencia de inicialización de una de asignación. 3. Defina 7 funciones habilitadas por conio.h: (clrscr, getch, getpass, gotoxy, textcolor, wherex y window). 4. Explicar secuencias de escape y citar 10 con su definición c/u. 5. Definir manipuladores de salida y describir 6. 6. Describa 5 Funciones de caracteres de C++. 7. Cite y explique 5 funciones numéricas reconocidas en C++ y defina 2 de cada una. 8. Determine que son las funciones de fecha y hora, cite y defina 5 de estas. 9. Explicar el comando char(x). 10. Describir sobrecarga de operadores y ejemplificar. 11. Defina Recursividad. 12. Describa operador unitario. 13. Determinar que son los operadores binarios y su utlidad en C++. 14. Definir Programa de Cómputo. 15. Explicar que es un Programa Fuente. 16. Describir Programa Objeto. 17. Determinar Programa Ejecutable. 28 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA 18: USO DE LA INSTRUCCIÓN GOTOXY DINAMICA: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL137.CPP Analizar el presente ejercicio ya que el facilitador solicitará explicación del proceso, para ello se sugiere investigas sobre el tema Ciclos en la programación de C++. 29 HOJA DE CODIFICACIÓN 0 10 20 30 40 50 60 70 80 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 30 COLORES DE FONDO Y DE TEXTO CONSTANTE VALOR SIGNIFICADO DE FONDO O DE TEXTO BLACK 0 Negro Ambos BLUE 1 Azul Ambos GREEN 2 Verde Ambos CYAN 3 Cían Ambos RED 4 Rojo Ambos MAGENTA 5 Magenta Ambos BROWN 6 Marrón Ambos LIGHTGRAY 7 Gris Claro Ambos DARKGRAY 8 Gris Oscuro Sólo para texto LIGHTBLUE 9 Azul Claro Sólo para texto LIGHTGREEN 10 Verde Claro Sólo para texto LIGHTCYAN 11 Cían Claro Sólo para texto LIGHTRED 12 Rojo Claro Sólo para texto LIGHTMAGENTA 13 Magenta Claro Sólo para texto YELLOW 14 Amarillo Sólo para texto WHITE 15 Blanco Sólo para texto BLINK 128 Parpadeo Sólo para texto CARACTERES SECUENCIA DE ESCAPE \a \b \f \n \r \t \v \\ \? \ \ooo \xhh \0 Alarma Retriceso Avance página Retorno de carro y avance de línea Retorno de carro Tabulación Tabulación vertical Barra invertida Signo interrogación Comillas dobles Número en octal Número en Hexadecimal Cero, nulo (ASCII 0) 31 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA 19: EJERCICIOS DE REFORZAMIENTO: Realizar Codificación, (Diagramas en FreeDFDCodificar en C++ opcional), depuración, verificación, ejecución, de cada ejercicio individualmente correctamente y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: FUNCIONES MATEMÁTICAS √𝑿 AGGNL138A.DFD AGGNL138.CPP AGGNL139A.DFD AGGNL139.CPP Tan (x) AGGNL140A.DFD AGGNL140.CPP Exp (x) AGGNL141A.DFD AGGNL141.CPP 𝑿𝟐 𝒀 PRÁCTICA 20: CALCULO DE AREAS Y VOLUMENES DE FIGURAS GEOMETRICAS: Realizar diagrama y codificación correspondientes. AGGNL142A.DFD AGGNL142.CPP A: Area V: Volumen : 3.141592 R: Radio h: Altura del cilindro AGGNL143A.DFD AGGNL143.CPP A: Area V: Volumen : 3.141592 R: Radio h: Altura del cono g: Generatriz AGGNL144A.DFD AGGNL144.CPP A: Area V: Volumen : 3.141592 I: Arista AGGNL145A.DFD AGGNL145.CPP A: Area V: Volumen : 3.141592 r: Radio 32 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ESTRUCTURAS DE CONTROL EN C++ Aquellas que definen y controlan el flujo de ejecución de un programa o función, estas permiten combinar instrucciones o sentencias individuales en una unidad lógica con procedimientos de entrada y salida. Todos los ejemplos y ejercicios vistos hasta ahora se ejecutan en modo secuencial, instrucciones sucesivas, siendo útil solo en programas sencillos, sin embargo no siempre es recomendable este tipo de programación para todos los casos, ya que existe problemas que requieren se ejecuten ciertas sentencias solo en algunos casos, donde el flujo de ejecución se bifurca, para esto existen las estructuras de control las cuales se dividen en 3 grupos: 1. Secuenciales. 2. Selectivas. 3. Repetitivas. ESTRUCTURAS DE CONTROL SECUENCIAL: Definida como una secuencia finita de acciones hasta obtener un resultado coherente. Su ejecución se realiza en el orden en que se presentan las instrucciones, desde el inicio hasta el final del programa. <sentencia_1>; <sentencia_2>; ----------< sentencia_n>; ESTRUCTURAS DE CONTROL SELECTIVO (SIMPLE Y DOBLE) IF: C++ reconoce a la sentencia IF como la estructura de control selectivo principal y presenta 2 alternativas: cuando la condición se cumple o cuando esta no se cumple. CONDICIÓN SELECTIVA SIMPLE CONDICIÓN SELECTIVA DOBLE Flujo original Flujo original SI OPC=1 Acción_A OPC=1 NO SI Acción_A NO Acción_B CONDICIÓN SELECTIVA SIMPLE La sentencia selectiva simple evalúa una condición lógica. La evaluación de la condición lógica representa un sólo valor Verdad o Falso. Si la condición lógica es verdadera se ejecuta la ACCION_A y continua el flujo normal del programa. Si al evaluar la condición lógica es falsa se ignora la ACCION_A y continua el flujo normal del programa. Sintaxis: if (condición lógica ) ACCION_A; CONDICIÓN SELECTIVA DOBLE La sentencia selectiva doble evalúa una condición lógica Si la condición lógica es verdadera se ejecuta la ACCION_A. Si la condición lógica es evaluada como falsa se ejecuta la ACCION_B 33 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Sintaxis: if (condición lógica ) ACCION_A; else ACCION_B; PRÁCTICA 21: CONTROL SELECTIVO IF-THEN SIMPLE, DOBLE: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas: AGGNL146.CPP AGGNL147.CPP 34 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 AGGNL148.CPP CBTis 4 AGGNL149.CPP PRÁCTICA 22: CONTROL SELECTIVO IF-THEN MULTIPLE: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL150.CPP Aplicar manipulador de salida de datos a 2 dígitos decimales 35 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL151.CPP 36 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 SENTENCIA DE CONTROL SELECTIVO SWITCH-CASE (OPCIÓN MÚLTIPLE) Sentencia de control selectivo de C++ utilizada para la elección de una opción entre múltiples alternativas, siendo especialmente útil cuando la selección se basa en el valor de la variable de control o selector, esta se evalúa y compara con cada etiqueta case, el selector debe ser un dato de tipo ordinal (int, char, bool pero no flota ni string) y cada etiqueta debe ser diferente. break : es instrucción que dentro del switch (selección múltiple) determina el final de cada case u alternativa. default : Instrucción que dentro del switch determina las acciones a realizar cuando el valor introducido en la variable de control es falso a cualquier de los valores reconocidos en case. REGLAS DE USO: 1. 2. 3. 4. 5. 6. 7. 8. La variable selector o expresión de control no puede ser: string o real. La sentencia swith requiere un valor compatible con entero. El valor puede ser variable, una constante, una llamada de función o una expresión. El valor después de cada etiqueta case debe ser una constante. El final del enunciado case está marcado típicamente con un break. Dicha sentencia permite que el programa abandone la estructura switch omitiendo los demás casos. La etiqueta default indica al programa lo mismo que la sentencia else en la secuencia de if anidados, es decir; se ejecuta cuando el usuario edita un valor que no esta en la lista de valores. La variable selector o expresión de control no puede ser: string o real. La etiqueta default indica al programa lo mismo que la sentencia else en la secuencia de if anidados, es decir; se ejecuta cuando el usuario edita un valor que no esta en la lista de valores. Cuando se requiere realizar una misma acción para distintos valores de la expresión evaluada, se coloca una sentencia case por cada valor. Sin ninguna acción, y la acción común se pone al final. Ejemplo: Formato de la estructura de contro switch-case: switch (selector) { case etiqueta(1) : sentencia(s); break; case etiqueta(n) : sentencia(s); break; default: sentecia(s); // optativo } 37 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PRÁCTICA 23: CONTROL SELECTIVO SWITCH-CASE: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL152.CPP AGGNL153.CPP 38 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 INICIO COD_ASCII VALORES POSIBLES X = COD_ASCII NO X= 130 “é” SI SI COD_ASCII=X 130 = é 160 = á 161 = í 162 = ó 163 = ú 164 = ñ 165 = Ñ X= 162 “ó” SI X= 160 “á” X= 161 “í” SI SI SI X= 163 “ú” SI X= 164 “ñ” X= 165 “Ñ” “FIN DEL PROGRAMA” “OPCIÓN NO VALIDA !” FIN SENTENCIAS DE CONTROL REPETITIVO (CICLOS). Otra de las estructuras de control básicas dentro de la programación son las estructuras de control repetitivo, también denominadas Ciclos ó Bucles, lo que permite dentro de un programa repetir un grupo de sentencias un número de veces determinada o que estos se repitan cuando las condiciones se cumplan. BUCLE: Construcción de un programa que repite una o más sentencias CUERPO DEL BUCLE: Conjunto de sentencias dentro de un programa que se repiten definidamente ITERACIÓN: Cada repetición que presenta el bucle o ciclo. CICLOS FOR (Controlado por contador) Ciclos en los que el número de iteraciones se conocen anticipadamente por lo que se les denomina bucles controlados por contador, en estos las sentencias se ejecutan un número fijo de veces. Estos ciclos cuenta de 4 fases importantes: 1. Inicialización: La variable de control debe tomar un valor inicial pudiendo ser bucles simples o múltiples. 2. Parte de Iteración: Contiene la expresión lógica que determina que el bucle realice las iteraciones de las sentencias mientras que la expresión sea verdadera. 3. Factor de Incremento/Decremento: Es el valor que se modificará la variable de control en cada iteración hasta su límite. 4. Sentencias: Son las distintas instrucciones que se ejecutarán durante cada iteración hasta cumplir el número de iteraciones definidos por el ciclo. Formato: for (Inicialización; CondiciónIteración; Incremento) 39 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Sentencias Existen 2 modalidades de establecer la sentecia for para establecer los bucles estas son por incremento y por decremento, también conocidas como formato ascendente y formato descendente. Ejemplo: for (r=1; r<=80; r++) for (r=1; r=max; r--) PRÁCTICA 24: CICLOS FOR: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL154.CPP AGGNL155.CPP AGGNL156.CPP 40 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 CICLOS WHILE (Controlado por condición) Estructura de control repetitivo que se ejecuta cuando la condición es verdadera, además el número de iteraciones es controlada por condición, la cual se evalúa antes de que se ejecute el bucle. Formato : Verdadera Condición_Bucle Falsa sentencia(s) Opción1: while (condición) Sentencia; Opción2: while (condición) { Sentencia1; Sentencia2; . . . SentenciaN; } Cuerpo del bucle Cuerpo del bucle El cuerpo del bucle se repetirá mintras la expresión lógica (condición del bucle) sea verdadera, al ser falsa se sale del bucle y se ejecuta la siguiente sentencia del programa. ACT 11. ACTIVIDAD EN PLATAFORMA: CUESTIONARIO EN LÍNEA: LENGUAJE ESTRUCTURADO EN C++. El siguiente cuestionario consta de 20 preguntas pueden ser del tipo: falso y verdadero, opción múltiple, emparejamiento, y respuesta breve (solo las palabras necesarias y lógicas de cada respuesta no agregar símbolos a los argumentos de los comandos), debes contestar solo en MAYÚSCULAS SIN ACENTOS, su resolución deberá realizarse en solo un intento y con un tiempo límite de duración de 30 min. Debes contestar cada pregunta y al final pulsar el botón: Enviar todo y terminar de la parte baja de la página para que genere la calificación de todas tus respuestas del cuestionario, 41 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Nota importante: si excedes el tiempo de resolución o tienes alguna falla con tu navegador y no cierras la actividad puede provocar que el resultado de tu calificación se vea afectado, por lo que debes asegurarte no tener virus en tu pc no abrir más páginas y utilizar un navegador libre de problemas para este fin. PRÁCTICA 25: CICLOS WHILE y DO-WHILE: Codificar en C++, depurar, verificar, ejecutar, en forma individual, cada uno de los archivos correctos y subir al servidor de red académica para efectos de evalución los siguientes programas en C++: AGGNL157.CPP AGGNL158.CPP PSEUDOCODIGO 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. DIAGRAMA AGGNL158.DFD INICIO. ESCRIBIR “TABLAS DE MULTIPLICAR 1 al 10, CICLO WHILE” OPC=’S’; MIENTRAS (OPC_=’S‘ || OPC=’s‘) ESCRIBIR “QUE TABLA DE MULTIPLICAR DESEAS ?: ” LEER FAC1 FAC2=1 MIENTRAS FAC2<=10 PRODUCTO=FAC1*FAC2 ESCRIBIR FAC1, “X”, FAC2, “=”, PRODUCTO FAC2=FAC2+1 MIENTRAS FAC2>10 ESCRIBIR ”CONTINUAR s/n ? : ” LEER CONT OPC=CONT FIN MIENTRAS FIN MIENTRAS ESCRIBIR “FIN DEL PROGRAMA” FIN. 42 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 III UNIDAD ESTRUCTURAS DE DATOS COMPLEJAS: ARRAYS, ESTRUCTURAS DE DATOS PUNTEROS Y MANEJO DE ARCHIVOS. ACT 12. ACTIVIDAD EN PLATAFORMA: 3° FORO EN LINEA: ARREGLOS ESTRUCTURAS Y ARCHIVOS. Los alumnos, consultan en medios impresos y/o electrónicos, analizan los cuestionamientos siguientes y expresan respuestas personales sobre: DATOS COMPLEJOS EN C++: 1. Arreglos en C++ importancia y aplicaciones? 2. Describir 3 métodos de ordenamiento clásicos en la programación. 3. Explicar Punteros de C++ 4. Describir las Estructura de datos. 5. Conceptos generales de los archivos en C++. Comentarios vertidos deben ser breves, claros y concretos, además los alumnos pueden corregir conceptos inprecisos manifestados por otros compañeros, así mismo deberá evitarse confrontaciones personales y no utilizar lenguaje obsceno ni ofensivo, manteniendo en todo momento una actitud de cordialidad respeto. ACTIVIDAD DE CLASE: EVALUACIÓN DIAGNÓSTICA: GENERALIDADES DE LOS DATOS ESTRUCTURADOS EN C++. Los alumnos individualmente, investigan, elaboran y resuelven correctamente el siguiente cuestionario, a fin de recuperar conocimientos previos, debiendo elaborar individualmente un documento electrónico de Word con el nombre (AGGNL.DOC), (donde A corresponde a Módulo 1, GG= N° Gpo en 2 dígitos, NL: N° lista, a 2 digitos) y subirla a esta plataforma académica en internet y definiendo los siguientes conceptos: 1. 2. 3. 4. 5. 6. Definir: Arrays: Unidimensionales, Bidimensionales y Multidimensionales. Explicar que son las Bases de Datos y sus componentes: Registros y Campos. Describir los métodos de acceso a un arreglo en operaciones de Lectura/Escritura. Citar 3 ejemplos de aplicación de las estructuras. Explique diferencias entre Array de caracteres y Cadena y expréselo gráficamente. Explique que sucedería si en un programa con una variable X a partir de un ciclo introducimos 10 veces datos. 7. Que diferencia existe si esos 10 datos los introducimos en un arreglo. 8. Cite 5 características de los elementos en un arreglo. 9. Explique los datos alojados en el ejercicio PENL_45.CPP. 10. Para que sirve la función DEPURACIÓN del Ide de C++ y sus operaciones: a. Ejecutar hasta el cursor. b. Añadir variable vigilada. c. Entrar a siguiente instrucción. Nota importante: Aplica mismas indicaciones de los trabajos de plataforma especificados: archivo no exceder 2 Mb, nombre según especificaciones, y contener: Portada, que incluya tus datos personales (Escuela, especialidad, logo, nombre del módulo, nombre del alumno, número de lista, grupo, No y nombre de la actividad, nombre del facilitador, lugar y fecha), Desarrollo: y al final, debes incluir sus: Conclusiones, donde todo el contenido íntegro del archivo nunca exceder el máximo de 6 cuartillas). Se reitera que algunas de las competencias evaluadas en este módulo son: responsabilidad y honestidad, por lo que detección de copia o plagio de algún archivo de plataforma y/o práctica (parcial o íntegro) por parte de cualquier alumno será motivo de reprobación del submódulo en cuestión. 43 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ARRAYS UNIDIMENSIONALES (VECTORES O LISTAS): LOS VECTORES: También conocidos como Vectores o Listas, son datos estructurados que contienen un número de elementos finitos, tamaño fijo homogeneidad en sus elementos y se caracterizan por presentar un índice. Ejemplo: Nombre del Arreglo Indice Contenido VECTOR : NOM NOM NOM NOM NOM NOM NOM NOM [1] : [2] : [3] : [4] : [5] : [6] : [7] : [ [ [ [ [ [ [ R O B E R T O 1 2 3 4 5 6 7 ] ] ] ] ] ] ] R O B E R T O ARRAYS PARALELOS: Arreglos diversos que utilizan el mismo índice para referirse a términos comunes capaces de procesarse simultaneamente. Ejemplo: NOM[1] NOM[2] NOM[3] NOM[4] NOM[5] NOM[6] A B C D E F CALIF [1] CALIF [2] CALIF [3] CALIF [4] CALIF [5] CALIF [6] 8.0 6.5 7.5 7.2 10.0 9.0 [I] [ [ [ [ [ [ 1 2 3 4 5 6 ] ] ] ] ] ] NOM [ I ] CALIF[ I ] ALBERTO BRENDA CARMEN DARIO ESTEBAN FERNANDO 8.0 6.5 7.5 7.2 10 9 ACTIVIDAD DE CLASE: CONCEPTOS DE LA PROGRAMACIÓN EN C++ (VIA EMAIL AL FACILITADOR). Los alumnos integrados en equipos de 5, realizan investigación y exposición del tema único que se especifica, debiendo elaborar para ello una presentación electrónica en Power Point que conste de 11 diapositivas como máximo que incluya: Portada (ya especificada), desarrollo (texto resumido, con imágenes relacionadas), al final conclusiones de equipo, que expongan uno de los siguientes tópicos, que se asignarán de manera específica por el facilitador a cada equipo: 2. Modelo Arquitectura Segmentada de John Von Newman El docente elegirá 3 de las investigaciones mejor documentadas, y solo las mejores podrán exponer el tema a sus compañeros, lo que acreditará la participación correspondiente, los alumnos pueden cuestionar a los equipos ponentes a fin de resolver dudas, así mismo el facilitador apoya complementando cada una de exposiciones, los equipos deberán guardar y subir el documento electrónico con el nombre (AGNLXX.PPTX), previamente detallado, cuidando lineamientos de contenido, tamaño de archivo, núm. diapositivas y fecha de envío, previamente descritos para efectos de evaluación. La última diapositiva debe incluir Comentarios de Equipo, así también, los temas serán abordados solo uno por equipo y previa asignación del facilitador docente. Nota importante: Solo el representante de equipo debe subir la presentación a la plataforma académica, conteniendo los nombres de integrantes organizados por número de lista en su portada. 44 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL159.CPP AGGNL160.CPP 45 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL161.CPP 46 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL162.CPP ALGORITMO : 1. INICIO. 2. N=5 3. TOT=0 4. ESCRIBIR “Introduce elementos del Arreglo: “ 5. PARA (I=0; I<=N; I++) 6. ESCRIBIR I+1, “Elemento: ” 7. LEER NUMS[ I ] 8. TOT+=NUMS[ I ] 9. SIGUIENTE I 10. PARA (I=0; I<=N; I++) 11. ESCRIBIR “Elemento: [”, I, “ ] = “, NUMS[ I ] 12. SIGUIENTE I 13. ESCRIBIR “LA SUMA DE TUS “, N, “ NUMS= “, TOT 14. FIN DICCIONARIO DE DATOS : 1. N=5 Constante que determina el límite máximo de iteraciones del ciclo I. 2. I : Variable int de control del ciclo FOR. 3. NUMS[N] : Arreglo tipo int del programa. 4. TOT : Variable int que aloja el total de la suma de los elementos en el arreglo. DIAGRAMA DE FLUJO: BÚSQUEDA EN VECTORES: ACCESO A UN ARRAY: Existen 2 métodos de acceso a lectura y escritura de los elementos de un arreglo: ACCESO DIRECTO: Al realizar operaciones de lecto/escritura a un elemento específico del array. ACCESO SECUENCIAL: Este tipo de acceso realiza un recorrido por cada uno de los elementos de todo el arreglo en la operación de lecto/escritura deseada. 47 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 En este último caso, requieren de estructuras de repetición para el acceso a toda la estructura o array y es común que el compilador de C++ envía mensajes de error cuando el ciclo y el número de elementos del mismo no coinciden, por lo que se debe cuidar que estos coincidan siempre. LAS CADENAS Y SUS FUNCIONES. También denominadas "strings" (en inglés), una cadena en C es un conjunto de caracteres, o valores de tipo "char", terminados con el carácter nulo, es decir el valor numérico 0. Internamente se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento especial, y es de gran utilidad y de uso continuo. La manera de definir una cadena es la siguiente: char Saludo[5]; Cuando se declara una cadena hay que tener en cuenta que se debe reservar una posición para almacenar el carácter nulo, de modo que si se desea almacenar la cadena "HOLA", tendremos que declarar la cadena como: char Saludo[5]; Cuatro caracteres para "HOLA" y uno extra para el carácter '\000'. También nos será posible hacer referencia a cada uno de los caracteres individuales que componen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la 'L', podemos hacer referencia a él como Saludo[2]. Los índices tomarán valores empezando en el cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la 'H'. Una cadena puede almacenar informaciones como nombres de personas, mensajes de error, números de teléfono, etc. La asignación directa sólo está permitida cuando se hace junto con la declaración. Por ejemplo: char Saludo[5]; Saludo = "HOLA" Producirá un error en el compilador, ya que una cadena definida de este modo se considera una constante, como veremos en el capítulo de "arrays" o arreglos. La manera correcta de asignar una cadena es: char Saludo[5]; Saludo[0] = 'H'; Saludo[1] = 'O'; Saludo[2] = 'L'; Saludo[3] = 'A'; Saludo[4] = '\000'; O bien: char Saludo[5] = "HOLA"; 48 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ARREGLOS BIDIMENSIONALES También conocidos como Matrices o Tablas, son Arreglos de 2 subíndices o 2 dimensiones, al igual que los unidimensionales, sus subíndices deben ser datos tipo ordinal o tipo subrango, para la ubicación y almacenamiento de un valor, deben definirse 2 subíndices uno para la fila y otro para la columna, y no requieren ser subrango del mismo tipo. Ejemplo: CALIF [4] [4] Calif [1] [1] 8 8 7 6 7 7 9 8 6 8 6 8 5 Filas 9 9 7 Calif [4] [4] Columnas AGRUPACION DE LAS VARIABLES EN UNA ARREGLO BIDIMENSIONAL: FILAS 1 V [1] [1] V [1] [2] V [1] [3 ] V [1] [4] 2 V [2] [1] V [2] [2] V [2] [3] V [2] [4] 3 V [3] [1] V [3] [2] V [3] [3] V [3] [4] 4 V [4] [1] V [4] [2] V [4] [3] V [4] [4] 1 2 3 4 COLUMNAS ARRAYS MULTIDIMENSIONALES: Arreglos que poseen más de 2 Dimensiones o subíndices (Quick Basic permite 60 índices) Lenguaje C no limita el número de subíndices dentro de este tipo de estructuras. Ejemplo: PV[1] [1] [1] PV[1] [2] [1] PV[1] [3] [1] PV [1] [4][1] 2 PV[2] [1] [1] PV[2] [2] [1] PV[2] [3] [1] PV[2] [4] [1] PV [2] [4] [2] 1 2 C O 3 L U M N A 4 S 1 N 2 D 3 PV[3] [1] [1] PV[3] [2] [1] PV[3] [3] [1] PV[3] [4] [1] O 3 O PV [3] [3] [3] F FILAS 1 49 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ACT 13. ACTIVIDAD EN PLATAFORMA: INVESTIGACIÓN Y EXPOSICIÓN DE DATOS COMPLEJOS Y ARCHIVOS EN C++. Los alumnos integrados en equipos, realizan investigación, diseño y exposición de una presentación electrónica en Power Point que conste de 11 diapositivas como máximo, incluyendo portada (logo de la escuela, especialidad, grupo, nombre de la actividad, integrantes del equipo, num. de lista de c/u y el tema abordado), que exponga uno de los siguientes tópicos, que se asignarán de manera específica por el facilitador a cada equipo: 1. Arrays definición, clasificación y aplicación. 2. Métodos de ordenamiento en C++. 3. Apuntadores, concepto, aplicación e importancia. 4. Parámetros por Valor y Parámetros por referencia de una función. 5. Estructura de datos, conceptos, declaración y aplicación. 6. Archivos, definición, tipos y aplicación en C++. Los alumnos durante la sesión de exposiciones realizan cuestionamientos a los equipos ponentes a fin de resolver dudas, así mismo el facilitador apoya complementando en cada una de las exposiciones y los equipos deberán guardar y subir el documento electrónico con el nombre ( AGGNLXX.PPTX), así mismo, deben reenviar la información a los demás equipos para su retroalimentación, también en la elaboración de la presentación, cada equipo cuida los lineamientos de: contenido, forma, tamaño de archivo, num. de dispositivas y fecha de cierre, previamente descritos para efectos de evaluación. La última diapositiva debe incluir Comentarios de Equipo, así también, los temas serán abordados solo uno por equipo y previa asignación del facilitador docente. Nota importante: Solo cada representante de equipo debe subir la presentación a la plataforma académica, en representación del mismo, por ello, esta debe contener los nombres de todos los participantes en su portada. 50 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL163.CPP 51 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL163.CPP 52 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 TAREA DE INVESTIGACION 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Explicar el objetivo de la directiva iomanip.h . Definir las funciones setiosflags, ios::showpoint, ios::fixed, ios::right, set(X), , setfill (*), setprecision (X). Explicar ejercicio 162 y 163. Definir Recursividad. Método de Ordenación por inserción. Método de Ordenación Fusión (merge). Método de Ordenación Montículo o pila (heap). Método de Ordenación Shell Método de Ordenación por intercambio. Método de búsqueda secuencial y binaria. ALGORITMOS BASICOS DE ORDENACIÓN Y BÚSQUEDA. La ordenación o clasificación de los arrays es una de las tareas más usuales en la mayoría de los programas que utilizan estas estructuras de datos, este es el procedimiento mediante el cual los elementos del arreglo son dispuestos en un orden especificado, ejemplo, numérico, alfabético, etc., ejemplo: 25 13 15 22 35 8 5 7 1 1 5 7 8 13 15 22 25 35 Lista desordenada Lista ordenada ascendente 35 25 22 15 13 8 7 5 1 Lista ordenada descendente Otros ejemplos de listas ordenadas podemos observar: cuentas de un banco, agenda telefónica, dentro de la programación existen métodos de ordenación en los arreglos dentro de los cuales destacan: 1. 2. 3. 4. 5. 6. 7. 8. 9. Método ordenación por burbuja. Selección. Rápido (quick sort). Ordenación por inserción. Fusión (merge). Montículo o pila (heap). Shell Ordenación por intercambio. búsqueda secuencial y binaria. METODOS DE ORDENACIÓN MÁS COMUNES: Método de Burbuja o Bubblesort: Método más fácil de ordenación, algoritmo que consiste en comparar cada elemento del arreglo en parejas, si los valores no están ordenados correctamente, sus valores se intercambian entre si, el valor más pequeño flota hasta la parte superior del array como si fuera una burbuja en un líquido 53 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 Diccionario de datos : Tipo Nombre lista TAM i j temp Cualquiera Constante entera Entero Entero Similar que los elementos de la lista CBTis 4 Uso Lista a ordenar Tamaño de la lista Contador Contador Para realizar los intercambios Pseudocódigo en C: 1. 2. 3. 4. 5. 6. for (i=1; i<TAM; i++) for j=0 ; j<TAM - 1; j++) if (lista[j] > lista[j+1]) temp = lista[j]; lista[j] = lista[j+1]; lista[j+1] = temp; Ejemplo del ordenamiento Bubblesort: 1. 2. 3. 4. Lista original : 1ª pasada : 2ª : 3ª : 4-3-5-2-1 3-4-5-2-1 3-4-2-5-1 3-4-2-1-5 Repitiendo este proceso vamos obteniendo los siguientes resultados: 5. 6. 7. 4ª : 5ª : 6ª : 3-2-1-4-5 2-1-3-4-5 1-2-3-4-5 Método de Selección: Este método tienen como características la búsqueda del elemento menor de un vector ó lista, el cual se intercambia con el elemento ubicado en la primera posición de la lista, posteriormente se busca el segundo elemento más pequeño, se intercambia con el segunco elemento de la lista y el proceso se repite nuevamente hasta concluir el último elemento y se ordene toda la lista. Diccionario de datos : Tipo Nombre lista TAM i pos_mem Cualquiera Constante entera Entero Entero temp Similar que los elementos de la lista Uso Lista a ordenar Tamaño de la lista Contador Posición del menor elemento de la lista Para realizar los intercambios Pseudocódigo en C: 1. for (i=0; i<TAM-1; i++) 2. pos_men = Menor(lista, TAM, i); 3. temp = lista[i]; 4. lista[i] = lista [pos_men]; 5. lista [pos_men] = temp; Nota Menor(lista, TAM, i) es una función que busca el menor elemento entre las posiciones i y TAM-1. La búsqueda es lineal (elemento por elemento). No lo incluyo en el pseudocódigo porque es bastante simple. 54 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Ejemplo del ordenamiento: 1. 2. 3. 4. 5. Lista original : 1ª pasada : 2ª : 3ª : 4ª : 4-3-5-2-1 1-3-5-2-4 1-2-5-3-4 1-2-3-5-4 1-2-3-4-5 Método Ordenamiento Rápido Quicksort: Método que tiene como características ser la técnica de búsqueda más rápida conocida, desarrollada por C.A.R. Hoare en 1960. El algoritmo original es recursivo, pero se utilizan versiones iterativas para mejorar su rendimiento (los algoritmos recursivos son en general más lentos que los iterativos, y consumen más recursos). El algoritmo fundamental es el siguiente: 1. Se elige un elemento de la lista, pudiendo ser cualesquiera y que se denomina elemento de división. 2. Buscar la posición de ordenamiento. 3. Ordenar los elementos de la lista a cada lado del elemento de división, de un lado quedan todos los elementos menores que el elegido y del otro lado todos los mayores, generandose virtualmente 2 sublistas separadas. 4. Realizar este procedimiento en forma recursiva para cada sublista mientras tengan un largo mayor que 1, finalizado este proceso la lista queda ordenada. Analizando un poco más se obtiene un procedimiento mucho más efectivo. Se utilizan dos índices: i, al que llamaremos contador por la izquierda, y j, al que llamaremos contador por la derecha. El algoritmo es éste: Recorres la lista simultáneamente con i y j: por la izquierda con i (desde el primer elemento), y por la derecha con j (desde el último elemento). Cuando lista[i] sea mayor que el elemento de división y lista[j] sea menor los intercambias. Repites esto hasta que se crucen los índices. El punto en que se cruzan los índices es la posición adecuada para colocar el elemento de división, porque sabemos que a un lado los elementos son todos menores y al otro son todos mayores (o habrían sido intercambiados). Al finalizar este procedimiento el elemento de división queda en una posición en que todos los elementos a su izquierda son menores que él, y los que están a su derecha son mayores. Nombre Lista inf Sup elem_div i j cont Diccionario de Datos : Tipo Uso Cualquiera Lista a ordenar Entero Elemento inferior de la lista Entero Elemento superior de la lista Similar que los elementos de la Elemento divisor lista Entero Contador a izquierda Entero Contador a derecha Entero Variable cont para continuar con valor =1 Pseudocódigo : Nombre Procedimiento: OrdRap Parámetros: lista a ordenar (lista) índice inferior (inf) índice superior (sup) // Inicialización de variables 1. elem_div = lista[sup]; 2. i = inf - 1; 3. j = sup; 4. cont = 1; 55 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 // Verificamos que no se crucen los límites if (inf >= sup) retornar; // Clasificamos la sublista 7. while (cont) 8. while (lista[++i] < elem_div); 9. while (lista[--j] > elem_div); 10. if (i < j) 11. temp = lista[i]; 12. lista[i] = lista[j]; 13. lista[j] = temp; 14. else 15. cont = 0; // Copiamos el elemento de división // en su posición final 16. temp = lista[i]; 17. lista[i] = lista[sup]; 18. lista[sup] = temp; // Aplicamos el procedimiento // recursivamente a cada sublista 19. OrdRap (lista, inf, i - 1); 20. OrdRap (lista, i + 1, sup); 5. 6. Ejemplo : La primera llamada debería ser con la lista, cero (0) y el tamaño de la lista menos 1 como parámetros. 5-3-7-6-2-1-4 Comparamos con el 5 por la izquierda y el 1 por la derecha. 5-3-7-6-2-1-4 5 es mayor que cuatro y 1 es menor. Intercambiamos: 1-3-7-6-2-5-4 Avanzamos por la izquierda y la derecha: 1-3-7-6-2-5-4 3 es menor que 4: avanzamos por la izquierda. 2 es menor que 4: nos mantenemos ahí. 1-3-7-6-2-5-4 7 es mayor que 4 y 2 es menor: intercambiamos. 1-3-2-6-7-5-4 Avanzamos por ambos lados: 1-3-2-6-7-5-4 En este momento termina el ciclo principal, porque los índices se cruzaron. Ahora intercambiamos lista[i] con lista[sup] (pasos 16-18): 1-3-2-4-7-5-6 Aplicamos recursivamente a la sublista de la izquierda (índices 0 - 2). Tenemos lo siguiente: 1-3-2 1 es menor que 2: avanzamos por la izquierda. 3 es mayor: avanzamos por la derecha. Como se intercambiaron los índices termina el ciclo. Se intercambia lista[i] con lista[sup]: 1-2-3 Al llamar recursivamente para cada nueva sublista (lista[0]-lista[0] y lista[2]-lista[2]) se retorna sin hacer cambios (condición 5.).Para resumir te muestro cómo va quedando la lista: Segunda sublista: lista[4]-lista[6] 7-5-6 5-7-6 5-6-7 Para cada nueva sublista se retorna sin hacer cambios (se cruzan los índices). Finalmente, al retornar de la primera llamada se tiene el arreglo ordenado: 1-2-3-4-5-6-7 56 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL164.CPP 57 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL165.CPP 58 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 USO BASICO DE APUNTADORES. DEFINICION DE VARIABLES PUNTEROS. El uso de los punteros o apuntadores, es una técnica poderosa de programar que permite eficientar y flexibilizar los programas permitiendo que C y C++ sea poderoso. PUNTERO: Variable que contiene direcciones de otras variables, hasta ahora todas las variables reconocidas en nuestro curso de programación contienen valores de datos a diferencia de los punteros cuyos valores representan direcciones de memoria donde los datos se almacenan, con este tipo de datos los programas pueden realizar muchas tareas que no sería posible mediante el uso de otros tipos de datos. Cuando se declara una variable, esta se asocia a propiedades conocidas como son: Nombre, Tipo y Dirección de memoria. A está última, se tiene acceso mediante el operador de dirección & por lo que también es posible imprimir la dirección de memoria, solo que hasta ahora nos hemos acostumbrado a imprimir solo su contenido. Si una variable contiene la dirección de otra variable, se dice que la primera variable apunta a la segunda, por ejemplo si una variable en la posición 1004 está apuntanda por otra variable situada en la posición 1000, esa posición 1000 contendrá el valor 1004, la sig. Figura ilustra este caso. Dx de memoria Contenido 1000 1004 1001 1002 1003 1004 .. . RAZONES QUE JUSTIFICAN EL USO DE LOS PUNTEROS: 1. Proporcionan los medios por los cuales las funciones pueden modificar sus argumentos de llamada. 2. Se utilizan para soportar rutinas de asignación dinámica de memoria. 3. Mejora la eficiencia de las rutinas en los programas. 4. Proporcionan soporte a estructuras de datos complejas como son listas enlazadas y árboles binarios. OPERADORES PUNTEROS Existen dos operadores especiales de punteros: & y *. 1. & es un operador monario (solo necesita un operando) que devuelve la dirección de memoria de su operando ejemplo: M=&cuenta ; M toma la dirección de memoria de la variable cuenta, esta es la dirección interna en la memoria de la computadora, la dirección no tiene nada que ver con el valor de cuenta, por lo tanto m recibe la dirección de cuenta. 2. * Operador monario que devuelve el valor de la variable localizada en la dirección que sigue, siendo un operador complementario de & REGLAS DE LOS PUNTEROS: 1. 2. 3. 4. Un puntero es una variable como cualquier otra. Una variable puntero contiene una dirección que apunta a otra posición de memoria. En esa posición de memoria se almacenan los datos a los que apunta el puntero. Un puntero apunta a una variable de memoria. 59 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL166.CPP REGLAS DEL OPERADOR & El carácter & presenta diferentes usos en C++: 1. 2. 3. Utilizado como prefijo de un nombre de variable devuelve la dirección de memoria. Utilizado como sufijo de un tipo en una declaración de una variable, declara la variable como sinónimo de la variable inicializada. Utilizado como de un tipo de declaración de parámetros de una función declara la referencia de la variable. Dirección de Memoria Alta Pre PVta 1001 1000 999 101 100 12.50 99 Dirección de Memoria Baja Pre contiene el valor de 100, que es la Dx de *p es el valor del elemento al que apunta PVta por lo que *p toma el valor de 12.50 SENTENCIAS QUE UTILIZAN VARIABLES PUNTEROS. Cada vez que es declarada una variable, el compilador reserva una dirección de memoria para almacenar el dato (contenido de la variable), en el caso de un dato tipo entero esta ocupa 2 bytes de memoria, ese espacio se ubica en una posición específica de memoria denominada dirección de memoria cuando es necesario hacer uso del valor variable el compilador accesa automáticamente a la dirección de memoria, por ello el uso de los punteros propicia la eficacia de los programas ya que en si estos, asocian el valor con la dirección de memoria. 60 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Memoria de la Computadora Si tienes bien claro lo que es la memoria del computadora puedes saltarte esta sección. Pero si confundes la memoria con el disco duro o no tienes claro, A lo largo de la experiencia con las computadoras se ha encontrado con mucha gente no tiene claro cómo funciona una computadora. Cuando hablamos de memoria nos estamos refiriendo a la memoria RAM del ordenador. Son unas pastillas que se conectan a la placa base y nada tienen que ver con el disco duro. El disco duro guarda los datos permanentemente (hasta que se rompe) y la información se almacena como ficheros. Nosotros podemos decirle al ordenador cuándo grabar, borrar, abrir un documento, etc. La memoria Ram en cambio, se borra al apagar la computadora. La memoria Ram la usan los programas sin que el usuario de éstos se de cuenta. Para hacernos una idea, hoy en dia la memoria se mide en MegaBytes (suelen ser 16, 32, 64, 128Mb) y los discos duros en GigaBytes (entre 3,4 y 70Gb, o mucho más). Hay otras memorias en la computadora aparte de la mencionada. La memoria de video (que está en la tarjeta gráfica), las memorias caché (del procesador, de la placa...). Al declarar una variable estamos diciendo a la computadora que nos reserve una parte de la memoria para almacenarla. Cada vez que ejecutemos el programa la variable se almacenará en un sitio diferente, eso no lo podemos controlar, depende de la memoria disponible y otros factores misteriosos. Puede que se almacene en el mismo sitio, pero es mejor no fiarse. Dependiendo del tipo de variable que declaremos el ordenador nos reservará más o menos memoria. Como vimos anteriormente los tipos de datos cada tipo de variable ocupa más o menos bytes. Por ejemplo si declaramos un char, el ordenador nos reserva 1 byte (8 bits). Cuando finaliza el programa todo el espacio reservado queda libre. Existe una forma de saber qué direcciones nos ha reservado la computadora. Se trata de usar el operador & (operador de dirección). ejemplo: Declaramos la variable 'a' y obtenemos su valor y dirección. Para mostrar la dirección de la variable usamos el oprador &. Y el valor se muestra en hexadecimal. No hay que confundir el valor de la variable con la dirección donde está almacenada la variable. La variable 'a' está almacenada en un lugar determinado de la memoria, ese lugar no cambia mientras se ejecuta el programa. El valor de la variable puede cambiar a lo largo del programa, lo cambiamos nosotros. Ese valor está almacenado en la dirección de la variable. El nombre de la variable es equivalente a poner un nombre a una zona de la memoria. Cuando en el programa escribimos 'a', en realidad estamos diciendo, "el valor que está almacenado en la dirección de memoria a la que llamamos 'a'". ACT 14. ACTIVIDAD EN PLATAFORMA: CRUCIGRAMA ”ARREGLOS, PUNTEROS, ESTRUCTURAS Y ARCHIVOS”. Los alumnos resuelven individualmente el crucigrama propuesto indicado en la liga en la plataforma virtual Moodle para esta actividad específica, mismo que deberá resolverse correctamente en un tiempo no mayor de 15 min., en cada palabra puede solicitar hasta un máximo de 2 caracteres o pistas de la respuesta correcta para no ser penalizado, así mismo una vez resuelto el crucigrama (verifica que no tengas activado el bloqueo de ventanas emergentes), no cerrar la pantalla con el resultado, ya que debes capturar la pantalla con la calificación legible, cuando se despliegue el resultado obtenido (pulse las teclas Alt+Impr pantalla), misma que es el registro o evidencia de resolución del mismo. Para ello, debe elaborar individualmente un documento de Word con el nombre (AGGNLXX.DOC), en el que debes pegar la imagen previamente capturada del crucigrama, así mismo liste y defina cada uno de los términos correctos del crucigrama, por último, no olvide anotar conclusiones personales al final de su documento a subir en plataforma académica. 61 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL167.CPP TAREA DE INVESTIGACION 1. 2. 3. 4. Explique que diferencia existe en las direcciones de memoria los punteros de &val1...&val5, asi mismo con la dirección de memoria de la variable valor del ejercicio 167.CPP Explicar como se comportan los punteros en datos int (numéricos) y en datos tipo char del ejercicio 168.CPP Explique diferencias entre variable por valor y variable por referencia. Definir la funcion strcpy DECLARACION DE VARIABLE PUNTERO. Como cualquier variable, los punteros deben declararse antes de su utilización, este tipo de variables debe indicar al compilador el tipo de dato al que apunta el puntero, por lo que después de su identificador debe preceder por el símbolo 62 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 del asterisco (*) , por lo que invariablemente cuando aparezca un asterisco (*), en una declaración de variable, esto define una variable puntero. Formato: tipo de dato apuntado *identificador puntero Ejemplos: int *cuenta Puntero a un tipo entero Long *pventa Puntero a un tipo entero largo char *texto float *calif Puntero a un tipo carácter Puntero a un tipo flotante Inicialización de punteros. C++ no inicializa los punteros en su declaración (No les define valor) por lo que es necesario inicializarlos previamente a su utilización y ello proporciona la dirección del dato correspondiente, y solo hasta que este proceso se haya realizado, podrá ser utilizado para asignar direcciones de memoria, para asignar una dirección de memoria (dx) a un puntero, como se mencionó anteriormente, se utiliza el operador &, cuando se ha definido un puntero, el asterisco del puntero indica (contenido de) la memoria apuntada por el puntero debiendo ser del tipo especificado. Inicialización estática: Recibe este nombre ya que la asignación de memoria requerida para almacenar el valor es fijo y no puede desaparecer. Una vez que la variable es definida, el compilador establece suficiente memoria para almacenar un valor del tipo de dato especificado. La memoria permanece reservada para esta variable y no puede ser utilizada para otra coso durante la ejecución del programa, el puntero a esa variable puede ser cambiado pero no su cantidad de memoria reservada. Indirección de punteros: Como se mencionó, después de declarar una variable puntero, este debe inicializarse y posteriormente utilizarse para direccionar algún tipo de dato en memoria, el uso de un puntero para obtener el valor que apunta, el dato apuntado se denomina indireccionar el puntero (desreferenciar el puntero) para ello se utiliza el operador de indirección que no es otra cosa que un operador de sobrecarga. PUNTEROS A ENTEROS. Los punteros se enlazan a tipos de datos específicos, de modo que C++ verifica si se asigna la dirección de un tipo de dato al tipo correcto de puntero, de tal manera que si se declara un puntero flota, no se le puede asignar la dirección de un carácter o un entero. C++ requiere que las variables puntero direccionen realmente variables del mismo tipo de dato que esté ligado a los punteros en sus declaraciones. Aritmética de Punteros: Los punteros permiten solo 2 operaciones aritméticas en las que pueden utilizarse los punteros y estas son suma y resta, para entender que ocurre con la aritmética de punteros, sea P1 un puntero a un entero con valor actual de 2000 y asumamos que los enteros son de 2 bytes de longitud después de la expresión: P1++; ¡ P1 contiene 2002, no 2001 ! Cada vez que se incrementa P1, apunta al siguiente entero, lo mismo ocurre al decrementar, ejemplo P1-- ; Hace que P1 tenga el valor de 1998, asumiendo que previamente era 2000. Cada vez que se incrementa un puntero, este apunta a la posición de memoria del siguiente elemento de su tipo base. Cada vez que se decrementa, apunta a la posición de memoria del elemento anterior. Con punteros a caracteres, esto frecuentemente hace que parezca una aritmética normal, sin embargo, el resto de los punteros o decrecen en la longitud del tipo de datos a los que apuntan. 63 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL168.CPP PUNTEROS A ARRAY. Como se ha descrito hasta ahora, los arrays y los punteros tienen una estrecha relación en lenguaje C++, ya que se puede direccionar arrays como si fueran punteros y viceversa y ello implica que pueden almacenar cadenas de datos en elementos de arrays y sin los punteros eso no es posible, ya que no existe en C++ el dato tipo cadena (string) comun de otros lenguajes, unicamente constantes de cadena. Un nombre de array es un puntero, considere el siguiente ejemplo: int lista [5] = {10, 20, 30, 40, 50 }; Lista ---> [ 0 ] Memoria [1] 10 <------ * lista [2] 20 <------ * ( lista +1 ) [3] 30 <------ * ( lista +2 ) [3] 40 <------ * ( lista +3 ) [4] 50 <------ * ( lista +4 ) Array almacenado en memoria Si visualiza lista [ 0 ] observara que su contenido es 10, pero si visualiza *lista como el nombre de array es un puntero, también observará que su contenido es 10, por lo que: 64 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 lista lista lista lista lista +0 +1 +2 +3 +4 apunta a apunta a apunta a apunta a apunta a CBTis 4 Lista [ 0 ] Lista [ 1 ] Lista [ 2 ] Lista [ 3 ] Lista [ 4 ] Ventajas de los punteros: El nombre de un arreglo es una constante puntero, no una variable puntero y por ello no puede cambiarse el valor de un nombre array, como no pueden cambiarse las constantes, ello explica por que no se pueden reasignar a un arreglo durante la ejecución del programa. Solo puede asignarse valores a un array en tiempo de declaración, un elemento cada vez durante su ejecución o mediante funciones tales como strcpy(). PUNTEROS A CADENAS. La inicialización de un array de punteros a cadenas se ejemplifica como el caso a continuación: char *meses [12] = {“Enero”, “Febrero”, “Marzo”, “Abril”, “Mayo”, “Junio”, “Julio”, “Agosto”, “Septiembre”, “Octubre”, “Noviembre”, “Diciembre”}; Los punteros se utilizan sustituyendo los índices de los arrays ejemplo: AGGNL169.CPP El estudio de las cadenas es útil para profundizar en la relación entre apuntadores y arreglos. Facilita, además la demostración de cómo algunas de las funciones estándar de cadenas de C pueden ser implementadas. Finalmente ilustraremos cómo y cuando los apuntadores pueden y deben ser pasados a una función. En C, las cadenas son arreglos de caracteres. Esto no es necesariamente cierto para otros lenguajes. En Basic, Pascal, Fortran y en otros lenguajes, una 65 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 cadena tiene definido su propio tipo de datos. Pero en C, esto no es así. En C una cadena es un arreglo de caracteres terminado con un carácter binario de cero (escrito como \0). Para comenzar escribiremos algo de código, el cual si bien es preferido para propósitos meramente ilustrativos, probablemente no lo escribirás en un programa real. Consideremos por ejemplo: char mi_cadena[40]; mi_cadena [0] = 'T'; mi_cadena [1] = 'e'; mi_cadena [2] = 'd': mi_cadena [3] = '\0'; Si bien uno nunca construiría cadenas de este modo, el resultado final es una cadena que es en realidad un arreglo de caracteres terminado con un caracter nul. Por definición, en C, una cadena es un arreglo de caracteres terminado con el carácter nul. Hay que tener cuidado con que nul no es lo mismo que NULL. El “nul” se refiere a un cero definido por la secuencia de escape ‘\0’. Esto es, que ocupa un byte de memoria. El “NULL”, por otra parte, es el nombre de la macro usada para inicializar apuntadores nulos. NULL está definido en un archivo de cabecera del compilador de C, mientras que nul puede no estar definido del todo. Ya que al estar escribiendo código como el de arriba gastaríamos mucho tiempo, C permite dos modos alternativos de llegar al mismo resultado. El primero sería escribir: char mi_cadena [40] = {'T', 'e', 'd', '\0',}; Pero es conveniente: char mi_cadena [40] = "Ted"; Cuando usamos las comillas dobles, en lugar de las simples usadas en los ejemplos anteriores, el carácter nul (‘\0’) se añade automáticamente al final de la cadena. En cualquiera de los casos descritos arriba sucede la misma cosa,. El compilador asigna un bloque continuo de memoria de 40 bytes de longitud para alojar los caracteres y los inicializa de tal manera que los primeros 4 caracteres son Ted\0. DEFINICION Y DECLARACION DE FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque tanto unos como el otro puede no existir, y son una herramienta muy valiosa, que se utilizan en muchos programas C++. Al igual que con las variables, las funciones pueden declararse y definirse. Una declaración es simplemente una presentación, una definición contiene las instrucciones con las que realizará su trabajo la función. Formato de declaración: Tipo_devuelto Nombre_Función (Lista de parámetros) { Declaración de variables; sentencia(s); } En general, la definición de una función se compone de las siguientes secciones, aunque pueden complicarse en ciertos casos: Opcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser "extern" o "static". Si no se especifica es "extern", por momento sólo usaremos funciones externas, y se menciona porque es parte de la declaración. Las funciones declaradas como extern están disponibles para todo el programa, las funciones static pueden no estarlo. El tipo del valor de retorno, que puede ser "void", si no necesitamos valor de retorno. En C, si no se establece, por defecto será "int", aunque en general se considera se recomienda no omitir el tipo de valor de retorno. En C++ es obligatorio indicar el tipo del valor de retorno. Modificadores opcionales. Tienen un uso muy específico, de momento no entraremos en este particular, lo mencionaremos posteriormente. El nombre de la función. Es muy recomendable, poner nombres que indiquen, su contenido, qué es lo que hace la función, y que permitan interpretar qué hace el programa con sólo leerlo. Cuando se precisen varias palabras para conseguir este efecto existen varias reglas aplicables de uso común. Una consiste en separar cada palabra con un "_", la otra, consiste en escribir la primera letra de cada palabra en mayúscula y el resto en minúsculas. 66 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Por ejemplo, si hacemos una función que busque el número de teléfono de una persona en una base de datos, podríamos llamarla "busca_telefono" o "BuscaTelefono". Una lista de declaraciones de parámetros entre paréntesis. Los parámetros de una función son los valores de entrada (y en ocasiones también de salida). Para la función se comportan exactamente igual que variables, y de hecho cada parámetro se declara igual que una variable. Una lista de parámetros es un conjunto de declaraciones de parámetros separados con comas. Puede tratarse de una lista vacía. En C es preferible usar la forma "func(void)" para listas de parámetros vacías. En C++ este procedimiento se considera obsoleto, se usa simplemente "func()".. Un cuerpo de función que representa el código que será ejecutado cuando se llame a la función. El cuerpo de la función se encierra entre llaves "{}" Una función muy especial es la función "main". Se trata de la función de entrada, y debe existir siempre, será la que tome el control cuando se ejecute un programa en C. Los programas Windows usan la función WinMain() como función de entrada. Existen reglas para el uso de los valores de retorno y de los parámetros de la función "main", en este momento solo usaremos como "int main()" o "int main(void)", con un entero como valor de retorno y sin parámetros de entrada. El valor de retorno indicará si el programa ha terminado sin novedad ni errores retornando cero, cualquier otro valor de retorno indicará un código de error. PROTOTIPO DE UNA FUNCION : Un prototipo es una declaración de una función. Consiste en una definición de la función sin cuerpo y terminado con un ";". En C++ es obligatorio usar prototipos. La estructura de un prototipo es: <tipo> func(<lista de declaración de parámetros>); Por ejemplo: int Mayor(int a, int b); Sirve para indicar al compilador los tipos de retorno y los de los parámetros de una función, de modo que compruebe si son del tipo correcto cada vez que se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea necesario. Los nombres de los parámetros son opcionales, y se incluyen como documentación y ayuda en la interpretación y comprensión del programa. El ejemplo de prototipo anterior sería igualmente válido y se podría poner como: int Mayor(int,int); Esto sólo indica que en algún lugar del programa se definirá una función "Mayor" que admite dos parámetros de tipo "int" y que devolverá un valor de tipo "int". No es necesario escribir nombres para los parámetros, ya que el prototipo no los usa. En otro lugar del programa habrá una definición completa de la función. Normalmente, las funciones se declaran como prototipos dentro del programa, o se incluyen estos prototipos desde un fichero externo, (usando la directiva "#include", operador de preprocesador.) Ya se mencionó más arriba, pero las funciones son "extern" por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa. En contraposición las funciones declaradas "static" sólo son accesibles dentro del fichero fuente donde se definen. La definición de la función se hace más adelante o más abajo. Lo habitual es hacerlo después de la función "main". TAREA DE INVESTIGACION 1. 2. 3. Explicar características de la estructura de una función: a. Declaración de datos. b. Tipo de resultado. c. Lista de parámetros. d. Cuerpo de la función. e. Paso de parámetros. f. Valor devuelto. Explique 3 reglas para nombrar una función. Importancia dentro de las funciones en la programación estructurada. Ejemplo de un programa con uso de una función sin retorno de valores: 67 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL170.CPP 68 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL171.CPP RELACIÓN Y JERARQUÍA DE LAS FUNCIONES EN C++ Main() Función1 Función2 Función4 Función3 Función5 69 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 PASO DE PARÁMETROS. PARÁMETROS DE UNA FUNCION: El paso de parámetros en C++ es un mecanismo importante dentro de las funciones ya que a partir de el se permite la transferencia de los valores entre las variables de las distintas funciones en un programa, por defecto sino se especifican los parámetros, no existe transferencia de los valores entre las funciones. C++ Reconoce 2 métodos para transferir valores de las variables entre las distintas funciones en un programa, estos son: 1. Parámetros por Valor. 2. Parámetros por Referencia. Paso de Parámetros por Valor: Método para transferir el valor a una variable entre funciones en un programa de C++ en que la función que recibe los parámetros, el compilador transfiere una copia de los valores definidos como parámetros de la función original. AGGNL172.CPP 70 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Paso de Parámetros por Referencia: Método de transferencia entre las variables de las funciones en un programa en que se transfiere la dirección de memoria (referencia) la cual contiene datos que pueden ser modificados, para este caso particular se utiliza el signo & (ampersand) precedido al nombre de variable especificada de esta forma, C++ permite el uso de punteros para implementar parámetros por referencia. DIFERENCIAS ENTRE PARÁMETROS POR VALOR Y REFERENCIA: 1. 2. 3. 4. 5. Los parámetros por valor (sin &) reciben copias de los argumentos transferidos. La asignación a parámetros por valor de una función, nunca cambian el argumento original pasado a los parámetros. Los parámetros por referencia, (con &) reciben direcciones de memoria. En una función, las asignaciones a parámetros por referencia, cambian los valores de los argumentos originales. Todos los parámetros en C pasan por valor, C no ofrece la transferencia por referencia. AGGNL173.CPP 71 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 CONCEPTO, DECLARACION Y USO DE ESTRUCTURAS. ESTRUCTURA: Es una colección de datos de uno o más de elementos denominados miembros, donde cada miembro puede ser un tipo de dato diferente. La estructura puede contener cualquier número de miembros, donde cada uno tiene un nombre único y es llamado nombre del miembro, en otros lenguajes de programación también se les conoce con el nombre campos y la estructura son denominadas Bases de Datos, ejemplos de aplicación de las estructuras. LIBROS DE BIBLIOTECA Titulo : Programación_C++ Autor : Luis_Joyanes Editorial : Mc_Graw_Hill Edicion : 2002 Pags : 529 Precio : 328.00 REGISTRO DE VEHÍCULOS Marca : Chrysler Modelo : Stratus Fecha_Fabrica : 2003 Motor : Gasolina Cilindros : 4 Tipo : Coupé Capac : 5 Uso : Particular Placa : FBX56-590685 Costo : 190000.00 DEFINICION DE CAMPO. MIEMBRO ó CAMPO Titulo Autor Editorial Edición Pags Precio TIPO DE DATO Array de caracteres longitud =30 Array de caracteres longitud =35 Array de caracteres longitud =25 Entero Entero Flotante MIEMBRO Marca Modelo Fecha_Fabrica Motor Cilindros Tipo Capac Uso Placa Costo TIPO DE DATO Array de caracteres longitud =15 Array de caracteres longitud =10 Entero Array de caracteres longitud =10 Entero Array de caracteres longitud =15 Entero Array de caracteres longitud =10 Array de caracteres longitud =12 Flotante DEFINICION DE ESTRUCTURA. La estructura es un tipo de dato definido por el usuario, en función de las necesidades específicas que requiera, por ello debe declararse en forma previa o antes de ser utilizada, su formato de declaración y sintaxis es la siguiente: struct <nom_estructura> { tipo_dato1 nombre_miembro1; tipo_dato2 nombre_miembro2; tipo_dato3 nombre_miembro3; tipo_dato_n nombre_miembro_n; }; Ejemplo: struct BIBLIOTECA; { char Titulo [30]; 72 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 char Autor [35]; char Editorial [25]; int Edicion; int Pags; flota Precio; }; DEFINICIÓN DE VARIABLES DE ESTRUCTURAS: Para acceder a una Estructura, se utiliza una variable(s) que deben definirse después de la declaración de la estructura, por lo que deben considerar los siguientes conceptos: Declaración y Definición. Declaración: especifica el nombre y formato de la estructura de datos, sin reservar espacio en memoria. Definición: establece o define un área de memoria para cada variable de una estructura de acuerdo al formato declarado las variables de una estructura pueden definirse de 2 formas: 1. 2. Listándolas inmediatamente después llave de cierre de la declaración de la estructura. Listando el nombre de la estructura precedida de las variables correspondientes en cualquier lugar del programa previo a su utilización. Ejemplo de Declaración-Definición : Caso 1: La DECLARACIÓN de la Estructura o se incluye en el programa, en forma previa a la función principal main ( ), la cual se inicia con la palabra reservada struct <nombre de la estructura> , a menudo se refiere al nombre de la estructura como su etiqueta en el ejemplo que establecemos es llamada DIR, posteriormente se definen los miembros o elementos de la estructura, especificando el tipo de dato y el nombre de cada miembro. La declaración finaliza con el punto y coma, ya que la declaración de una estructura es considerada por C++ como una sola sentencia. 1. struct DIR { char nom[30]; char calle[40]; char ciudad [20]; char edo [3] unsigned long int codigo; }; Cabe destacar que en este punto del código, realmente aún no se ha definido ninguna variable del tipo estructura (la definición de la variable reserva el espacio de memoria que es requerido) que reconoce el compilador de C++ por lo que debe incluirse al final de la declaración de la estructura, en la sección de declaración de variables o antes utilizar la estructura, una línea que defina a la variable, en nuestro caso incluir la línea: struct DIR info_dir; Estructura info_dir en memoria : nom calle ciudad edo codigo 30 bytes 40 bytes 20 bytes 3 bytes 4 bytes info_dir 73 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 CASO 2: En este caso se declara la estructura en primer término, y la definición de variables se incluye inmediatamente después de la llave de cierre 2. struct DIR { char nom[30]; char calle[40]; char ciudad [20]; char edo [3] unsigned long int codigo; } a_info, b_info, c_info; CONSTRUCCION DE UNA ESTRUCTURA EN C. Como ya se mencionó anteriormente la estructura de datos es una colección de datos de tipos diferentes que se referencían bajo un único nombre, proporcionando un medio eficaz para mantener junta la información relacionada. La declaración de la estructura forma parte de la plantilla que puede utilizarse para crear variables de estructura, las variables que componen la estructura llamados miembros, elementos o en algunos casos campos de la estructura. En general, cada elemento de la estructura está relacionado lógicamente con los otros, ejemplo la información de un directorio (nombre y dirección) serían representados como una típica estructura. Otro ejemplo tradicional de una estructura es el registro de una nomina: un "empleado" es descrito por un set de atributos tales como el nombre, dirección, numero de seguro social, salario, etc. Algunas de estas en cambio podrían ser estructuras: un nombre tiene varios componentes, como es una dirección y aún un salario. Las estructuras ayudan a organizar complicados datos, particularmente en programas largos, porque en muchas situaciones de ellas permiten un grupo de variables relacionadas para ser tratadas como una unidad en vez de entidades separadas. REFERENCIA A LOS ELEMENTOS DE UNA ESTRUCTURA Los elementos individuales de una estructura también conocidos como campos, se referencían utilizando el operador. (“operador punto”), en el siguiente ejemplo al campo código postal de la estructura info_dir se le asigna el valor sig: Info_dir.nom=”JUAN PEREZ JUÁREZ” info_dir.codigo=12345; Todos los elementos o campos que se almacenan en la estructura son expresados en forma similar. ALMACENAMIENTO DE DATOS EN UNA ESTRUCTURA: Las estructuras permiten el almacenamiento de datos a partir de varios procedimientos: 1. Inicialización. 2. Asignación directa. 3. Lectura de datos desde el teclado Inicialización: Almacenamiento de datos en una estructura, en la que se definen o asignan valores dentro de la sección de código de un programa, incluso en la propia declaración de la estructura, un ejemplo de esta forma de asignación de datos en una estructura lo vemos en el ejercicio LP2NL_03.CPP. Asignación directa: Forma de almacenamiento de datos en una estructura, en la que se define el valor a el o los miembros específicos de una estructura, para ello se recurre de los operadores punto y operador puntero. 74 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 Lectura desde el teclado: Este procedimiento permite que el usuario introduzca valores o datos de entrada en forma interactiva a cada miembro y elementos de una estructura desde el propio teclado, esta es la forma más comúnmente utilizada desde cualquier sistema. AGGNL174.CPP 75 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 TAREA DE INVESTIGACION 1. Explicar la función del operador sizeof durante la utilización de una estructura. 2. Defina y diferencia los accesos de datos de las estructuras mediante el operador de punto y el operador puntero. 3. Defina String, Null ( ’ \ 0 ’ ). 4. Describa las funciones : cin.get( ) y cout.put( ). 5. Determine la función strcpy. 6. Explicar que importancia tien el uso de ARRAYS de Estructuras sobre las otras opciones. 7. Explicar estructuras anidadas. 8. Diferenciar Variables Estáticas de Variables Dinámicas. ACCESO A LOS MIEMBROS DE UNA ESTRUCTURA DE DATOS. LECTURA Y RECUPERACIÓN DE DATOS DE UNA ESTRUCTURA: LECTURA: Esta operación se realiza mediante el apoyo de los operadores punto y/o operador puntero, empleando la sentencia de entrada (cin>>). SALIDA: La recuperación de información de una estructura se realiza a partir de una sentencia de asignación o utilizando la sentencia de salida (cout<<), al igual que en el caso anterior se requiere el uso de los operadores punto y/o operador puntero. NOTA: En operaciones de entrada-salida de datos desde el teclado tiene la limitante que al manejar la introducción de variables tipo char, estas no deben incluir espacios en blanco, ya que cualquier palabra precedida del espacio en blanco se perderá al ser introducida desde el teclado y no podrá recuperarse el dato tipo char completo. ARREGLOS DE ESTRUCTURAS. La utilización de Arreglos de estructuras, es el método más conveniente para almacenar archivos completos por ejemplo el inventario de un almacén, el historial académico de grupos, la nómina de empleados de una empresa, los costos y precios de artículos de una tienda departamental, etc. Por esta razón, los arreglos de estructuras proporcionan la forma más práctica de almacenar un conjunto de datos diversos del mismo o diferentes tipos, todo ellos agrupados en una estructura denominada ARREGLO DE ESTRUCTURA. La creación de un arreglo de estructuras es similar a un arreglo de otros tipos y muchos programadores de C++ utilizan el método de los array de estructuras para almacenar datos en un archivo de disco, ya que se pueden introducir y calcular los datos en este tipo de estructuras, su almacenamiento en memoria y en disco y su facilidad para operaciones de lectura. Del ejercicio LP2NL_06.CPP el Arreglo de estructura el número de elementos del arreglo está definido por la constante b, la cual permite incrementar su valor conforme a las necesidades del usuario, sin la necesidad de tener que modificar más código, de otra manera, también válida se pudo haber definido el núm. de elementos del mismo al definir la variable de estructura: Calificas calif[b]; Calificas calif[100]; 76 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL175.CPP Así mismo los miembros de las estructuras pueden ser arreglos, recomendándose tener precausiones al acceder a los elementos individuales del arreglo. 77 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 TIPOS DE ARCHIVOS EN C. CONCEPTOS GRALES. DE ARCHIVOS Como se han manejado hasta ahora los datos de los programas, el almacenamiento de los mismos en variables y en arreglos se ha efectuado a la memoria por lo que son datos temporales, por ello se hace necesario que la información manipulada desde cualquier programa sea alojada de manera permanente en la computadora teniendo como recurso para tal fin los ARCHIVOS. ARCHIVOS: Secuencia de bits almacenados en algún dispositivo de memoria secundaria, tales como una unidad de disco magnético u óptico, una unidad de cinta y reconocido por la computadora, pueden existir de diferentes tipos. ALGUNOS TIPOS DE ARCHIVOS COMUNES : Archivos de Texto: Datos o conjunto de bits agrupados en bytes reconocidos por el código ASCII, que pueden ser procesados por cualquier editor estándar de texto. Archivo Gráfico: Datos o bits agrupados en palabras de 32 bits que representan pixeles de colores, este tipo de archivos es procesado por software especializado en el manejo de gráficos. Archivos Ejecutables: Archivo que contiene un programa compilado y linkeado capaz de ser ejecutado desde el sistema operativo generalmente poseen extensiones *.COM y *.EXE. Archivos Binarios: Archivos que almacenan flujos de bits, que no ponen atención al código Ascii o la separación de espacios en blanco, son los más adecuados, estos almacenan datos en función a la dirección de memoria de la computadora. ARCHIVOS POR EL TIPO DE DIRECCIONAMIENTO: Archivos de Entada: Secuencia de bytes que se introducen a un dispositivo de almacenamiento y realizan una operación de entrada de datos. Archivos de Salida: Flujo de datos que se transfieren a un dispositivo u operación de salida. En ambos casos los datos son manipulados en un flujo que puede ser reversible en operaciones de entrada o salida; C++ posee las clases: ifstream, ofstream y fstream, que se incluyen en el archivo de cabecera fstream.h, que también incluye a iostream.h para aplicar métodos asociados para la creación de archivos y manejo de operación entrada y salida de archivos. TIPOS DE ACCESO A LOS ARCHIVOS: Acceso Directo: Procedimiento en los que se realizan operaciones de entrada o salida de datos contenidos en una estructura tales como Arrays, registros, enumerados, archivos, etc. En los que se permite obtener o transferir información a un elemento en particular. Acceso Secuencial: Procedimiento de lectura o escritura progresiva de inicio a fin a todos los datos o elementos y/o datos contenidos en los archivos. Acceso Aleatorio: Acceso común en el manejo de base de datos que permite elegir registros específicos en los archivos, se describe generalmente en términos de un puntero de archivo o apuntador que define la posición actual de un archivo, donde el sistema de E/S de C++ requiere de los punteros get, que especifica la posición en que se producirá la operación de 78 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 entrada y put, define la posición donde se producirá la operación de salida, en cada operación el apuntador avanza automáticamente. AGGNL176.CPP 1. Nota: Para que este programa funcione deberás crear con el Editor de Bloc de Notas el Archivo:PREVIO.TXT, y deberás insertar las siguientes líneas de texto: Contenido del Archivo de Texto PREVIO.TXT Nombre del Alumno, NL, Gpo. Especialidad. Centro de Bachillerato Tecnológico industrial y de servicios Nº 4 PROGRAMACIÓN ESTRUCTURADA C++ Nombre del Maestro. 2. Así mismo, debes crear con el bloc de notas el archivo: NEWFILE.TXT, en este no escribirás ningún contenido o texto, pero deberás observar y analizar lo que sucede con este archivo después de la 1ª corrida. TAREA DE INVESTIGACION: 1. Explicar conclusiones del contenido del archivo NUEVO.TXT después de ejecutar 176.CPP. 2. Determine la función de la palabra reservada : cin.getline 3. Describir características de 25 tipos de archivos (según tipo de extensión). 4. Explicar Jerarquía de datos (Pag 704 Deitel & Deitel). 5. Determine la función de eof y que función tiene en un archivo. 6. Definir las funciones de las biblitecas de flujo: iostream, ifstream, ofstream y fstream. 7. Explicar sobrecarga de operadores en C++. 79 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 8. 9. Explicar la función de la palabra reservada return. Describir conclusiones de DIR.TXT creado en el ejercicio 10 y la operación de ios::out (en la modalidad out y su diferencia del modo app). 10. Explicar las funciones miembro: open, close, good, fail, eof, get, put, read y write de C++. 11. Explicar 10 características generales de la entrada-salida BINARIA. 12. Describa Acceso Aleatorio de los archivos. DECLARACION. ARCHIVOS DE ACCESO SECUENCIAL, ENTRADA Y SALIDA DE ARCHIVOS: La operaciones de E/S de C++ requieren de la utilización del archivo de cabecera fstream.h en el que se definen, como ya se mencionó las clases ifstream, ofstream y fstream. La clase ifstream deriva de la clase istream que permite que los usuarios accesen a los archivos en modo de entrada en operaciones de lectura de archivos, mientras que la clase ofstream deriva de la clase ostream y permite a los usuarios acceder a las clases ifstream y ofstream, permitiendo con ello a los usuarios, acceder a operaciones de entrada y salida de datos, debiendo por ello, utilizar adecuadamente las clases ifstream y ofstream con un manejo de archivos correcto. JERARQUÍA DE CLASES DE E/S DE FLUJO ios istream ifstream ostream iostream ofstream fstream La entrada y salida en C se lleva a cabo mediante el uso de funciones de biblioteca; no hay palabras clave de C que realicen operaciones de entrada y salida. Los conjuntos completos de funciones de E/S definidos por C y C++ son: 1. 2. 3. El sistema de E/S definido por el ANSI, también denominado sistema de archivos con búffer (a veces se utilizan también los términos con formatos de alto nivel). El sistema de E/S es tipo UNIX, a veces referido como un sistema de archivos sin búffer (sin formato). El sistema de E/S tipo UNIX fue creado para los primeros compiladores de C, que furon desarrollados bajo UNIX. Algunas funciones de E/S de bajo nivel que operan directamente sobre el hardware de la computadora. Modalidades en que pueden operar los archivos en operaciones de Entrada/Salida: ios::in ios::app ios::out ios::ate ios::nocreate ios::trunc ios::noreplace ios::binary Modo entrada. Modo añadir, si existen datos previos este modo ubica en la marca eof y allí inicia a adjuntar datos. Modo salida, si existen datos, estos se eliminan y remplazan por los nuevos. Modo abrir y buscar fin de archivo. Genera un error si no existe archivo. Trunca el archivo a 0 si ya existe. Genera un error si el archivo existe. Archivo se abre en modo binario. 80 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 APERTURA Y MANIPULACION. APERTURA: Para que un programa realice operaciones de Lectura o Escritura en disco, requiere: ABRIR un archivo, este proceso identifica la posición del archivo, en el caso de un archivo de texto C++ en operación de lectura, se crea un objeto o flujo de la clase ifstream, para abrir un archivo de escritura el objeto creado es de la clase ofstream, pudiéndose utilizar los nombres de los flujos que se crean con los operadores de inserción y extracción . Ejemplo de apertura de archivo para lectura, al inicio de cada ejecución del programa debe incluirse la sentencia: ifstream archen (“demo” ); El objeto ifstream se llama archen, que se asocia con un nombre para su localización y apertura del archivo. Ejemplo de apertura de archivo para escritura, al inicio de cada ejecución del programa debe incluirse la sentencia: ofstream archsal (“demo.out”, ios_base::out); AGGNL177.CPP NOTA: Después de ejecutar el archivo utilizando el editor de bloc de notas, observa el contenido de DIR.TXT y efectua tus conclusiones. 81 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL178.CPP 82 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 ENTRADA/SALIDA BINARIA: get : Miembro de la función istream su función es leer el flujo de entrada byte a byte (carácter) put: Proporciona un método de sacar (escribir) un carácter en el flujo de salida put( ), acepta argumentos de tipo char y devuelve objetos de la clase ostream. AGGNL179.CPP ACT 15. ACTIVIDAD EN PLATAFORMA: CUESTIONARIO EN LÍNEA: ”ARREGLOS, PUNTEROS, ESTRUCTURAS Y ARCHIVOS”. El siguiente cuestionario consta de 20 preguntas de opción múltiple, emparejamiento, falso y verdadero y respuesta breve (solo las palabras necesarias y lógicas de cada respuesta), se sugiere contestar en MAYÚSCULAS, su resolución deberá realizarse en solo un intento y con un tiempo límite de duración de 30 min. Debes contestar cada pregunta y al final pulsar el botón: Enviar todo y terminar de la parte baja de la página para que genere la calificación de todas tus respuestas del cuestionario 83 ESPECIALIDAD PROGRAMACIÓN: MÓDULO 1 CBTis 4 AGGNL180.CPP 84