Submod_01 - Sitio Humbrosa

Anuncio
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
Descargar