para la carrera de profesional tÉcnico-bachiller en · 1.2.2. estructuras de control de flujo. 45...

184
Programación Estructurada Codificada PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN INFORMÁTICA Manual Teórico-Práctico del Módulo Autocontenido Específico ecbcc Educación Capacitación Basadas en Competencias Contextualizadas Capacitado por Conalep

Upload: others

Post on 16-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estructurada Codificada

PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN

INFORMÁTICA

Manual Teórico-Práctico del Módulo Autocontenido Específico

ecbcc Educación Capacitación Basadas en Competencias Contextualizadas

Capacitado por

Conalep

Page 2: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

2

PARTICIPANTES Director General Efrén Castillo Saavedra

Secretario de Desarrollo Académico y de Capacitación Marco Antonio Norzagaray Director de Diseño de Curricular de la Formación Ocupacional Gustavo Flores Fernández Coordinadores de Área: Ma. Cristina Martínez Mercado Grupo de Trabajo para el Diseño del Módulo Especialistas de Contenido

Consultores Formo Internacional,S.C. Revisor de contenido Sandra Luz Lozano Ramírez Revisión Pedagógica Patricia Toledo Revisores de la Contextualización Agustín Valerio Armando Guillermo Prieto Becerril

Tecnologías de la información Manual del curso – módulo Autocontenido Específico “Programación Estructurada Codificada” Informática. D.R. © 2006 CONALEP. Prohibida la reproducción total o parcial de esta obra, incluida la portada, por cualquier medio sin autorización por escrito del CONALEP. Lo contrario representa un acto de piratería intelectual perseguido por la Ley Penal. E-CBCC Av. Conalep N° 5, Col. Lázaro Cárdenas, C.P. 52140 Metepec, Estado de México.

Page 3: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

3

ÍNDICE

Participantes I. Mensaje al alumno 5 II. Como utilizar este manual 6 III. Propósito del módulo 8 IV. Especificaciones de evaluación 9 V. Mapa curricular del módulo autocontenido transversal 10 Capítulo 1 Manejo de sintaxis y elementos del lenguaje C. 11 Mapa curricular de la unidad de aprendizaje 13 1.1.1. Componentes de programación 13 • Algoritmo 13 • Pseudocódigo 14 • Diagramas de flujo 17 • Codificación en lenguaje C 19 • Compilación en C 20 • Ejecución de programa. 21 • Documentación 23 1.1.2. . Programación en lenguaje C. 32 • Propósito del lenguaje C. 32 • Elementos 33 • Tipos de datos 35 • Declaraciones 37 1.2.1. Operadores y expresiones 40 • Tipo de Operadores 40 • Expresiones de asignación 42 • Expresiones condicionales 43 • Precedencia y orden de evaluación 43 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for 48 • Ciclo Do-while 48 • Break y continue 49 • Goto y etiquetas 51 Prácticas de ejercicio y Listas de Cotejo 53 Resumen 108 Autoevaluación de conocimientos del capítulo 1. 110 Capítulo 2 Aplicación de componentes de lenguaje C. 113Mapa curricular de la unidad de aprendizaje 114 2.1.1 Funciones 115 • Definición 115 • Declaración 115

• Llamadas a funciones 116

Page 4: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

4

2.1.2 Apuntadores y arreglos 119 • Arreglos y cadenas 119 • Arreglos unidimensionales 119 • Cadenas 121 • Arreglos multidimensiona-les 123 • Punteros 125 • Asignación de punteros 125 • Aritmética de apuntadores 126 • Punteros y arreglos. 1272.2.1 Estructuras. 132 • Concepto 132 • Estructuras y funciones 135 • Arreglos de estructuras 136 • Estructuras autoreferenciadas 137 • Búsqueda en tablas 1372.2.2 Entrada y salida 140 • E/S por consola 140 • E/S por archivos 141 • Preprocesador 143 Prácticas de ejercicio y Listas de Cotejo 145 Resumen 157 Autoevaluación de conocimientos del capítulo 2. 158Glosario de Términos E-CBNC 162 Glosario de Términos Técnicos 164Referencias Documentales 184

Page 5: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

5

I. MENSAJE AL ALUMNO

¡CONALEP TE DA LA BIENVENIDA AL CURSO-MÓDULO AUTOCONTENIDO ESPECÍFICO PROGRAMACI[ON ESTRUCCTURADA CODIFICADA EL CONALEP, a partir de la Reforma Académica 2003, diseña y actualiza sus carreras, innovando sus perfiles, planes y programas de estudio, manuales teórico-prácticos, con los avances educativos, científicos, tecnológicos y humanísticos predominantes en el mundo globalizado, acordes a las necesidades del país para conferir una mayor competitividad a sus egresados, por lo que se crea la modalidad de Educación y Capacitación Basada en Competencias Contextualizadas, que considera las tendencias internacionales y nacionales de la educación tecnológica, lo que implica un reto permanente en la conjugación de esfuerzos. Este manual teórico práctico que apoya al módulo autocontenido, ha sido diseñado bajo la Modalidad Educativa Basada en Competencias

Contextualizadas, con el fin de ofrecerte una alternativa efectiva para el desarrollo de conocimientos, habilidades y actitudes que contribuyan a elevar tu potencial productivo y, a la vez que satisfagan las demandas actuales del sector laboral, te formen de manera integral con la oportunidad de realizar estudios a nivel superior. Esta modalidad requiere tu participación y que te involucres de manera activa en ejercicios y prácticas con simuladores, vivencias y casos reales para promover un aprendizaje integral y significativo, a través de experiencias. Durante este proceso deberás mostrar evidencias que permitirán evaluar tu aprendizaje y el desarrollo de competencias laborales y complementarias requeridas. El conocimiento y la experiencia adquirida se verán reflejados a corto plazo en el mejoramiento de tu desempeño laboral y social, lo cual te permitirá llegar tan lejos como quieras en el ámbito profesional y laboral.

Page 6: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

6

II. COMO UTILIZAR ESTE MANUAL

Las instrucciones generales que a

continuación se te pide que realices tienen la intención de conducirte a que vincules las competencias requeridas por el mundo de trabajo con tu formación de profesional técnico.

Redacta cuáles serían tus objetivos personales al estudiar este módulo ocupacional.

Analiza el Propósito del módulo autocontenido que se indica al principio del manual y contesta la pregunta ¿Me queda claro hacia dónde me dirijo y qué es lo que voy a aprender a hacer al estudiar el contenido del manual? Si no lo tienes claro, pídele al docente que te lo explique.

Revisa el apartado especificaciones de evaluación; son parte de los requisitos que debes cumplir para aprobar el módulo. En él se indican las evidencias que debes mostrar durante el estudio del curso -módulo ocupacional- para considerar que has alcanzado los resultados de aprendizaje de cada unidad.

Es fundamental que antes de empezar a abordar los contenidos del manual, tengas muy claros los conceptos que a continuación se mencionan: competencia laboral, unidad de competencia (básica, genéricas específicas), elementos de competencia, criterio de desempeño, campo de aplicación, evidencias de desempeño, evidencias de conocimiento, evidencias por producto, norma técnica de

institución educativa, formación ocupacional, módulo ocupacional, unidad de aprendizaje y resultado de aprendizaje. Si desconoces el significado de los componentes de la norma, te recomendamos que consultes el apartado glosario de términos, que encontrarás al final del manual.

Analiza el apartado «Normas Técnicas de competencia laboral, Norma técnica de institución educativa».

Revisa el Mapa curricular del módulo autocontenido. Está diseñado para mostrarte esquemáticamente las unidades y los resultados de aprendizaje que te permitirán llegar a desarrollar paulatinamente las competencias laborales que requiere la ocupación para la cual te estás formando.

Realiza la lectura del contenido de cada capítulo y las actividades de aprendizaje que se te recomiendan. Recuerda que en la educación basada en normas de competencia laborales la responsabilidad del aprendizaje es tuya, ya que eres el que desarrolla y orienta sus conocimientos y habilidades hacia el logro de algunas competencias en particular.

En el desarrollo del contenido de cada capítulo, encontrarás ayudas visuales como las siguientes, haz lo que ellas te sugieren efectuar. Si no haces no aprendes, no desarrollas habilidades, y te será difícil realizar los ejercicios de evidencias de conocimientos y los de desempeño.

Page 7: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

7

Imágenes de Referencia

Estudio individual Investigación documental

Consulta con el docente Redacción de trabajo

Comparación de resultados con otros compañeros Repetición del ejercicio

Trabajo en equipo

Contextualizaciòn

Realización del ejercicio Resumen

Observación Consideraciones sobre seguridad e higiene

Investigación de campo Portafolios de evidencias

Page 8: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

8

III. PROPÓSITO DEL MÓDULO AUTOCONTENIDO

Al finalizar el módulo, el alumno elaborará programas estructurados codificados, mediante los elementos principales y la estructura modular del lenguaje de programación C, para la resolución de algoritmos dados.

Page 9: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

9

IV. ESPECIFICACIONES DE EVALUACIÓN

Durante el desarrollo de las prácticas de ejercicio, también se estará evaluando el desempeño. El docente, mediante la observación directa y con auxilio de una lista de cotejo, confrontará el cumplimiento de los requisitos en la ejecución de las actividades y el tiempo real en que se realizó. En éstas quedarán registradas las evidencias de desempeño.

Las autoevaluaciones de conocimientos correspondientes a cada capítulo, además de ser un medio para reafirmar los conocimientos sobre los contenidos tratados, son también una forma de evaluar y recopilar evidencias de conocimiento.

Al término del módulo, deberás presentar un Portafolios de Evidencias1, el cual estará integrado por las listas de cotejo correspondientes a las prácticas de ejercicio, las autoevaluaciones de conocimientos que se encuentran al final de cada capítulo del manual y muestras de los trabajos realizados durante el desarrollo del módulo, con esto se facilitará la evaluación del aprendizaje para determinar que se ha obtenido la competencia laboral.

Deberás asentar datos básicos, tales como: nombre del alumno, fecha de evaluación, nombre y firma del evaluador y plan de evaluación.

1El portafolios de evidencias es una compilación de documentos que le permiten al evaluador, valorar los conocimientos, las habilidades y las destrezas con que cuenta el alumno y a éste le permite organizar la documentación que integra los registros y productos de sus competencias previas y otros materiales que demuestran su dominio en una función específica (CONALEP. Metodología para el diseño e instrumentación de la educación y capacitación basada en competencias, Pág. 180).

Page 10: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

10

V. MAPA CURRICULAR DEL MÓDULO AUTOCONTENIDO ESPECÍFICO

1.1 Identificar el entorno de programación mediante los componentes de programación, tipos y datos del lenguaje C

24 hrs.

1.2 Realizar interacción de variables, producción de nuevos valores y especificación de orden de procesamiento, usando operadores, expresiones y control de flujo del lenguaje C.

40 hrs.

2.1 Elaborar rutinas de programación, usando funciones, apuntadores y arreglos codificados en lenguaje C.

40 hrs.

2.2 Desarrollar programas en lenguaje C, aplicando estructuras, formatos de entrada y salida codificados en lenguaje C

40 hrs.

Módulo

Unidad de Aprendizaje

2. Aplicación de componentes de lenguaje C.

80 hrs.

Programación Estructurada Codificada

144 hrs.

1. Manejo de sintaxis y elementos del lenguaje C.

64 hrs.

Resultados de

Aprendizaje

Page 11: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

11

MANEJO DE SINTAXIS Y ELEMENTOS DEL LENGUAJE C. Al finalizar la unidad, el alumno manejará la sintaxis de acuerdo con los elementos del lenguaje C para la elaboración de programas.

Page 12: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

12

MAPA CURRICULAR DE LA UNIDAD DE APRENDIZAJE

1.1 Realizar la actualización de bienes utilizando el Índice Nacional de Precios. 24 hrs.

1.2 Determinar los factores de ajuste de conversión y las partidas de acuerdo con las características de la empresa en épocas inflacionarias.

10 hrs.

Módulo

Unidad de Aprendizaje

2. Aplicación de componentes de lenguaje C

80 hrs.

Programación Estructurada Codificada

90 hrs.

1. Manejo de sintaxis y elementos del lenguaje C.

64 hrs.

Resultados de

Aprendizaje

Page 13: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

13

SUMARIO

COMPONENTES DE PROGRAMACIÓN PROGRAMACIÓN EN LENGUAJE C OPERADORES Y EXPRESIONES ESTRUCTURAS DE CONTROL DE FLUJO

RESULTADO DE APRENDIZAJE 1.1. Identificar el entorno de programación mediante los componentes de programación,

tipos y datos del lenguaje C. 1.1.1. COMPONENTES DE PROGRAMACIÓN.

• Algoritmo

Algoritmo, en matemáticas, es un método de resolución de cálculos complicados mediante el uso repetido de otro método de cálculo más sencillo. Ejemplos básicos son los métodos para efectuar operaciones aritméticas (multiplicación, división, obtención de raíces cuadradas), la obtención del máximo común divisor y del mínimo común múltiplo de un número mediante su descomposición en factores primos, y la división de un polinomio por x – a mediante la regla de Ruffini. En la actualidad, el término algoritmo se aplica a muchos de los métodos de resolución de problemas que emplean una secuencia mecánica de pasos, como en el diseño de un programa de computadora o computadora. Esta secuencia se puede representar en forma de un diagrama de flujo para que sea más fácil de entender.

Al igual que los algoritmos usados en aritmética, los algoritmos para computadoraes pueden ser desde muy sencillos hasta bastante complejos. En todos los casos, sin embargo, la tarea que el algoritmo ha de realizar debe ser definible. Esta definición puede incluir términos matemáticos o lógicos, o una compilación de datos o instrucciones escritas. Utilizando el lenguaje de la informática, esto quiere decir que un algoritmo debe ser programable, incluso si al final se comprueba que el problema no tiene solución.

En las computadoras con lógica de microcomputadoraes incorporada, esta lógica es un tipo de algoritmo. A medida que los equipos informáticos se hacen más complejos, más y más algoritmos del software toman la forma del llamado hard-software. Esto es, cada vez más, se están convirtiendo en parte de los circuitos básicos de los computadoraes o en módulos auxiliares; también están apareciendo por sí solos en máquinas específicas como las calculadoras de nóminas.

Page 14: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

14

Representación gráfica de algoritmos.

- Descripción Narrada - Pseudocódigo - Diagramas de Flujo

• Descripción Narrada

Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

Ejemplo 1 Algoritmo para asistir a clases: Paso 1. Levantarse Paso 2. Bañarse Paso 3. Vestirse Paso 4. DesayunarPaso Paso 5. Cepillarse los dientes Paso 6. Salir de casa Paso 7. Tomar el autobús Paso 8. Llegar al ITCA Paso 9. Buscar el aula Paso 10. Ubicarse en un asiento

• Pseudocódigo

El vocablo Pseudo significa falso. El pseudocódigo no es realmente un código, sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación. Se concibió para superar las dos principales desventajas de

los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo.

Ejemplo: 1. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética. Inicio

Leer (a, b, c, d) producto <-- (a * b * c * d) suma <-- (a + b + c + d) media <-- (a + b + c + d) / 4 escribir (producto, suma, media) fin

El pseudocódigo que a continuación se define fue tomado de la guía EGEL lnfo-Comp del CENEVAL. Sirve para escribir programas de computadora en lenguaje natural, de tal manera que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico.

La relación de convenciones empleadas en el pseudocódigo es la siguiente:

• El pseudocódigo se escribe empleando la fuente Times New Roman. Las palabras reservadas del pseudocódigo se muestran en negritas.

• Los puntos "..." indican la posibilidad de repetir algún elemento del pseudocódigo.

• Cuando exista la posibilidad de elegir algún elemento a partir de un conjunto de elementos, éstos se listarán separados por el símbolo "|".

• Las diferentes opciones o posibilidades de uso del pseudocódigo se listan con viñetas.

• El pseudocódigo posee las siguientes características:

o Se emplean oraciones en lenguaje natural, donde cada

Page 15: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

15

una se refiere a una actividad general o específica.

o Se utiliza un lenguaje común, sin palabras rebuscadas.

o Se evitan errores gramaticales, abreviaciones y puntuaciones.

REGLAS GENERALES PARA LA CONVERSION

DE PSEUDOCÓDIGO A LENGUAJE C Tabla de Correspondencias:

PSEUDOCÓDIGO LENGUAJE C La primera línea de todo programa #include <stdio.h> PROGRAMA.... No tiene correspondencia INICIO void main(void){FIN }int a,b int a,b;a = b a = b;i = i + 1 i = i + 1;

o bien i++;

SI condición * * * FINSI

if (condicion){ * * * }

SI condicion * * * SINO * * * FINSI

if (condicion){ * * * } else{ * * * }

MIENTRAS condicion * * * FINM

while (condicion){ * * * }

HACER * * * MIENTRAS condicion

do{ * * * } while (condicion);

DESDE i=0 HASTA 9 * * * FIND

for(i=0;i<=9;i++){ * * * }

SI a==b * * * FINSI

if (a==b){ * * * }

SI a≠b * * * FINSI

if (a!=b){ * * * }

SI a≤ b * * * FINSI

if (a<=b){ * * * }

escribir("El valor de n es ",n) printf("El valor de n es %d",n); leer(n) scanf("%d",&n);int A[5] int A[5];float M[3][3]; float M[3][3];a AND b (a && b)a OR b (a || b)NOT a (!a)

Reglas Generales: • Todas las instrucciones terminan en un punto y coma. • Todas las condiciones van entre paréntesis.

Page 16: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

16

• Los comentarios comienzan con /* y terminan con */ • Los #include permiten usar funciones ya escritas incluidas en grandes colecciones denominadas librerías. Las más

usuales son : #include <stdio.h> permite usar printf, scanf, fread, fwrite, fopen, etc. #include <conio.h> permite usar clrscr #include <stdlib.h> permite usar rand #include <math.h> permite usar funciones trigonométricas

• Las constantes se definen tras los #include, de la siguiente forma: #define pi 3.1415 #define numero 2.71

Ejemplos de traducciones: PROGRAMA prueba; int i, n INICIO escribir("Escriba n : ") leer(n) DESDE i<-1 HASTA n escribir(i*i) FIND FIN

#include <stdio.h> int i, n; void main(void){ printf("Escriba n : "); scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d",i*i); } }

PROGRAMA prueba; int i, n INICIO escribir("Escriba n : ") leer(n) DESDE i<-1 HASTA n escribir(i*i) FIND FIN

#include <stdio.h> int i, n; void main(void){ printf("Escriba n : "); scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d",i*i); } }

PROGRAMA prueba; int i, n INICIO escribir("Escriba n : ") leer(n) DESDE i<-1 HASTA n escribir(i*i) FIND FIN

#include <stdio.h> int i, n; void main(void){ printf("Escriba n : "); scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d",i*i); } }

PROGRAMA prueba; int i, n INICIO escribir("Escriba n : ") leer(n) DESDE i<-1 HASTA n escribir(i*i) FIND FIN

#include <stdio.h> int i, n; void main(void){ printf("Escriba n : "); scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d",i*i); } }

PROGRAMA prueba; int i, n INICIO escribir("Escriba n : ") leer(n) DESDE i<-1 HASTA n escribir(i*i) FIND FIN

#include <stdio.h> int i, n; void main(void){ printf("Escriba n : "); scanf("%d",&n); for(i=1;i<=n;i++){ printf("%d",i*i); } }

Page 17: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

17

• Diagrama de flujo El diagrama de flujo, o diagrama secuencial, empleado en muchos campos para mostrar los procedimientos detallados que se deben seguir al realizar una tarea, como un proceso de fabricación. También se utilizan en la resolución de problemas, como por ejemplo en algoritmos. Los diagramas de flujo se usan normalmente para seguir la secuencia lógica de las acciones en el diseño de programas de computadoras. Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Para su elaboración se siguen ciertas reglas:

• Se escribe de arriba hacia abajo y de izquierda a derecha

• Siempre se usan flechas verticales u horizontales, jamás curvas

• Evitar cruce de flujos • En cada paso, expresar una acción

concreta La secuencia de flujo normal en una solución de problema considera lo siguiente:

• Tiene un inicio.

• Una lectura o entrada de datos • El proceso de datos • Una salida de información • Un final

Simbología para diseñar flujogramas.

Ventajas de usar flujogramas:

• Rápida comprensión de las relaciones

• Análisis efectivo de las diferentes secciones del programa

• Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas

• Comunicación con el usuario • Documentación adecuada de los

programas • Codificación eficaz de los

programas • Depuración y pruebas ordenadas de

programas

Desventajas de los flujogramas

• Los diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño.

Page 18: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

18

• Las acciones a seguir, tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos.

• No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.

Representando un ejemplo, como flujograma tenemos:

• Codificación en lenguaje C El compilador en sí mismo sólo es un programa que traduce nuestro código fuente y lo convierte en un ejecutable. Para escribir nuestros programas necesitamos un editor. La mayoría de los compiladores, al instalarse, incorporan ya un editor; es el caso de los conocidos Turbo C, Borland C, Visual C++. No

debemos confundir, por tanto, el editor con el compilador. Estos editores suelen tener unas características que nos facilitan mucho el trabajo: permiten compilar y ejecutar el programa directamente, depurarlo (corregir errores), gestionar proyectos complejos. Si el compilador no trae editor, la solución más simple en MS-Dos puede ser usar el edit, en windows el notepad. Éstos son más que editores sin ninguna otra funcionalidad. Otra posibilidad es un entorno de desarrollo llamado RHIDE, un programa muy útil que automatiza muchas de las tareas del programador (del estilo del Turbo C y Turbo Pascal). Si queremos una herramienta muy avanzada podemos usar Emacs, que es un editor muy potente, aunque para algunos puede parecer muy complicado. Estos dos programas están disponibles tanto en Linux como en MS-Dos. Como recomendción se puede buscar en la web una lista de Compiladores y editores actualizada. El primer programa: Hola Mundo #include <stdio.h> int main() { printf("Hola mundo\n"); return 0; } Nota: Hay mucha gente que programa en Windows que se queja de que cuando ejecuta el programa no puede ver el

Page 19: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

19

resultado. Para evitarlo, se puede añadir antes de return 0; la siguiente línea: system("PAUSE");

Si esto no funciona, pruebe añadir getch();

Otra nota: En compiladores MS Windows, para poder usar la función system() se debe añadir al principio del programa la línea: #include <windows.h>

Este programa lo único que hace es sacar por pantalla el mensaje:

Hola mundo

Vamos ahora a comentar el programa línea por línea (Esto no va a ser más que una primera aproximación).

#include <stdio.h>

#include es lo que se llama: una directiva. Sirve para indicar al compilador que incluya otro archivo. Cuando en compilador se encuentra con esta directiva, la sustituye por el archivo indicado. En este caso, es el archivo stdio.h, que es donde está definida la función printf, que veremos luego.

int main()

Es la función principal del programa. Todos los programas de C deben tener una función llamada “main”. Es la que primero se ejecuta. El int (viene de Integer=Entero) que tiene al principio, significa que cuando la función main acabe devolverá un número entero. Este valor se suele usar para saber cómo ha terminado el programa. Normalmente,

este valor será 0, si todo ha ido bien o un valor distinto, si se ha producido algún error.

Se puede usar la definición 'void main()', que no necesita devolver ningún valor, pero se recomienda la forma con 'int' que es más correcta.

Falta el return 0; del final, el código funciona correctamente pero puede dar un 'warning' al compilar es necesario escribir:

{

Son las llaves que indican el comienzo de una función, en este caso la función main.

/* Aquí va el cuerpo del programa */

Esto es un comentario, no se ejecuta. Sirve para describir el programa. Conviene acostumbrarse a comentar los programas. Un comentario puede ocupar más de una línea. Por ejemplo el comentario:

/* Este es un comentario que ocupa dos filas */

es perfectamente válido.

printf( "Hola mundo\n" );

Aquí es donde, por fin, el programa hace algo que podemos ver al ejecutarlo. La función printf muestra un mensaje por la pantalla. Al final del mensaje "Hola mundo" aparece el símbolo '\n'; éste hace que después de imprimir el mensaje se pase a la línea siguiente.

Page 20: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

20

Fíjate en el ";" del final. Es la forma que se usa en C para separar una instrucción de otra. Se pueden poner varias en la misma línea siempre que se separen por un punto y coma.

return 0;

Como he indicado antes el programa al finalizar develve un valor entero. Como en este programa no se pueden producir errores (nunca digas nunca jamás) la salida siempre será 0. La forma de hacer que el programa devuelva un 0 es usando return. Esta línea significa 'finaliza la función main haz que devuelva un 0.

}

...y cerramos llaves con lo que termina el programa. Todos los programas finalizan cuando se llega al final de la función main.

• Compilación en C

Un compilador es un programa que convierte nuestro código fuente en un programa ejecutable. El procesador trabaja con 0 y 1. Si se escribe un programa en el lenguaje máquina, nos volveríamos locos. Para eso hay lenguajes como el C. Nos permiten escribir un programa de manera que sea fácil entenderlo por una persona (el código fuente). Luego es el compilador el que se encarga de convertirlo al complicado idioma de un computadora.

En la práctica a la hora de crear un programa, Se escribe el código fuente, en

nuestro caso en C, que normalmente será un fichero de texto normal y corriente que contiene las instrucciones de nuestro programa. Luego se lo pasamos al compilador y éste se encarga de convertirlo en un programa.

Si tenemos el código fuente, podemos modificar el programa tantas veces como queramos (sólo tenemos que volver a compilarlo). Pero si tenemos el ejecutable final, no podremos cambiar nada (realmente sí se puede pero es mucho más complicado y requiere más conocimientos).

Si se va a programar en Windows es recomendable usar el Dev-C++, de fácil instalación y manejo. También se recomienda usar el DJGPP para MS-Dos y Windows y el GNU C (gcc.gnu.org) para Linux. La información de la página está más actualizada.

• Ejecución de programa Creación del programa

Se puede crear un archivo que contenga el programa completo, como en los ejemplos que se muestran más adelante. Se puede usar cualquier editor de textos ordinario con el que se esté familiarizado. Un editor disponible en la mayoría de los sistemas UNIX es vi, y en Linux se puede usar pico.

Por convención, el nombre del archivo debe terminar con ``.c'' por ejemplo: miprograma.c progprueba.c. El contenido

Page 21: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

21

del archivo deberá obedecer la sintaxis de C.

Compilación Existen muchos compiladores de C. El cc es el compilador estándar de Sun. El compilador GNU de C es gcc, el cual es bastante popular y está disponible en varias plataformas. Existen también compiladores equivalentes de C++ los cuales usualmente son nombrados como CC. Por ejemplo, Sun provee CC y GNU GCC. El compilador de GNU es también denotado como g++. Existen otros compiladores menos comunes de C y C++. En general, todos los compiladores mencionados operan esencialmente de la misma forma y comparten muchas opciones comunes en la línea de opciones. Para compilar el programa usaremos el comando gcc. El comando deberá ser seguido por el nombre del programa en C que se quiere compilar. Un determinado número de opciones del compilador puede ser indicado también.

El comando básico de compilación es: gcc programa.c , donde programa.c es el nombre del archivo.

Si hay errores obvios en el programa (tales como palabras mal escritas, caracteres no tecleados u omisiones de punto y coma), el compilador se detendrá y los reportará.

Podría haber, desde luego, errores lógicos que el compilador no podrá detectar. En el caso que está fuera la situación, se le estará indicando a la computadora que haga las operaciones incorrectas. Cuando el compilador ha terminado con éxito la versión compilada, o el ejecutable, es dejado en un archivo llamado a.out, o si la opción -o es usada con el compilador, el nombre después de -o es el nombre del programa compilado. Se recomienda, y es más conveniente, usar la opción -o con el nombre del archivo ejecutable como se muestra a continuación: gcc -o programa programa.c el cual pone el programa compilado en el archivo del programa señalado, en éste caso en programa, en vez del archivo a.out. Ejecución del programa

El siguiente paso es correr el programa ejecutable. Para correr un ejecutable en UNIX, simplemente se escribe el nombre del archivo que lo contiene, en este caso el programa (o a.out).

Con lo anterior, se ejecuta el programa, mostrando algún resultado en la pantalla. En éste estado, podría haber errores en tiempo de ejecución (run-time errors), tales como división por cero, o bien, podrían hacerse evidentes al ver que el programa no produce la salida correcta.

Page 22: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

22

Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo y ejecutarlo nuevamente.

• Documentación

Es importante documentar cda uno de los programas que se van elaborando, en forma de comentario. Al principio se puede poner comentarios sobre la función que hace o reliza el programa.

Pero también existen otras técnicas de documentar los programas como son las siguientes:

Diagramación

La explosión del diagrama de flujo original permite que el analista de sistemas se enfoque en representaciones cada vez más detalladas de los movimientos de datos dentro del sistema. Luego, el analista desarrolla un diagrama de flujo de datos físico a partir del diagrama de flujo de datos lógico, particionándolo para facilitar la programación. Cada proceso es analizado para determinar si debe ser un procedimiento manual o automatizado. Los procesos automatizados son agrupados subsecuentemente en una serie de programas de computadora diseñados para ser por lotes o en línea. Seis consideraciones para partición de diagramas de flujo incluyen si hay:

- Procesos ejecutados por diferentes grupos de usuarios

- Procesos que se ejecuten al mismo tiempo

- Procesos que ejecuten tareas similares

- Procesos por lotes que pueden ser combinados para un procesamiento eficiente

- Procesos que pueden ser combinados en un programa para tener consistencia de datos

- Procesos que pueden ser partidos en diferente programas por razones de seguridad.

Características comunes de los diagramas de flujo de datos lógicos y físicos.

Page 23: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

23

El diagrama de flujo de datos físico (abajo) muestra determinados detalles que no se

encuentran en el diagrama de flujo de datos lógico (arriba).

Caso

No hay negocio como el negocio de flujos

Suena el teléfono de Merman, y Annie Oakiea, jefa del inventario de vestidos, lo levanta y responde a una pregunta diciendo:

"Déjame echar una ojeada a las tarjetas de inventario. Lástima, parece como si sólo

hubiera dos trajes de oso macho en el inventario”, con una expresión de extrañeza. “Tenemos gran cantidad de

osos. ¿Cuándo lo necesita? Tal vez regresen uno. No, no puede hacerlo, lo siento. Sin embargo, ¿quisiera que le enviara esos dos? ¿Cuál es el nombre de su local? ¿El teatro en la plaza? Correcto. ¡Qué bella compañía! Veo por nuestras tarjetas de contabilidad que usted ya ha rentado con nosotros antes. ¿Cuánto tiempo necesitará los trajes?".

Page 24: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

24

La figura es un diagrama de flujo de datos que pone los pasos para el procesamiento de rentas de trajes de Merman. Muestra rentas como la que Annie está haciendo para el teatro de la plaza.

Diagrama de flujo de datos para la renta de disfraces de la tienda Merman’s Costume Rentals

Page 25: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

25

Después de conversar unos momentos más sobre la política de la tienda acerca de alteraciones, Annie termina su conversación diciendo, "Tienen ustedes mucha suerte para obtener los osos con tan poco aviso. He estado en otra compañía reservándolos desde la primera semana de julio. Les enviaré los trajes de oso y se los llevará directamente nuestro mensajero. Como siempre, el retorno rápido nos ahorrará problemas enormes a todos". La empresa de renta de trajes de Merman está ubicada en el distrito teatral West End, de Londres, famoso mundialmente. Cuando a una compañía de producción de teatro o televisión le faltan recursos (ya sea por tiempo o experiencia) para construir un traje en su propio taller, el grito es "¡Háblenle a Merman!" y ellos proceden a rentar lo que necesitan con el mínimo de problemas.

La tienda (visualizada mejor como bodega) está en tres pisos llenos de percheros de trajes que tienen miles de ellos colgados juntos por periodo histórico, agrupados luego por si son para hombre o mujer y luego por tamaño de traje.' La mayoría de las compañías de teatro son capaces de localizar precisamente lo que necesitan por medio de la asistencia capaz de Annie.

Ahora elabore a la medida la parte de regreso de renta de diagrama de flujo dado anteriormente. Recuerde que los retornos a tiempo son críticos para mantener la fama de los trajes rentados a Merman.

Se dice que Western Costume Company en Hollywood, Califorriiii, tiene más de 1 millón de vestidos que valen cerua de $40 millones.

Diccionarios De Datos.

Usando un enfoque de arriba hacia abajo, el analista de sistemas usa los diagramas de flujo de datos para comenzar la compilación de un diccionario de datos, que es una referencia que contiene datos acerca de datos, o “metadatos” sobre todos los datos de procesos, almacenes, flujos, estructuras y los elementos lógicos y físicos dentro del sistema que está siendo estudiado. Una manera para comenzar es incluyendo todos los conceptos de datos de los diagramas de flujo de datos.

Page 26: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

26

La

forma en que el diccionario de datos se relaciona con el diagrama de flujo de datos.

Una colección grande de la información de proyecto es llamada un depósito. Las herramientas CASE permiten que el analista cree un depósito, que puede incluir información acerca de los flujos, almacenes, estructuras de registro y elementos de datos, la lógica de procedimiento de diseños de pantalla y reporte, relaciones de datos, requerimientos del proyecto y lo que produce el sistema final e información sobre la administración de proyecto.

Cada entrada del diccionario de datos contiene: el nombre del concepto, una descripción verbal, alias, elementos de datos relacionados, rango, longitud, codificación y la información de edición necesaria. El diccionario de datos es útil

en

todas las fases del análisis, diseño y documentación última, debido a que es la fuente autorizada sobre la manera en que es usado y definido un elemento de datos en el sistema. Muchos sistemas grandes tienen diccionarios de datos computarizados que tienen referencias cruzadas con todos los programas de la base de datos que usan un elemento de datos particular.

Page 27: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

27

Dos diagramas de flujo de datos y sus entradas del diccionario de datos correspondientes para la producción de un cheque de pago a un empleado.

LA MANERA EN QUE LAS ESPECIFICACIONES DE PROCESO SE RELACIONAN CON EL DIAGRAMA DE FLUJO DE DATOS.

Una forma para describir las decisiones estructuradas es usar el método mencionado como lenguaje estructurado, donde la lógica es expresada en

estructuras secuenciales, estructuras de decisión, estructuras de caso o iteraciones. El lenguaje estructurado usa palabras reservadas aceptadas, tales como SI, ENTONCES, SINO, HACER, HACER MIENTRAS y HACER HASTA para describir la lógica usada y usa sangrías para indicar la estructura jerárquica del proceso de decisión.

Page 28: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

28

Las tablas de decisión proporcionan otra forma para examinar, describir y documentar decisiones. Cuatro cuadrantes (vistos en sentido del reloj a partir de la esquina superior izquierda) son usados para: (1) describir las condiciones, (2) identificar alternativas de decisión posibles (tales como S o N), (3) indicar cuáles acciones deben ser ejecutadas y (4) describir las acciones. Las tablas de decisión son ventajosas, debido a que las reglas para desarrollar la tabla misma, así como las reglas para eliminar redundancia, contradicciones y situaciones imposibles son directas y manejables. El uso de tablas de decisión promueve la integridad y precisión en el análisis de decisión estructuradas.

Figura.- Lenguaje estructurado para el

sistema de procesamiento de reclamaciones médicas. Lo

subrayado significa que esos términos han sido definidos en el diccionario de datos.

Cada uno de los métodos de análisis de decisión tiene sus propias ventajas y debe ser usado de acuerdo con ellas. El lenguaje estructurado es útil cuando

muchas acciones son repetidas y cuando es importante la comunicación con otros. Las tablas de decisión proporcionan

Page 29: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

29

análisis completo de situaciones complejas y a la vez limitan la necesidad por cambios atribuibles a situaciones imposibles, redundancias o contradicciones. Los árboles de decisión son importantes cuando es crítica la secuencia adecuada de condiciones y acciones y cuando cada condición no es relevante para cada acción.

Las especificaciones de proceso pueden ser usadas para analizar el diagrama de flujo de datos y el diccionario de datos por

medio de un método llamado balanceo horizontal, que indica que todos los elementos del flujo de datos de salida deben ser obtenidos a partir de elementos de entrada y lógica de proceso. Las áreas no resueltas pueden ser planteadas como preguntas en entrevistas de averiguación.

Figura: Uso de una tabla de decisión para ilustrar una política de tienda para la salida de un cliente con cuatro juegos de reglas y cuatro

acciones posibles.

Page 30: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

30

Figura: Trazado de un árbol de decisión para mostrar las acciones de aprobación de una

compra que no es en efectivo en una tienda de departamentos.

Page 31: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

31

CONTEXTUALIZACIÓN

• Competencia analítica

Promover habilidades cognitivas que les permitan utilizar hábitos y técnicas de estudio que potencialicen su estilo de aprendizaje. Los sistemas de información se han convertido en el pilar de toda organización, porque en ellos se encuentran automatizados los procesos y el flujo de información, ademá de que dichos sistemas informáticos pueden estar comunicados entres sí desde una red LAN (Local Area Network), hasta una red remota que puede ser conectada por un servidor desde Internet. El Analista-Programador tiene como función realizar todos los estudios necesarios de una organización en lo que refiere a las actividades operativas y administrativas, para así presentar una propuesta cercana al diseño de un Sistema Informático. El alumno:

− Comparará qué avances tecnológicos se han dado a través del tiempo con el uso de los distintos lenguajes de programación.

• Competencia de información

Buscar fuentes de información bibliográfica, hemerográfica, Internet y videotecas que amplíe el acervo de conocimientos.

El alumno:

− Recopilará información sobre la evolución de los lenguajes de programación estructurada desde su surgimiento hasta la actualidad.

Para mayor información puede consultar las siguientes direcciones electrónicas: http://www.monografias.com/trabajos/anaydisesis/anaydisesis.shtml http://comunidad.uach.mx/marana/materias/adsi/adsi.htm

Page 32: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

32

1.1.2 PROGRAMACIÓN EN LENGUAJE C.

• Propósito del lenguaje C

C es un lenguaje de programación desarrollado en 1972 por el estadounidense Dennis Ritchie en los Laboratorios Bell. Debe su nombre a que su predecesor inmediato había sido llamado lenguaje de programación B. Aunque muchos consideran que C es un lenguaje ensamblador más independiente de la máquina que un lenguaje de alto nivel, su estrecha asociación con el sistema operativo UNIX, su enorme popularidad y su homologación por el American National Standards Institute (ANSI) lo han convertido quizá en lo más cercano a un lenguaje de programación estandarizado en el sector de microcomputadoraes o microcomputadoras y estaciones de trabajo. C es un lenguaje compilado que contiene un pequeño conjunto de funciones incorporadas dependientes de la máquina. El resto de las funciones de C son independientes de la máquina y están contenidas en bibliotecas a las que se puede acceder desde programas escritos en C. Estos programas están compuestos por una o más funciones definidas por el programador, por lo que C es un lenguaje de programación estructurada. Véase también C++. C++, en informática (léase C plus plus), es una versión orientada a objetos derivada del lenguaje de programación de aplicación general denominado C, desarrollada por Bjarne Stroustrup en los Bell Laboratories de la compañía American Telephone and Telegraph (AT&T); en un

principio también fue conocido como C with Classes (C con clases, alusión a las clases de la programación orientada a objetos). Comenzó a desarrollarse en 1980 y se nombró C++ en 1983. El primer manual y su primera implementación como producto comercial aparecieron en 1985. Versiones sucesivas se publicaron en 1989 y 1990, siendo sus referencias oficiales, además de las publicaciones de su versión estandarizada, las obras The C++ Programming Language (El lenguaje de programación C++, 1985) y Annotated C++ Reference Manual (Manual de referencia comentado de C++, 1990). El lenguaje tiene como conceptos clave, entre otros, la clase (class), que facilita la creación de tipos de datos definidos por el usuario conjuntamente con funciones o métodos para tratar con ellos, la encapsulación de datos, la asignación dinámica de memoria y la sobrecarga de operadores. Se diseñó explícitamente para lograr una mayor flexibilidad en la programación avanzada, aunque manteniendo un grado de simplicidad apreciable, basándose para todos los efectos en el lenguaje C, de ya muy amplia difusión, y en la metodología básica del lenguaje Simula, en lo referente a la programación orientada a objetos. A mediados de 1998, fue publicado como un estándar oficial del comité ANSI X3J16 (American National Standards Institute) y de la ISO, International Standards Organization (Asociación Internacional para la Estandarización).

Page 33: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

33

Fue a partir de 1990 cuando se extendió su uso, tanto como lenguaje para el desarrollo de aplicaciones como para sistemas operativos. Muy ligado a UNIX en sus orígenes, su uso es, hoy día, prácticamente general. Las versiones más utilizadas en computadoraes personales son Visual C++ de Microsoft y C++

Builder de Borland (actualmente Inprise Corp.). También ha tenido una gran influencia en el desarrollo del lenguaje JAVA, con el que mantiene similitudes en cuanto a la sintaxis y estructura de la programación.

• Elementos

Page 34: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

34

Sistema informático Un sistema informático suele estar compuesto por una unidad central de proceso (CPU), dispositivos de entrada, dispositivos de almacenamiento y dispositivos de salida. La CPU incluye una unidad aritmético-lógica (ALU), registros, sección de control y bus lógico. La unidad aritmético-lógica efectúa las operaciones aritméticas y lógicas. Los registros almacenan los datos y los resultados de las operaciones. La unidad de control regula y controla diversas operaciones. El bus interno conecta las unidades de la CPU entre sí y con los componentes externos del sistema. En la mayoría de las computadoras, el principal dispositivo de entrada es el teclado. Los dispositivos de almacenamiento son los discos duros, flexibles (disquetes) y compactos (CD) y qué hay del chunche (USB). Los dispositivos de salida que permiten ver los datos son los monitores e impresoras. Dentro de la programación del lenguaje C, partamos ahora a la progración estructurada enlenguaje C Paradigma de la programación estructurada:

Algoritmos+estructuras de datos = programas.

Estructuras de datos

• Literales • Tipos básicos (todos numéricos) • Tipos enumerados • Tipos estructurados (struct, union) • Punteros y vectores

Construcciones algorítmicas

• Construcciones condicionales (if,switch)

• Construcciones iterativas(while,for,do...while)

• Subrutinas (funciones)

Además de lo anterior, el C tiene otros elementos:

• Comentarios • Inclusión de ficheros • Macros • Compilación condicional

El preprocesador normalmente se encarga de interpretar estas construcciones. .

Estructura básica de un programa en C

La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:

main( ) { }

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En él se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene

Page 35: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

35

argumentos como si no. La definición de la función está formada por un bloque de sentencias, que está encerrado entre llaves {}. Un programa algo más complicado es el siguiente:

#include <stdio.h> main( ) { printf("Hola amigos!\n"); }

Con él visualizamos el mensaje ¡Hola amigos! en el terminal. En la primera línea indica que se tengan en cuenta las funciones y tipos definidos en la librería stdio (standard input/output). Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la función main se incluye una única sentencia que llama a la función printf. Ésta toma como argumento una cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El símbolo \n indica un cambio de línea.

Hay un grupo de símbolos, que son tratados como caracteres individuales, que especifican algunos caracteres especiales del código ASCII. Los más importantes son:

Código Descripción

\a Alerta

\b Espacio atrás

\f Salto de página

\n Salto de línea

\r Retorno de carro

\t Tabulación horizontal

\v Tabulación vertical

\\ Barra invertida

\' Comilla simple

\" Comillas dobles

\OOO Visualiza un carácter cuyo código ASCII es OOO en octal

\xHHH Visualiza un carácter cuyo código ASCII es HHH en hexadecimal

Un programa C puede estar formado por diferentes módulos o fuentes. Es conveniente mantener las fuentes de un tamaño no muy grande, para que la compilación sea rápida. También, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuración. Las diferentes fuentes son compiladas de forma separada, únicamente las fuentes que han sido modificadas desde la última compilación, y después combinados con las librerías necesarias para formar el programa en su versión ejecutable.

• Tipos de datos Tipos básicos y variables Los tipos de datos básicos definidos por C son caracteres, números enteros y números en coma flotante. Los caracteres son representados por char, los enteros por short, int, long y los números en coma flotante por float y double. Los tipos básicos disponibles y su tamaño son:

Tipo de Datos

Tamaño Descripción

Page 36: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

36

char Normalmente 8 bits Carácter

short Normalmente 16 bits

Entero corto con signo

int Depende de la implementación

Entero con signo

unsigned Depende de la implementación Entero sin signo

long Normalmente 32 bits

Entero largo con signo

float Normalmente 32 bits

Flotante de precisión simple

double Normalmente 64 bits

Flotante de precisión doble

La palabra unsigned en realidad es un modificador aplicable a tipos enteros, aunque si no se especifica un tipo se supone “int.” Un modificador es una palabra clave de C que indica que una variable, o función, no se comporta de la forma normal. Hay también un modificador signed, pero como los tipos son por defecto con signo, casi no se utiliza. Las variables son definidas utilizando un identificador de tipo seguido del nombre de la variable. Veamos el siguiente programa: #include <stdio.h> main() { float cels, farh; farh = 35.0; cels = 5.0 * ( farh - 32.0 ) / 9.0; printf("-> %f F son %f C\n", farh, cels ); } En el programa anterior se definen dos variables flotantes. Se asigna un valor a la primera y se calcula la segunda mediante

una expresión aritmética. En la instrucción printf, el símbolo %f indica que se imprime un número en coma flotante. Hay un tipo muy importante que se representa por void, que puede significar dos cosas distintas, según su utilización. Puede significar nada, o sea que si una función devuelve un valor de tipo void no devuelve ningún resultado, o puede significar cualquier cosa, como puede ser un puntero a void es un puntero genérico a cualquier tipo de dato. Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos. Las llamadas en C son por valor, lo que permite modificar las copias privadas y temporales, es decir, las variables automáticas. Cuando se usa un arreglo como argumento, se pasa la dirección del mismo.

Cadenas de caractere

Tienen un caracter nulo al final ('\0').

Ej. "hello\n" -> h e l l o \n \0

Tipos de variables

Entre los tipos de variables se cuentan:

Automáticas

Externas

Las variables automáticas...

Page 37: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

37

- aparecen y desaparecen con la llamada de la función.

Las variables externas...

- se declaran globalmente: extern int max;

- se definen fuera de las funciones: int max;

- se declaran dentro de las funciones: extern int max;

• Comentarios

Un comentario es una línea que se incluye en el programa, cuya misión consiste en aclarar la función de una parte concreta del programa a otro lector, o incluso al mismo programador. En C, hay dos formas de incluir estos comentarios. La primera es incluir el texto que sirve de comentario al principio de la sección, entre dos símbolos especiales: el /* o principio de comentario y el */ o fin de comentario. Todo el texto que incluyamos entre ellos, el compilador lo ignora, incluyendo los saltos de línea. Por ejemplo, si una sección del programa se encarga de ofrecer los resultados finales del programa, podríamos incluir en el código el siguiente comentario: En el C original, tienen la forma /* cualquier texto */ Los comentarios se pueden extender varias líneas No se pueden anidar comentarios (comentarios dentro de otros) En C++ se usan también comentarios de una sola línea. La sintaxis es

/ cualquier texto Todo lo que se escriba a partir de las dos barras es un comentario. El comentario termina con el final de la línea. Ejemplos: { /*Esto es un comentario que ocupa varias líneas */ // esto es un comentario de C++ // y esto es otro comentario }

• Declaraciones: Declaración y comprobación de tipos Al igual que para las variables, cuando una función se va a usar en un programa antes del lugar donde se define, o cuando una función se define en otro programa (funciones externas), la función se debe declarar. La declaración de una función consiste en especificar el tipo de datos que va a retornar la función. Esto es obligatorio cuando vamos a usar una función que no devuelve un entero. Además en la declaración se puede especificar el número de argumentos y su tipo. Una declaración típica de función es:

tipo identificador(lista_de_argumentos_con_tipo);

Page 38: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

38

Esto avisa al compilador de que la función ya existe, o que la vamos a definir después.

La lista de argumentos con tipo difiere de la lista de argumentos antes presentada en que el tipo de cada argumento se coloca dentro de la lista, antes de su correspondiente identificador, como hacíamos en la definición de variables. Por ejemplo:

char print(int numero, int letra);

declara una función que devuelve un carácter y tiene dos parametros, un entero y un carácter. La lista de argumentos permite al compilador hacer comprobación de tipos, ya que el tipo y número de argumentos debe coincidir en la declaración, definición y llamada a una función. Este tipo de especificación del tipo de argumentos también se puede emplear en la definición de las funciones, aunque lo contrario no es posible. Asi:

char print(int numero, int letra)

{

printf("%d, %c\c", numero, letra);

}

es otra definición válida para la función print que hemos empleado. Las variables se utilizan para guardar datos dentro del programa. Hay que declarar las variables antes de usarlas.

Cada variable tiene un tipo. Declaración: tipo nombre ; Ejemplo:

int pepe;

Las variables globales se declaran justo antes de main(). Se pueden declarar varias variables en pocos renglones: int lower,upper, step; char c, line[1000]; También se pueden escribir más explicitamente, para agregar comentarios: int lower; /* algunos comentarios */ int upper; int step; char c; char line[1000]; Inicialización de variables: char backslash='\\'; int i=0;

Nombres de las variables

Letra (Letra o Dígito)* -> 31 caracteres Las mayúsculas son diferentes de las

minúsculas Es práctica común de C, denotar con - MAYUSCULAS las constantes - minúsculas las variables

Page 39: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

39

Constantes

Simbólicas (Preprocesamiento)

Ej. #define PI 3.14159265359

#define MAXLINE 1000

char line [MAXLINE+1]

#define FORMFEED '\014'

Variables constantes:

Ej. const float pi=3.14159265359;

Alfanuméricas:

Se evalúan en tiempo de compilación, no de ejecución.

Ejs. 3.14159265359

123.456e-7

0.12E3

'0' -> ASCII 48, EBCDIC 240

CONTEXTUALIZACION

• Competencias científico-teórica Aplicar conocimientos de aritmética,

álgebra y lógica matemática para la elaboración de rutinas de programación.

En los lenguajes de programación existen reglas y sintaxis para la creación de programas. Es de suma importacia que se tenga conocimiento de las partes que conforman la codificación de un programa. Un programa C puede estar formado por diferentes módulos o fuentes. Es conveniente mantener las fuentes de un tamaño no muy grande, para que la compilación sea rápida. También, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuración El alumno:

− Identificará que la repetición de eventos en la programación generan huellas de memoria que hacen factible el reforzamiento en el aprendizaje.

• Competencia de información

Buscar fuentes de información bibliográfica, hemerográfica, Internet y videotecas que amplíe el acervo de conocimientos.

El alumno: − Consultará en Internet o revistas

especializadas material técnico de varios tipos de lenguajes de programación estructurada existentes en el mercado.

Para mayor información consulte las siguientes direcciones electronicas http://webpages.ull.es/users/fsande/talf/cursoc/ http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf http://labsopa.dis.ulpgc.es/cpp/intro_c/ http://correo.puj.edu.co/el982002/lenguajeC.htm http://www.jeanpaul.com.ar/

Page 40: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

40

RESULTADO DE APRENDIZAJE

1.2 Determinar los factores de ajuste de conversión y las partidas de acuerdo con las características de la empresa en épocas inflacionarias. 1.2.1 OPERADORES Y EXPRESIONES.

• Tipo de Operadores

Los distintos operadores permiten formar expresiones tanto aritméticas como lógicas. Los operadores aritméticos y lógicos son:

+, - suma, resta ++, -- incremento, decremento

*, /, % multiplicación, división, módulo

>>, << rotación de bits a la derecha, izquierda.

& AND booleano | OR booleano ^ EXOR booleano ~ complemento a 1 ! complemento a 2, NOT lógico==, != igualdad, desigualdad &&, || AND, OR lógico <, <= menor, menor o igual >, >= mayor, mayor o igual En estos operadores deben tenerse en cuenta la precedencia de operadores y las reglas de asociatividad, que son las normales en la mayoría de lenguajes. Se debe consultar el manual de referencia para obtener una explicación detallada.

Además hay toda una serie de operadores aritméticos con asignación, como pueden ser += y ^=. En la evaluación de expresiones lógicas, los compiladores normalmente utilizan técnicas de evaluación rápida. Para decidir si una expresión lógica es cierta o falsa muchas veces no es necesario evaluarla completamente. Por ejemplo una expresión formada <exp1> || <exp2>, el compilador evalúa primero <exp1> y si es cierta, no evalúa <exp2>. Por ello se deben evitar construcciones en las que se modifiquen valores de datos en la propia expresión, pues su comportamiento puede depender de la implementación del compilador o de la optimización utilizada en una compilación o en otra. Estos son errores que se pueden cometer fácilmente en C ya que una asignación es también una expresión. Debemos evitar: if (( x++ > 3 ) || ( x < y ))

y escribir en su lugar: x++; if (( x > 3 ) || ( x < y )) Hay un tipo especial de expresión en C que se denomina expresión condicional y está representada por los operadores ? y : . Su utilización es como sigue: <e> ? <x> : <y>. Se evalúa si e entonces x; si no, y.

Page 41: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

41

int mayor ( int a, int b ) { return ( a > b ) ? TRUE : FALSE; } waste_time () { float a, b = 0.0; ( b > 0.0 ) ? sin(M_PI / 8) : cos(M_PI / 4); }

• Expresiones de asignación El signo de igualdad, =, es el operador básico de asignación en C. Un ejemplo de asignación es: i = 7 A la variable i se le asigno el valor 7, y la expresión, como un todo, toma ese valor. Cuando la expresión va seguida de un punto y coma, se convierte en una proposición. Algunos ejemplos de proposiciones son: i = 7; x = 3.1 + sin(22.2); Se calcula el valor de la expresión que está a la derecha del signo = y luego se asigna a la variable del lado izquierdo. Por ejemplo int a, b, c a = 7; b = 2; c = a + b;

declara que las variables a, b y c son de tipo int, luego asigna el valor 7 a ´a´, el valor 2 a ´b´, y el valor de la expresión a + b a ´c´. Notación compacta. Una expresión como k = k + 2; sumará dos al antiguo valor de k y le asignará el resultado; así la expresión, como un todo, tendrá ese valor. La expresión k += 2; utiliza el operador de asignación += para ejecutar la misma tarea. Otro ejemplo sería: k *= 3 + x; es equivalente a: k = k * (3 + x); Operadores aritméticos. Los operadores aritméticos + - * / % corresponden a las operaciones matemáticas normales de suma, resta, multiplicación, división y módulo, respectivamente. La división de enteros devuelve el valor entero que obtuvo y desecha cualquier fracción restante. Por ejemplo, 1 / 2 tiene el valor 0, 3 / 2 tiene el valor 1, y -7 / 3 tiene el valor -2. La

Page 42: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

42

expresión a % b se lee "a modulo b". Si a y b son enteros positivos, el resultado será el residuo de la división de a ante b. Por ejemplo, 7 % 2 tiene el valor 1, y 12 % 3 tiene el valor 0; si a, b o ambos son negativos, entonces a % b está definido, pero el resultado es dependiente de la máquina. El valor de b no puede ser cero, porque eso nos conduciría a dividir por cero. Operadores de incremento y decremento. Como operador de incremento tenemos el ++ y de decremento es el --. Tanto ++ como - - pueden aplicarse a variables, pero no a constantes o a expresiones. Algunos ejemplos son: ++y --k y++ k-- La proposición ++y; es equivalente a i = i + 1; Así, también la proposición y++; es equivalente a i = i + 1; y de manera similar --k; es equivalente a k = k - 1; k--; es equivalente a k = k - 1; Las expresiones ++a y a++ provocan que a se incremente en 1. En forma similar, - -a y a- - causan que a disminuya en 1. No obstante, al usar ++a en una expresión, el valor de a se aumenta antes de evaluar la expresión, mientras que al emplear a++, la expresión se evalúa con el valor actual

de a, incrementándolo después. Lo mismo ocurre con - -a y a- -.

• Expresiones condicionales. OPERADORES DE RELACION, IGUALDAD Y LÓGICA. Operadores y Expresiones de Relación Los operadores de relación < menor que > mayor que <= menor o igual que >= mayor o igual que son todos binarios. Cada uno de ellos toma dos expresiones como operandos y dan como resultado el valor INT 0 o el valor INT 1. Considérese una expresión de relación como a < b. Intuitivamente, si el valor de a es menor que el de b, la expresión es VERDADERA; y como en C lo VERDADERO se representa con cualquier valor distinto de 0, es natural que a < b tenga el valor INT 1. Si el valor de a no es menor que el de b, entonces la expresión es FALSA, y a < b tendrá el valor INT 0. Algunos ejemplos son: a < 3 a > b -7.7 <= -99.335 -1.3 >= (2.0 * x + 3.3)

Page 43: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

43

Operadores y Expresiones de Igualdad. Los operadores de igualdad == igual a != distinto de son operadores binarios que actúan sobre expresiones, y producen valores INT 0 o 1. Las conversiones usuales de aritmética se aplican a las expresiones que sean operandos de los operadores de igualdad. Algunos ejemplos son: c == 'w' x != -2.77 22 == 33 Intuitivamente, una expresión de igualdad como a = = b es VERDADERA o FALSA. Si el valor de a es igual al de b, entonces la expresión producirá el valor INT 1, en caso contrario, si a no es igual b la expresión producirá el valor INT 0. La expresión a != b se evalúa de la misma manera. Obsérvese que las expresiones a == b a = b son similares A PRIMERA VISTA. Se parecen en la forma, pero son completamente distintas en cuanto a la función. La expresión a = = b es una prueba de igualdad, mientras que a = b es una expresión de asignación. Uno de los errores más comunes en programación es codificar algo como: if (i = 1) . . . . /* hacer algo */

en lugar de if (i == 1) . . . . /* hacer algo */ La expresión de la primera proposición IF siempre es VERDADERA, y será muy difícil encontrar un error de este tipo. Operadores y Expresiones Lógicos. Los operadores lógicos ! (unario) negación && y lógico || o lógico se aplican a expresiones, producen los valores INT 0 o bien 1. Algunos ejemplos son: !5 !'z' !(x + 7.7) 2 || 3 a || b a && 1 a && b

• Precedencia y orden de evaluación.

Lista en la que se muestra el Operador y la Asociatividad

() [] De izquierda a derecha

- ++ -- ! ~ * & sizeof(tipo) De derecha a izquierda

Page 44: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

44

- * / % De izquierda a derecha - + - De izquierda a derecha - << >> De izquierda a derecha - < <= > >= De izquierda a

derecha - == != De izquierda a derecha - & De izquierda a derecha - && De izquierda a derecha - || De izquierda a derecha - ?: De derecha a izquierda - = *= /= %= += -= &= <<=

>>= De derecha a izquierda - , De izquierda a derecha

-

CONTEXTUALIZACIÓN

• Competencia analítica Promover habilidades cognitivas que

les permitan utilizar hábitos y técnicas de estudio que potencialicen su estilo de aprendizaje.

Los distintos operadores permiten formar expresiones tanto aritméticas como lógicas. En estos operadores deben tenerse en cuenta la precedencia de operadores y las reglas de asociatividad, que son las normales en la mayoría de lenguajes. El signo de igualdad, =, es el operador básico de asignación en C, son operadores binarios que actúan sobre expresiones, y producen valores INT 0 o 1. Las conversiones usuales de aritmética se aplican a las expresiones que sean operandos de los operadores de igualdad.

El alumno:

− Comparará métodos de ordenamiento aplicables a la construcción de tablas.

• Competencia para la vida

Razonar la importancia que ha tenido el avance de las Tecnologías de Información y Comunicaciones (TIC´s) en el Acceso de la información.

El alumno:

− Identificará los lenguajes de programación como una herramienta que se aplica en cualquier ámbito para el desempeño laboral.

Para mayor información consulte las siguientes direcciones electrónicas http://webpages.ull.es/users/fsande/talf/cursoc/ http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf http://labsopa.dis.ulpgc.es/cpp/intro_c/ http://correo.puj.edu.co/el982002/lenguajeC.htm http://www.jeanpaul.com.ar/

Page 45: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

45

1.2.2 ESTRUCTURAS DE CONTROL DE FLUJO

• Control del flujo del programa

En C las sentencias se ejecutan sucesivamente una tras otra. Esto define un camino o dirección según la cual se va desarrollado el programa. Sin embargo, habrá momentos en que el programa deba ejecutar determinadas partes dependiendo del estado en el que se halle el programa o de las variables externas. Esto permitirá modificar el orden de la ejecución para adaptarse al estado del programa y bifurcar hacia nuevas subrutinas cuando se cumplan ciertas condiciones, que el programador fija de antemano.

• Proposiciones y bloques.

La principal particularidad que posee C es el manejo de rutinas que controlan el flujo de datos que ingresan y egresan en cada proceso, que se ejecuta bajo la estructura de dicho lenguaje.

Las Proposiciones o sentencias son las que van determinando el orden o camino de ejecución de un programa escrito en lenguaje C.

Es de destacar que las proposiciones son expresiones cuya escritura finaliza con un

punto y coma (;) el que cumple la función de terminador de sentencias y no la de un separador de las mismas.

Las declaraciones y sentencias pueden ser agrupadas en un bloque o proposición compuesta, encerrándolas entre llaves. No está permitido colocar punto y coma después de la llave derecha.

También es posible declarar variables dentro de cualquier bloque.

A continuación se desarrollan las proposiciones que permiten la toma de decisiones que marcarán el camino que debe seguir un proceso dentro su ejecución.

Por ejemplo, la proposición If – Else, cuya sintaxis se expresa de la siguiente manera:

If (expresión) Prop. 1

Else Prop. 2

Donde la parte Else es opcional.

La misma opera del siguiente modo: Se evalúa la expresión; si ésta es cierta, se ejecuta la prop. 1. Por el contrario, si la expresión es falsa y existe la parte Else, se ejecuta la prop. 2.

Todo Else se asocia con el If interior más próximo, siendo conveniente observar el sangrado en la escritura de cada proposición.

Page 46: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

46

• If-else.

La sentencia if

La primera sentencia de control es la sentencia if. Admite dos tipos de sintaxis:

if (expresi¢n1)

sentencia1;

o también:

if (expresi¢n1)

sentencia1;

else

sentencia2;

Esta sentencia es equivalente a la que poseen la mayoría de lenguajes de programación y sirve para bifurcar en un punto de programa. La sentencia if permite tomar decisiones al programa. En su primera forma la sentencia1 sólo se ejecuta si el resultado de evaluar la expresión1 es verdadero (distinto de cero). En la segunda forma, tenemos dos posibilidades: si al evaluar la expresiión1 el resultado es verdadero, se ejecuta la sentencia 1, pero si el resultado es falso, se ejecuta la sentencia 2. En cualquier caso, sólo una de las dos sentencias se ejecuta. Por ejemplo:

if (numero1 == 1)

puts("la variable numero1 vale 1");

else

puts("la variable numero1 no vale 1");

Tras evaluarse la expresión if y ejecutarse la sentencia adecuada, el programa continúa con la línea siguiente a la de la última sentencia del if. Para la sentencia if, vale como expresión cualquier expresión válida en C, incluso las asignaciones y llamadas a funciones. El caso en que la expresión es una asignación, suele ser sorprendente, ya que en la mayoría de los lenguajes este tipo de expresiones no es válido. Como sentencia vale cualquier tipo de sentencia válida en C, entre ellas la propia sentencia if. En este caso hablaremos de sentencias if anidadas. Por ejemplo:

if (num > 0)

if (num == 1)

puts("num es igual a 1")

else

puts("num es mayor que 1)

else

puts("num es menor que 1");

Cuando hay dos if anidados y a continuación hay un else, este else pertenece al último if. Así, en el caso anterior, el primer else corresponde al segundo if. Si queremos que un else

Page 47: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

47

pertenezca al primer if de un if anidado deberemos encerrar al segundo entre paréntesis. Por ejemplo:

if (num > 0)

{

if (num == 1)

puts("num es igual a 1");

}

else

puts("num es menor que 0");

Cuando necesitamos ejecutar varias sentencias que dependen de un if, utilizaremos la sentencia de tipo bloque de sentencias. Un bloque de sentencias es un grupo de sentencias encerradas entre llaves { y }. Por ejemplo:

if (num >= 0) {

printf("num %d\n");

if (num == 0)

puts("num 0");

if (num >= 1)

puts("num mayor o igual a 1");

}

• else if

Permite escribir condicionales de casos EXCLUYENTES

if (expresión)

proposición

else if (expresión)

proposición

else

proposición

• El ciclo while

Un bucle es un conjunto de sentencias que se ejecutan repetidamente hasta que se alcanza una condición de fin de bucle o condición de salida. El bucle while es el tipo de bucle más sencillo. En su modo más simple se escribe:

while (expresión1)

sentencia1;

El bucle while comienza por evaluar la expresión1. Si es cierta se ejecuta la sentencia1. Entonces se vuelve a evaluar la expresión1. De nuevo si es verdadera se vuelve a ejecutar la sentencia1. Este proceso continúa hasta que el resultado de evaluar la expresión es falso. Por esto se le llama a esta expresión la condición de salida. Por ejemplo:

int variable = 10;

Page 48: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

48

while (variable)

printf("la variable vale %d\n", variable--);

En este caso se imprime el valor de la variable hasta que se llegue a 1. Normalmente, en las sentencias del bucle while se coloca alguna instrucción que modifique la expresión de control. Lo más habitual es utilizar un bloque de sentencias en vez de una sentencia única.

Por ejemplo:

int variable = 10;

while (variable) {

printf("valor de la variable %d\n", variable);

printf("valor tras decrementar la variable %d\n", variable);

}

• El ciclo do-while

La sintaxis de este bucle es:

do

sentencia1;

while (expresión1);

Su funcionamiento es análogo del bucle while, salvo que la expresión de control se

evalúa al final del bucle. Esto nos garantiza que el bucle do-while se ejecuta al menos una vez. Es menos habitual que el bucle while.

Podemos incluir dentro del bucle un grupo de sentencias, en vez de la sentencia1. Este es el único bucle que no necesita llaves para encerrar un grupo de sentencias. Por ejemplo:

char c = '9';

do

printf("numero actual %c\n", c);

--c; /* ahora la decrementamos como si fuera entera */

while (c >= '0');

• El ciclo for

La sintaxis del bucle for es:

for (inicio, control, incremento)

sentencia1;

Este bucle se utiliza para realizar una acción un número determinado de veces. Está compuesto de tres expresiones: la de inicio, la de control y la de incremento, y una sentencia. Su versión más sencilla es:

for (i =0; i < 10; i++)

printf("i vale %d\n", i);

Page 49: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

49

Esta versión del bucle imprime un mensaje en la pantalla mientras que no se alcance la condición de salida, i == 10.

El funcionamiento del bucle for es el siguiente:

- Primero se ejecuta la expresión de inicio. Normalmente‚ ésta es una expresión de asignación a una variable, que le da un valor inicial.

- Luego se comprueba la expresión de control. Si esta expresión es verdadera se ejecuta la sentencia, o el grupo de sentencias. Si la expresión es falsa el bucle finaliza.

- Tras ejecutarse la sentencia se evalúa la expresión de incremento.

- Habitualmente, lo que hace esta expresión es incrementar la variable de control.

- A continuación se vuelve al segundo paso. El bucle finaliza cuando la expresión de control es falsa

En un bucle for podemos omitir la expresión de inicio, por ejemplo si sabemos que la variable ya está inicializada:

int i = 0;

for ( ; i <= 10; ++i)

printf("%d\n", i);

También podemos omitir la expresión de incremento. Esto es habitual cuando la variable de control ya se modifica dentro del bucle. Por ejemplo:

int i= 10;

for ( ; i < 10; )

printf("i = %d\n", i++);

El bucle for es equivalente a un bucle while escrito del siguiente modo:

inicio;

while (control) {

sentencia1;

incremento;

}

Este bucle while puede servirnos para salir fácilmente de dudas al escribir un bucle for, ya que se ve claramente el orden de ejecución de las expresiones y sentencias dentro del bucle for. Como se ve, en cada pasada del bucle for se sigue el orden: evaluación de control, ejecución de sentencia1 y evaluación de incremento.

• Las sentencias break y continue.

Hay veces en que interesa romper un bucle en una determinada posición para ejecutar una nueva pasada del bucle o para finalizar su ejecución Esto suele ser habitual cuando el bucle tiene una gran complicación o cuando necesitamos salir "por las malas" del bucle. Esto último, suele ser frecuente cuando en el bucle se producen "condiciones de error". Para realizar estos dos tipos de salto, disponemos de dos sentencias: la sentencia break y la sentencia continue.

Page 50: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

50

La sentencia break rompe la ejecución de un bucle o bloque de instrucciones y continúa en la instrucción que siga al bucle o bloque. Por ejemplo:

int a = 10;

while (1) {

if (a-- <= 1)

break;

printf("%d\n", a);

}

Aunque en apariencia éste es un bucle sin fin, ya que la condición con while (1) siempre es cierta, este bucle se acabará cuando la variable a valga 1. El bucle simplemente decrementa la variable e imprime su valor.

La sentencia continue rompe la ejecución habitual del bucle y procede a evaluar de nuevo la expresión del bucle. Actúa como si se saltase al final del bloque de un bucle. Por ejemplo:

int a = 1;

while (a < 10) {

printf("%d\n", a);

if (a==7)

continue;

}

La sentencia de selección múltiple switch

Esta sentencia sirve para agrupar varias sentencias if en una sola, en el caso particular en el que una variable es comparada a diferentes valores, todos ellos constantes, y que realiza acciones si coincide con ellos. Su sintaxis es:

switch (control) {

case exp1: sent1; break;

case exp2: sent2; break;

default sent0; break;

}

Su sintaxis es más complicada que la de anteriores bucles, ya que agrupa un mayor número de acciones y posibilidades en una sola sentencia. El modo de funcionamiento es el siguiente:

- Primero se evalúa la expresión de control.

- A continuación se compara con la expresión de la primera etiqueta case. Si son iguales se ejecuta la sentencia1.

- Luego se vuelve a comparar la expresión de control con la etiqueta del segundo case de nuevo, si son iguales se ejecuta la sentencia2.

- Se repite el proceso hasta agotar todas las etiquetas case. Si al llegar a la etiqueta default no se ha ejecutado ninguna otra sentencia. (* revisar si esto es cierto o la etiqueta default se ejecuta aun

Page 51: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

51

cuando se haya ejecutado otra *) ésta es la acción por defecto. La etiqueta default es opcional. Si no la ponemos, el programa simplemente salta a la línea siguiente.

Hay que tener cuidado con un aspecto de este bucle. Cuando una expresión de una etiqueta case es igual a la sentencia de control, se ejecutan todas las sentencias que sigan hasta que se alcance una nueva etiqueta case, y luego se vuelve a comparar la expresión de control. Este mecanismo tiene una ventaja y un inconveniente. La ventaja es que no necesitamos encerrar entre llaves el grupo de sentencias a ejecutar para cada etiqueta. El inconveniente es que al agotar las sentencias de una determinada etiqueta la sentencia switch prosigue con la siguiente etiqueta case. Habitualmente, lo que se pretende es que tras ejecutar el grupo de sentencias se finalice el switch. Para evitar que se ejecuten más sentencias, habitualmente se acaba cada grupo de sentencias con una sentencia break. La sentencia break pasa entonces la ejecución a la siguiente línea de programa que prosiga al bucle switch.

También se permite poner etiquetas múltiples para un mismo grupo de sentencias. Si dejamos una etiqueta case sin sentencias a ejecutar, entonces se asocia a la siguiente etiqueta. Esto es útil para ejecutar una misma acción para distintos valores de la expresión.

• Goto y etiquetas Instrucción goto Sirve para saltar incondicionalmente a un punto cualquiera del programa. La sintaxis es

goto etiqueta; Etiqueta es un identificador que indica el punto al que queremos saltar. La etiqueta se define colocándola en el punto adecuado seguida de dos puntos. Sólo se puede saltar a una etiqueta que se encuentre en la misma función donde se invoca a goto. Ejemplo:

parriba: // declaración de etiqueta

// salto directo a una etiqueta if (error) goto pabajo; ... if (repetir) goto parriba;

pabajo: // declaración de etiqueta

Generalmente, es usada en el manejo de errores. Se aconseja ser parcos en su uso. Por ejemplo

/* muestra el primer valor negativo de un */

/* arreglo multidimensional */

Page 52: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

52

for (i=0; i

for (j=0; j

if (v[i][j]<0)

goto found;

/* no se encontró */

found: /* se encontró en la posición i,j */

CONTEXTUALIZACIÓN

• Competencia lógica

Resolver problemas que involucren el razonamiento lógico, matemático y abstracto.

La principal particularidad que posee C es el manejo de rutinas que controlan el flujo de datos que ingresan y egresan en cada proceso, que se ejecuta bajo la estructura de dicho lenguaje.

Las proposiciones o sentencias son las que van determinando el orden o camino de ejecución de un programa escrito en lenguaje C

Las declaraciones y sentencias pueden ser agrupadas en un bloque o proposición compuesta, encerrándolas entre llaves. No está permitido colocar punto y coma después de la llave derecha.

También es posible declarar variables dentro de cualquier bloque.

A continuación se desarrollan las proposiciones que permiten la toma de decisiones que marcarán el camino que debe seguir un proceso dentro su ejecución El alumno:

− Interpretará la importancia del uso de estructuras de datos lógicas al elaborar soluciones de algoritmos en programación estructurada.

• Competencia de calidad Respetar y acatar lo establecido en el

manual del fabricante. El alumno:

− Cuidará que la utilización de herramientas del lenguaje C se realicen con los lineamientos establecidos en el manual del fabricante.

• Competencia para la vida Realizar el trabajo en forma eficiente y

oportuna. El alumno:

− Cuidará la presentación y legibilidad en el diseño y elaboración de programas de cómputo

Para mayor información, consulte las siguientes direcciones electrónicas http://webpages.ull.es/users/fsande/talf/cursoc/ http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf http://labsopa.dis.ulpgc.es/cpp/intro_c/ http://correo.puj.edu.co/el982002/lenguajeC.htm http://www.jeanpaul.com.ar/

Page 53: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

53

PRÁCTICAS DE EJERCICIO Y LISTA DE COTEJO

Unidad de aprendizaje:

1

Práctica número: 1 Nombre de la práctica: Impresión de un mensaje Propósito de la práctica:

Al finalizar la práctica el alumno, elaborará un programa donde imprima un mensaje con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs. Materiales Maquinaria y equipo Herramienta Software de lenguaje de programación C. Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

• Impresora.

Page 54: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

54

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que imprima el mensaje "Primer programa", transcribiendo el siguiente algoritmo en

el editor de “C”.

/* Primer programa */ #include <stdio.h> main() { printf("Primer programa"); }

5. Guardar el archivo que contiene el programa transcrito. 6. Compilar el programa. 7. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 8. Imprimir el resultado de la ejecución del programa. 9. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 55: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

55

Lista de cotejo de la práctica Número 1:

Impresión de un mensaje.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo.

De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que imprima el mensaje "Primer programa",

transcribiendo el algoritmo en el editor de “C”.

5. Guardó el archivo que contiene el programa transcrito. 6. Compiló el programa. 7. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

8. Imprimir el resultado de la ejecución del programa. 9. Repetir los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP: Hora de

inicio: Hora de

término: Evaluación:

Page 56: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

56

Unidad de aprendizaje: 1 Práctica número: 2 Nombre de la práctica: Programa de un carácter Propósito de la práctica:

Al finalizar la práctica el alumno, elaborará un programa que lea y escriba un carácter con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 57: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

57

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que lea y escriba un carácter, transcribiendo el siguiente algoritmo en el editor de

“C”.

/* Leer y escribir un caracter */ #include <stdio.h> main () { char car; printf("Escriba un carácter: "); car=getchar(); printf("\nEl caracter introducido es %c.\n",car); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 58: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

58

Lista de cotejo de la práctica Número 2:

Programa de un carácter.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo.

De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que lea y escriba un carácter, transcribiendo el

algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Iniciar un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables.

Observaciones:

PSP:

Hora de inicio: Hora de término:

Evaluación:

Page 59: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

59

Unidad de aprendizaje: 1 Práctica número: 3 Nombre de la práctica: Impresión de una agenda. Propósito de la práctica:

Al finalizar la práctica el alumno, elaborará una impresión de lista de amigos en una agenda con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 3 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 60: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

60

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que imprima una lista de amigos guardados en una agenda (tipo estructura),

transcribiendo el siguiente algoritmo en el editor de “C”.

/* Lista los campos de una agenda construida en el programa */ #include <stdio.h> #define N 3 main() { struct agenda { char nombre[25]; char telefono[10]; int edad; }; struct agenda amigos[N]={{"Pepe","913472314",18},{"Juan","915547623",19},{"Rosa","917456778",21}}; int i; for (i=0; i<N; ++i) { printf("\nAmigo %s\t teléfono %s\t edad %d",amigos[i].nombre, amigos[i].telefono,amigos[i].edad); } printf("\n"); }

5. Accesar el subdirectorio donde se encuentra “C”.

Page 61: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

61

Procedimiento

6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”.Guardar el archivo que contiene el programa transcrito. 8. Compilar el programa. 9. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 10. Imprimir el resultado de la ejecución del programa. 11. Repetir los procedimientos con asesoría del PSP. Nota: El instructor deberá adecuar la práctica al equipo con el que se cuenta.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 62: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

62

Lista de cotejo de la práctica Número 3:

Impresión de una agenda.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que imprima una lista de amigos guardados en una

agenda (tipo estructura), transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 63: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

63

Unidad de aprendizaje: 1 Práctica número: 4 Nombre de la práctica: Programa de longitudes y valores mínimos del

byte.

Propósito de la práctica:

Al finalizar la práctica el alumno, realizará un programa para ver longitudes y valores máximos y mínimos del byte con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 4 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 64: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

64

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa para ver las longitudes y valores máximos y mínimos en bytes de los tipos básicos de

programación en C, transcribiendo el siguiente algoritmo en el editor de “C”.

/* Muestra las longitudes en longitudes en bytes y los valores máximos y mínimos de los tipos básicos */ #include <stdio.h> #include <limits.h> #include <float.h> main() char a; short int b; int c; long int d; unsigned char e; unsigned short int f; unsigned int g; unsigned long int h; float i; double j; long double k; printf ("Longitud de cada uno de los tipos basicos \n\n"); printf ("La longitud de char a= %d\n",sizeof(a)); printf ("La longitud de short int b= %d\n",sizeof(b)); printf ("La longitud de int c= %d\n",sizeof(c)); printf ("La longitud de long int d= %d\n",sizeof(d)); Accesar el subdirectorio donde se encuentra “C”.

Page 65: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

65

Procedimiento

printf ("La longitud de unsigned char e= %d\n",sizeof(e)); printf ("La longitud de unsigned short int f= %d\n",sizeof(f)); printf ("La longitud de unsigned int g= %d\n",sizeof(g));

printf ("La longitud de unsigned long int h= %d\n",sizeof(h)); printf ("La longitud de float i= %d\n",sizeof(i)); printf ("La longitud de double j= %d\n",sizeof(j)); printf ("La longitud de long double k= %d\n",sizeof(k)); printf("\nValores minimos y maximos de cada uno de los tipos\n\n"); printf ("Minimo y maximo de char a= %d\t\t%d\n",CHAR_MIN,CHAR_MAX); printf ("Minimo y maximo de short int b=%d\t\t%d\n",SHRT_MIN,SHRT_MAX); printf ("Minimo y maximo de int c= %d\t\t%d\n",INT_MIN,INT_MAX); printf ("Minimo y maximo de long int d=%d\t\t%d\n",LONG_MIN,LONG_MAX); printf ("Maximo de unsigned char e= %d\n",UCHAR_MAX);

printf ("Maximo de unsigned short int f= %d\n",USHRT_MAX); printf ("Maximo de unsigned int g= %d\n",UINT_MAX); printf ("Maximo de unsigned long int h= %d\n",ULONG_MAX); printf ("Minimo y maximo de float i= %d\t\t%d\n",FLT_MIN,FLT_MAX); printf ("Minimo y maximo de double j= %d\t\t%d\n",DBL_MIN,DBL_MAX); printf ("Minimo y maximo de long double k=%d\t\t%d\n",LDBL_MIN,LDBL_MAX); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 66: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

66

Lista de cotejo de la práctica Número 4:

Programa de longitudes y valores mínimos del byte.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa para ver las longitudes y valores máximos y mínimos

en bytes de los tipos básicos de programación en C, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 67: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

67

Unidad de aprendizaje: 1 Práctica número: 5 Nombre de la práctica: Programa de mensaje de saludo Propósito de la práctica:

Al finalizar la práctica el alumno, programará un algoritmo que imprima un mensaje que pregunte su nombre y mande un saludo con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 68: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

68

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que imprima un mensaje de presentación, pregunte como te llamas y salude,

transcribiendo el siguiente algoritmo en el editor de “C”.

/* Saludo */ #include <stdio.h> main() { char nombre[20]; printf("Hola, me llamo Ordenador, y tu?\n"); scanf("%s",&nombre[0]); printf("Me alegro de conocerte %s\n",nombre); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 69: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

69

Lista de cotejo de la práctica Número 5:

Programa de mensaje de saludo

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que imprima un mensaje de presentación, te pregunte

como te llamas y te salude, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 70: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

70

Unidad de aprendizaje: 1 Práctica número: 6 Nombre de la práctica: Programa de presentación Propósito de la práctica:

Al finalizar la práctica el alumno, realizará una presentación que salude con nombre y apellidos con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 71: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

71

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que escriba un saludo de presentación que salude con nombre y apellidos,

transcribiendo el siguiente algoritmo en el editor de “C”.

* Saludo con Nombre y apellido (utilización de gets en lugar de scanf) */ #include <stdio.h> void contestar (char []); main() { char nombre[20]; printf("Hola, me llamo Iagoba, y tu?\n"); gets(nombre); contestar(nombre); } void contestar(char *nombre) { printf("Me alegro de conocerte %s\n",nombre); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 72: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

72

Lista de cotejo de la práctica Número 6:

Programa de presentación

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que imprima un mensaje de presentación, pregunte

como te llamas y salude, transcribiendo el algoritmo en el editor de “C”.

5. Accedió el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 73: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

73

Unidad de aprendizaje: 1 Práctica número: 7 Nombre de la práctica: Programa de calculo del área de triangulo. Propósito de la práctica:

Al finalizar la práctica el alumno, deberá calcular el área de un trianguló rectángulo con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 74: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

74

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que calcule el área de un triángulo rectángulo, dada la altura y la base,

transcribiendo el siguiente algoritmo en el editor de “C”.

/* Area de un triangulo rectangulo */ #include <stdio.h> main() { float altura, base; double area; printf("\nBase del triangulo = "); scanf("%f",&base); printf("\nAltura del triangulo = "); scanf("%f",&altura); area= 0.5 * (double) altura * base; printf("\nArea = %g\n",area); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 13. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 75: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

75

Lista de cotejo de la práctica Número 7:

Programa de calculo del área de triangulo.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que calcule el área de un triángulo rectángulo, dada la

altura y la base, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 76: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

76

Unidad de aprendizaje: 1 Práctica número: 8 Nombre de la práctica: Programa de números menores. Propósito de la práctica:

Al finalizar la práctica el alumno, realizará un programa que pida el menor de los números pedidos al usuario con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 77: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

77

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que halle el menor de dos números pedidos al usuario, transcribiendo el siguiente

algoritmo en el editor de “C”.

/* Calculo del menor de dos números dados */ #include <stdio.h> main() { int menor, numero1, numero2; printf("\nEscriba el primer numero y pulso INTRO: "); scanf("%d",&numero1); printf("\nEscriba el segundo numero y pulso INTRO: "); scanf("%d",&numero2); if (numero1 < numero2) menor=numero1; else menor=numero2; /* la sentencia if-else es equivalente a: menor=numero1<numero2 ? numero1 : numero2; */ printf("\nEl menor de %d y %d es %d\n",numero1, numero2, menor); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 78: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

78

Lista de cotejo de la práctica Número 8:

Programa de números menores.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que halle el menor de dos números pedidos al usuario,

transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 79: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

79

Unidad de aprendizaje: 1 Práctica número: 9 Nombre de la práctica: Programa de repetición de carácter. Propósito de la práctica:

Al finalizar la práctica el alumno, realizará un programa de repeticiones de carácter en lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 80: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

80

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que pida al usuario un carácter y un número de repeticiones. Luego imprima el

carácter el número de veces especificado, transcribiendo el siguiente algoritmo en el editor de “C”. /* Repetir un carácter un numero de veces */ main() { char ch; int num_rep; printf("\nEscriba el caracter a repetir: "); scanf("%c",&ch); printf("\nEscriba el numero de repeticiones: "); scanf("%d",&num_rep); while (num_rep>0) { printf("%c",ch); --num_rep; } printf("\n"); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 81: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

81

Lista de cotejo de la práctica Número 9:

Programa de repetición de carácter.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que pida al usuario un carácter y un número de

repeticiones. Luego imprima el carácter el número de veces especificado, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 82: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

82

Unidad de aprendizaje: 1 Práctica número: 10 Nombre de la práctica: Programa de tabla con potencias. Propósito de la práctica:

Al finalizar la práctica el alumno, realizará una tabla de cuatro potencias del 1 al 10 con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 83: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

83

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que imprima una tabla con las cuatro primeras potencias de los números 1 a 10,

transcribiendo el siguiente algoritmo en el editor de “C”.

/* Imprime la tabla de las primera 4 potencias del 1 al 10 */ #include <stdio.h> main() { int n; puts(" numero\t exp2\t exp3\t exp4"); puts("------\t-----\t-----\t-----"); for (n=0; n<=10; ++n) printf("%2d\t%5d\t%5d\t%5d\n",n,n*n,n*n*n,n*n*n*n); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 84: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

84

Lista de cotejo de la práctica Número 10:

Programa de tabla con potencias.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que imprima una tabla con las cuatro primeras

potencias de los números 1 a 10, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 85: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

85

Unidad de aprendizaje: 1 Práctica número: 11 Nombre de la práctica: Programa de cálculo de factorial. Propósito de la práctica:

Al finalizar la práctica el alumno, realizará un programa que calcule el factorial de un número con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 86: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

86

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que calcule el factorial de un número, transcribiendo el siguiente algoritmo en el

editor de “C”.

/* Factorial de un numero */ #include <stdio.h> main() { int i, numero, factorial=1; printf("\nEscriba un numero entero para calcular su factorial: "); scanf("%d",&numero); for (i=numero; i>1; --i) factorial *= i; printf("\n%d! = %d\n",numero,factorial); }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 87: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

87

Lista de cotejo de la práctica Número 11:

Programa de cálculo de factorial.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que calcule el factorial de un número, transcribiendo el

algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compilo el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 88: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

88

Unidad de aprendizaje: 1 Práctica número: 12 Nombre de la práctica: Programa de tabla de conversiones. Propósito de la práctica:

Al finalizar la práctica el alumno, realizará una tabla de conversiones con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 89: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

89

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que muestre una tabla de conversiones de temperatura de grados Farenheit a grados

Celsius, de 0ºF a 300ºF de 20 en 20ºF, transcribiendo el siguiente algoritmo en el editor de “C”.

/* Sistema de temperaturas */ #include <stdio.h> main() { int i; float c; for (i=0;i<=300;i+=20) { c=(5./9)*(i-32); printf("%3d grados Farenheit equivalen a %4.4f grados Celsius\n",i,c); } }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 90: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

90

Lista de cotejo de la práctica Número 12:

Programa de tabla de conversiones.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que muestre una tabla de conversiones de

temperatura de grados Farenheit a grados Celsius, de 0ºF a 300ºF de 20 en 20ºF, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repetió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 91: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

91

Unidad de aprendizaje: 1 Práctica número: 13 Nombre de la práctica: Programa de tabla de ASCII. Propósito de la práctica:

Al finalizar la práctica el alumno, deberá mostrar una tabla de ASCII con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 2 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 92: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

92

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que muestre la tabla ASCII, transcribiendo el siguiente algoritmo en el editor de “C”.

/* Tabla ASCII */ #include <stdio.h> #define INI 33 #define FIL 15 #define COL 20 main() int k, kk, i; for (k=1; k<FIL; k++) if (k==1) printf ("\t\t\t\t TABLA ASCII\n\n"); else printf("\n"); for (i=1; i<=COL; i++) { kk=INI+(k-1)*COL+i; if (kk>255) break; printf(" %c",kk); } printf("\n"); for (i=1; i<=COL; i++) { kk=INI+(k-1)*COL+i; if (kk>255) return(1); if (kk<100) printf(" %d",kk);

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”.

Page 93: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

93

Procedimiento

7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 94: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

94

Lista de cotejo de la práctica Número 13:

Programa de Tabla de ASCII.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que muestre la tabla ASCII, transcribiendo el algoritmo

en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 95: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

95

Unidad de aprendizaje: 1 Práctica número: 14 Nombre de la práctica: Programa de cantidad mínima. Propósito de la práctica:

Al finalizar la práctica el alumno, deberá mostrar la cantidad mínima de las monedas con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 3 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 96: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

96

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que dándole el importe exacto de una cantidad te indica el mínimo número de

monedas que podrías tener. Las monedas son de 1, 5, 10, 25, 50, 100, 200 y 500 pesos, transcribiendo el siguiente algoritmo en el editor de “C”.

/* Cambio optimo de monedas */ #include <stdio.h> #define LIM 8 int monedas[LIM]= {500, 200, 100, 50, 25, 10, 5, 1}; main() { int num, cantidad, numonedas; printf ("Introduzca el importe exacto: "); scanf ("%d", &cantidad); printf ("El cambio optimo es el siguiente: \n"); for (num=0; num<LIM; num++) { numonedas=cantidad/monedas[num]; if (numonedas != 0) printf ("%d de %d.\n", numonedas, monedas[num]); cantidad= cantidad % monedas[num]; }

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. V Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Imprimir el resultado de la ejecución del programa. 12. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 97: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

97

Lista de cotejo de la práctica Número 14:

Programa de cantidad mínima.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que dándole el importe exacto de una cantidad te

indica el mínimo número de monedas que podrías tener. Las monedas son de 1, 5, 10, 25, 50, 100, 200 y 500 pesos, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Iniciar un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 98: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

98

Unidad de aprendizaje: 1 Práctica número: 15 Nombre de la práctica: Programa de cálculo de vector. Propósito de la práctica:

Al finalizar la práctica el alumno, realizar á un vector por método de la burbuja con lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II

como requerimiento mínimo).

• Impresora.

Page 99: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

99

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el subdirectorio donde se encuentra “C”. 4. Escribir un programa que ordene un vector (de dimensión máxima 15) por el método de la burbuja,

transcribiendo el siguiente algoritmo en el editor de “C”. /* Algoritmo de la burbuja (ordenación de un vector) */ #include <stdio.h> #define LIM 15 main () { int i=0, j, tamanyo, aux; int lista[LIM];printf("Longitud del vector a ordenar "); scanf ("%d",&tamanyo); if (tamanyo > LIM) { printf("El limite del vector se ha excedido"); printf(", por favor cambie el limite en el codigo\n"); return; } while (i<tamanyo) i++; printf("Numero %d: ",i); scanf("%d",&lista[i-1]); printf("\n El vector introducido es el siguiente:\n"); for (i=0; i<tamanyo; i++) printf("%d ",lista[i]); for (i=0; i<tamanyo-1; i++) for (j=i+1; j<tamanyo; j++) if (lista[i] > lista[j]) aux=lista[i]; lista[i]=lista[j]; lista[j]=aux; printf("\n El vector ordenado es el siguiente:\n"); for (i=0; i<tamanyo; i++) printf("%d ",lista[i]); printf("\n"); scanf ("%d",&tamanyo); if (tamanyo > LIM)

Page 100: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

100

Procedimiento

printf("El limite del vector se ha excedido"); printf(", por favor cambie el limite en el codigo\n"); return; while (i<tamanyo) i++; printf("Numero %d: ",i); scanf("%d",&lista[i-1]); printf("\n El vector introducido es el siguiente:\n"); for (i=0; i<tamanyo; i++) printf("%d ",lista[i]); for (i=0; i<tamanyo-1; i++) for (j=i+1; j<tamanyo; j++) aux=lista[i]; lista[i]=lista[j]; lista[j]=aux; printf("\n El vector ordenado es el siguiente:\n"); for (i=0; i<tamanyo; i++) printf("%d ",lista[i]); printf("\n"); printf("Longitud del vector a ordenar "); scanf ("%d",&tamanyo); if (tamanyo > LIM) printf("El limite del vector se ha excedido"); printf(", por favor cambie el limite en el codigo\n"); return; while (i<tamanyo) if (lista[i] > lista[j]) aux=lista[i]; lista[i]=lista[j]; lista[j]=aux; printf("\n El vector ordenado es el siguiente:\n"); for (i=0; i<tamanyo; i++) printf("%d ",lista[i]); printf("\n");

5. Accesar el subdirectorio donde se encuentra “C”. 6. Abrir el editor de “C”. 7. Transcribir el programa en el editor de “C”. 8. Guardar el archivo que contiene el programa transcrito. 9. Compilar el programa. 10. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 11. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 101: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

101

Lista de cotejo de la práctica Número 15:

Programa de cálculo de vector.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del

equipo.

• Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el subdirectorio donde se encuentra “C”. 4. Escribió un programa que ordene un vector (de dimensión máxima 15) por el

método de la burbuja, transcribiendo el algoritmo en el editor de “C”.

5. Accesó el subdirectorio donde se encuentra “C”. 6. Abrió el editor de “C”. 7. Transcribió el programa en el editor de “C”. 8. Guardó el archivo que contiene el programa transcrito. 9. Compiló el programa. 10. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

11. Imprimió el resultado de la ejecución del programa. 12. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables. Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 102: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

102

Unidad de aprendizaje: 1 Práctica número: 16 Nombre de la práctica: Uso de sentencia if-else. Propósito de la práctica:

Al finalizar la práctica el alumno, aplicará la sentencia if-else con el lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

Page 103: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

103

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 10. Encender equipo de cómputo. 11. Abrir sesión de ambiente gráfico. 12. Emular MS-DOS, haciendo clic en su icono correspondiente. 13. Escribir un programa que emplee la sentencia if-else para determinar cuándo un dígito escrito por el

usuario es par o impar e imprimir un mensaje que indique qué tipo de dígito fue el que introdujo el usuario.

14. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto. 15. Realizar una prueba de escritorio. 16. Accesar el subdirectorio donde se encuentra “C”. 17. Abrir el editor de “C”. 18. Transcribir el programa en el editor de “C”. 19. Guardar el archivo que contiene el programa transcrito. 20. Compilar el programa. 21. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 22. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 104: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

104

Lista de cotejo de la práctica Número 16:

Uso de sentencia if-else.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Emuló MS-DOS, haciendo clic en su icono correspondiente. 4. Escribió un programa que emplee la sentencia if-else para determinar

cuándo un dígito escrito por el usuario es par o impar e imprimir un mensaje que indique qué tipo de dígito fue el que introdujo el usuario.

5. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

6. Realizó una prueba de escritorio. 7. Accesó el subdirectorio donde se encuentra “C”. 8. Abrió el editor de “C”. 9. Transcribió el programa en el editor de “C”. 10. Guardó el archivo que contiene el programa transcrito. 11. Compiló el programa. 12. ,Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

13. Repitió los procedimientos con asesoría del PSP. Depositó los residuos recuperables.

Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 105: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

105

Unidad de aprendizaje: 1 Práctica número: 17 Nombre de la práctica: Uso de sentencia bucle While Propósito de la práctica:

Al finalizar la práctica el alumno, aplicará el bucle while con el lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

Page 106: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

106

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Emular MS-DOS, haciendo clic en su icono correspondiente. 4. Escribir un programa que emplee el bucle while para controlar los cálculos y la impresión de todas las

potencias de 2 empezando en 0 y terminando en 2 elevado a 8. 5. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto. 6. Realizar una prueba de escritorio. 7. Accesar el subdirectorio donde se encuentra “C”. 8. Abrir el editor de “C”. 9. Transcribir el programa en el editor de “C”. 10. Guardar el archivo que contiene el programa transcrito. 11. Compilar el programa. 12. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse que

el programa cumpla con el objetivo establecido. 13. Apagar el equipo de cómputo. 14. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 107: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

107

Lista de cotejo de la práctica Número 17:

Uso de sentencia bucle While.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Emuló MS-DOS, haciendo clic en su icono correspondiente. 4. Escribió un programa que emplee el bucle while para controlar los cálculos y

la impresión de todas las potencias de 2 empezando en 0 y terminando en 2 elevado a 8.

5. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

6. Realizó una prueba de escritorio. 7. Accesó el subdirectorio donde se encuentra “C”. 8. Abrió el editor de “C”. 9. Transcribió el programa en el editor de “C”. 10. Guardó el archivo que contiene el programa transcrito. 11. Compiló el programa. 12. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

13. Apagó el equipo de cómputo. 14. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel..

Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 108: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

108

RESUMEN

C es un lenguaje de programación desarrollado en 1972 por el estadounidense Dennis Ritchie en los Laboratorios Bell. Debe su nombre a que su predecesor inmediato había sido llamado lenguaje de programación B. Aunque muchos consideran que C es un lenguaje ensamblador más independiente de la máquina que un lenguaje de alto nivel. Su estrecha asociación con el sistema operativo UNIX, su enorme popularidad y su homologación por el American National Standards Institute (ANSI) lo han convertido quizá en lo más cercano a un lenguaje de programación estandarizado en el sector de microcomputadoraes o microcomputadoras y estaciones de trabajo. Fue a partir de 1990 cuando se extendió su uso, tanto como lenguaje para el desarrollo de aplicaciones como para sistemas operativos. Muy ligado a UNIX en sus orígenes, su uso es, hoy día, prácticamente general. Las versiones más utilizadas en computadoraes personales son Visual C++ de Microsoft y C++ Builder de Borland (actualmente Inprise Corp.). También ha tenido una gran influencia en el desarrollo del lenguaje JAVA, con el que mantiene similitudes en cuanto a la sintaxis y estructura de la programación. Sistema informático Un sistema informático suele estar compuesto por una unidad central de proceso (CPU), dispositivos de entrada, dispositivos de almacenamiento y dispositivos de salida. La CPU incluye una unidad aritmético-lógica (ALU), registros, sección de control y bus lógico. La unidad aritmético-lógica efectúa las operaciones aritméticas y lógicas. Los registros almacenan los datos y los resultados de las operaciones Los Elementos utilizados en C para la elaboracaion de un programa se conforman por: Operadores, Expresiones, Operadores y Expresiones Lógicos En C, las sentencias se ejecutan sucesivamente una tras otra. Esto define un camino o dirección según la cual se va desarrollado el programa. Sin embargo, habrá momentos en que el programa deba ejecutar determinadas partes dependiendo del estado en el que se halle el programa, o de las variables externas. La principal particularidad que posee C es el manejo de rutinas que controlan el flujo de datos que ingresan y egresan en cada proceso, que se ejecuta bajo la estructura de dicho lenguaje. Es de destacar que las proposiciones son expresiones cuya escritura finaliza con un punto y coma (;), el que cumple la función de terminador de sentencias y no la de un separador de las mismas. Las estructuras de control de flujo son:

Page 109: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

109

• If-else. • else if • El ciclo while • El ciclo do-while • El ciclo for • Las sentencias break y continue • La sentencia de selección múltiple switch • Goto y etiquetas

Page 110: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

110

AUTOEVALUACIÓN DE CONOCIMIENTOS DEL CAPITULO 1

1. ¿Qué es algoritmo?

2. ¿Qué es pseudocódigo?

3. ¿Qué es diagrama de flujo?

4. Describa las consrucciones algoritmicas

5. ¿Cuáles son los tipos de datos en C?

6. ¿Cuáles son los tipos de variables?

7. ¿Cuáles son los operadores aritméticos?

8. ¿Cuáles son las expresiones condicionales?

9. ¿Qué función tienen los operadores ++ y –¿

10. ¿Qué es control de flujo?

11. ¿Cuáles son las preposiciones?

12. ¿Cómo se utiliza la instrucción goto?

Page 111: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

111

RESULTADOS DE AUTOEVALUACIÓN DE CONOCIMIENTOS Capítulo 1

1. El término algoritmo se aplica a muchos de los métodos de resolución de problemas que emplean una secuencia mecánica de pasos, como en el diseño de un programa de computadora o computadora

2. Pseudo = falso. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para lenguaje de computadoras

3. Son la representación gráfica de la solución algorítmica de un problema 4. .

construcciones condicionales (if,switch) construcciones iterativas(while,for,do...while) subrutinas (funciones)

5. .

Tipo de Datos Tamaño Descripción

char Normalmente 8 bits Carácter

short Normalmente 16 bits Entero corto con signo

int Depende de la implementación Entero con signo

unsigned Depende de la implementación Entero sin signo

long Normalmente 32 bits Entero largo con signo

float Normalmente 32 bits Flotante de precisión simple

double Normalmente 64 bits Flotante de precisión doble

6. . Automáticas y Externas Las variables automáticas - aparecen y desaparecen con la llamada de la función. Las variables externas... - se declaran globalmente: extern int max; - se definen fuera de las funciones: int max; - se declaran dentro de las funciones: extern int max;

7. .

+ (SUMA) - (RESTA) * (MULTIPLICACION) / (DIVISION) % (PORCENTAJE)

Page 112: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

112

8. . < menor que > mayor que <= menor o igual que >= mayor o igual que

9. . Las expresiones ++a y a++ provocan que a se incremente en 1. En forma similar, - -a

y a- - causan que a disminuya en 1. No obstante, al usar ++a en una expresión, el valor de a se aumenta antes de evaluar la expresión, mientras que al emplear a++, la expresión se evalúa con el valor actual de a, incrementándolo después. Lo mismo ocurre con - -a y a- -.

10. Instrucciones que se ejecutan sucesivamente una tras otra. Esto define un camino o

dirección según la cual se va desarrollado el programa. 11. .

• If-else. • while • El ciclo do-while • El ciclo for • Las sentencias break y continue. • Goto y etiquetas

12. .

goto etiqueta; parriba:// declaración de etiqueta ... // salto directo a una etiqueta if (error) goto pabajo; ... if (repetir) goto parriba; pabajo: // declaración de etiqueta

Page 113: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

113

APLICACIÓN DE COMPONENTES DE LENGUAJE C. Al finalizar la unidad, el alumno aplicará los elementos del lenguaje C mediante estructura de datos para la elaboración de programas estructurados

Page 114: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

114

MAPA CURRICULAR DE LA UNIDAD DE APRENDIZAJE

Resultados de Aprendizaje

2.3 Elaborar rutinas de programación usando funciones, apuntadores y arreglos codificados en lenguaje C.

40 hrs.

2.4 Desarrollar programas en lenguaje C aplicando estructuras, formatos de entrada y salida codificados en lenguaje C.

40 hrs.

Módulo

Unidad de Aprendizaje

Programación Estructurada Codificada

144 hrs.

1 Manejo de sintaxis y elementos del lenguaje C.

2 Aplicación de componentes de lenguaje C.

80 hrs. 64 hrs.

Page 115: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

115

SUMARIO

FUNCIONES APUNTADORES Y ARREGLOS ESTRUCTURAS ENTRADA Y SALIDA

RESULTADO DE APRENDIZAJE 2.1 Elaborar rutinas de programación usando funciones, apuntadores y arreglos codificados en lenguaje C 2.1.1 FUNCIONES

Un programa C está formado por un conjunto de funciones que al menos contiene la función main. Una función se declara con el nombre de la función precedido del tipo de valor que retorna y una lista de argumentos encerrados entre paréntesis. El cuerpo de la función está formado por un conjunto de declaraciones y de sentencias comprendidas entre llaves.

• Definición

La definición de una función especifica lo siguiente:

• Nombre de la función • Número de argumentos que lleva

y tipo de cada uno de ellos • Tipo de datos que devuelve • Cuerpo de la función (el código

que ejecuta)

• Declaración

tipo nombre ( arg1, arg2, ... ) { ... cuerpo ... }

Cada argumento se especifica como en una declaración de variable. El cuerpo de la función debería contener una sentencia donde se devuelve el resultado de la función, que se hace de esta forma:

return expresión; La función devolverá el resultado de la expresión. Ejemplo de función Función que devuelve la suma de dos enteros. int suma ( int a, int b ) { return a+b; }

Page 116: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

116

• Llamadas a funciones

Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se deseen dar a los argumentos: función ( expr1, expr2, ... ) Cada expresión se evalúa y su resultado se pasa como argumento a la función. Las expresiones han de tener el mismo tipo del argumento correspondiente, o al menos un tipo compatible. x = suma ( 1, a+5 ); /* correcto */ y = suma ( “hola”, 5 ); /* arg. 1 incorrecto */ Una llamada a función es una expresión, con todo lo que ello implica. No es necesario recoger en una variable el valor devuelto por la función. (Por ejemplo, printf y scanf son funciones que devuelven un entero). Funciones sin argumentos Se declaran con void entre paréntesis (sólo en C). int fecha (void) { ... } Se las llama así: dato = fecha(); Es decir, siempre hay que escribir los paréntesis aunque no haya argumentos.

En C++ se declaran sólo con los paréntesis, sin el void.

CONTEXTUALIZACIÓN

• Competencia para la vida Razonar la importancia

que ha tenido el avance de las Tecnologías de Información y Comunicaciones (TIC´s) en el Accesó de la información.

El PSP: − Resaltará el paralelismo que existe

en los avances de la informática y las diversas ciencias como; la medicina, la física, la química, etc.

En relación con la Integración de la Informática Educativa en el aprender de las ciencias, es necesario analizar la integración implícita y explícita de las Nuevas Tecnologías de la Información y Comunicación (NTIC) como herramientas de apoyo en la construcción del significado de conceptos, procesos y fenómenos científicos. El rol de la Informática Educativa en el aprender y construir de las Ciencias Naturales (Biología, Física y Química) no se centra en el contexto de un contenido específico en el aprender de las ciencias, sino que apunta a la integración fluida de un conjunto de nuevas herramientas que apoyen un(os) método(s) para construir conceptos y procesos científicos. Estas herramientas constituyen un valor agregado para la educación de las

Page 117: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

117

ciencias, ya que son herramientas que expanden y profundizan el campo de acción de otras herramientas e instrumentos más tradicionales empleados en las ciencias. Las herramientas digitales permiten registrar y concretar procesos típicos de la ciencia tales como el análisis y revisión de la literatura científica, recolección de datos, contrastación de hipótesis, etc. La idea es que utilicemos la informática como un microscopio digital, que nos abre las perspectivas de un mundo globalizado que incrementa la construcción de los conceptos científicos, que otorga herramientas para comprender los fenómenos de la naturaleza y que también presenta nuevos desafíos para la ciencia y la tecnología. Así como escuchamos decir que el computador permite a los alumnos ingresar a un mundo cibernético y digital, podemos decir que las herramientas digitales permiten acercar tempranamente el hacer de las ciencias a los niños desde el espacio donde ocurre su aprender: en el aula. ¿Qué se persigue en la enseñanza/aprendizaje/educación de la(s) ciencia(s)? Principalmente, en lo que compete a la Informática Educativa, lo que se persigue es que los aprendices:

- Construyan y reconstruyan conceptos y procesos científicos.

- Reelaboren sus concepciones erradas sobre cómo funcionan los fenómenos científicos.

- Utilicen en sus construcciones los así denominados «procesos científicos».

- Apliquen la estrategia de resolución de problemas en ciencias.

- Desarrollen Microproyectos de investigación científica.

¿Qué herramientas provee la Informática Educativa para apoyar el logro de los objetivos anteriores? Principalmente, las siguientes modalidades: 1. Software educativo para apoyar el

aprendizaje de las ciencias, con énfasis en: Ciencias Naturales - Software de Modelación

computacional y simulación de procesos científicos, donde el aprendiz pueda manipular y controlar variables, resolver problemas y tomar decisiones.

- Software de presentación de información y conocimiento, como el cuerpo humano y viaje hacia la vida, en los que los aprendices pueden observar e interactuar con procesos biológicos imposibles de observar directamente.

- Software para «hacer cosas», «diseñar cosas», «armar cosas», «construir cosas», por ejemplo, el software cómo funcionan las cosas, que permite que los aprendices se involucren en proyectos científicos, aplicando los principios de la ciencia y creando sus propios inventos.

Page 118: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

118

2. Construcción de prototipos de software multimediales con contenido científico. Aquí la idea es que utilizando software como Macromedia Director, Delphi, html y otros, los alumnos y profesores se involucran en el proceso de producción de software sobre conceptos y procesos científicos. Esta producción puede ser en el ámbito de un software convencional o de un sitio Web. En este proceso de construcción, los alumnos utilizan destrezas y habilidades de análisis y síntesis de información científica, recopilación e interpretación de datos, elaboración de conclusiones y discusiones, así como también habilidades de presentación y confrontación de ideas. Por cierto, todas ellas son habilidades fundamentales en la educación de la ciencia.

3. Software de productividad para

apoyar el desarrollo de proyectos y resolución de problemas en ciencias; por ejemplo, elaborando un boletín informativo en Word de la relación entre grandes procesos químicos industriales y el desarrollo económico del país, graficando la solubilidad y realizando cálculos estequiométricos, aplicando funciones en Excel, explicando la proporción de elementos constituyentes de la sangre a través de gráficas de pay, construyendo animaciones en Power Point de procesos biológicos como mitosis y meiosis, y presentando reacciones químicas espontáneas de difícil observación a través de secuencias de diapositivas.

4. Laboratorios de ciencias basados en microcomputadores (micocomputerbaset Laboratory, MBL). Actividades donde el computador colecciona datos en tiempo real mientras el alumno observa un experimento en progreso. El microcomputador es usado como instrumento poderoso y sensible para adquirir datos, desplegar gráficos y realizar análisis.

5. Telecomunicaciones, que se utilizan

para realizar actividades con el uso de Internet y sus servicios (Email, FTP, WEB, NewsGroup, Talk) para comunicar información, discutir, diseminar resultados, generar ideas colectivamente, para acceder a bases de datos, servicios de información científicos, datos climáticos, etc. Grupos de interés, conferencias electrónicas y foros. Acceso a páginas de científicos, bibliotecas, laboratorios, etc. También se usan las telecomunicaciones para desarrollar proyectos colaborativos de investigación científica en el aula y resolución cooperativa de problemas en ciencias, con aprendices de otros establecimientos y otros lugares dentro y fuera del país.

Page 119: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

119

2.1.2 APUNTADORES Y ARREGLOS

Un arreglo es un conjunto de celdas de memoria relacionadas entre sí, ya que todos tienen el mismo nombre y almacenan el mismo tipo de datos, para referirse a una celda en particular, algún elemento dentro del arreglo y, entre corchetes [], el número de posición del elemento dentro del arreglo.

El primer elemento se almacena en la posición 0 del arreglo; es decir, el primer elemento del arreglo se conoce como a[0], el segundo como a[1], el séptimo como a[7] y en general el elemento de orden i del arreglo a se conoce como a[i-1].

El número de posición que aparece dentro de los corchetes se conoce como índice y debe ser un número entero o una expresión entera, por ejemplo:

Apuntadores y direcciones.

Los símbolos * y & pueden ser usados para el contenido y la dirección de una variable, respectivamente. Por ejemplo, si "x" es una variable de tipo "int" y "y" es una variable de tipo "int" y "px" es una variable de tipo "apuntador a int" entonces, se podría hacer lo siguiente:

Asignar la dirección de "x" al apuntador "px" px = &x;

Aumentar en 1, el valor apuntado por "px" (es decir, el valor de "x") y asignarlo a la variable "y". y = *px+1;

Aumentar en 1, el valor del apuntador "px" (es decir, el valor de una variable desconocida) y asignarlo a la variable "y".

Aumentar en 1 el valor apuntado por "px" (es decir, el valor de "x"), *px+=1; o bien (*px)++; notar que en este último ejemplo es necesario usar parÚntesis, debido a que, aunque la prioridad de "*" y "++" es igual, la asociatividad es de DERECHA a IZQUIERDA. Así, sin los parÚntesis, la expresión "*px++;" se entendería como: "*(px++);".

• Arreglos y cadenas

Los arreglos permiten agrupar datos, usando un mismo identificador. Todos los elementos de un arreglo son del mismo tipo y para acceder a cada elemento se usan subíndices. Mas adelante se presentan los arreglos y las cadenas. Las cadenas se consideran como un arreglo de tipo char.

Se clasifican como se describe a continuación: • Arreglos unidimensionales y

bidimensionales

Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. A los arreglos unidimensionales se les conocen como vectores y a los bidimensionales como matrices. Para acceder a un elemento en particular de un arreglo se usa un índice.

Page 120: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

120

El formato para declarar un arreglo unidimensional es:

tipo nombre_arr [ tamaño ]

Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma:

int listanum[10];

En C, todos los arreglos usan cero como índice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde listanum[0] hasta listanum[9]. La forma como pueden ser accesados los elementos de un arreglo es como a continuación se muestra:

listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/

num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */

El lenguaje C no realiza comprobación de contornos en los arreglos. En caso de que sobrepase el final durante una operación de asignación, entonces se asignarán valores a otra variable, o a un trozo del código el cual es una condicion no deseada. Como programador, se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos el programa.

Para declarar arreglos con más de una dimensión, el formato general es:

tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];

Por ejemplo un arreglo de enteros bidimensionales se escribirá como:

int tabladenums[50][50];

Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados. Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional.

tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/

num = tabladenums[25][16];

Si se desea inicializar arreglos, es decir asignar valores al arreglo en el momento de ser declarados, debe hacerse con el siguiente formato:

tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores};

Ejemplo:

int i[10] = {1,2,3,4,5,6,7,8,9,10};

int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

Los valores para el número de elementos deben ser constantes, y se pueden usar tantas dimensiones como queramos, limitado sólo por la memoria disponible.

Page 121: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

121

• Cadenas

Las cadenas de caracteres son un tipo especial de arreglo pues se trata de un conjunto de datos de tipo char que termina con un caracter nulo. Básicamente el manejo de cadenas es muy similar al de los arreglos.

Ejemplo:

#include <stdio.h> void main() { char cadena[6]; /* Define una cadena de caracteres */ cadena[0]='L'; cadena[1]='e'; cadena[2]='t'; cadena[3]='r'; cadena[4]='a'; cadena[5]='s'; cadena[6]=\0; /* Caracter nulo, significa el fin del texto */ printf("La cadena es %s\n", cadena); printf("La tercera letra de la cadena es: %c\n", cadena[2]); printf("Una parte de la cadena es : %s\n", &cadena[3]); getch(); }

La variable cadena es una cadena que puede almacenar hasta seis caracteres, tomando en cuenta que se requiere un espacio para almacenar el caracter nulo al final de la cadena. El símbolo %s, mostrado en los enunciados printf( ), le indica al sistema que despliegue una cadena de caracteres empezando con el elemento subíndice cero, que en el código de ejemplo es la letra L, y continuando hasta encontrar el caracter nulo. Observe que en los enunciados printf( ), cuando se indica la variable cadena sin corchetes, indica que se despliegue la totalidad de la cadena, en tanto que al indicar la variable

cadena con algún valor entre corchetes se refiere a un solo elemento de la cadena. En este caso, debemos utilizar en el enunciado printf( ) el símbolo %c que le indica al sistema que despliegue un solo caracter. El símbolo & especifica la dirección en memoria de cadena[3]. A continuación se muestra un ejemplo del manejo de cadenas.

Ejemplo:

#include <stdio.h> #include <string.h> void main() { char cadena1[17], cadena2[13], titulo[26], prueba[29]; strcpy(cadena1, "Pedro Picapiedra"); strcpy(cadena2, "Pablo Marmol"); strcpy(titulo, "- - -Los Picapiedra- - -"); printf("%s\n\n\n", titulo); printf("Los personajes principales son: %s\n", cadena1); printf("y : %s\n\n", cadena2); if(strcmp(cadena1, cadena2) > 0) strcpy(prueba, cadena1); else strcpy(prueba, cadena2); printf("La cadena mas grande es: %s\n\n", prueba); strcpy(prueba, cadena1); strcat(prueba, " y "); strcat(prueba, cadena2); printf("%s son vecinos\n", prueba); getch(); }

Como puedes ver, en este programa se han definido cuatro arreglos de tipo char de diferente longitud. Enseguida nos encontramos con la función strcpy( ) que sirve para copiar la cadena especificada en la segunda entidad dentro del paréntesis de la función en un arreglo de tipo char especificado por la primera entidad dentro del paréntesis de la función strcpy. De esta forma, por ejemplo, la cadena

Page 122: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

122

"Pedro Picapiedra" se copia en el arreglo de tipo char llamado cadena1.

Más adelante en el código nos encontramos con la función strcmp( ) que como es fácil adivinar, sirve para comparar, letra por letra, dos cadenas especificadas dentro del paréntesis. Esta función devuelve 1, si la primera cadena es mayor que la segunda; es decir, si tiene mayor cantidad de letras. Si ambas cadenas son iguales, la función devuelve 0, en tanto que si la primera cadena es menor que la segunda entonces el valor devuelto es -1.

Por último, tenemos la función strcat( ) que ejecuta una concatenación de cadenas; es decir, copia la segunda cadena especificada dentro del paréntesis de la función enseguida de la primera cadena especificada, agregando un caracter nulo al final de la cadena resultante.

Como ya se mencionó, se debe especificar la terminacion de la cadena con el carácter nulo '\0'. Por lo anterior, cuando se declare un arreglo de caracteres, se debe considerar un carácter adicional a la cadena más larga que se vaya a guardar. Por ejemplo, si se quiere declarar un arreglo cadena que guarde una cadena de diez caracteres, se hará como sigue:

char cadena[11];

Se pueden hacer también inicializaciones de arreglos de caracteres en donde automáticamente C asigna el caracter nulo al final de la cadena, de la siguiente forma:

char nombre_arr[ tam ]="cadena";

Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':

char cadena[5]="hola";

El código anterior es equivalente a:

char cadena[5]={'h','o','l','a','\0'};

Para asignar la entrada estándar a una cadena, se puede usar la función scanf con la opción %s (observar que no se requiere usar el operador &) de igual forma para mostrarlo en la salida estándar.

Por ejemplo:

void main() { char nombre[15], apellidos[30];

printf("Introduce tu nombre: ");

scanf("%s",nombre);

printf("Introduce tus apellidos: ");

scanf("%s",apellidos);

printf("Usted es %s %s\n",nombre,apellidos);

getch();

}

Ahora podemos ver que las cadenas de caracteres son un tipo especial de arreglos. Se trata en realidad de arreglos de una dimensión de tipo char.

Si definimos el arreglo de 10 enteros de la siguiente manera: int a[10]; podemos referenciar a[0] a[1] .. a[9]. Si además

Page 123: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

123

definimos el apuntador a entero "pa" int *pa; y le asignamos la dirección del primer elemento del arreglo "a", pa=&pa[0]; o bien pa=a; entonces, el contenido de "a[i]" puede ser visto con *(pa+i)

En apuntadores a arreglos de caracteres, las 2 siguientes declaraciones son equivalentes:

char s[];

char *s;

Aritmética de direcciones. Son posibles las siguientes operaciones con apuntadores:

- Sumar y restar un entero a un apuntador.

- Restar y comparar 2 apuntadores.

- Comparar un apuntador con NULL.

Apuntadores a caracteres y a funciones.

En el siguiente ejemplo, la variable "mensaje" es SOLO UN APUNTADOR.

char *message="now is the time";

No se debe confundir el envío de un APUNTADOR a un arreglo de caracteres con el envío del ARREGLO de caracteres. Por ejemplo, en la siguiente función se envían los apuntadores a 2 arreglos de caracteres (cuya memoria fue asignada en otra parte del programa).

strcpy(s,t) /* copia t a s, con apuntadores */

{

while (*s++=*t++);

}

• Arreglos Multidimensionales.

En C, los arreglos de 2 dimensiones se implementan como arreglos unidimensionales. Donde cada elemento es, a su vez, un arreglo unidimensional. Por lo anterior, la sintaxis en C es

day_tab[i][j]; /* [renglón] [columna] */en lugar de:

day_tab[i,j]; /* INCORRECTO */

Los arreglos de 2 dimensiones pueden ser inicializados como sigue:

static int day_tab[2][13] =

{

{0,31,28,..,31},

{0,31,29,..,31},

};

Arreglo de apuntadores. Apuntadores a apuntadores. Inicialización de arreglos de apuntadores:

static char *name[]=

{

"mes ilegal",

Page 124: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

124

"enero",...

"diciembre",

};

Diferencia entre apuntadores y arreglos multidimensionales.

No se deben confundir las declaraciones:

int a[10][20]; /* matriz de 10*20=200 enteros */

int *b[10]; /* vector de 10 apuntadores a enteros */

/* o 10 apuntadores a arreglos a enteros */

Si consideramos que en los 2 arreglos anteriores, usamos [renglón] [columna]

Entonces tenemos 2 diferencias básicas:

1. En el arreglo "a", el número de columnas (elementos) x renglón es 20 para todos los renglones. En el arreglo "b" podemos tener un número diferente de columnas x renglón para cada renglón. Por ejemplo: 2 elementos en el renglón 0; 5 en el renglón 1; e incluso una matriz de 4x4 en el renglón 3, etc.

2. La memoria ocupada por los 2 arreglos es diferente. Inclusive en el caso de que los apuntadores del arreglo "b" apuntarán a un arreglo de 20 elementos por renglón. La memoria ocupada por los 2 arreglos sería diferente.

Para el arreglo "a", 200 enteros.

Para el arreglo "b", 200 enteros + 10 apuntadores.

Argumentos de la línea de comandos.

Al correr el programa ejecutable producido por un programa fuente escrito en C, podemos agregar argumentos en la línea de comandos. Estos argumentos pueden ser usados para producir efectos diferentes al correr el mismo programa. Así, podríamos usar opciones como las usadas en los sistemas operativos:

C:> copy

C:> copy a:\arch1 b:

C:> copy a:\arch1 b:\arch2

El procesamiento de los argumentos de la línea de comandos se puede ejemplificar con el siguiente programa en C, que simplemente escribe los argumentos en la salida estándard.

/* escribe los argumentos en la salida estándard */

main(int argc, char *argv[])

{

while(--argc>0)

printf("%s%c",*++argv,(argc>1)?' ':'\n'); }

Page 125: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

125

"argc" y "argv" son palabras predefinidas. "argc" indica el número de argumentos (incluyendo el nombre del programa ejecutable). "argv" es un arreglo de apuntadores a arreglos de caracteres. "argv[i]" es un apuntador al arreglo de caracteres del argumento i.

Por ejemplo, si "echo.exe" es un programa ejecutable producido por un programa escrito en C, entonces al ser corrido con: echo hello world, los valores que tomarían "argc" y "argv" en caso de haber sido usados son:

argc=3 *argv[0]=echo *argv[1]=hello *argv[2]=world

• Punteros Es una Variable que representa la posición (en vez del valor) de otro dato, tal como una variable o un elemento de una formación. Los punteros son usados frecuentemente en C y tienen gran cantidad de aplicaciones, por ejemplo, pueden ser usados para trasvasar información entre una función y sus puntos de llamada. En particular, proporcionan una forma de devolver varios datos desde una función a través de los argumentos de la función.

Para entender qué es un puntero, veremos primero cómo se almacenan los datos en un computadora. La memoria de un computadora está compuesta por unidades básicas llamadas bits. Cada bit sólo puede tomar dos valores, normalmente denominados alto y bajo, ó

1 y 0. Pero trabajar con bits no es práctico, y por eso se agrupan. Cada grupo de 8 bits forma un byte u octeto. En realidad, el microprocesador, y por lo tanto nuestro programa, sólo puede manejar directamente bytes o grupos de dos o cuatro bytes. Para acceder a lo bits hay que acceder antes a los bytes. Cada byte tiene una dirección, llamada normalmente dirección de memoria.

Ahora veremos cómo funcionan los punteros.

Un puntero es un tipo especial de variable que contiene una dirección de memoria. Por supuesto, a partir de esa dirección de memoria puede haber cualquier tipo de objeto: un char, un int, un float, un array, una estructura, una función u otro puntero. Seremos nosotros los responsables de decidir ese contenido.

• Asignación de Punteros:

Los punteros se declaran igual que el resto de las variables, pero precediendo identificador con el operador de indirección, (*), que leeremos como "puntero a".

Sintaxis:

<tipo> *<identificador>;

Ejemplos:

int *entero;

char *carácter;

struct stPunto *punto;

Page 126: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

126

Los punteros siempre apuntan a un objeto de un tipo determinado, en el ejemplo, "entero" siempre apuntará a un objeto de tipo "int".

Debes tener muy claro que "entero" es una variable del tipo "puntero a int", y que "*entero" NO es una variable de tipo "int".

Si "entero" apunta a una variable de tipo "int", "*entero" será el contenido de esa variable, pero no olvides que "*entero" es un operador aplicado a una variable de tipo "puntero a int", es decir "*entero" es una expresión, no una variable.

Para averiguar la dirección de memoria de cualquier variable usaremos el operador de dirección (&), que leeremos como "dirección de". Aquí esta (&)

Declarar un puntero, no creará un objeto. Por ejemplo, "int *entero" no crea un objeto de tipo "int" en memoria, sólo crea una variable que puede contener una dirección de memoria. Se puede decir que existe físicamente la variable "entero", y también que esta variable puede contener la dirección de un objeto de tipo "int". Lo veremos mejor con otro ejemplo:

int A, B;

int *entero;

...

B = 213; /* B vale 213 */

entero = &A; /* entero apunta a la dirección de la variable A */

*entero = 103; /* equivale a la línea A = 103; */

B = *entero; /* equivale a B = A; */

...

En este ejemplo, vemos que "entero" puede apuntar a cualquier variable de tipo "int", y que podemos hacer referencia al contenido de dichas variables usando el operador de indirección (*).

Como todas las variables, los punteros también contienen "basura" cuando son declaradas. Es costumbre dar valores iniciales nulos a los punteros que no apuntan a ningún sitio concreto:

entero = NULL;

caracter = NULL;

NULL es una constante que está definida como cero en varios ficheros de cabecera, como "stdio.h" o "iostream.h", y normalmente vale 0L.

• Aritmética de apuntadores

Aunque no son muchas las operaciones que se pueden hacer con los punteros, cada una tiene sus peculiaridades.

Asignación: Ya hemos visto cómo asignar a un puntero la dirección de una variable. También podemos asignar un puntero a otro, esto hará que los dos apunten a la misma posición:

int *q, *p;

Page 127: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

127

int a;

q = &a; /* q apunta al contenido de a */

p = q; /* p apunta al mismo sitio, es decir, al contenido de a */

Operaciones aritméticas: También hemos visto cómo afectan a los punteros las operaciones de suma con enteros. Las restas con enteros operan de modo análogo. Pero, ¿qué significan las operaciones de suma y resta entre punteros?, por ejemplo:

int vector[10];

int *p, *q;

p = vector; /* Equivale a p = &vector[0]; */

q = &vector[4]; /* apuntamos al 5º elemento */

cout << q-p << endl;

El resultado será 4, que es la "distancia" entre ambos punteros. Normalmente este tipo de operaciones sólo tendrá sentido entre punteros que apunten a elementos del mismo array. La suma de punteros no está permitida.

Comparación entre punteros:

Comparar punteros puede tener sentido en la misma situación en la que lo tiene restar punteros, es decir, averiguar posiciones relativas entre punteros que apunten a elementos del

mismo array. Existe otra comparación que se realiza muy frecuente con los punteros. Para averiguar si estamos usando un puntero es corriente hacer la comparación como sigue:

if(NULL != p)

o simplemente

if(p)

Y también:

if(NULL == p)

O simplemente

if(!p)

• Punteros y arreglos

Existe una equivalencia casi total entre arrays y punteros. Cuando declaramos un array estamos haciendo varias cosas a la vez:

Declaramos un puntero del mismo tipo que los elementos del array, y que apunta al primer elemento del array.

Reservamos memoria para todos los elementos del array. Los elementos de un array se almacenan internamente en el computadora en posiciones consecutivas de la memoria.

La principal diferencia entre un array y un puntero es que el nombre de un array es

Page 128: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

128

un puntero constante, no podemos hacer que apunte a otra dirección de memoria. Además, el compilador asocia una zona de memoria para los elementos del array, cosa que no hace para los elementos apuntados por un puntero auténtico.

Ejemplo:

int vector[10];

int *puntero;

puntero = vector; /* Equivale a puntero = &vector[0]; esto se lee como "dirección del elemento cero de vector" */

*puntero++; /* Equivale a vector[0]++; */

puntero++; /* puntero equivale a &vector[1] */

¿Qué hace cada una de estas instrucciones?:

La primera incrementa el contenido de la memoria apuntada por "puntero", que es vector[0].

La segunda incrementa el puntero, esto significa que apuntará a la posición de memoria del siguiente "int", pero no a la siguiente posición de memoria. El puntero no se incrementará en una unidad, como tal vez sería lógico esperar, sino en la longitud de un "int".

Otro ejemplo:

struct stComplejo {

float real, imaginario;

} Complejo[10];

stComplejo *p;

p = Complejo; /* Equivale a p = &Complejo[0]; */

p++; /* entero == &Complejo[1] */

En este caso, al incrementar p avanzaremos las posiciones de memoria necesarias para apuntar al siguiente complejo del array "Complejo". Es decir avanzaremos sizeof(stComplejo) bytes.

Apuntadores a funciones

En la definición:

/* compara 2 cadenas */

int strcmp();

En la declaración:

/* apuntador a función que devuelve un entero */

int (* comp)();

/* función que devuelve apuntador a entero */

int *comp();

Page 129: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

129

CONTEXTUALIZACIÓN

• Competencia tecnológica

Comparar herramientas de software para la aplicación de operaciones automatizadas, obteniendo ventajas y desventajas

Existen diversos problemas en los cuales se requiere referenciar un dato. Por ejelo, si tenemos la información de los alumnos de Ingeniería y sus calificaciones:

Matrícula Nombre Carrera

123456 Juan ISC

654321 Luis ISE

333111 Pepe IEC

Matrícula Parcial Calificación

123456 1 80

123456 2 93

654321 1 87

333111 1 69

Por ejemplo, la primera tabla describe la relación entre los alumnos, su nombre y su carrera, mientras que la segunda describe la relación entre los alumnos y sus calificaciones.

En este contexto, la relación entre los dos arreglos que corresponderían a las tablas en memoria, está dada por el campo de Matrícula, que es tipo entero. En general, en cualquier problema similar existirá un campo común que permite relacionar los dos arreglos.

En el ejemplo de arriba, la relación es eficiente y minimiza el gasto de memoria; pero existen problemas en los que la relación requiere demasiada memoria, además de un algoritmo de búsqueda que requerirá más tiempo para ejecutarse. Por ejemplo:

Nombre Carrera

Juan Pablo Contreras Luna ISC

Luis Alberto Gutiérrez de GomezLanda ISE

José de Jesús Echeverría de los Monteros IEC

Nombre Parcial Calificación

Juan Pablo Contreras Luna 1 80

Juan Pablo Contreras Luna 2 93

José de Jesús Echeverría de los Monteros 1 87

Luis Alberto Gutiérrez de GomezLanda 1 69

Page 130: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

130

En este caso, el campo común de los dos arreglos es bastante largo; por ello, la redundancia de ambos campos genera un alto consumo de memoria. Especialmente en los primeros tiempos del cómputo, cuando se empezaban a desarrollar los lenguajes de alto nivel, se tenían que buscar soluciones para hacer más eficiente el uso de la memoria; y, como consecuencia, también más rápido el procesamiento. En este caso, el procesamiento resulta lento pues para encontrar la correspondencia se tienen que hacer comparaciones de cadenas, las cuales son más costosas y requieren más accesos a memoria que, por ejemplo, la búsqueda de un entero que vimos en la sección previa (la matrícula).

La primera y más directa solución consiste en sustituir el campo largo, en la segunda tabla, por un entero que permita la búsqueda más eficientemente. Podríamos crear un código que identifique a cada elemento del arreglo, en forma única, como fue la matrícula en el primer ejemplo. Sin embargo, no es necesario hacerlo, pues el arreglo tiene ya un identificador para cada elemento: el índice en el arreglo. Esto hace mucho más eficiente el acceso, pues ya no requiere comparaciones sino solamente calcular, en base al índice almacenado, la localidad donde está el elemento relacionado.

Aún no es la solución más eficiente, puesto que se calcula la dirección destino, cuando podría almacenarse directamente. Por tanto, si en vez del índice en el arreglo guardamos la dirección de memoria donde se encuentra el elemento relacionado, no tendremos que hacer operaciones. Esto tiene además la ventaja

de que permite relacionar elementos que no están en un arreglo y, por lo tanto, no se puede calcular tan eficientemente su dirección. De hecho, por esta última razón, los apuntadores son la solución natural para estructuras de datos como los árboles y listas, que no siempre tendrán un orden en sus elementos como ocurre con los arreglos.

Acciones comunes con apuntadores:

Para ejemplificar el uso de apuntadores, verificaremos dos casos comunes de aplicación:

a) Recorrido secuencial, apuntadores contra arreglos

En diversos algoritmos, necesitamos recorrer todos los elementos de un arreglo, especialmente en cadenas. Como ejemplo, veremos una función de sumatoria, que suma todos los elementos en un arreglo:

En lenguaje C, el código sería:

int Arreglo[1000]; int Sumatoria() { int i, Temp; Temp = 0; for (i = 0; i<1000; i++) Temp += Arreglo[i]; return Temp; }

Page 131: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

131

En este caso, estamos haciendo el recorrido de todos los elementos y para cada elemento del arreglo se está calculando su dirección, utilizando la fórmula que vimos en el tema de "Representación de datos". Esto es ineficiente, por lo que en vez de implementar el uso del arreglo en ensamblador, usaremos un apuntador para ir a través de él.

.data Arreglo DW 1000 DUP (?) .code ... MOV SI, OFFSET Arreglo MOV AX, 0 ; AX va a tener el temporal para llevar el resultado MOV CX, 0 ; CX la hará de contador CicloForI: ADD AX, [SI] ; Avanzar el apuntador al siguiente elemento del arreglo ADD SI, 2 INC CX CMP CX, 1000 JNE CicloForI ...

El alumno: − Reflexionará qué digitalización de

documentos ha sido pilar en el proceso de globalización, ya que ha permitido entre otras cosas el traslado e intercambio de información rompiendo barreras de tiempo y espacio.

• Competencia para la vida Fomentar la limpieza, la eficiencia y la

oportunidad en el desarrollo de sus actividades.

El alumno: − Identificará que los formatos

escritos y preestablecidos son aplicados para fomentar la eficiencia de servicio a los usuarios.

Para mayor información consulte las siguientes direcciones electrónicas http://webpages.ull.es/users/fsande/talf/cursoc/ http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf http://labsopa.dis.ulpgc.es/cpp/intro_c/ http://correo.puj.edu.co/el982002/lenguajeC.htm http://www.jeanpaul.com.ar/

Page 132: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

132

RESULTADO DE APRENDIZAJE 2.2. Desarrollar programas en lenguaje C aplicando estructuras, formatos de entrada y

salida codificados en lenguaje C

2.2.1. ESTRUCTURAS.

• Concepto

Una estructura es un tipo de dato definido por el usuario. Al utilizar una estructura, se debe tener la habilidad para definir un nuevo tipo de dato considerablemente más complejo que los tipos que hemos utilizado hasta ahora. Una estructura es una combinación de varios tipos de datos previamente definidos, incluyendo otras estructuras que hayamos definido previamente. Una definición simple es: "una estructura es un grupo de datos relacionados en una forma conveniente al programador y/o al usuario del programa". Como es costumbre, un ejemplo nos clarifica los conceptos:

#include <stdio.h> typedef struct { char inicial; /* Letra inicial del apellido */

int edad; /* Edad */ int calificacion; /* Aprovechamiento */ }Estudiante; Estudiante chico, chica; Void main() { chico.inicial = 'R'; chico.edad = 15; chico.calificacion = 75; chica.edad = chico.edad - 1; /* Ella es un año menor que él */ chica.calificacion = 82; chica.inicial = 'H';

printf("%c tiene %d anos y su calificacion es de %d\n", chica.inicial, chica.edad, chica.calificacion); printf("%c tiene %d anos y su calificacion es de %d\n", chico.inicial, chico.edad, chico.calificacion);

El programa empieza definiendo una estructura, utilizando las palabras claves typedef struct seguida de tres variables sencillas encerradas entre llaves, las cuales son los componentes de la estructura, después de la llave de cierre tenemos el nombre del nuevo tipo de dato. Posteriormente, se definen dos variables llamadas chico y chica. De acuerdo a la definición de una estructura, chico es una variable compuesta de tres elementos, inicial, edad y, calificacion. Cada uno de los tres campos están asociados a chico y cada uno almacena una variable de su respectivo tipo, lo mismo se puede decir para chica pero sus variables son diferentes por lo tanto tenemos 6 variables agrupadas en dos, de tipo struct. Punteros A Estructuras: Los punteros también pueden apuntar a estructuras. En este caso, para referirse a cada elemento de la estructura se usa el operador (->), en lugar del (.).

Ejemplo: #include <iostream.h> struct stEstructura { int a, b; } estructura, *e;

Page 133: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

133

int main() { estructura.a = 10; estructura.b = 32; e = &estructura; cout << "variable" << endl; cout << e->a << endl; cout << e->b << endl; cout << "puntero" << endl; cout << estructura.a << endl; cout << estructura.b << endl; return 0; }

Ejemplos: Veamos algunos ejemplos de cómo trabajan los punteros. Primero un ejemplo que ilustra la diferencia entre un array y un puntero:

#include <iostream.h> int main() { char cadena1[] = "Cadena 1"; char *cadena2 = "Cadena 2"; cout << cadena1 << endl; cout << cadena2 << endl; //cadena1++; // Ilegal, cadena1 es constante cadena2++; // Legal, cadena2 es un puntero cout << cadena1 << endl; cout << cadena2 << endl; cout << cadena1[1] << endl; cout << cadena2[0] << endl; cout << cadena1 + 2 << endl; cout << cadena2 + 1 << endl; cout << *(cadena1 + 2) << endl; cout << *(cadena2 + 1) << endl;

Aparentemente, y en la mayoría de los casos, cadena1 y cadena2 son equivalentes. Sin embargo, hay operaciones que están prohibidas con los arrays, ya que son punteros constantes. Otro ejemplo:

#include <iostream.h> int main() { char Mes[][11] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};

char *Mes2[] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}; cout << "Tamaño de Mes: " << sizeof(Mes) << endl; cout << "Tamaño de Mes2: " << sizeof(Mes2) << endl; cout << "Tamaño de cadenas de Mes2: " << &Mes2[11][10]-Mes2[0] << endl; cout << "Tamaño de Mes2 + cadenas : " << sizeof(Mes2)+&Mes2[11][10]-Mes2[0] << endl; return 0;

En este ejemplo, declaramos un array "Mes" de dos dimensiones que almacena 12 cadenas de 11 caracteres, 11 es el tamaño necesario para almacenar el mes más largo (en caracteres): "Septiembre". Después declaramos "Mes2" que es un array de punteros a char, para almacenar la misma información. La ventaja de este segundo método es que no necesitamos contar la longitud de las cadenas para calcular el espacio que necesitamos, cada puntero de Mes2 es una cadena de la longitud adecuada para almacenar cada mes. Parece que el segundo sistema es más económico en cuanto al uso de memoria, pero hay que tener en cuenta que, además de las cadenas, también se almacenan los doce punteros. El espacio necesario para almacenar los punteros lo dará la segunda línea de la salida. Y el espacio necesario para las cadenas lo dará la tercera línea. Si las diferencias de longitud entre las cadenas fueran mayores, el segundo sistema sería más eficiente en cuanto al uso de la memoria.

Page 134: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

134

Variables Dinámicas:

Donde mayor potencia desarrollan los punteros es cuando se unen al concepto de memoria dinámica.

Cuando se ejecuta un programa, el sistema operativo reserva una zona de memoria para el código o instrucciones del programa y otra para las variables que se usan durante la ejecución. A menudo, estas zonas son la misma zona; es lo que se llama memoria local. También hay otras zonas de memoria, como la pila, que se usa, entre otras cosas, para intercambiar datos entre funciones. El resto, la memoria que no se usa por ningún programa, es lo que se conoce como "heap" o montón. Cuando nuestro programa use memoria dinámica, normalmente usará memoria del montón, y no se llama así porque sea de peor calidad, sino porque suele haber realmente un montón de memoria de este tipo.

C++ dispone de dos operadores para acceder a la memoria dinámica, son "new" y "delete". En C, estas acciones se realizan mediante funciones de la librería estándar "mem.h".

Hay una regla de oro cuando se usa memoria dinámica. Toda la memoria que se reserve durante el programa hay que liberarla antes de salir del programa. No seguir esta regla es una actitud muy irresponsable, y en la mayor parte de los casos tiene consecuencias desastrosas.

Los operadores "new" y "delete" veremos un ejemplo:

#include <iostream.h> int main() {

int *a; har *b; loat *c; struct stPunto { float x,y; } *d; a = new int; = new char; = new float; = new stPunto; *a = 10; b = 'a'; c = 10.32; d->x = 12; d->y = 15; out << "a = " << *a << endl; out << "b = " << *b << endl; out << "c = " << *c << endl; out << "d = (" << d->x << ", " << d->y << ")" << endl; delete a; delete b; delete c; delete d; return 0;

Y mucho cuidado: si pierdes un puntero a una variable reservada dinámicamente, porque no podrás liberarla.

Ejemplo: int main() { int *a; a = new int; // variable dinámica a = 10; = new int; // nueva variable dinámica, se pierde la anterior a = 20; elete a; // sólo liberamos la última reservada return 0; }

En este ejemplo vemos cómo es imposible liberar la primera reserva de memoria dinámica. Si no la necesitábamos, habría que liberarla antes de reservarla otra vez, y si la necesitamos, hay que guardar su dirección, por ejemplo con otro puntero.

Page 135: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

135

• Estructuras y funciones.

Paso de estructuras a funciones

Las estructuras se pueden pasar directamente a una función igual que hacíamos con las variables. Por supuesto, en la definición de la función debemos indicar el tipo de argumento que usamos:

int nombre_función ( struct nombre_de_la_estructura nombre_de_la variable_estructura )

En el ejemplo siguiente, se usa una función llamada suma que calcula cuál será la edad 20 años más tarde (simplemente suma 20 a la edad). Esta función toma como argumento la variable estructura arg_amigo. Cuando se ejecuta el programa, llamamos a suma desde main y en esta variable se copia el contenido de la variable amigo.

Esta función devuelve un valor entero (porque está declarada como int) y el valor que devuelve (mediante return) es la suma.

#include <stdio.h> struct estructura_amigo { char nombre[30]; char apellido[40]; char telefono[10]; int edad; }; struct estructura_amigo amigo = { "Juanjo", "Lopez", "592-0483", 30 }; int suma( struct estructura_amigo arg_amigo ) { return arg_amigo.edad+20;

} int main() { printf( "%s tiene ", amigo.apellido ); printf( "%i años ", amigo.edad ); printf( "y dentro de 20 años tendrá %i.\n", suma(amigo) ); }

Si dentro de la función suma hubiésemos cambiado algún valor de la estructura, dado que es una copia, no hubiera afectado a la variable amigo de main. Es decir, si dentro de 'suma' hacemos arg_amigo.edad = 20; el valor de arg_amigo cambiará, pero el de amigo seguirá siendo 30.

También se pueden pasar estructuras mediante punteros o se puede pasar simplemente un miembro (o campo) de la estructura.

Si usamos punteros para pasar estructuras como argumentos habrá que hacer unos cambios al código anterior (en negrita y subrrayado):

int suma( struct estructura_amigo *arg_amigo ) { return arg_amigo->edad+20; } int main() { printf( "%s tiene ", amigo.apellido ); printf( "%i años ", amigo.edad ); printf( "y dentro de 20 años tendrá %i.\n", suma(&amigo) ); }

Lo primero, será indicar a la función suma que lo que va a recibir es un puntero. Para eso, ponemos el * (asterisco). Segundo, como dentro de la función suma usamos un puntero a estructura y no una variable estructura, debemos cambiar el '.' (punto) por el '->'. Tercero, dentro de main

Page 136: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

136

cuando llamamos a suma, debemos pasar la dirección de amigo, no su valor; por lo tanto, debemos poner '&' delante de amigo.

Si usamos punteros a estructuras, corremos el riesgo (o tenemos la ventaja, según cómo se mire) de poder cambiar los datos de la estructura de la variable amigo de main.

Pasar sólo miembros de la estructura

Otra posibilidad es no pasar toda la estructura a la función, sino tan sólo los miembros que sean necesarios. Los ejemplos anteriores serían más correctos usando esta tercera opción, ya que sólo usamos el miembro 'edad':

int suma( char edad ) { return edad+20; }

int main() { printf( "%s tiene ", amigo.apellido ); printf( "%i años ", amigo.edad ); printf( "y dentro de 20 años tendrá %i.\n", suma(amigo.edad) ); } Por supuesto, a la función suma hay que indicarle que va a recibir una variable tipo char (amigo->edad es de tipo char).

• Arreglos de estructuras

El siguiente programa es básicamente el mismo que el anterior, pero esta vez definimos un array de 12 variables llamadas chicos. Está claro que éste

programa contiene 12 veces 3=36 variables sencillas, cada una de las cuales puede almacenar un ítem de dato siempre y cuando sea del tipo adecuado. Se define además una variable común llamada índice para utilizarla en los bucles, estudia el código:

#include <stdio.h> typedef struct { char inicial; nt edad; nt calificacion; }Estudiante; Estudiante chicos[12]; void main() { int indice; or (indice = 0; indice < 12; indice++) { hicos[índice].inicial = 'A' + índice; hicos[índice].edad = 16; hicos[índice].calificacion = 84; } chicos[3].edad = chicos[5].edad = 17; hicos[2].calificacion = chicos[6].calificacion = 92; hicos[4].calificacion = 57; /* Asignacion de estructura solo en compiladores ANSI-C */ chicos[10] = chicos[4]; //Linea 16 for (índice = 0; índice < 12; indice++) printf("%c tiene %d anos y una calificacion de %d\n", chicos[índice].inicial, chicos[índice].edad, chicos[índice].calificacion); } Para asignar un valor a cada uno de los campos utilizamos un bucle for, en cada ciclo del bucle se asignan todos los valores para uno de los chicos. En una situación real, ésta podría no ser la mejor manera de asignar datos, pero un bucle puede leer los datos de un archivo y almacenarlos en la correcta ubicación en un programa real. Considera éste ejemplo como un inicio burdo a una base de datos, pues eso es justamente nuestro ejemplo. El código resulta fácil de entender, solo se hará un

Page 137: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

137

comentario respecto a la línea 16, en donde podemos ver una asignación de estructura. En éste enunciado, los tres campos de chicos[4] son copiados en los respectivos campos de chicos{10], esto no siempre está permitido en el lenguaje C, sólo en los compiladores que cumplen con la norma ANSI-C.

• Estructuras auto referenciadas

Es posible crear estructuras que tengan como miembros otras estructuras. Esto tiene diversas utilidades; por ejemplo, tener la estructura de datos más ordenada. Imaginemos la siguiente situación: una tienda de música quiere hacer un programa para el inventario de los discos, cintas y cd's que tienen. Para cada título se quiere conocer las existencias en cada soporte (cinta, disco, cd), y los datos del proveedor (el que le vende ese disco). Podría pensar en una estructura así:

struct inventario { char titulo[30]; char autor[40]; int existencias_discos; int existencias_cintas; int existencias_cd; char nombre_proveedor[40]; char telefono_proveedor[10]; char direccion_proveedor[100]; };

Sin embargo, utilizando estructuras anidadas se podría hacer de esta otra forma más ordenada:

struct estruc_existencias { int discos;

int cintas; int cd; }; struct estruc_proveedor { char proveedor[40]; char proveedor[10]; char proveedor[100]; }; struct estruc_inventario { char titulo[30]; char autor[40]; struct estruc_existencias existencias; struct estruc_proveedor proveedor; } inventario;

Ahora, para acceder al número de cd de cierto título usaríamos lo siguiente:

inventario.existencias.cd

y para acceder al nombre del proveedor:

inventario.proveedor.nombre

• Búsqueda en tablas

Tablas o vectores

La declaración de vectores en C. Se hace mediante el siguiente formato:

tipo nombre_vector [dim]

Donde dim ha de ser un número entero y denota la dimensión o longitud del vector. Así, las instrucciones siguientes:

int datos[10]:

char nombre[12], apellido[12];

Page 138: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

138

declaran un vector de enteros de 10 elementos y dos vectores de caracteres de 12 elementos cada uno.

Una vez declarado un vector de n elementos, se puede leer y escribir en sus componentes teniendo en cuenta que éstas se numeran de la 0 a la n-1. Por ejemplo, para referenciar la primera letra de apellido se ha de escribir apellido[0] y para referenciar el último elemento de datos se ha de escribir datos[9].

Para declarar variables indexadas con mas de un índice, el formato es

Tipo nombre_variable[dim_1][dim_2]...[dim_k]

Usualmente, se llama vector una variable con un índice y matriz una variable con dos índices. Además, el primer índice se llama fila, el segundo columna y el tercero página. A partir del cuarto índice no se utilizan nombres específicos.

Cadenas de caracteres

Es frecuente emplear vectores para la manipulación de cadenas de caracteres, como nombres de personas, de calles, etc. En estos casos, hemos de declarar la variable con una longitud capaz de alojar el nombre más largo de entre los valores posibles. Así, para almacenar nombres de personas, podemos declarar el vector

char nombre[15]

si se sabe que 15 es una cota para el tamaño de los nombres que aparecerán durante la ejecución. Ahora bien, resulta muy incómodo tener que rellenar con

espacios el resto de las letras hasta la 15ª, cada vez que se lee un nombre desde el teclado. Para facilitar el tratamiento de estos vectores de caracteres con longitud variable, C tiene un tipo predefinido que resulta muy conveniente: el tipo string (cadena de caracteres). Su declaración es la normal de un vector de caracteres. Lo que cambia es su lectura y escritura. En el momento de leer una cadena de caracteres, el computador los leerá uno a uno hasta encontrar un cambio de línea. Cuando esto suceda, añadirá al final de la secuencia leída un carácter nulo (el carácter con código ASCII igual a 0). Esta marca le permitiría saber posteriormente dónde se encuentra el fin de la cadena. Cabe decir que si sabemos que la longitud máxima de las cadenas a tratar es k, hace falta declarar el vector de dimensión k+1 para poder alojar también esta marca. Así, en el ejemplo anterior se debería declarar:

char nombre[16]

La lectura de una cadena de caracteres se realiza poniendo en el control el formato %s y quitando del nombre de la variable el prefijo & en la instrucción scanf. Existe otra manera de leer una cadena desde el teclado, usando la instrucción gets con el formato

gets (nombre_cadena);

que lee todos los caracteres tecleados hasta pulsar la tecla retorno. Para la escritura, también hace falta utilizar el formato %s en la parte de control del printf.

C también posee una gran variedad de funciones para manipular cadenas. Las más utilizadas son

Page 139: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

139

strcpy (cad_1, cad_2); strcat (cad_1, cad_2); res_comparacion = strcmp (cad_1, cad_2); longitud = strlen (cad);

La primera copia el contenido de cad_2 sobre cad_1. La segunda añade el contenido de cad_2 al final de cad_1. La tercera compara lexicográficamente los contenidos de las cadenas que recibe como entradas y retorna 0 si son la misma. Si cad_1 es mayor que cad_2, entonces retorna un número positivo y, si es menor, uno negativo. Finalmente strlen(cad) retorna la longitud de cad. Para utilizar estas instrucciones hace falta importarlas del módulo string.

Finalmente, cabe destacar que las cadenas constantes se encierran entre comillas dobles ". Por ejemplo, en

strcpy (cad, "hola");

se asocia la cadena hola a la variable cad.

CONTEXTUALIZACIÓN

• Competencia tecnológica Investigar usos y alcances

de diferentes tecnologías para procesamiento de datos e inserción de imágenes

Las estructuras C++ son una herencia de C; existen (se implementaron) por compatibilidad hacia atrás con el código del C clásico, pero en el contexto de C++ no tienen demasiado sentido ya que las clases, un concepto mucho más general,

las engloban, dejándolas arrinconadas como un caso particular de un mundo mucho más rico y potente.

Nota: De hecho, las estructuras C++ son una especie de híbrido entre las estructuras C tradicionales (de las que son un superconjunto) y las clases C++, de las que son una variedad con propiedades muy específicas, por ejemplo, todos los miembros son públicos.

Realmente, el programador C++ no debería necesitar nunca utilizar estructuras como tales, ya que pueden ser sustituidas por clases definidas con ciertas peculiaridades. En concreto, las estructuras C pueden ser consideradas como un tipo especial de clases que no tienen métodos, el acceso por defecto es público, y para la clase base también es público por defecto. Sin embargo, puesto que las clases C++ disponen de tres tipos de modificadores de acceso: público, privado y protegido, el considerarlas como tales permite un mayor control de acceso de las estructuras que el ofrecido por el C clásico.

El alumno: − Identificará que la aplicación

tecnología del procesador de texto simplifica tareas, optimiza tiempo, oportunidad y mejora en el trabajo.

• Competencia de calidad

Acatar la normatividad en materia informática respetando el marco de la legalidad en dicha área.

El alumno: − Evitará el uso de software de

lenguaje C ilegal, garantizando su funcionamiento y la calidad del mismo.

Para mayor información consulte las siguientes direcciones electrónicas

http://webpages.ull.es/users/fsande/talf/cursoc/

http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf

http://labsopa.dis.ulpgc.es/cpp/intro_c/

Page 140: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

140

2.2.2 ENTRADA Y SALIDA En C no existe ninguna palabra clave para realizar la entrada y salida de datos (E/S). Se realizan a través de funciones de biblioteca (concretamente, la biblioteca stdio.h,.

• E/S por consola

Las funciones principales que realizan la entrada y salida sin formato son: getchar (): Lee un carácter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su valor. putchar (): Imprime un carácter en la pantalla en la posición actual del cursor. gets (): Lee una cadena de caracteres introducida por el teclado y la sitúa en una dirección apuntada por su argumento de tipo puntero a carácter. puts(): Escribe un argumento de tipo cadena en la pantalla seguida de su carácter de salto de línea. El siguiente fragmento de código lee un carácter del teclado y lo muestra por pantalla. A continuación lee una cadena (de 10 caracteres incluido el carácter nulo) y también la muestra por pantalla:

#include <stdio.h> main() { char cadena[10]; int i; i=getchar(); putchar(i); gets(cadena); puts(cadena), }

Las funciones principales que realizan la entrada y salida con formato se pueden leer y escribir en distintas formas controladoras, siendo éstas:

printf() : Escribe datos en la consola con el formato especificado. scanf(): Función de entrada por consola con el formato especificado Sus prototipos son los siguientes: int printf(“caracteres de transmisión y escape”, lista de argumentos); int scanf(“caracteres de transmisión y escape”, lista de argumentos);

En la función printf() (con scanf() no), entre comillas se pueden poner rótulos literales mezclados con los caracteres de transmisión.

Los caracteres de transmisión son precedidos de un % para distinguirlos de los normales:

Caracteres de transmisión

Argumento que transmite

%c Int: un carácter simple.%Ns Char *: una cadena de

caracteres %Nd %Ni Int: un número decimal%o Int: octal sin signo%x %X Int: hexadecimal sin

signo %Nu Int: decimal sin signo%N.Df Float o double con D

decimales el notación fija.

%N.De %N.DE Float o double con D decimales, en notación científica

%N.De %N.DG Float o double en notación científica si el exponente es menor de diez a la menos cuatro, o fija en caso contrario.

%p Void*: escribe el número que corresponde al puntero.

%% Escribe un signo de %

Page 141: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

141

Donde aparezcan las letras N,D o no se pone nada o serán en realidad dos números que dicen que la transmisión total del valor al menos ocupará N posiciones (si el número necesita más de N las tomará, si usa menos las dejará en blancos, a menos que se quiera rellenar con ceros, entonces se pone 0N) y que la parte decimal tendrá como máximo las D posiciones después de un punto. Normalmente, el número se ajusta por la derecha del campo de N posiciones que le henos dicho que utilice; si deseamos el ajuste por la izquierda, se añade un sino menos precediendo al valor N (-N). Una l precediendo a N (p.e. %l5d) significa que transmitiremos un long int: si, por el contrario, es una h significa que transmitiremos un short int. Existe otro tipo de carácter especial, los caracteres de escape, que tienen un significado especial. Los caracteres de escape son los siguientes:

Caracteres de escape

Significado

\n Nueva línea\t Tabulador \b Espacio atrás\r Retorno de carro\f Comienzo de página\a Pitido sonoro\´ Comilla simple\” Comilla doble\\ Barra invertida\xdd Código ASCII en

notación hexadecimal (cada d representa un dígito

\ddd Código ASCII en notación octal (cada d representa un dígito.

La lista de argumentos estará separada por comas. Debe existir una correspondencia biyectiva entre los caracteres de transmisión (aquéllos que comienzan con un %) y la lista de argumentos a transmitir. Cabe destacar una diferencia en la lista de argumentos entre las funciones printf() y scanf(). En ésta última función (scanf()), la lista de argumentos va precedida por el operador de dirección (&), puesto que scanf() requiere que los argumentos sean las direcciones de las variables, en lugar de ellas mismas.

• E/S por archivos

En C, un archivo puede ser cualquier cosa, desde un archivo de disco a una terminal o una impresora. Se asocia una secuencia con un archivo específico, realizando una operación de apertura. Una vez que está abierto, la información puede ser intercambiada entre éste y el programa. El puntero a un archivo es el hilo que unifica el sistema de E/S con buffer. Un puntero a un archivo es un puntero a una información que define varias cosas sobre él, incluyendo el nombre, el estado y la posición actual del archivo. En esencia, el puntero a un archivo identifica un archivo en disco específico y utiliza la secuencia asociada para dirigir el funcionamiento de las funciones de E/S con buffer. Para obtener una variable de tipo puntero a archivo se debe utilizar una sentencia como la siguiente:

FILE*punt;

Page 142: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

142

La función fopen() abre una secuencia para que pueda ser utilizada y la asocia a un archivo. Su prototipo es:

FILE*fopen(const char*nombre_archivo, const char*modo);

Donde nombre_archivo es un puntero a una cadena de caracteres que representan un nombre válido del archivo y puede incluir una especificación de directorio. La cadena que apunta modo determina cómo se abre el archivo. Los modos son los siguientes:

r: Abre un archivo de texto para lectura. w. Crea un archivo de texto para escritura a: Abre un archivo de texto para añadir. r+: Abre un archivo de texto para lectura/escritura. w+: Crea un archivo de texto para lectura/escritura. a+: Añade o crea un archivo de texto para lectura escritura.

Por ejemplo, si se desea abrir un archivo llamado prueba para escritura, hay que escribir:

FILE*fp Fp= fopen(“prueba”,”w”);

La función fclose() cierra una secuencia que fue abierta mediante una llamada fopen(). Escribe toda la información que todavía se encuentre en el buffet del disco y realiza un cierre formal del archivo a nivel del sistema operativo. También libera el bloque de control de archivo asociado con la secuencia, dejándolo libre para su reutilización. A veces es necesario cerrar algún archivo para poder abrir otro, debido a la existencia de un límite del sistema operativo en cuanto al número de archivos abiertos. Su prototipo es:

int fclose(FILE *fp):

La función putc() escribe caracteres en un archivo que haya sido abierto previamente para operaciones de escritura, realizando la función fopen(). Su prototipo es:

int putc (int car, FILE *pf); La función getc() escribe caracteres en un archivo que haya sido abierto, en modo lectura, mediante fopen(). Su prototipo es:

int getc (FILE *pf); La función fputs() escribe la cadena en la secuencia especificada. Su prototipo es:

int fputs(const char * cad, FILE *pf); La función fgets() lee una cadena de la secuencia especificada hasta que se lee un carácter de salto de línea o hasta que se han leído longitud-1 caracteres. Su prototipo es:

Int fgets(char *char, FILE *pf); La función rewind() inicia el indicador de posición al principio del archivo indicado por su argumento. Su prototipo es:

Void rewind(FILE *pf); Existen otras muchas funciones en la biblioteca estándar de C como pueden ser: remove(): Borra el archivo especificado. fflux(): Vacía el contenido de una secuencia de salida.

Page 143: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

143

Fread(): Lee tipos de datos que ocupan más de un byte. Permiten la lectura de bloques de cualquier tipo de datos. fwrite(): Escribe tipos de datos que ocupan más de un byte. Permiten la escritura de bloques de cualquier tipo de datos. fprint(): Hace las funciones de printf() sobre un fichero. fscan(): Hace las funciones de scanf() sobre un fichero. feof(): Detecta el final de un fichero. ferror(): Detecta un error en la lectura/escritura de un fichero.

• Prepocesador Se pueden incluir varias instrucciones dirigidas al compilador en el código fuente de un programa en C. Se llaman directivas de preprocesamiento y, aunque no son realmente parte del lenguaje C, amplían el ámbito del entorno de programación en C. Se denomina prepocesador a un programa que procesa macros. Una macro es una codificación de instrucciones que implican una o varias acciones. El preprocesador toma como entrada el programa fuente en C antes que el compilador y ejecuta todas las macros que encuentra. Los comandos para el procesador se ponen entre las líneas de código fuente pero se distinguen porque comienzan con el símbolo “#”. La lista de comandos normalizados del procesador son: Comando Acción #define Define una macro.

P.e.: #define CIERTO 1

#error Fuerza al compilador a parar la compilación, mostrando un mensaje de error. P:e.: #error mensaje_de_error.

#include Incluye otro archivo fuente.P.e.: #include <stdio.h>

#undef Elimina una definición de macro previa P.e.: #undef CIERTO

#if Permite la inclusión de texto en función del valor de una expresión test

#endif Marca el final de un bloque #if.P.e.: #if expresión-constante Secuencia sentencias #endif

#else Incluye un texto si el test establecido en el comando #if, o #ifdef o #ifndef que le precede ha dado resultado falso.

#elseif Significa “else if” #ifdef y #ifndef Permite la inclusión de texto en

función de si ha sido definida o no previamente un nombre de macro respectivamente.

#line Cambia los contenidos de _LINE_ y

_FILE_, que son identificadores del compilador predefinidos. _LINE_ contiene el número de línea que se está compilando actualmente. _FILE_ es una cadena que contiene el nombre del archivo fuente que se está compilando. P.e.; #line número “nombre del archivo”.

#pragma Definida por la implementación que permite se den varias instrucciones al compilador.

La línea completa que comienza con # es una línea para el procesador. Si se desea que la siguiente línea del fichero sea continuación del anterior, ésta debe terminar con “\”. En la composición de macros se pueden utilizar todos los elementos básicos del lenguaje. Las expresiones que se pueden poner en los comandos del preprocesador cuando ponemos la fórmula “expresión”, debe ser

Page 144: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

144

una expresión que de los mismos resultados que si la escribiésemos en una línea de C. El resultado debe ser una constante.

CONTEXTUALIZACIÓN • Competencia científica- teórica

1. Aplicar conocimientos multidisciplinarios para la comunicación, procesamiento y transmisión de la información.

El preprocesador es una parte del compilador que se ejecuta, en primer lugar, cuando se compila un programa fuente en C y que realiza determinadas operaciones independientes del propio lenguaje C. Estas operaciones se realizan a nivel léxico y son: la inclusión de otros textos en un punto del código fuente, realiza sustituciones o elimina ciertas partes del fuente. Debemos tener en cuenta que el preprocesador trabaja únicamente con el texto del programa fuente y no tiene en cuenta ningún aspecto sintáctico ni semántico del lenguaje.

El control del preprocesador se realiza mediante determinadas directivas incluidas en el programa fuente. Una directiva es una palabra que interpreta el preprocesador, que siempre va precedida por el símbolo # y que está situada a principio de línea.

El alumno: − Identificará combinaciones

matemáticas aplicadas en la emisión

de sobres y etiquetas con direcciones impresas.

Para mayor información consulte las siguientes direcciones electrónicas http://webpages.ull.es/users/fsande/talf/cursoc/ http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf http://labsopa.dis.ulpgc.es/cpp/intro_c/ http://correo.puj.edu.co/el982002/lenguajeC.htm http://www.jeanpaul.com.ar/

Page 145: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

145

PRÁCTICAS DE EJERCICIO Y LISTA DE COTEJO

Unidad de aprendizaje: 2 Práctica número: 18 Nombre de la práctica: Uso de funciones Propósito de la práctica:

Al finalizar la práctica, el alumno aplicará funciones en una rutina de programación con el lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

• Impresora.

Page 146: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

146

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo.

2. Abrir sesión de ambiente gráfico.

3. Verificar que el equipo de cómputo se encuentre conectado.

4. Encender equipo de cómputo.

5. Abrir sesión de ambiente gráfico.

6. Emular MS-DOS.

7. Escribir un programa que imprima el volumen de una esfera (cuatro veces pi por el cubo del radio) para

varios radios entre 0 y 4.0 en incrementos de 0.2.

8. Utilizar una función separada para calcular el volumen.

9. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

10. Realizar una prueba de escritorio.

11. Accesar el subdirectorio donde se encuentra “C”.

12. Abrir el editor de “C”.

13. Transcribir el programa en el editor de “C”.

14. Guardar el archivo que contiene el programa transcrito.

15. Compilar el programa.

16. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido.

17. Apagar el equipo de cómputo.

18. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 147: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

147

Lista de cotejo de la práctica Número 18:

Uso de funciones

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Verificó que el equipo de cómputo se encuentre conectado. 4. Encendió equipo de cómputo. 5. Abrió sesión de ambiente gráfico. 6. Emuló MS-DOS. 7. Escribió un programa que imprima el volumen de una esfera (cuatro veces pi

por el cubo del radio) para varios radios entre 0 y 4.0 en incrementos de 0.2.

8. Utilizó una función separada para calcular el volumen. 9. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio

propuesto.

10. Realizó una prueba de escritorio. 11. Accesó el subdirectorio donde se encuentra “C”. 12. Abrió el editor de “C”. 13. Transcribió el programa en el editor de “C”. 14. Guardó el archivo que contiene el programa transcrito. 15. Compiló el programa. 16. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

17. Apagó el equipo de cómputo. 18. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel..

Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 148: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

148

Unidad de aprendizaje: 2 Práctica número: 19 Nombre de la práctica: Uso de arreglos Propósito de la práctica:

Al finalizar la práctica, el alumno aplicará arreglos con el lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 4 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

Page 149: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

149

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo.

2. Abrir sesión de ambiente gráfico.

3. 3 Verificar que el equipo de cómputo se encuentre conectado.

4. Encender equipo de cómputo.

5. Abrir sesión de ambiente gráfico.

6. Emular MS-DOS.

7. Escribir un programa que contenga un array inicializado con los siguientes valores 12, 34, 56 y 78 sumar los

elementos del array y calcular el valor medio. Imprimir la suma y la media.

8. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

9. Realizar una prueba de escritorio.

10. Accesar el subdirectorio donde se encuentra “C”.

11. Abrir el editor de “C”.

12. Transcribir el programa en el editor de “C”.

13. Guardar el archivo que contiene el programa transcrito.

14. Compilar el programa.

15. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse que

el programa cumpla con el objetivo establecido.

16. Apagar el equipo de cómputo.

17. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 150: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

150

Lista de cotejo de la práctica Número 19:

Uso de arreglos

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Consultó el manual de Word. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. 3 Verificó que el equipo de cómputo se encuentre conectado. 4. Encendió equipo de cómputo. 5. Abrió sesión de ambiente gráfico. 6. Emuló MS-DOS. 7. Escribió un programa que contenga un array inicializado con los siguientes

valores 12, 34, 56 y 78 sumar los elementos del array y calcular el valor medio. Imprimió la suma y la media.

8. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

9. Realizó una prueba de escritorio. 10. Accesó el subdirectorio donde se encuentra “C”. 11. Abrió el editor de “C”. 12. Transcribió el programa en el editor de “C”. 13. Guardó el archivo que contiene el programa transcrito. 14. Compiló el programa. 15. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

16. Apagó el equipo de cómputo. 17. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel..

Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 151: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

151

Unidad de aprendizaje: 1 Práctica número: 20 Nombre de la práctica: Uso de punteros. Propósito de la práctica:

Al finalizar la práctica, el alumno aplicará punteros con el lenguaje de programación C.

Escenario: Laboratorio de

Informática.

Duración: 4 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

Page 152: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

152

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Accesar el procesador de texto, haciendo clic en su icono correspondiente. 4. Abrir un documento. 5. Verificar que el equipo de cómputo se encuentre conectado. 6. Encender equipo de cómputo. 7. Abrir sesión de ambiente gráfico. 8. Emular MS-DOS. 9. Escribir un programa que imprima el valor de cada elemento de un array, cada valor en una línea de

salida. Utilizar un puntero, no un índice, para acceder a cada elemento, y calcular el tamaño del array en lugar de emplear una constante definida.

10. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto. 11. Realizar una prueba de escritorio. 12. Accesar el subdirectorio donde se encuentra “C”. 13. Abrir el editor de “C”. 14. Transcribir el programa en el editor de “C”. 15. Guardar el archivo que contiene el programa transcrito. 16. Compilar el programa. 17. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 18. Apagar el equipo de cómputo. 19. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 153: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

153

Lista de cotejo de la práctica Número 20:

Uso de punteros.

Nombre del alumno:

Instrucciones: A continuación se presentan los criterios que van a ser verificados en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No Aplica

Aplicó las medidas de seguridad e higiene. • Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Accesó el procesador de texto, haciendo clic en su icono correspondiente. 4. Abrió un documento. 5. Verificó que el equipo de cómputo se encuentre conectado. 6. Encendió equipo de cómputo. 7. Abrió sesión de ambiente gráfico. 8. Emuló MS-DOS. 9. Escribió un programa que imprima el valor de cada elemento . 10. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio

propuesto.

11. Realizó una prueba de escritorio. 12. Accesó el subdirectorio donde se encuentra “C”. 13. Abrió el editor de “C”. 14. Transcribió el programa en el editor de “C”. 15. Guardó el archivo que contiene el programa transcrito. 16. Compiló el programa. 17. inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

18. Apagar el equipo de cómputo. 19. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel..

Observaciones:

PSP: Hora de

inicio: Hora de

término: Evaluación:

Page 154: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

154

Unidad de aprendizaje: 1 Práctica número: 21 Nombre de la práctica: Uso de ficheros. Propósito de la práctica:

Al finalizar la práctica, el alumno controlará el Accesó y operaciones en un fichero a través de un programa en lenguaje C.

Escenario: Laboratorio de

Informática.

Duración: 6 hrs.

Materiales Maquinaria y equipo Herramienta • Software de lenguaje de

programación C.

• Manual de C.

• Computadora (Pentium II como

requerimiento mínimo).

Page 155: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

155

Procedimiento

Aplicar las medidas de seguridad e higiene. • Evitar la manipulación de líquidos cerca del equipo. • No introducir objetos extraños en los dispositivos de disco. • No utilizar imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpiar el área de trabajo. • Disponer del manual de lenguaje de programación C. 1. Encender equipo de cómputo. 2. Abrir sesión de ambiente gráfico. 3. Verificar que el equipo de cómputo se encuentre conectado. 4. Encender equipo de cómputo. 5. Abrir sesión de ambiente gráfico. 6. Emular MS-DOS. 7. Escribir un programa que muestre el contenido de un archivo de texto ASCII en pantalla línea por línea. 8. Elaborar en borrador del programa en lenguaje C para resolver el ejercicio propuesto. 9. Realizar una prueba de escritorio. 10. Accesar el subdirectorio donde se encuentra “C”. 11. Abrir el editor de “C”. 12. Transcribir el programa en el editor de “C”. 13. Guardar el archivo que contiene el programa transcrito. 14. Compilar el programa. 15. De ser necesario, iniciar un proceso de depuración del programa (corrección de errores) hasta cerciorarse

que el programa cumpla con el objetivo establecido. 16. Apagar el equipo de cómputo. 17. Repetir los procedimientos con asesoría del PSP.

Depositar los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel.

Page 156: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

156

Lista de cotejo de la práctica Número 21:

Uso de ficheros.

Nombre del alumno: Instrucciones: A continuación se presentan los criterios que van a ser verificados

en el desempeño del alumno mediante la observación del mismo. De la siguiente lista marque con una aquellas observaciones que hayan sido cumplidas por el alumno durante su desempeño.

Desarrollo Sí No No

Aplica Aplicó las medidas de seguridad e higiene.

• Evitó la manipulación de líquidos cerca del equipo. • No introdujo objetos extraños en los dispositivos de disco, • No utilizó imanes cerca de discos flexibles, discos compactos ó del equipo. • Limpió el área de trabajo. • Dispuso del manual de lenguaje de programación C. 1. Encendió equipo de cómputo. 2. Abrió sesión de ambiente gráfico. 3. Verificó que el equipo de cómputo se encuentre conectado. 4. Encendió equipo de cómputo. 5. Abrió sesión de ambiente gráfico. 6. Emuló MS-DOS. 7. Escribió un programa que muestre el contenido de un archivo de texto ASCII

en pantalla línea por línea.

8. Elaboró en borrador del programa en lenguaje C para resolver el ejercicio propuesto.

9. Realizó una prueba de escritorio. 10. Accesó el subdirectorio donde se encuentra “C”. 11. Abrió el editor de “C”. 12. Transcribió el programa en el editor de “C”. 13. Guardó el archivo que contiene el programa transcrito. 14. Compiló el programa. 15. Inició un proceso de depuración del programa (corrección de errores) hasta

cerciorarse que el programa cumpla con el objetivo establecido.

16. Apagó el equipo de cómputo. 17. Repitió los procedimientos con asesoría del PSP.

Depositó los residuos recuperables disponiendo de 3 botes de reciclaje tonner, discos y papel..

Observaciones:

PSP:

Hora de

inicio: Hora de

término: Evaluación:

Page 157: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

157

RESUMEN

Un programa C está formado por un conjunto de funciones que mínimo contiene la función main. Una función se declara con el nombre de la función precedido del tipo de valor que retorna y una lista de argumentos encerrados entre paréntesis. El cuerpo de la función está formado por un conjunto de declaraciones y de sentencias comprendidas entre llaves. Un arreglo es un conjunto de celdas de memoria relacionadas entre sí, ya que todos tienen el mismo nombre, y almacenan el mismo tipo de datos para referirse a una celda en particular, algún elemento dentro del arreglo y entre corchetes [] el número de posición del elemento dentro del arreglo. Un puntero es una variable que representa la posición (en vez del valor) de otro dato, tal como una variable o un elemento de una formación. Los punteros son usados frecuentemente en C y tienen gran cantidad de aplicaciones; por ejemplo, pueden ser usados para trasvasar información entre una función y sus puntos de llamada. En particular, proporcionan una forma de devolver varios datos desde una función a través de los argumentos de la función. Una estructura es un tipo de dato definido por el usuario. Al utilizar una estructura, se tiene la habilidad para definir un nuevo tipo de dato considerablemente más complejo que los tipos que hemos utilizado hasta ahora. Una estructura es una combinación de varios tipos de datos previamente definidos, incluyendo otras estructuras que hayamos definido previamente. Se llama vector a una variable con un índice y matriz una variable con dos índices. Además, el primer índice se llama fila, el segundo columna y el tercero página. A partir del cuarto índice no se utilizan nombres específicos.

Page 158: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

158

AUTOEVALUACIÓN DE CONOCIMIENTOS DEL CAPITULO 2

1. ¿Cuáles son las partes de una funcion? 2. ¿Cual es procedimiento para la llamada de una funcion? 3. ¿Como se declaran las funciones sin argumenos? 4. ¿Que es un arreglo 5. ¿Que es un puntero? 6. ¿Como se declara un puntero? 7. ¿Que es unas estructura? 8. ¿Que es un vector? 9. ¿Cuales son 2 de las funciones para la manipulacion de cadenas? 10. ¿Cuales son las funciones principales de entrada y salida por consola? 11. ¿Cuales son las funciones principales de entrada y salida por archivos? 12. ¿Que es preprocesador?

Page 159: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

159

RESULTADOS DE AUTOEVALUACIÓN DE CONOCIMIENTOS

Capitulo 2 1. .

• nombre de la función • número de argumentos que lleva y tipo de cada uno de ellos • tipo de datos que devuelve • Cuerpo de la función (el código que ejecuta)

2. Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se

deseen dar a los argumentos:

función ( expr1, expr2, ... ) 3. Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se

deseen dar a los argumentos: función ( expr1, expr2, ... )

4. Es un conjunto de celdas de memoria relacionadas entre si ya que todos tienen el

mismo nombre y almacenan el mismo tipo de datos para referirse a una celda en particular algún elemento dentro del arreglo y entre corchetes [] el numero de posición del elemento dentro del arreglo.

5. Es una Variable que representa la posición (en vez del valor) de otro dato, tal como una variable o un elemento de una formación. Los punteros son usados frecuentemente en C y tienen grana cantidad de aplicaciones.

6. . Sintaxis: <tipo> *<identificador>; Ejemplos: int *entero; char *carácter; struct stPunto *punto; Estos factores nos servirán para hacer la conversión de las cifras históricas a cifras de poder adquisitivo a la fecha en que se trate de reexpresar, este factor de ajuste se calcula en las siguientes forma.

Page 160: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

160

7. Una estructura es una combinación de varios tipos de datos previamente definidos 8. Se llama vector una variable con un índice y matriz una variable con dos índices.

Además, el primer índice se llama fila, el segundo columna y el tercero página. A partir del cuarto índice no se utilizan nombres específicos.

9. . strcpy (cad_1, cad_2); strcat (cad_1, cad_2);

10. getchar() Lee un carácter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su valor putchar(): Imprimie un carácter en la pantallaen la posición actual del cursor gets(): Lee una cadena de caracteres introducida por el teclado y la situa en una direccion apuntada por su argumento de tipo puntero a carácter. putc() Escribe su argumento de tipo cadena e la pantalla seguida de un carácter de salto de linea.

11. .

La función putc() escribe caracteres en un archivo que haya sido abierto previamente para operaciones de escritura, utilizando la función fopen(). Su prototipo es:

Int put(int car, FILE * pf);

La función getc() escribe caracteresen un archivo que haya sido abierto, en modo lectura, mediante fopen(). Su prototipo es:

Int getc(FILE *pf);

La función fputs() escribe la cadena en la secuencia especificada su prototipo es:

Int fputs(const char *cad, FILE *pf);

La función f gets() lee una cadena de la secuencia especificada hasta que se lee un carácter de salto de linea o hasta que se han leido longitud-1 caracteres. Su prototipo es:

Int fgets(char *cad, FILE *pf);

Page 161: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

161

La función rewind() inicia el indicdor de posición al principio del archivo indicado por su argumento. Su prototipo es:

Void rewind(FILE *pf) 12. Se denomina preprocesador a un programa que procesa macros .Una macro es una

codificación de instrucciones que implican una o varias acciones. El proprocesador toma como entrada el programa fuente en C entes que el compilador y ejecuta todas las macros que encuentra.

Page 162: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

162

GLOSARIO DE TÉRMINOS DE E-CBNC

Campo de aplicación

Parte constitutiva de una Norma Técnica de Competencia Laboral que describe el conjunto de circunstancias laborales posibles en las que una persona debe ser capaz de demostrar dominio sobre el elemento de competencia. Es decir, el campo de aplicación describe el ambiente laboral donde el individuo aplica el elemento de competencia y ofrece indicadores para juzgar que las demostraciones del desempeño son suficientes para validarlo

Competencia laboral

Aptitud de un individuo para desempeñar una misma función productiva en diferentes contextos y con base en los requerimientos de calidad esperados por el sector productivo. Esta aptitud se logra con la adquisición y desarrollo de conocimientos, habilidades y capacidades que son expresados en el saber, el hacer y el saber-hacer.

Criterio de desempeño

Parte constitutiva de una Norma Técnica de Competencia Laboral que se refiere al conjunto de atributos que deberán presentar tanto los resultados obtenidos, como el desempeño mismo de un elemento de competencia; es decir, el cómo y el qué se espera del desempeño. Los criterios de desempeño se asocian a los elementos de competencia. Son una descripción de los requisitos de calidad para el resultado obtenido en el desempeño laboral; permiten establecer si se alcanza o no el resultado descrito en el elemento de competencia.

Elemento de Competencia.

Es la descripción de la realización que debe ser lograda por una persona en al ámbito de su ocupación. Se refiere a una acción, un comportamiento o un resultado que se debe demostrar por lo tanto es una función realizada por un individuo. La desagregación de funciones realizada a lo largo del proceso de análisis funcional usualmente no sobrepasa de cuatro a cinco niveles. Estas diferentes funciones, cuando ya pueden ser ejecutadas por personas y describen acciones que se pueden lograr y resumir, reciben el nombre de elementos de competencia.

Evidencia de conocimiento.

Parte constitutiva de una Norma Técnica de Competencia Laboral que hace referencia al conocimiento y comprensión necesarios para lograr el desempeño competente. Puede referirse a los conocimientos teóricos y de principios de base científica que el alumno y el trabajador deben dominar, así como a sus habilidades cognitivas en relación con el elemento de competencia al que pertenecen.

Evidencia por producto

Hacen referencia a los objetos que pueden usarse como prueba de que la persona realizó lo establecido en la Norma Técnica de Competencia Laboral. Las evidencias por producto son pruebas reales, observables y tangibles de las consecuencias del desempeño

Page 163: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

163

Evidencia de Desempeño.

Parte constitutiva de una Norma Técnica de Competencia Laboral, que hace referencia a una serie de resultados y/o productos, requeridos por el criterio de desempeño y delimitados por el campo de aplicación, que permite probar y evaluar la competencia del trabajador. Cabe hacer notar que en este apartado se incluirán las manifestaciones que correspondan a las denominadas habilidades sociales del trabajador. Son descripciones sobre variables o condiciones cuyo estado permite inferir que el desempeño fue efectivamente logrado. Las evidencias directas tienen que ver con la técnica utilizada en el ejercicio de una competencia y se verifican mediante la observación. La evidencia por desempeño se refiere a las situaciones donde el individuo realiza la función y que puede usarse como prueba de que el individuo cumple con los requerimientos de la Norma Técnicas de Competencia Laboral.

Evidencia de actitud

Las Normas Técnicas de Competencia Laboral incluyen también la referencia a las actitudes subyacentes en el desempeño evaluado

Formación ocupacional

Proceso por medio del cual se construye un desarrollo individual referido a un grupo común de competencias para el desempeño relevante de diversas ocupaciones en el medio laboral.

Módulo ocupacional

Unidad autónoma integrada por unidades de aprendizaje con la finalidad de combinar diversos propósitos y experiencias de aprendizaje en una secuencia integral de manera que cada una de ellas se complementa hasta lograr el dominio y desarrollo de una función productiva.

Norma Técnica de Competencia Laboral

Documento en el que se registran las especificaciones con base en las cuales se espera sea desempeñada una función productiva. Cada Norma Técnica de Competencia Laboral esta constituida por unidades y elementos de competencia, criterios de desempeño, campo de aplicación y evidencias de desempeño y conocimiento.

Page 164: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

164

GLOSARIO DE TÉRMINOS TÉCNICOS

Abrir un archivo Identificación de un archivo para ver sus atributos. Algoritmo Conjunto de pasos ordenados para resolver un problema. Los

términos Algoritmo y Lógica son sinónimos (algorithm). Archivo Conjunto de registros afines tratados como una unidad de

almacenamiento de datos; por ejemplo, archivos de direcciones, archivos de agenda, etc. También se les conoce como ficheros o files.

Arreglo Recorridos o accesos secuenciales de un vector o matriz. Sus elementos se almacenan individualmente en celdas de memoria.

Array Vea Arreglo. Asignación Dar valor a un identificador de variable o constante. Paso de

parámetros hacia una variable. ADA Lenguaje de programación de diseño relativamente reciente.

Bautizado con el nombre de Ada Lovelace que vivió en el siglo XVII y se le considera como la primera mujer programadora.

Administrador De bases de datos o de red. La persona encargada de definir los entornos de trabajo y de dimensionar y repartir los recursos de utilización.

ALGOL Lenguaje de programación. El primero de los lenguajes estructurados. Origen de otros lenguajes como Pascal o Modula.

Análisis Con los términos de análisis de sistemas, funcional y orgánico se entienden las tareas previas a la programación que sirven para dar solución informática a un problema.

ASCII. American Standard Code for Information Interchange. Es un código muy utilizado para el intercambio de datos. Como los computadoraes solo procesan dígitos binarios, cada letra, dígito o carácter especial tiene su correspondiente código binario.

Asignación Usado en programación. Es la acción de poner en una variable un valor, el contenido de otra variable o el resultado de evaluar una expresión. En la mayoría de los lenguajes se representa con el signo igual.

Base de datos Es un conjunto de datos estructurados de forma que se hagan manejables de forma sencilla a pesar de su volumen o de la complejidad de las relaciones entre ellos.

Binario Sistema de numeración en base dos. Sus únicos dígitos son el 0 y el 1. Los computadoraes usan internamente este código.

BIT Contracción de binary digit. Es la unidad elemental de información en el computadora. Su valor es 0 ó 1 puesto que todos los dispositivos, interruptores y unidades de almacenamiento disponen únicamente de dos estados.

Page 165: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

165

Bucle En un programa es un grupo de instrucciones que se repiten hasta que se cumple una condición. Repetición dentro de un programa.

Buffer Area de almacenamiento temporal usado en la transferencia de datos entre la memoria principal y los periféricos.

Bus Conexión en paralelo por donde circulan los datos, las direcciones o las señales de control en el interior del computadora. Todos los componentes del computadora están conectados mediante buses.

Byte Conjunto de bits que contiene el código para un carácter. El byte de 8 bits, llamado octeto, es el más usado actualmente. Las capacidades de almacenamiento se miden en bytes o en sus múltiples. 1 K (kilobyte) = 1024 bytes. 1 Mb (megabyte) = 1024K. 1Gb (Gigabyte) = 1024 Mb.

Buffer Segmento de memoria reservado para el almacenamiento de datos mientras estos son procesados.

C Lenguaje de programación de alto nivel que posee características de los de bajo nivel y esto lo hace adecuado para escribir software de sistemas.

Cadena Tipo de estructura de datos que es un conjunto de caracteres almacenados consecutivamente. También recibe este nombre un conjunto de programas relacionados lógicamente para realizar una tarea.

Caída Fallo del equipo o del programa que producen una parada en un proceso. También puede haber caídas por fallos del sistema de comunicaciones cuando el computadora tiene terminales conectados.

Campo Son los elementos diferenciados de un registro de información. Son los lugares destinados para contener un dato determinado en un fichero o en una base de datos.

Canal de datos Parte del computadora que conecta la unidad central de proceso (CPU) y los periféricos. Son las conexiones por las que circulan los datos.

Carácter Dígito, letra o símbolo que puede ser tratado por un computadora. Es la unidad elemental de información desde el punto de vista externo.

COBOL. Common Business Oriented Language. Lenguaje de programación de alto nivel orientado a los negocios. Aunque data de 1959 es de los lenguajes más usados.

Codificar Es la parte de la programación consistente en escribir en un lenguaje informático el algoritmo que resuelve un problema.

Código Tabla de traducción entre todos los posibles símbolos de dos alfabetos. El más conocido es el código ASCII (American Standard Code for Information Interchange).

Page 166: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

166

Cola Estructura de información consistente en una lista lineal en la que la nueva información se coloca en un extremo y la salida para procesar es por el otro extremo. Ejemplos: la cola de trabajos pendientes de ejecutar o la cola de espera de impresión de resultados.

Comando Mandato ejecutable por el computadora. Cada una de las instrucciones que componen el sistema operativo y que el computadora puede traducir en acciones específicas.

Compatibilidad Dos computadoraes son compatibles cuando los programas que funcionan en uno de ellos también lo hacen en el otro. Los grandes fabricantes de computadoraes son quienes fijan los estándares de compatibilidad.

Configuración Lista de especificaciones de la unidad central del computadora y características de los periféricos que se le pueden conectar. Determina el tipo de computadora de que se trata para resolver problemas de compatibilidades.

Consola Periférico del computadora que controla su funcionamiento. En grandes computadoraes puede haber consola central y consola de periféricos. Las personas que las manejan reciben el nombre de operadores.

Contador Usado en programación. Variable que contiene el número de acciones realizadas.

Coprocesador Chip que se puede añadir en la configuración de los computadoraes personales colocándolo en su interior para aumentar la potencia y precisión de cálculo. Hay programas que lo requieren para funcionar. Otros programas hacen uso de él para aumentar la velocidad de los procesos, si está en la configuración del computadora.

CPU Central Process Unity. Unidad central de proceso o procesador (UCP). Es el corazón del computadora, la parte más importante. Los computadoraes personales tienen la CPU en un chip. Consta de unidad aritmético-lógica, unidad de control y memoria principal. Contiene los componentes electrónicos (registros, sumadores, flip-flops, puertas lógicas), en los que tienen lugar la ejecución de las instrucciones de los programas.

Cursor Indicativo luminoso que muestra la posición de la pantalla en la que se van a introducir datos.

Caché Banco dedicado de memoria de alta velocidad o una sección reservada de la memoria regular que se utiliza para mejorar el desempeño. (Ver Memoria Caché).

Codificación Expresar el algoritmo como un programa en un lenguaje de programación adecuado.

Page 167: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

167

Código espagueti Código escrito sin seguir una estructura coherente. La lógica puede moverse de rutina en rutina sin regresar al punto de origen (salida desde la que se mandó llamar a otra rutina). Usualmente el uso de la instrucción GOTO es la que permite este tipo de programación.

Compilador Software capaz de traducir programas de alto nivel en un nivel de representación más bajo. Usualmente genera primero un código ensamblador para después traducirlo en lenguaje máquina.

Computadora Máquina de propósito general que procesa información de acuerdo a un conjunto de instrucciones que están almacenadas internamente, de forma temporal o permanente. A la computadora y a todo su equipo se le conoce como Hardware (también llamado computadora). Software son las instrucciones que le dicen a una computadora que hacer. El conjunto de instrucciones que realiza una tarea en particular es llamado programa. Es una máquina que bajo el control de programas almacenados es capaz de almacenar, recuperar y procesar datos. Constan de un procesador, la memoria y las unidades de entrada y salida. Según el tipo de información que manejen pueden ser analógicos o digitales. Según su tamaño se clasifican en microcomputadoraes, minicomputadoraes y mainframes.

Constante Es un dato que permanece sin cambios durante el desarrollo de un algoritmo y la ejecución de un programa. Ver Tipos de Constantes.

Datos La materia prima de que se nutren los programas para producir resultados. Pueden ser de varios tipos: numéricos, alfabéticos, alfanuméricos (cualquier conjunto de símbolos) y lógicos (solo dos valores posibles, verdadero o falso).

Debugging Depuración. Proceso de eliminar errores de un programa. Declaración Definición del tipo de una variable en un programa. Diccionario de Datos Tabla con las propiedades y estructura de los ficheros que forman

una base de datos. Digital Es una cantidad que sólo puede asumir valores discretos. Dirección Etiqueta, nombre o número que identifica la posición de un dato

en la memoria o en una unidad de almacenamiento. Directorio Tabla de los ficheros que se encuentran en un disco. Directorio Raíz Es el directorio de nivel más alto en una estructura jerárquica de

directorios. Disco Magnético Dispositivo de almacenamiento de datos. Es una placa circular

recubierto de material magnetizable. Diskette Disco flexible. Actualmente suelen ser de doble cara y pueden

tener doble densidad o alta densidad de grabación. Los tamaños

Page 168: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

168

habituales son de 5 1/4 y de 3 1/2 pulgadas. Estos últimos van en una carcasa de plástico y a pesar de su menor tamaño tienen mayor capacidad.

Dos (Disk Operating System). Sistema operativo de disco. El más extendido de los sistemas operativos de computadoraes personales. Fue desarrollado en 1979. Es un conjunto de programas de utilidad que se ejecutan nombrándolos y dándoles parámetros.

Data Vea Datos. Datos Cualquier forma de información ya sea en papel o en forma

electrónica. Esta última se refiere a archivos y bases de datos, documentos de texto, imágenes y voz y video digitalizados.

Declaración

Es una sentencia de una función o palabra reservada del lenguaje C que permite realkizr una acción.

CASE.- Variación de la declaración IF-THEN-ELSE. Se utiliza cuando el número de condiciones es muy grande.

1. IF-THEN-ELSE.- Permite la comparación entre 2 o mas condiciones de datos. Si el resultado es verdadero, entonces (THEN) realiza una acción a seguir; en caso contrario (ELSE) permite llevar a cabo otra acción distinta.

Debug Encontrar errores en un programa lógico o computacional. Usualmente se revisa el código línea por línea.

Diagrama de Flujo Es una representación que utiliza símbolos unidos por flechas denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar. Dentro de cada símbolo o caja se indican las operaciones que deben ser realizadas.

Diagrama N-S (Nassi-Schneiderman)

También conocidos como Diagramas de Chapin. Es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas, y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

Documentación de Programas

Descripción narrativa y gráfica de un programa computacional. Se usa para describir cada paso realizado por el programador, desde la etapa de análisis hasta la etapa de mantenimiento de un programa

Editor Programa que permite escribir y corregir ficheros de texto como documentos o programas.

Ejecutar Realizar una instrucción en código máquina o bien hacer que se realicen las instrucciones de un programa.

Page 169: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

169

Ensamblador Se conoce con este nombre tanto a un lenguaje de bajo nivel (cercano al lenguaje máquina) como al programa que traduce a lenguaje máquina los programas escritos en lenguaje ensamblador.

Eprom (Erasable Programable Read Only Memory). Memoria sólo de lectura pero que se puede programar (cargarle información) y mediante procesos especiales borrar para reprogramar.

Estructura De Datos Conjunto de datos en que sus componentes están relacionados entre sí de una forma particular y sobre los que se pueden realizar ciertas operaciones según sea el tipo de relación que hay entre ellos.

Expresión Conjunto de variables, constantes, funciones y símbolos de operación que expresan un cálculo a realizar. Proporcionan un valor que será del tipo (aritmético, alfanumérico o lógico) de las variables y constantes que contiene.

E/S Siglas para indicar las operaciones de entrada o salida, es decir las transferencias entre la CPU y los periféricos.

EAPROM Memoria de sólo lectura alterable electrónicamente. Puede ser borrada y programada por el usuario. Ver Tipos de Memoria.

EEPROM Memoria electrónicamente borrable (por medio de luz ultravioleta). Ver Tipos de Memoria.

Ejecución De Programa Lectura y realización de las instrucciones que forman un programa (Run, correr el programa), se realiza en forma secuencial.

Entrada Información que se introduce a un programa. Enunciado Unidad mínima que se puede ejecutar. También llamado

instrucción, son los comandos que componen el programa. Expresiones Aritméticas Son análogas a las fórmulas matemáticas. Las variables y

constantes son numéricas y las operaciones son las aritméticas. Los operadores más comunes son:

Símbolo Significado

( ) Paréntesis

^ Exponenciación

DIV División entera

MOD Módulo

* Multiplicación

/ División

+ Suma

- Resta

Page 170: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

170

= Asignación

Expresiones lógicas Formato: Operador lógico . Ver Operadores lógicos Expresiones Relacionales Permiten realizar comparaciones de valores de tipo numérico o

carácter. Sirven para expresar las condiciones en algoritmos o programas. Formato: Operador relacional . Ver Operadores relacionales.

Factor de Bloqueo Cantidad de registros lógicos que hay en cada registro físico de un fichero.

Fichero. Conjunto organizado de información almacenado en un soporte. Está formado por registros que contienen la información de cada elemento del fichero. Los registros a su vez están divididos en campos, siendo cada campo uno de los datos del registro. Por ejemplo en un fichero de clientes, cada cliente sería un registro y tendríamos los campos: nombre, apellidos, dirección, teléfono, etc.

Floppy Disk Disco flexible. Ver diskette. Fuente Origen. Se dice que un programa está en lenguaje fuente cuando

aún no ha sido traducido por ningún compilador. Fichero Vea Archivo. File Vea Archivo. Generador De Aplicaciones

Software que genera un conjunto de programas a partir de las especificaciones que se han dado.

Gráficos De Alta Resolución

De alto nivel de detalle. Son gráficos obtenidos por programas de computadora en los que la definición normal de las pantallas, 24 X 80 caracteres, se ve ampliamente incrementada permitiendo que cada punto (pixel) pueda tener un color diferenciado.

Grabación Escritura de un conjunto de datos en un soporte. Hardware Los elementos que forman la parte física del computadora.

Constituye la parte tangible del sistema informático. Es lo opuesto al software que son los programas que hacen que el hardware funcione.

Herramientas de Desarrollo

Conjunto de programas para facilitar la programación. Es un campo de investigación informática de máxima actualidad. También reciben el nombre de tecnologías CASE (Computer Aided Software Engeneering), ingeniería del software ayudado por el computadora.

Heurístico Es lo opuesto a algorítmico. Es un método de exploraciones sucesivas para la resolución de problemas. Usado en inteligencia artificial.

Hoja De Cálculo También conocida como hoja electrónica. Es un programa que permite construir modelos compuestos de datos y de fórmulas que los relacionan. Visualmente aparece como un conjunto de casillas formadas por intersección de filas y columnas. En cada

Page 171: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

171

una de estas casillas podemos introducir un número, un texto o una fórmula que relaciona funciones predefinidas y otras casillas. A lo que más se puede parecer es a una gran calculadora programable, pero más sencilla de manejar y con muchas utilidades de copia, grabación, ordenación, formateo de datos, y construcción de gráficos, entre otras.

I/O Símbolo de Input/Output. Entrada/Salida desde o hacia un computadora.

Implementar Instalar y hacer funcionar. Impresora Aparato utilizado para imprimir lo especificado desde un

computadora. Según la forma de escribir las hay que van carácter a carácter, línea a línea o página a página.

Indexación Operación que consiste en clasificar un fichero o una tabla según el valor de un índice o de una clave.

Índice Símbolo o número usado para identificar un elemento particular en una tabla.

Informática Estudia el tratamiento de la información de forma automática. Trata tanto los algoritmos de resolución de problemas, como el diseño y el manejo de computadoraes, la estructura de los sistemas informáticos y los métodos de programación.

Ingeniería De Software Nueva parte de la informática dedicada a crear entornos de desarrollo de software que adecuen la complejidad creciente de los programas a presupuestos aceptables. Se ocupa de todas las fases desde el diseño hasta el mantenimiento y usa nuevas técnicas y herramientas más acordes con las nuevas generaciones de hardware y software.

Inteligencia Artificial Ciencia que estudia los modos en que los computadoraes puedan realizar tareas que requerirían algo de inteligencia humana. Aunque queda mucho por hacer, los principales avances han sido: programas que juegan (ajedrez), programas que razonan (representación del conocimiento), reconocimiento del lenguaje natural, reconocimiento de imágenes (visión artificial) y sistemas expertos.

Interactivo O Conversacional

Modo de trabajo con un computadora en el que éste ejecuta los mandatos tal como se le van introduciendo. Es lo contrario a ejecutar un proceso en diferido. En este modo de operación hay una sucesión de órdenes y contestaciones.

Interface Dispositivo o elemento intermedio de hardware o de software que permite conectar dos sistemas.

Intérprete Programa que traduce instrucciones de lenguaje de alto nivel a lenguaje máquina y las va ejecutando tras su traducción.

Iteración Cada una de las repeticiones de las acciones contenidas en un bucle de programa.

Page 172: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

172

Indexación Técnica de acceso a los datos en base a la utilización de un índice

o un registro de índices. Indexar Asociar un índice a un dato para su acceso. Información El conjunto de los datos. Instrucción Elemento básico constitutivo de los programas. Una instrucción es

una formulación de una orden a la computadora y que se manifiesta en la expresión del conjunto de operaciones que debe ejecutar la computadora.

JCL Acrónimo de Job Control Language. Lenguaje de control de procedimientos. Es un lenguaje (conjunto de comandos) utilizado para comunicarse con el sistema operativo.

Juego De Caracteres. Conjunto de símbolos que pueden ser usados por un computadora.

K o Kbyte. Es la unidad de medida de la capacidad de almacenamiento de información, tanto de la memoria principal como de las memorias auxiliares (discos y disquetes). 1 K son 1024 bytes, (2 elevado a 10 caracteres).

Lápiz Óptico Dispositivo con forma de lápiz que permite seleccionar un punto determinado de una pantalla de rayos catódicos. Con el programa adecuado este aparato permitirá hacer dibujos, contestar cuestionarios, etc.

Lectora Óptica Dispositivo para entrada de datos. Interpreta los caracteres impresos comparando niveles de luminosidad. Son lectores ópticos los periféricos llamados escáner que permiten digitalizar cualquier imagen.

Lenguaje de Programación

Es un lenguaje, con su léxico y su sintaxis, que se emplea para que el computadora ejecute las acciones que se han determinado en un algoritmo y se han codificado en dicho lenguaje. Una primera clasificación de los lenguajes es en lenguajes de bajo nivel (lenguajes máquina y ensambladores) y lenguajes de alto nivel (Ada, Basic, Cobol, Fortran, Pascal, etc.). Estos últimos, que son independientes de una máquina particular, pueden clasificarse como de propósito especial y general; también como lenguajes de procedimiento y declarativos. Actualmente se evoluciona hacia lenguajes de más alto nivel o lenguajes de especificación.

Librería Conjunto de programas o módulos almacenados generalmente sobre un dispositivo magnético.

Linkar Encadenar. Juntar los programas en lenguaje máquina con los módulos de librería para ejecutarlos.

Lisp Lenguaje diseñado para trabajar en Inteligencia Artificial. Su objetivo es la manipulación de símbolos.

Lista Conjunto de elementos de datos organizados de modo que se

Page 173: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

173

conoce la posición relativa de cada elemento. Logicial Palabra en castellano equivalente a software. Logo Lenguaje de computadora diseñado para acercar a los niños al

mundo de los computadoraes. Contiene el conjunto de órdenes preciso para que un símbolo (tortuga) recorra la pantalla haciendo dibujos.

Longitud Aplicado a una cadena de caracteres, a un campo o a un registro, es el número de bytes que ocupa.

Loop Bucle. Repetición de un cierto número de instrucciones el número de veces que indique un contador o bien mientras se cumpla una condición.

Lenguaje de alto nivel Permite generar código máquina a partir de sentencias independientes de la máquina y representar problemas de un usuario de modo simple y claro. Una sentencia en lenguaje evolucionado se traducirá con frecuencia en una serie de instrucciones máquina o de subprogramas en lenguaje máquina.

Lenguaje de bajo nivel Lenguaje de programación en código máquina o en el que a cada instrucción simbólica le corresponde una en código máquina equivalente. El lenguaje de bajo nivel depende de la máquina.

Lenguajes de Programación

Algunos de los más comunes son... • Lenguaje ensamblador: dependiente del hardware (cada

tipo de CPU tiene su propio lenguaje ensamblador), por lo que es difícil de mantener. No confundirlo con lenguaje máquina. Cada declaración es traducida a una instrucción máquina por el ensamblador.

• Ada: Lenguaje basado en Pascal. • ALGOL (ALGOrithmic Language): lenguaje de alto nivel. • BASIC (Beginners All purpose Symbolic Instruction Code):

Desarrollado a mediados de 1960. No es un lenguaje estructurado y es fácil escribir código espagueti que dificuta su interpretación por otros programadores.

• C: Lenguaje de alto nivel desarrollado para que UNIX corriera en varias plataformas (computadoras).

• C++: Lenguaje orientado a objetos, basado en el lenguaje C.

• COBOL (COmmon Business Oriented Language): De alto nivel, utilizado principalmente en negocios.

• Eiffel: Lenguaje de programación orientado a objetos. Su compilador genera código en C.

• FORTH (FOuRTH-generation language): lenguaje de alto nivel para proporcionar un control directo de la computadora.

• FORTRAN (FORmula TRANslation): Lenguaje de alto nivel.

Page 174: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

174

Usado para expresar fórmulas matemáticas. • GW-BASIC (Gee Whiz-BASIC): Intérprete del lenguaje BASIC. • HTML (HyperText Markup Language): Lenguaje estándar

para permitir documentos con hipertexto (links o ligas a texto relacionado). Permite establecer conexiones entre documentos en el Word Wide Web (WWW).

• LISP (LISt Processing).- lenguaje de alto nivel. No utiliza programación numérica. Usado para aplicaciones de inteligencia artificial.

• Logo.- De alto nivel. Se utiliza para creación de gráficos. • MODULA-2 (MODUlar Language): versión del lenguaje

Pascal. Soporta la compilación de módulos. • Objective-C: Lenguaje orientado a objetos basado en C.

Trabaja en estaciones de trabajo. • Pascal: Lenguaje de alto nivel. Utiliza estructuras de

arreglos. • PROLOG (PROgramming in LOGic): Para aplicaciones de

inteligencia artificial. • SIMULA: Lenguaje de simulación, originalmente era un

lenguaje orientado a objetos. • SmallTalk: Lenguaje orientado a objetos. También se utiliza

como sistema operativo. • SNOBOL: Lenguaje simbólico orientado a cadenas. Utilizado

en edición de texto, lingüística, compilación y manipulación simbólica de ecuaciones algebráicas

• SQL (Structured Query Language): Lenguaje de búsqueda y procesamiento de archivos.

• VPexpert: Lenguaje para Inteligencia Artificial. • Xbase: Lenguaje en el que se basan algunos manejadores

de bases de datos. Lenguaje máquina Las instrucciones se especifican en binario, de tal forma que sean

cargadas directamente en memoria y ejecutables. Es el lenguaje de mas bajo nivel que permite utilizar una computadora y es el único lenguaje que sabe interpretar la unidad de control de la misma.

Lista Arreglo de datos. Usualmente se utiliza su formato es de columna o renglón.

Lista doblemente enlazada

Una lista cuyos nodos utilizan punteros para permitir el movimiento hacia delante y hacia atrás de un nodo perteneciente a la estructura lista.

Macroinstrucción Instrucción en un lenguaje ensamblador que genera varias instrucciones en lenguaje máquina. En paquetes de programas se entiende por macros las instrucciones que desencadenan otro

Page 175: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

175

conjunto más amplio de instrucciones. Mainframe Recibe este nombre la computadora principal en una instalación

con puestos de trabajo desplazados o en una red de computadoraes pequeños conectados a uno mayor que les sirve de soporte de datos.

Megabyte Unidad de medida de capacidad de almacenamiento de información. Un megabyte es 1024 Kbytes y por tanto 1.048.576 bytes.

Memoria La memoria central o principal es la parte de la computadora donde se almacenan los programas y los datos. Los computadoraes personales tienen dos tipos de memoria, ver RAM y ROM. Estas memorias están contenidas en chips. La capacidad se mide en bytes o en su múltiplo la K. Cada palabra de la memoria posee su dirección.

Menú Es un conjunto de opciones presentado por un programa. La elección se efectúa tecleando un código, con los cursores o señalándolo con algún dispositivo como el ratón o el lápiz óptico.

Microcomputadora Es una computadora cuyo procesador está en un chip. Conocidos como computadoraes personales, son pequeños, económicos y, excepto los más potentes, sólo soportan una aplicación a la vez.

Microprocesador Procesadores que se han miniaturizado hasta incluirlos en un chip. Contiene la unidad de control y la unidad aritmético-lógica. Se conecta con las memorias y los periféricos por medio de unas patillas conectadas a un haz de líneas. Los más usados son los de Intel y Motorola.

Módem Nombre reducido de modulador-demodulador. Dispositivo que permite transmitir y recibir información a través de línea telefónica. Conecta los computadoras entre sí o a un gran computadora con sus terminales remotos.

Módulo En programación, cada uno de los bloques lógicos en que se puede dividir un programa.

Monitor Por un lado se designa así a la pantalla usada como periférico de salida por los computadoraes personales. Además, es la parte del sistema operativo que asegura la ejecución de los programas.

Multiproceso. Técnica de utilización de un computadora que posee varias unidades centrales de proceso (CPU)y, por tanto, puede estar ejecutando varias instrucciones en el mismo instante de tiempo.

Multiprogramación Técnica de utilización de un computadora que permite la ejecución simultánea de varios programas porque les dedica el procesador un pequeño tiempo a cada uno de ellos.

Memoria Caché Es el banco de memoria que conecta la memoria principal y el CPU. Es más rápida que la memoria principal y permite que las instrucciones sean ejecutadas y que los datos sean leídos a una

Page 176: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

176

velocidad más alta. Métodos de búsqueda FIFO(First In First Out), LIFO (Last In First Out), Nodo Punto o vértice de un árbol o grafo; normalmente representa un

dato. Núcleo Se le da este nombre a la parte central de un sistema operativo. Operaciones Se clasifican en aritméticas (números), lógicas (falso, verdadero),

relacionales (a>b, a<>b) y de carácter. Operador Símbolo especial o palabra reservada que especifica una

operación aritmética o lógica. Objeto Se llama programa objeto al resultado de la compilación de un

programa fuente. Ofimática. Técnicas para realizar y controlar con medios informáticos los

trabajos habituales en una oficina. Operador Además de un símbolo escrito de operación, se designa con este

nombre a la persona encargada del manejo de grandes computadoraes.

Overflow Desbordamiento de la capacidad de una variable en un programa o de un fichero.

Organigramas Diagramas de flujo. Son los esquemas de funcionamiento del proceso. Se realizan para facilitar la programación.

Operador booleano o lógico

Operador que combina expresiones lógicas utilizando aritmética lógica. Los más comunes son: AND, OR y NOT.

Operadores Aritméticos Pueden variar según el lenguaje de programación a utilizar. Usualmente, el orden de prioridad más común es el siguiente:

Símbolo Significado Operando Resultado

^, ** Exponenciación Entero, Real Entero, Real

* Multiplicación Entero, Real Entero, Real

/ División (real) Real Real

+ Suma Entero, Real Entero, Real

- Resta Entero, Real Entero, Real

DIV División entera Entero Entero

MOD Módulo(residuo) Entero Entero

Operadores Lógicos Operador Expresión Resultado

NO, NOT NO [A] Negación de A (lo contrario)

Ver Tabla de verdad

Y, AND [A] Y [B] Unión de A y B Ver Tabla de verdad

O, OR [A] O [B] Intersección Ver Tabla

Page 177: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

177

entre A y B de verdad

Operadores Relacionales Símbolo Significado Símbolo Significado

> Mayor que <> Diferente a

< Menor que >=, => Mayor o Igual a

= Igual a <=, =< Menor o Igual a

PASCAL Lenguaje de programación estructurado. Simple pero potente. PC Abreviatura de Personal Computer. Periférico Aparato conectado a la unidad central de proceso (CPU) de un

computadora y controlado por éste. Con este nombre se designan a las unidades de entrada, a las de salida y a las memorias auxiliares.

Pila Un tipo de estructura de datos en el que el último dato en llegar es el primero en salir.

Pixel Es el menor elemento visualizable individualmente en una pantalla.

Plotter Dispositivo periférico de salida usado para hacer dibujos, generalmente gráficos o planos, pues tiene más precisión que una impresora.

Procesador Ver CPU. Procesador De Textos Tratamiento de textos. Sistema basado en el computadora para

escribir y formatear textos. Aporta ventajas de almacenamiento y localización, de copiar bloques de texto, búsqueda de palabras o corrección ortográfica.

Programa Secuencia de instrucciones que realizan una tarea específica. Programación Técnicas destinadas a la resolución de un problema, usando para

ello los lenguajes de programación. Se manejan estructuras lógicas de los tipos: secuencial, condicional e iterativa.

PROLOG Lenguaje de programación concebido para escribir programas de Inteligencia Artificial. Creado en 1972, las tareas se expresan describiendo los objetos que se necesitan y las relaciones lógicas entre ellos.

Palabra reservada Palabras utilizadas por los lenguajes de programación para representar variables, sentencias u órdenes.

Pseudocódigo Es un lenguaje de especificación de algoritmos y no puede ser ejecutado por una computadora

Pila Estructura dinámica de datos en la que los elementos se añaden y eliminan por un extremo.

Procedimiento Subrutina o Función. Procesamiento de Datos Capturar, guardar, actualizar y regresar datos e información.

Page 178: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

178

Programa ejecutable Programa compilado y traducido a código máquina que puede ser ejecutado directamente por una computadora.

Programa fuente Programa escrito en lenguaje de alto nivel. Requiere de compilación o interpretación para su ejecución.

Programa objeto Programa en lenguaje máquina resultante de la traducción del programa fuente .

Programación no-numérica

Programación con objetos (palabras, personas, cosas).

Programación orientada a objetos

Basado en la programación modular. Maneja los conceptos de encapsulamiento, herencia y poliformismo.

Programación visual Construcción de programas mediante el uso de herramientas que permiten desarrollar programas utilizando plantillas con instrucciones preestablecidas. No es necesario escribir código.

Programador Persona encargada de diseñar la lógica de un programa y escribirla utilizando líneas de código para un programa computacional.

PROM Memoria programable (irreversible).Programada por el usuario o comerciante, una vez programada esta memoria no puede modificar su contenido. Ver Tipos de Memoria.

Registro Estructura de datos formada por diferentes campos. Reglas de Prioridad Para Expresiones Aritméticas

- Evaluar todas aquellas expresiones que estén encerradas entre paréntesis. Comenzando con el paréntesis más interno y terminando con el más externo.

- Las expresiones se evalúan con orden izquierda a derecha (notación polaca inversa), siguiendo el orden de prioridad de los operadores aritméticos, según el lenguaje de programación a utilizar (ver operadores aritméticos).

Ram Random Access Memory. Memoria de acceso aleatorio. Llamada así porque se puede acceder a cualquiera de sus posiciones sin recorrer las anteriores.

Recursividad Propiedad de algunos lenguajes de programación de permitir que un programa solicite su propia ejecución en el curso de su desarrollo.

Registro Conjunto de uno o más campos consecutivos que son tratados por un programa como unidad de información. Son los componentes lógicos de los ficheros.

ROM Read Only Memory. Memoria únicamente de lectura. Son memorias de acceso rápido usadas para contener programas.

RPG Report Program Generator. Lenguaje simbólico de programación. Es un lenguaje poco felxible. Se utiliza en aplicaciones de gestión, principalmente en minicomputadoraes.

Servidor Recibe este nombre el computadora que en una red local de computadoraes tiene el sistema operativo y aquellos periféricos

Page 179: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

179

que se desea compartir.

Sistemas Expertos Son programas de computadora que tienen el mismo nivel de conocimientos que un experto humano sobre un tema particular. Además de extraer conclusiones razonadas sobre un grupo de conocimientos, deben ser capaces de comunicar al usuario la línea de razonamiento seguida.

Software Son los programas que dirigen el funcionamiento de un computadora. Básicamente es de dos tipos: sistemas y aplicación.

Sort Programa para clasificar un conjunto de datos. Spool Dispositivo para almacenar temporalmente los datos enviados a

un dispositivo de salida hasta que éste quede libre. Supercomputadora Se llaman así a los grandes computadoraes diseñados

especialmente para propósitos concretos. Tienen una capacidad y velocidad superiores a los corrientes.

Salida.- Información generada por un programa computacional. Transferir o transmitir desde la computadora hasta un dispositivo periférico o una línea de comunicación.

Sistema operativo (S.O.) Programa encargado del control general de la computadora. La parte principal del S.O., llamada Kernel, es colocada en la memoria al encender la máquina para monitorear cada operación realizada.

Software Instrucciones computacionales almacenadas en un programa. Subproblemas División de un problema en problemas más pequeños y simples

de resolver. Subrutina Instrucciones que realizan operaciones específicas. Son llamadas

mediante módulos o procedimientos. Tarjeta Además de las obsoletas fichas perforadas con ochenta caracteres

de capacidad, reciben este nombre las placas de circuitos impresos que pueden contener: ampliaciones de memoria, conexión a redes, placas para gráficos en color, etc.

Teclado La unidad de entrada más corriente. Formada por un conjunto de teclas al estilo de una máquina de escribir.

Telemática Técnicas que utilizan la transmisión de informacion mediante telecomunicaciones, con los tratamientos informáticos de dicha información.

Teleproceso Técnica de tratamiento de datos en donde éstos son enviados y recibidos desde terminales remotos.

Tiempo Compartido Método de operación de grandes computadoraes que permite la utilización simultánea por varios usuarios.

Tabla de Verdad de NO (NOT)

Comportamiento.

A NO A

Falso Verdadero

Page 180: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

180

Verdadero Falso

Tabla de Verdad de O (OR)

Comportamiento.

A B (A) O (B)

Falso Falso Falso

Falso Verdadero Verdadero

Verdadero Falso Verdadero

Verdadero Verdadero Verdadero

Tabla de Verdad de Y (AND)

Comportamiento.

A B (A) Y (B)

Falso Falso Falso

Falso Verdadero Falso

Verdadero Falso Falso

Verdadero Verdadero Verdadero

Tipos de Datos Simple, estructurados o abstractos; definidos por el usuario o por el sistema; sólo existen mientras el programa es ejecutado; manipulados por el hardware o el software.Pueden ser constantes, variables y estructuras que contienen números (enteros y reales), texto (caracteres y cadenas) o direcciones (de variables y estructuras). Un dato tiene un contenido (valor) y un tipo asociado. Por esta razón algunos lenguajes de programación son conocidos como Strongly Typed (tipos fuertes). El tipo de un dato determina: el rango de valores válidos, el conjunto de operaciones válidas, el espacio de memoria que ocupa que ocupa el dato y la representación e interpretación del dato binario.Permiten al compilador detectar errores, limitar la mezcla de tipos y evaluar expresiones de cualquier grado de complejidad.Mezcla de diferentes tipo de datos.- En general cuando una operación involucra diferentes tipos, ambos tipos se convierten internamente en lo que se denomina como tipo común. El tipo común es un tipo interconstruido con el mínimo valor posible para almacenar la unión de los valores de ambos tipos. Principales tipos de datos:

Tipo de datos Intervalo Byte

Booleano

False o True 1

Char Carácter del código actual 1

Page 181: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

181

Byte 0 .. 255 1

Shortint, Short

-128 .. 127 1

Integer, int -32,768 .. 32,767 2 8 y 16 bits

Integer, int 2,147,483,647 4 32 bits

Word, cardinal 0 a 65,535 2

Longint, Long 2,147,483,647 4

Single 1.5e-45 .. 3.4e38 4

Real, 2.9e-39 .. 1.7e38 6

Double, double precision

5.0e-324 .. 1.7e308 8

Comp -9.2e18 .. 9.2e18 8

Extended 3.4e-4932 .. 1.1e4932

10

String Cadena de caracteres 255

Bitset 0 a 15

Float

Signed

Unsigned

1 Bit = 0,1 1 Byte = 8 Bits 1Mb = 1024 Bytes 16 Bits = 1 Word 32 Bits = Double Word (Procesadores 80386)

Tipo de datos ordinales Los tipos de datos ordinales son todos aquellos tipos que no sean reales (integer, longint, shortint, byte, word, char, enumeraciones y subrangos).Probablemente, el tipo de datos más útil es longint (abreviatura en inglés de long integer o entero largo), este tipo de datos maneja valores de hasta 2,147,483,647 en vez de 32,767 del tipo integer. Por ejemplo, para almacenar el producto de 2,000 * 2,000 (donde el resultado es cuatro millones) se debe utilizar una variable de tipo longint en vez de una de tipo integer.Usualmente es recomendable utilizar integer en vez de longint debido a que este último tipo utiliza más memoria, además de

Page 182: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

182

reducir significativamente la velocidad de procesamiento. Por lo tanto, cuando se está seguro de que el uso de un integer será suficiente, es mejor que este sea utilizado.

Tipos de constantes.- Tipo Ejemplo

a) Entera: -1, 0, 25

b) Reales: 0.002, 3.14159, -2.34567, 5432.

c) Carácter: 'a', 'A', '+', ',', '9'

d) Cadena de caracteres:

'A1', 'Hola', 'PRIMER ALGORITMO'

e) Lógicas: falso, verdadero; 0, 1; Si, No

Tipos de memoria Tipo

R (lectura) W (escritura) Irreversible

RAM X X

ROM X X

PROM X X

EPROM X X

EAPROM X X (electrónicamente)

EEPROM X X (electrónicamente)

Tipos de variables Los tipo más comunes son: enteras, reales, carácter, cadena y lógicas.

Unidad Aritmético-Lógica Elemento del procesador en donde se efectúan las operaciones aritméticas y las lógicas.

Unidad Central de Proceso

. Ver CPU.

UNIX Sistema operativo de propósito general, multiusuario e interactivo. Usa el concepto de memoria virtual. Es de pequeño tamaño, potente y fácil de usar.

Usurio Es la persona que hace uso de un sistema de computadoraes. Unidades de almacenamiento

Disco duro (Hard Disk), disquete (Floppy Disk), discos compactos (CD-ROM), Disco láser, DVD (Digital Video Disk) , DVCR (Digital Video Cassette Recorder), cinta magnética (DAT Tape Cartridge), disco óptico (Magneto-Optic Cartridge), entre otros.

Unidades de E/S de datos (Entrada / Salida o Input/Output)

Permiten la entrada o salida de información al CPU. • Entrada: teclado, scanner, mouse (ratón), mouse óptico,

lápiz óptico. • Salida: Impresora impacto(matricial, tambor, margarita),

impresora no-impacto (electrostática, tinta,

Page 183: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

183

magnetográfica, termal, láser, ), monitor, data show (Liquid Cristal Display panel), bocina, plotter (impresora gráfica).

UCP Vea CPU (Unidad Central de Proceso). Velocidad La rapidez en ejecutar instrucciones depende de la frecuencia en

que trabaje un reloj interno. Se mide en megahercios. Velocidad de acceso La velocidad de acceso a los datos contenidos en un disco duro se

mide por el tiempo de recuperación de un dato. Se expresa en milisegundos.

Ventana Una parte de la pantalla dedicada a representar un subconjunto de datos particulares.

Virtual Elemento o sistema ficticio que puede reemplazar en una operación a un elemento o sistema real.

Validar Verificar que los datos arrojados por el programa sean correctos. Variable Localidad que almacena un valor modificable a lo largo de la

ejecución de un programa. Variable (otras definiciones)

Dato que puede cambiar durante el desarrollo del algoritmo y la ejecución de un programa. Se identifican mediante los atributos Nombre (de la variable) y Tipo (de variable). Cada variable puede ser únicamente declarada de un tipo, el cual puede definirse o declararse antes de su utilización. También se les conoce como identificador. Ver Tipos de Variables.

Page 184: PARA LA CARRERA DE PROFESIONAL TÉCNICO-BACHILLER EN · 1.2.2. Estructuras de control de flujo. 45 • Proposiciones y bloques. 45 • If-else. 46 • Else-if 47 • Ciclo While-for

Programación Estruccturada Codificada

184

REFERENCIAS DOCUMENTALES • Bertelsons, Boris, Mathias Rasch. Programación avanzada. Alfa omega Grupo Editor,

México, DF, 1998. • Ceballos, Francisco Javier. C / C++ Curso de programación. 2da. Edición, Alfa omega

Grupo Editor, México, DF, 2002. • García Félix, Jesús Carretero, Javier Fernández, Alejandro Calderón. El lenguaje de

programación C. ED. Pearson Educación, España, 2002. • Hansen Augie, ¡Aprenda C ya!, Microsoft Press, 1988. • I. T. Hawryszkiewycz, Análisis y diseño de bases de datos, Grupo Noriega Editores,

1996. • Kernighan Brian W., El lenguaje de programación C, Prentice Hall, 1986. • Miren Begoña Albizuri, Estructuras de Datos e introducción a Bases de Datos, Grupo

Noriega Editores, 1996. • Randy Davis, Stephen. C++ para dummies. 4ta. Edición. St. Editorial, Inc., Panamá,

2001. • Rodríguez, C.Gregorio, L.F. Llana Díaz, R. Martínez y otros. Ejercicios de Programación

creativos y recreativos en C++. ED. Pearson Educación, Madrid, España, 2002. • Tenenbaum Aaron M., Estructuras de datos en C, Prentice Hall, 1993.