Anda di halaman 1dari 64

Componente de Transformacin Curricular Familias Profesionales y Especialidades Bachillerato Tcnico

Informtica
Especialidad Aplicaciones Informticas Modulo de Programacin en Lenguajes Estructurados

DESARROLLO CURRICULAR
RESPONSABLE: ING. ALEXIS MORA P. 1

Com ponente de Transformacin Curricular - Familias Profesionales y Especialidades

OBJETIVO GENERAL DEL CURRCULO


Desarrollar aplicaciones informticas realizando la programacin, pruebas y documentacin de las mismas de conformidad con los requisitos funcionales, especificaciones aprobadas y normativa vigente.

DESARROLLO CURRICULAR DEL MDULO


MDULO DE PROGRAMACIN EN LENGUAJES ESTRUCTURADOS
Objetivo del Mdulo formativo: Utilizar sistemas informticos aislados o interconectados en red (Asociado a la Unidad de Competencia 3) Seleccin del tipo de contenido organizador: los procedimientos Identificacin y ordenacin de las Unidades de Trabajo (UT):

UT 1: UT 2: UT 3: UT 4: UT 5: UT 6: UT 7: UT 8: UT 9: UT 10: UT 11:

Qu es un programa? (10 perodos) Metodologa de la programacin (35 perodos) C un lenguaje estructurado procedimental (10 perodos) Comenzando a programar en C (30 perodos) Estructuras estticas (35 perodos) Estructuras externas (35 perodos) Estructuras dinmicas (35 perodos) Utilizacin avanzada del lenguaje C (30 perodos) Adaptacin de programas (25 perodos) Programacin orientada a objetos. Introduccin (45 perodos) Proyecto (50 perodos)

RESPONSABLE: ING. ALEXIS MORA P.

RELACIN DE UNIDADES DE TRABAJO DEL MDULO Y CONEXIN ENTRE ELLAS

Qu es un programa?

Metodologa de la programacin

C un lenguaje estructurado procedimental

Comenzando a programar en C

Estructuras estticas

Estructuras externas

Estructuras dinmicas

Utilizacin avanzada del lenguaje en C

Adaptacin de programas

Programacin orientada a objetos. Secuenciacin de las UT Introduccin

Secuenciacin de las UT Proyecto

RESPONSABLE: ING. ALEXIS MORA P.

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

DESARROLLO DE LAS UNIDADES DE TRABAJO


UNIDAD DE TRABAJO N 1 : Qu es un programa?

Objetivo de la Unidad de Trabajo: Introducir los conceptos bsicos de la programacin. (Tiempo estimado: 10 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar el material bibliogrfico. Procesar la informacin. Describir el ciclo de vida de una aplicacin informtica. Interpretar problemas. Interpretar algoritmos. Interpretar errores, Describir las caractersticas que debe tener un buen programa. Documentar algoritmos y programas. Identificar y utilizar los objetos de un programa. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia.

Actividades de enseanza y aprendizaje Reconocer los distintos componentes de los sistemas de informacin disponibles. Plantear situaciones cotidianas para su resolucin mediante el correspondiente algoritmo. Utilizar aplicaciones informticas realizadas con anterioridad, de las que se disponga de la documentacin suficiente para seguir su ciclo de vida. Identificar los distintos objetos de un programa sobre los listados fuente. Interpretar y discutir los algoritmos presentes en la aplicacin. Comprender y discutir programacin de procesos interactivos y por lotes.

Hechos/conceptos (contenidos soporte) Los sistemas de procesamiento de la informacin. Algoritmos. Aplicacin informtica. Ciclo de vida de una aplicacin informtica. Diseo del programa. Instalacin y explotacin del programa Errores. Tipos de errores Programacin. Tipos de programacin. Calidad de los programas. Documentacin de los programas. Formas de documentacin Objetos de un programa. Identificadores. Tipos de datos. Constantes. Variables. Expresiones. Tipos. Operadores Lenguajes de programacin. Tipos de lenguajes. Ensambladores. Interpretes. Compiladores

Criterios de evaluacin Se han resuelto los ejercicios planteados. Se ha diferenciado entre la programacin de procesos interactivos y por lotes. Se han discutido y justificado los algoritmos diseados. Se han identificado y discutido las distintas fases del ciclo de vida de una aplicacin informtica. Se han identificado los elementos u objetos de un programa. Se han creado y diseado algoritmos sencillos. Se han obtenido conclusiones del estudio de la documentacin.

Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma.

RESPONSABLE: ING. ALEXIS MORA P.

DESARROLLO DE CONTENIDOS. Introduccin Cuando hablamos de programacin en Informtica, nos referimos al proceso de planificar y desarrollar la solucin de un problema por medio de una computadora. Este proceso consiste en especificar el problema, desafiar el algoritmo, codificar en un lenguaje, ejecutar el programa y obtener la solucin del problema. Uno de los objetivos de este texto es la solucin algortmica de problemas, desafiando algoritmos bienl pensados y bien planeados, utilizando seudocdigos que faciliten la codificacin en los lenguajes de programacin C/C++. ALGORITMO El trmino algoritmo tiene su origen en la palabra algorismo, el mismo que viene del nombre del matemtico, astrnomo y filsofo musulmn: ALKHARISMI .El cambio de la palabra algorismo a algoritmo no esdifcil de entender tomando en cuenta que la gente haba olvidado la derivacin original de la palabra. En el afio de 1747 un diccionario matemtico alemn describe la palabra algorithmus asi: ..bajo este concepto se combinan las nociones de los cuatro tipos de clculos, suma, multiplicacin, resta y divisin". En el afio 1950, la palabra algoritmo era frecuentemente asociada con el "algoritmo de Euclides", el mismo que consiste en un conjunto de pasos ordenados para hallar el mximo comn divisor de dos nmeros dados. Todos los das, inconscientemente nosotros efectuamos un conjunto de pasos o acciones que nos permiten alcanzar un objetivo o resolver un problema. Este conjunto de pasos o acciones, empezamos a aplicarlas desde muy temprano en la mafiana, por ejemplo cuando nos despertamos, tomamos un bao, nos disponemos a desayunar y decidimos salir a realizar nuestras actividades, unos a trabajar otros a estudiar. Estos pasos o acciones las repetimos todos los das con el fin de alcanzar un resultado. En concreto estamos aplicando un algoritmo para alcanzar un objetivo o resolver un problema. Definicin.- Algoritmo es un conjunto de pasos o acciones que se realizan ordenadamente para llegar a un fin determinado pudiendo ser la obtencin de un resultado, la solucin de un problema o la realizacin de una tarea. Todo algoritmo debe cumplir con las siguientes requisitos: Ser finito. Un algoritmo tiene que terminar siempre despus de un nmero determinado de pasos. Ser definible. Cada uno de los pasos de un algoritmo debe definirse de un modo preciso. Aceptar datos de entrada. Un algoritmo debe aceptar datos de entrada, es decir cantidades dadas inicialmente. Producir salidas. Un algoritmo debe producir una o ms salidas o resultados, los mismos que deben guardar relacin con los datos de entrada. Ser efectivo. Un algoritmo debe resolver un 'problema en forma rpida y" eficiente. ) En la prctica muchas veces aplicamos un algoritmo de manera inadvertida, inconscientemente o automticamente. Esto sucede cuando tenemos que resolver un problema, que ya lo hemos resuelto anteriormente varias veces. Un ejemplo se da cuando nos disponemos a tomar un bao, lo hemos realizado tantas veces, que no hace falta enumerar los pasos, lo realizamos en forma automtica. CLASES DE ALGORITMOS Algoritmos cualitativos. Estn formados por un conjunto de pasos o acciones, escritos utilizando palabras comunes de un idioma, que permiten llegar a la solucin de un problema. Tambin se conoce como algoritmos no computables, en vista de que no intervienen clculos matemticos. Ejemplo! Elaborar un algoritmo para poner en marcha un vehculo. 1: inicio del algoritmo. 2: presionar el embrague con el pie izquierdo y el freno con el pie derecho: 3: poner en neutro. 4: colocar la llave y arrancar 5: poner en primera 6: quitar el freno de mano 7: levantar pie del embrague ya la vez presionar el acelerador. 8: fin del algoritmo

RESPONSABLE: ING. ALEXIS MORA P.

Ejemplo2 Elaborar un algoritmo para colocar exactamente 2 litros de agua' en el recipiente de 5 litros, para lo cual se dispone de un recipiente de 5 litros, otrade 4 litros y una cantidad ilimitada de agua. 1: inicio del algoritmo 1: llenar con agua el recipiente de 5 litros. 2: llenar el de 4 litros con el contenido de 5 litros, queda 1 en el de 5. 3: vaciar el recipiente de 4 litros. . 4: ponor 01 contenido de S litro. en el de 4, queda 1 en el de 4 . 5: llenar de nuevo el recipiente de 5 litros. 6: llenar el recipiente de 4 litros con agua de la de 5. Queda 2 en el de 5. 7: fin del algoritmo. Algoritmos cuantitativos Estn fonnados por un conjunto de pasos o acciones, escritos utilizando palabras comunes de un idioma, que penniten llegar a la obtencin de un resultado o solucin de un problema. Tambin se les conoce como algoritmos computables, en vista de que intervienen operaciones y clculos matemticos. Ejemplol Elaborar un algoritmo para calcular la superficie de un tringulo conocidos la base y la altura. 1: inicio algoritmo. 2: leer base y altura 3: multiplicar base por altura, el producto dividir para 2 4: almacenar el resultado en superficie. 5: escribir el contenido de superficie. 6: fin del 'algoritmo Ejemplo2 Elaborar un algoritmo para calcular el mayor de dos nmeros dados. .. 1: inicio del algoritmo. 2: leer nml y nm2. 3: si numl es mayor que num2 almacenar numl en mayor si no almacenar num2 en mayor. 4: escribir mayor 5: fin del algoritmo Los anteriores algoritmos son sencillos, pero en realidad existe una variedad de problemas que requieren un anlisis profundo y un razonamiento lgico y estructurado para llegar a la solucin.

Abordaremos este tipo de problemas para lo cual en forma paulatina buscaremos, la solucin algortmica de problemas utilizando una herramienta estructurada como son los seudocdigos que permiten una fcil codificacin en los lenguajes ms populares como C/C++ y Java.

APLICACIN INFORMTICA
Muchas personas piensan que una computadora puede realizar tareas o trabajos de complejidad superior a una inteligencia humana. La realidad es que una computadora no tiene ninguna inteligencia. No olvidemos que no es ms que una mquina creada por el hombre, y por tanto, no podr realizar una tarea que no haya sido previamente determinada por l. Una computadora (ordenador) es una mquina de origen electrnico que puede realizar una gran variedad de trabajos, pero, en principio, slo es capaz de hacer fsicamente tres clases de operaciones bsicas: 1. Sumar, restar, multiplicar y dividir dos valores numricos, es decir, realizar operaciones aritmticas sencillas. 2. Comparar dos valores (comprobar si son iguales, si el primero es mayor que el segundo, etc.), es decir, realizar operaciones lgicas sencillas. 3. Almacenar o recuperar informacin.

RESPONSABLE: ING. ALEXIS MORA P.

Con estas pocas operaciones utilizadas y combinadas de forma adecuada, mediante lo que llamamos programa, se pueden llegar a realizar tareas increblemente complejas que aporten la solucin a un determinado problema, ya sea de gestin, tcnico o de cualquier otro tipo. La potencia de clculo de una computadora se deriva de las caractersticas fsicas que posee, entre las que se encuadran principalmente: RAPIDEZ PRECISIN MEMORIA

Las caractersticas citadas provienen de los componentes electrnicos que conforman una computadora: Velocidad de conmutacin de circuitos electrnicos. Rapidez de transmisin de seales elctricas. Fiabilidad de los circuitos. Manejo de seales digitales. Gran capacidad de almacenamiento de informacin.

Nuestro objetivo es, para un problema dado, disear una solucin que pueda ser realizada por una computadora. Para ello necesitaremos, en primer lugar, un lenguaje o notacin para expresar la solucin obtenida. Tal solucin debe estar adaptada a las particularidades de la computadora, si bien en una primera fase de su diseo podremos utilizar una notacin intermedia entre el lenguaje natural y el de la computadora, posteriormente ser preciso escribirla en un lenguaje comprensible por la mquina, como, por ejemplo, en Cobol o Pascal, y, finalmente para su ejecucin, la mquina precisar realizar una traduccin a su lenguaje nativo, el denominado lenguaje mquina.

CICLO DE VIDA DE UNA APLICACIN INFORMTICA


Una aplicacin informtica se compone de uno o varios programas interrelacionados. El proceso que se sigue desde el planteamiento de un problema hasta que tiene una solucin instalada, se denomina ciclo de vida de una aplicacin informtica.

FASES DE DISEO

FASES DE INSTALACIN EDICION COMPILACIN MONTAJE PRUEBA DE EJECUCIN EXPLOTACIN Y MANTENIMIENTO

ANALISIS PROGRAMACIN CODIFICACIN

RESPONSABLE: ING. ALEXIS MORA P.

DISEO DEL PROGRAMA


1.- Fase de anlisis * Equipo a utilizar. * Personal informtico. * Estudio de los datos de entrada (INPUT). * Estudio de los datos de salida o resultados (OUTPUT). * Relacin entre la salida y la entrada. * Descomposicin del problema en mdulos. 2.- Fase de programacin Consiste en el diseo de la solucin al problema planteado en forma de algoritmo. 3.- Fase de codificacin En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje de programacin concreto. Al resultado se le denomina programa.

INSTALACIN Y EXPLOTACIN DEL PROGRAMA


1.- Fase de edicin Escritura del programa fuente. Se hace con la ayuda de un programa del sistema denominado editor. 2.- Fase de compilacin Traduccin del programa fuente a lenguaje mquina. Para ello se dispone de programas compiladores o intrpretes. 3.- Fase de montaje En los programas compilados es necesario aadir al programa objeto algunas rutinas del sistema o en algunos casos subprogramas externos que se hayan compilado separadamente. De ello se encarga el programa montador (linker) 4.- Fase de prueba de ejecucin Consiste en ejecutar el programa sucesivas veces don diferentes datos de prueba. 5.- Fase de explotacin y mantenimiento La explotacin consiste en el uso continuo y habitual por parte de los usuarios. Paralelamente a la explotacin de una aplicacin, consiste en la comprobacin peridica de su buen funcionamiento.

ERRORES
Corresponden al incumplimiento de las reglas sintcticas del lenguaje, como, por ejemplo, una palabra reservada del lenguaje mal escrita, una instruccin incompleta, etc.

ERRORES DE EJECUCIN
Se deben generalmente a operaciones no permitidas, como dividir por cero, leer un dato no numrico en una variable numrica, exceder un rango de valores permitidos, etc.

ERRORES DE LGICA
Corresponden a la obtencin por el programa de resultados que no son correctos.

ERRORES DE ESPECIFICACIN

RESPONSABLE: ING. ALEXIS MORA P.

Es posiblemente el pero tipo de error. Se deben a la realizacin de unas especificaciones incorrectas motivadas por una mala comunicacin entre el programador y quien plantea el problema.

METODOLOGA DE LA PROGRAMACIN PROGRAMACIN MODULAR


Se basa en la realizacin de una serie de descomposiciones sucesivas del algoritmo inicial, que describen el refinamiento progresivo del repertorio de instrucciones que van a constituir el programa.

PROGRAMACIN ESTRUCTURADA
Se basa en el uso exclusivo de las estructuras secuencia, alternativa e iteracin para el control del flujo de ejecucin de las instrucciones.

Documentacin de un programa
Para que el mantenimiento de una aplicacin informtica sea lo ms fcil posible, es conveniente disponer de toda su documentacin, esto es, de todos los documentos que se han ido generando en todas las etapas anteriores: ERS, algoritmos, cdigos fuentes, manuales de

usuario, etc. A todo este tipo de documentacin se le considera externa. Adems, existe otro
tipo de documentacin llamada interna. La documentacin interna de un programa son los comentarios que el programador puede escribir en el cdigo fuente de un programa y que el compilador no tendr en cuenta, ya que, no son instrucciones. Los comentarios de un programa son explicaciones o aclaraciones que ayudarn al programador en un futuro, cuando quiera revisar o modificar el cdigo fuente de dicho programa, y todava sern de ms ayuda si la modificacin la tiene que realizar un programador distinto al que escribi el cdigo fuente en un primer momento.

OBJETOS DE UN PROGRAMA
Son aquellos manipulados por las instrucciones. Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las distintas operaciones. Tiene tres atributos: Nombre: Es el identificador del mismo. Tipo: Conjunto de valores que puede tomar. Valor: Elemento del tipo que se asigna.

IDENTIFICADORES
Son palabras creadas por el programador para dar nombre a los objetos y dems elementos que necesita declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas, etc.

TIPOS DE DATOS
Los tipos de datos pueden ser simples o elementales y estructuras de datos o estructurados.

TIPO NUMRICO ENTERO.

RESPONSABLE: ING. ALEXIS MORA P.

Ejemplo:

1987 -12 +3300

TIPO NUMRICO REAL.


97.84 -12.00 +0.5 Un valor en notacin exponencial tiene la forma mantisa E exponente, donde mantisa es un nmero real y exponente un nmero entero y representa la cantidad mantisa multiplicado por 10 elevado al exponente. Ejemplo:

TIPO CARACTER
Es el conjunto formado por todos los caracteres o smbolos de que dispone la computadora. Se expresan entre comillas. Los caracteres alfabticos maysculas A, B, C, ....... Z Los caracteres alfabticos minsculas a, b, c, ....... z Los caracteres dgitos 0, 1, 2, .......... 0 Los caracteres especiales (espacio carcter en blanco) +, -, *, /, =, <, >, ... ., ,, ;, :, (, ), ?, ...

TIPO BOOLEANO
Es el conjunto formado por los valores FALSO y CIERTO. Se expresan con su nombre.

CONSTANTES
Son objetos cuyo valor permanece invariable a lo largo de la ejecucin de un programa. PI=3.141592 PI

3.141592

VARIABLES
Son objetos cuyo valor puede ser modificado a lo largo de la ejecucin de un programa. EXPRESIONES Es la representacin de un clculo necesario para la obtencin de un resultado. Se define una expresin de la siguiente forma: 1. Un valor es una expresin Ejemplo: 1.25, JUAN 2. Una constante o variable es una expresin. Ejemplo: PI, E, X. 3. Una funcin es una expresin. Ejemplo: COS(X), SQR(25)

4.

Una combinacin de valores, constantes variables, funciones y operadores que cumplen determinadas reglas de construccin es una expresin. Ejemplo: COS(PI * X) + 1.25 2 * PI * X

RESPONSABLE: ING. ALEXIS MORA P.

10

N = JUAN TIPOS DE EXPRESIONES Numricas.- Son las que producen resultados de tipo numrico se construyen mediante los operadores aritmticos. Ejemplo: PI * SQR(X) Alfanumricas.- Son las que producen resultados de tipo alfanumrico. Se construyen mediante los operadores alfanumricos. Ejemplo: Don + N Booleanas.- Son las que producen resultados CIERTO o FALSO. Se construyen mediante los operadores relacionados y lgicos. Ejemplo: A > 0 y B <= 5 OPERADORES Aritmticos: ^ Potencia A^B * Producto A*B DIV o \ Divisin A\B=2.5 MOD Divisin entera A\B + Suma o signo positivo Resta o signo negativo Alfanumricos: + Relacionales: = < > <= >= <> Lgicos: no y o * Parntesis: () Se utilizan para anidar expresiones. negacin conjuncin disyuncin Igual a Menor que Mayor que Menor o igual que Mayor o igual que Distinto a Concatenacin

HISTORIA DE LOS LENGUAJES DE PROGRAMACIN Los primeros lenguajes de programacin surgieron de la idea de Charles Babagge, la cual se le curri a este hombre a mediados del siglo XIX. Era un profesor matemtico de la universidad de Cambridge e inventor ingles, que la principio del siglo XIX predijo muchas de las teoras en que se basan los actuales ordenadores. Consista en lo que l denominaba la maquina analtica, pero que por motivos tcnicos no pudo construirse hasta mediados del siglo XX. Con l colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aqulla supuesta maquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programacin, sobre todo si observamos que en cuanto se empez a programar, los programadores utilizaron las tcnicas diseadas por Charles Babagge, y Ada, que consistan entre otras, en la programacin mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antao, se adelantaron un siglo a su poca, lo cual describe la inteligencia de la que se hallaban dotados.

RESPONSABLE: ING. ALEXIS MORA P.

11

En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina de diferencias, un dispositivo mecnico para efectuar sumas repetidas. Pero Babagge se dedico al proyecto de la mquina analtica, abandonando la maquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creacin de Charles Jacquard (francs). Este hombre era un fabricante de tejidos y haba creado un telar que poda reproducir automticamente patrones de tejidos, leyendo la informacin codificada en patrones de agujeros perforados en tarjetas de papel rgido. Entonces Babagge intento crear la mquina que se pudiera programar con tarjetas perforadas para efectuar cualquier clculo con una precisin de 20 dgitos. Pero la tecnologa de la poca no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribucin es decisiva, ya que los ordenadores actuales responden a un esquema anlogo al de la mquina analtica. En su diseo, la mquina constaba de cinco unidades bsicas: 1) Unidad de entrada, para introducir datos e instrucciones; 2) Memoria, donde se almacenaban datos y resultados intermedios; 3) Unidad de control, para regular la secuencia de ejecucin de las operaciones; 4) Unidad Aritmtico-Lgica, que efecta las operaciones; 5) Unidad de salida, encargada de comunicar al exterior los resultados. Charles Babbage, conocido como el "padre de la informtica" no pudo completar en aquella poca la construccin del computador que haba soado, dado que faltaba algo fundamental: la electrnica. El camino sealado de Babbage, no fue nunca abandonado y siguindolo, se construyeron las primeras computadoras. Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel. El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin. Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel. Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar prcticamente diseados a medida del hardware, aprovechan al mximo las caractersticas del mismo. Dentro de este grupo se encuentran: El lenguaje maquina: este lenguaje ordena a la mquina las operaciones fundamentales para su funcionamiento. Cnsiste en la combinacin de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho ms rpido que los lenguajes de alto nivel. La desventaja es que son bastantes difciles de manejar y usar, adems de tener cdigos fuente enormes donde encontrar un fallo es casi imposible. El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y nmeros llamadas mnemotcnicos. Con la aparicin de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje mquina. Como ventaja con respecto al cdigo mquina es que los cdigos fuentes eran ms cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prcticamente las mismas que las del lenguaje ensamblador, adiendo la dificultad de tener que aprender un nuevo lenguaje difcil de probar y mantener. Lenguajes de alto nivel Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de EDD's. Nota: EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin ningn tipo de problema.

RESPONSABLE: ING. ALEXIS MORA P.

12

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que entiendan el cdigo fuente como las caractersticas de la maquina. Suelen usar tipos de datos para la programacin y hay lenguajes de propsito general (cualquier tipo de aplicacin) y de propsito especifico (como FORTRAN para trabajos cientficos). Lenguajes de Medio nivel Se trata de un termino no aceptado por todos, pero q seguramente habrs odo. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podra situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas caractersticas de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. Generaciones La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o generaciones. Primera generacin: lenguaje maquina. Segunda generacin: se crearon los primeros lenguajes ensambladores. Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol Cuarta generacin. Son los lenguajes capaces de generar cdigo por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aqu tambin se encuentran los lenguajes orientados a objetos, haciendo posible la reutilizacin d partes del cdigo para otros programas. Ej. Visual, Natural Adabes Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todava estn poco desarrollados. Ej. LISP

Interpretes y Compiladores Existen dos tipos principales de traductores de los lenguajes de programacin de alto nivel: Compilador e intrprete. Existen dos tipos principales de traductores de los lenguajes de programacin de alto nivel: Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la mquina). Su accin equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua. Intrprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningn cdigo equivalente. Su accin equivale a la de un intrprete humano, que traduce las frases que oye sobre la marcha, sin producir ningn escrito permanente. Intrpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios: o Un intrprete facilita la bsqueda de errores, pues la ejecucin de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Adems, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecucin. o Un compilador suele generar programas ms rpidos y eficientes, ya que el anlisis del lenguaje fuente se hace una sola vez, durante la generacin del programa equivalente. En cambio, un intrprete se ve obligado generalmente a analizar cada instruccin tantas veces como se ejecute (incluso miles o millones de veces). o Un intrprete permite utilizar funciones y operadores ms potentes, como por ejemplo ejecutar cdigo contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intrprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores.

EVALUACIN

RESPONSABLE: ING. ALEXIS MORA P.

13

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 2: Metodologa de la programacin.

Objetivo de la Unidad de Trabajo: Introducir los mtodos y tcnicas para el desarrollo de programas. (Tiempo estimado: 35 perodos)
Procedimientos (contenidos organizadores)

Manejar e interpretar los manuales y el material bibliogrfico. Interpretar el problema. Elegir las estructuras de programacin necesarias para la resolucin del problema. Construir el algoritmo utilizando las estructuras elegidas. Editar el algoritmo. Realizar pruebas. Corregir los errores observados. Documentar el programa.

Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Utilizar las distintas herramientas y notaciones de diseo de algoritmos. Utilizar las tcnicas de programacin estructurada y modular. Utilizar algoritmos ya probados para su discusin y modificacin o mejora. Elegir y utilizar las estructuras de programacin que faciliten la resolucin de problemas.

Hechos/conceptos (contenidos soporte) Herramientas y anotaciones para el diseo de algoritmos. Diagramas de flujo. Pseudocdigo. Tablas de decisin. Estructura general de un programa. Partes de un programa (entrada, proceso, salida). Clasificacin de las instrucciones. De declaracin. Primitivas. De control. Compuestas. Variables auxiliares. Contadores. Acumuladores. Switches Tcnicas de programacin. Programacin convencional. Programacin estructurada (teorema y herram ientas). Programacin modular (subprogramas, procedimientos, funciones, recursos).

Criterios de evaluacin Se ha descrito y justificado el proceso de obtencin de programas ejecutables. Se han reconocido y manejado las utilidades de un editor. Se han utilizado de forma prctica el compilador, enlazador, libreras, y depurador a partir de los listados de programas fuentes. Se han resuelto y presentado los ejercicios propuestos en el modo y tiempo previstos. Se ha identificado y comprendido la documentacin presente en los listados. Se han construido los algoritmos de los problemas que resuelven los listados.

Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma.

RESPONSABLE: ING. ALEXIS MORA P.

14

Herramientas y anotaciones para el diseo de algoritmos.

Los algoritmos deben cumplir las siguientes propiedades: .Ser finito. .Ser preciso. .Ser general. .Ser congruente. Clases de algoritmos Se pueden considerar dos clases de algoritmos: .Algoritmos cualitativos. .Algoritmos cuantitativos. Algoritmos cualitativos Son una secuencia de pasos que describen un proceso. En el lenguaje comn de cualquier idioma. Observemos el siguiente ejemplo: Problema: Se dispone de una cantidad ilimitada de lquido y de dos recipientes; uno de ellos de 4 litros y el otro de 3 li- tros. Escribe un algoritmo para colocar exactamente 2 litros de agua en el recipiente de 4 litros. Algoritmo: 1] Llenar con el lquido el recipiente de 4 litros. 2] Llenar el recipiente de 3 litros con el lquido que contiene el recipiente de 4 litros, de esta manera el recipiente de 4 litros quedar con 1 litro. 3] Vaciar el recipiente de 3 litros. 4] Poner el litro que se midi en el recipiente de 3 litros. 5] Llenar de nuevo el recipiente de 4 litros con el lquido. 6] Llenar el recipiente de 3 litros con el lquido que contiene el recipiente de 4 litros. Mediante este proceso pasan al primer recipiente 2 iitros y queda 2 litros en el recipiente cuya capacidad es de 4 litros. NOTA: Intenta comprobar con tus compaeros y compaeras la eficacia del proceso que se plante para resolverel problema. Algoritmos cuantitativos Los algoritmos que involucran clculos nunricos para obtener el resultado deseado, observemos el siguiente ejemplo: Problema: Elabora un algoritmo para calcular las imgenes de una funci6n lineal, si se conoce la pendiente m y la ordenada al origen b. Algoritmo: ] Iniciar ] Escribir la ecuaci6n y = mx + b ] Calcular la imagen si x = -1 ] Calcular la imagen si x = 2 ] Fin. Formas de describir un algoritmo Existen tres formas de describir un algoritmo: t Descripci6n narrada. t Descripci6n mediante un diagrama de flujo o flujograma. t Descripci6n mediante seudoc6digos. La descripcin narrada utiliza el lenguaje latural de las personas, por eso esta manera de descripci6n de algoritmos puede dar lugar a errores en su interpretaci6n. FLUJOGRAMAS Un flujograma o diagrama de flujo es la representacin de un proceso mediante un conjunto de figuras geomtricas que tienen un significado particular, relacionadas entre s a travs de flechas que determinan el orden lgico del algoritmo.

RESPONSABLE: ING. ALEXIS MORA P.

15

Ventajas de los flujogramas 1] Permiten representar en forma grfica la solucin de un problema. 2] Establecen una visin amplia y permiten verificar si se han. tomando en cuenta todas las posibilidades en la solucin de los problemas, o si e'xisten algunas acciones duplicadas. 3] Facilitan la real,izacin de modificaciones en un programa. 4] Posib!litan la codificacin en un lenguaje de programacin, por ejemplo: QBasic, Pascal, entre otros. > Smbolos que se utilizan en los flujogramas . Los smbolos estandarizados por la ANSI (American National Standard Institute), que corresponde al Instituto Nacional Americano de Estndares, son los siguientes:

RESPONSABLE: ING. ALEXIS MORA P.

16

REGLAS PARA ELABORAR FLUJOGRAMAS A continuacin se detallan las principales reglas que permiten elaborar de una forma sencilla un diagrama de flujo. 1] Los diagramas deben ser dibujados de arriba hacia abajo y de derecha a izquierda. 2] Las lneas de flujo deben estar representadas por lneas rectas, horizontales o verticales, 3] El sentido de las lneas se representa con una flecha en uno de sus extremos. 4] Los conectores dentro de una pgina o fuera de ella deben ser adecuadamente utilizados cuando el diagrama lo requiera. 5] Las lneas. de flujo deben conectarse siempre a un smbolo o a una lnea. 6] Las lneas de flujo no deben cruzarse para evitar esto se utilizan conectores o lneas arqueadas. SEUDOCODIGOS Son un conjunto de instrucciones redactadas en forma corta y clara, que permiten ejecutar una tarea. > Reglas para la elaboracin de seudocdigos 1] Empezar con la palabra Programa, seguida del nombre del programa. 2] Escribir un punto y coma (;), despus de cada instruccin o sentencia del programa, para separar una instruccin de otra, a excepcin de la ltima instruccin del programa que termina con un punto 3] Escribir las instrucciones utilizando sangras con respecto a sus delimitado res, con el fin de resaltar un proceso de los subprocesos. 4] Indicar con el smbolo flecha hacia la izquierda ( .) las asignaciones o transferencias de valores. 5] Incluir comentarios o aclaraciones que inicien y terminen en asteriscos (*comentario*), en cualquier lnea del seudocdigo. 6. Se utilizan las estructuras de control: secuenciales. selectivas Y repetitivas. 7. Para introducir datos por teclado, se utiliza el verbo leer. 8. Para imprimir datos en pantalla, se utiliza el verbo escribir. 9. Para imprimir mensajes en pantalla se procede as: ' hola mundo' > Palabras reservadas Son nombres de las instrucciones o de los componentes que ayudan a formar una instruccin. Tambin pueden ser nombres de los tipos de datos o nombres de variables manejadas directamente por un compilador. Por esta razn es prohibido utilizar las palabras reservadas para nombrar variables o funciones.

RESPONSABLE: ING. ALEXIS MORA P.

17

Es una tcnica que permite presentar la solucin de un problema usando palabras normales del idioma espaol. Es la narracin del proceso y, uso de frases' imperativas, que indican la lgica y estructura de los algoritmos, la naturaleza de los datos, y lo ms importante la fcil lectura e interpretacin. Estructura de un seudocdigo algoritmo nombre- algoritmo [ const < declaraciones de constantes>] [tipo < declaraciones de tipos de datos>] [ var < declaraciones de variables>] inicio [~~~~J Fin [ declaraciones de funciones y procedimientos] Ejemplo! Elaborar un algoritmo en seudocdigo para calcular el rea de un crculo conocido el valor del radio. algoritmo rea_circulo const pi = 3.1415 variables radio:entero area: real inicio escribir( , ingrese radio: ') leer(radio) area.- pi*radio*radio escribir( ..rea = " area) fin Ejemplo2 Elaborar un algoritmo en seudocdigos para calcular el mayor de 3 nmeros enteros diferentes introducidos por teclado. algoritmo mayor_tres_nmeros variables a,b,c : enteros mayor: entero

RESPONSABLE: ING. ALEXIS MORA P.

18

inicio escribir( , ingrese 3 nmeros: ') leer (a,b,c) si a > b entonces mayor.- a si_no mayor .-b fin_si si c > mayor entonces mayor.- c fin_si escribir (' mayor = " mayor) fin 1

PSEUDOCDIGO PSEUDOCODIFICACIN DE UN PROGRAMA


Diremos que una notacin es un pseudocdigo si mediante ella podemos describir la solucin de un problema en forma de algoritmo dirigido a la computadora. Todo pseudocdigo debe posibilitar la descripcin de: Instrucciones de entrada/salida Instrucciones de proceso Sentencias de control del flujo de ejecucin Acciones compuestas que hay que refinar posteriormente

ACCIONES SIMPLES
Son aquellas que el procesador ejecuta de forma inmediata. Asignacin

VARIABLE

EXPRESION

Almacena en una variable el resultado de evaluar una expresin. Ejemplo: MEDIA SUMA / 6 Entrada

Leer VARIABLE
Toma un dato del dispositivo estndar de entrada y lo almacena en una variable. Si se leen varias variables se pueden colocar stas en una misma instruccin separndolas por comas. Ejemplo: Leer ALUMNO, CALIFICACIN Salida

Escribir EXPRESIN
Imprime en el dispositivo estndar de salida el resultado de evaluar una expresin. Al igual que en la lectura se pueden imprimir varias expresiones en una sola instruccin de escritura. Ejemplo: Escribir SUMAMEDIAS/NUMALUMNOS

RESPONSABLE: ING. ALEXIS MORA P.

19

SENTENCIAS DE CONTROL
Controlan el flujo de ejecucin de otras instrucciones. Ejemplo: Leer NOTA SUMA SUMA+NOTA MEDIA SUMA/6 Escribir MEDIA Alternativa Alternativa simple: Las instrucciones I1, I2.... In se ejecutan solamente si la evaluacin de la condicin produce el resultado CIERTO; en otro caso no se hace nada. Ejemplo: Si NOTA > 0 Entonces SUMA SUMA + NOTA Finsi Alternativa doble: Si la evaluacin de la condicin produce el resultado CIERTO se ejecutarn las instrucciones I1, I2, ... In; en caso contrario, las J1, J2,...Jk. Ejemplo: Si NOTA < 5 Entonces escribir SUSPENSO Sino escribir APROBADO Finsi Alternativa mltiple La expresin puede ser alfanumrica o numrica entera. Si su valor es V1 se ejecutaran las instrucciones I1, I2, .... Ip; Si es V2, las J1, J2,...Jq, etc. Si el valor de la expresin no es ninguno de los indicados explicitamente, V1, V2, ... , Vn, entonces se ejecutarn las instrucciones L1, L2, ... , Ls. Ejemplo: Opcin ESTADO-CIVIL de S hacer escribir SOLTERO C hacer escribir CASADO V hacer escribir VIUDO D hacer escribir DIVORCIADO Otro hacer escribir Error: datos incorrectos Finopcin Repeticiones o bucles Segn que la evaluacin de la condicin se realice al comienzo, al final o dentro del bucle, se tienen las siguientes sentencias: Mientras (while): Se evalua la condicin antes de iniciar el bucle, y se repiten sucesivamente las instrucciones mientras siga siendo CIERTA.

RESPONSABLE: ING. ALEXIS MORA P.

20

Ejemplo: Mientras IN = 0 hacer Leer NOTA Si NOTA > 0 Entonces SUMA Sino IN Finsi Finmientras

SUMA + NOTA 1

Repetir (repeat): Se evala la condicin despus de cada ejecucin de las instrucciones y se termina el bucle si es CIERTA. Ejemplo: Repetir Leer NOTA SUMA SUMA + NOTA Hasta NOTA = 0 Para (for): Se repiten las instrucciones un nmero fijo de veces tantas como sucesivos valores toma la variable de control del bucle Vc desde incicialmente Vi incrementndose a cada repeticin en In, hasta que el valor de Vc supera Vf. Si el incremento es +1, que es el caso ms usual, el bucle se expresa: Ejemplo: Para I de 1 a 6 hacer Leer NOTA SUMA SUMA + NOTA finpara Iterar (loop) Se ejecutan las instrucciones y a continuacin se evalua la condicin de salida del bucle; si no es cierta se ejecutan las siguientes repitindose de nuevo el proceso hasta que la condicin sea cierta. Ejemplo: Iterar Leer NOMBRE Salir si NOMBRE = FIN Leer NOTA1, NOTA2 MEDIA (NOTA1 + NOTA2) / 2 Escribir NOMBRE, MEDIA Finiterar Los bucles mientras, hasta y para son casos particulares del anterior, es decir siempre se puede utilizar un bucle iterar en lugar de cualquiera de los otros, aunque cada uno de ellos se adapta mejor a una determinada situacin.

ACCIONES COMPUESTAS
Es aquella que ha de ser realizada dentro del algoritmo, pero que no esta resuelta en trminos de acciones simples y sentencias de control.

RESPONSABLE: ING. ALEXIS MORA P.

21

COMENTARIOS
Son lneas explicativas. Los comentarios se utilizan para aclarar: El significado o cometido de un objeto del programa. El objetivo de un bloque de instrucciones. La utilizacin de una determinada instruccin. Cualquier aspecto del programa que sea necesario aclarar.

**Comentario de aclaracin
OBJETOS DEL PROGRAMA
Podemos considerarlos como los recipientes de los datos que manipula el programa. El conjunto de objetos de un programa se denomina entorno. Ejemplo: Entorno: I es numrica entera NOTA es numrica real NOMBRE es alfanumrica

PROGRAMA
Un programa es la solucin final de un problema. Esta notacin consiste en la descripcin de los objetos (entorno) y de las instrucciones (algoritmo). Ejemplo: Generacin de actas. Se introduce por teclado una secuencia de informaciones, cada una de ellas compuesta por un nombre y seis nmeros correspondientes al nombre de un alumno y las calificaciones que ha obtenido en sus seis asignaturas. La secuencia termina al introducir el nombre <<FIN>> Se desea un programa que imprima un listado de calificaciones en el que ha de figurar el nombre del alumno seguido de su nota media. Finalmente se imprimir la nota media del grupo. La entrada de datos ser de la forma: EMILIO PEREZ GARCIA 5, 8, 7, 5, 6, 6 ... ANA CASAS ORTIZ 5, 3, 6, 2, 7, 4 El listado proporcionado ser: LISTADO DE CALIFICACIONES ------------------------------------NOMBRE DEL ALUMNO NOTA MEDIA -----------------------------------------EMILIO PEREZ GARCIA 6.1 ... ... ANA CASAS ORTIZ 4.5 NOTA MEDIA DEL GRUPO: 5.7 Diseo del programa: Algoritmo: Imprimir cabeceras del listado Inicializar acumuladores Iterar

RESPONSABLE: ING. ALEXIS MORA P.

22

Leer NOMBRE = FIN Salir si NOMBRE = FIN Contabilizar alumno Leer notas del alumno Calcular su nota media Imprimir linea con alumno y nota media Finiterar Obtener nota media del grupo Imprimir nota media del grupo Finalgoritmo Mediante refinamientos del algoritmo anterior obtenemos el siguiente programa: Programa GENERACION DE ACTAS Entorno: NOMBRE es alfanumrica I, NUMALUMNOS son numricas enteras NOTA, SUMA, MEDIA, SUMAMEDIA, MEDIAGRUPO son numricas reales Algoritmo: Escribir LISTADO DE CALIFICACIONES Escribir ------------------------------------- Escribir NOMBRE DEL ALUMNO NOTA MEDIA Escribir ------------------------------------------ NUMALUMNOS 0 SUMAMEDIA 0 Iterar Leer NOMBRE Salir si NOMBRE = FIN NUMALUMNOS NUMALUMNOS + 1 SUMA 0 Para I de 1 a 6 hacer Leer NOTA SUMA SUMA + NOTA Finpara MEDIA SUMA / 6 Escribir NOMBRE, MEDIA SUMAMEDIA SUMAMEDIA + MEDIA Finiterar MEDIAGRUPO SUMAMEDIA / NUMALUMNOS Escribir NOTA MEDIA DEL GRUPO: , MEDIAGRUPO Finprograma

Programa que lee una frase en una lnea y cuenta su nmero de vocales.
Programa CONTAR VOCALES Entorno: FRASE es alfanumrica NV, I son numricas enteras

RESPONSABLE: ING. ALEXIS MORA P.

23

Algoritmo: Leer FRASE NV 0 Para I de 1 a longitud (FRASE) hacer Si es vocal el carcter I de FRASE Entonces NV NV + 1 Finsi Finpara Escribir Nmero de vocales de la frase: ,NV Finprograma

2. Programa que lee 100 datos, compuesto cada uno de ellos por un nombre de persona y su sueldo noto mensual, y obtiene e imprime el nombre y sueldo de la persona que cobra ms y de la que menos cobra.
Programa SUELDOS Entorno: NOMBRE, NMAX, NMIN son alfanumricas SUELDO, SMAX, SMIN son numricas reales I es numrica entera Algoritmo: Leer NOMBRE, SUELDO NMAX NOMBRE SMAX SUELDO NMIN NOMBRE SMIN SUELDO Para I de 2 a 100 hacer Leer NOMBRE, SUELDO Si SUELDO > SMAX Entonces NMAX NOMBRE SMAX SUELDO Sino si SUELDO < SMIN Entonces NMIN NOMBRE SMIN SUELDO Finsi Finsi Finpara Escribir NMAX, SMAX, NMIN, SMIN Finprograma PASOS PARA RESOLVER UN PROBLEMA 1.- Plantear el problema 2.- Analizar y elaborar el plan de solucin 3.- Disear el algoritmo 4.- Representar el algoritmo 5.- Codificar 6.- Verificar el programa 7.- Documentar y explotar el programa

RESPONSABLE: ING. ALEXIS MORA P.

24

1. Plantear el programa Consiste en enunciar el problema en forma clara y precisa. 2. Analizar y elaborar el plan de solucin Plantearse las siguientes preguntas: -Cules son los datos de salida. -Cules son los datos de entrada. -Datos adicionales a utilizarse. -Formulas a utilizarse. -V ariables a utilizarse. 3. Diseo del algoritmo Consiste en describir un conjunto concreto de pasos que se deben realizar ordenadamente para llegar a la solucin del problema planteado. 4. Solucin algo rtmica del problema Solucin algortmica utilizando seudocdigos. 5.- Codificar en un lenguaje de programacin Consiste en trasladar el seudocdigo a un lenguaje de programacin, en nuestro caso el C y lava. 6.- Verificar el programa Una vez compilado el programa y libre d~ errores de sintaxis y lgica, se procede a ejecutar introduciendo datos de prueba y datos reales. 7.- Documentacin y explotacin Una vez verificado el programa, y si el mismo arroja resultados consistentes se procede a documentar el programa y se pone a disposicin de los usuarios para su explotacin. Ejemplo: 1.- Plantear el problema Introducir a travs del teclado tres notas, calcular el promedio y el 70% del mismo. Imprimir el promedio y el porcentaje. 2.- Analizar y comprender el problema Plan de solucin Datos de salida: promedio, porcentaje Datos de entrada: notal, nota2, nota3 Datos adicionales: 70% Solucin. Aplicar las siguientes formulas: Promedio = (nota! + nota2 + nota3)/3 Porcentaje = 0.7 x Promedio Variables a utilizar..: natal. nota2, notaJ. promedio. porcentaje Se procede a introducir las 3 notas, luego se calcula el promedio y el porcentaje, y se imprimen los resultados. 3.- Diseo del algoritmo !: Inicio 2: Declarar las variables 3: Leer las 3 notas 4: Calcular el promedio 5: Calcular el porcentaje 6: Imprimir los resultados 7: Fin 4.- Solucin algortmica algoritmo promedio_porcentaje variables -nota l, nota2, nota3: enteros promedio, porcentaje: reales inicio escribir( , ingrese notas: ') leer ( nota!, nota2, nota3 )

RESPONSABLE: ING. ALEXIS MORA P.

25

promedio +- (notal + nota2 + nota3)/3 porcentaje +- 0.7 * promedi(', escribir ( , promedio = " promedio) escribir ( , porcentaje = " porcentaje) fin 5.- Codificacin CODIFICACION EN C /* progll.c */ /* programa promedio_porcentaje */ #include <stdio.h> void main(void) { int notal; nota2; nota3; Ooat promedio, porcentaje; clrscr ( ); printf ( "ingrese notas: "); scanf (" %d %d %d" , &notal, &nota2, &nota3); promedio = ((float) (notal + nota2 + nota3)/3) porcentaje = 0.7 * promedio; printf ( "promedio = % 6.2f ", promedio); printf ("porcentaje = %6.2f ", porcentaje); getch ( ) ; } C 6.- Verificar el programa Al ejecutar los programas anteriores se obtiene lo siguiente: entrada: ingrese notas: 14 15 17 salida: :' promedio = 15.33 d porcentaje = 10.73 ':1 7.- Documentacin y explotacin ! Una vez, verificado el programa se procede a documentar y se pone a disposicin de los usuarios, para su explotacin. ESTRUCTURA GENERAL DE UN PROGRAMA

INTRODUCCIN
Bloque de declaraciones. En l se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.) indicando sus caractersticas. Este bloque se encuentra localizado siempre por delante del comienzo de las acciones. Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para la obtencin de los resultados deseados.

PARTES PRINCIPALES DE UN PROGRAMA.


Estn relacionadas con sus dos bloques ya mencionados. Dentro del bloque de instrucciones podemos diferenciar tres partes fundamentales. DECLARACIONES PROGRAMA INSTRUCCIONES Entrada de datos Proceso o algoritmo Salida de resultados

RESPONSABLE: ING. ALEXIS MORA P.

26

ENTRADA DE DATOS
La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacenan en la memoria central para que puedan ser procesados. Datos de Entrada Memoria Central

PROCESO O ALGORITMO
DATOS DE ENTRADA

PROCESO

RESULTADOS

3.2.3. SALIDA DE RESULTADOS


Conjunto de instrucciones que toman los datos finales (resultados) de la memoria central y los envan a los dispositivos externos. MEMORIA CENTRAL DATOS DE SALIDA

CLASIFICACIN DE LAS INSTRUCCIONES


Una instruccin se caracteriza por un estado inicial (estado de los objetos que maneja el programa antes de la ejecucin de la instruccin) y otro final (estado en que quedan los objetos despus de la instruccin). El estado final de una instruccin siempre coincide con el estado inicial de la iguiente.

Segn la funcin que desempean dentro de un programa, las instrucciones se clasifican de la siguiente manera.

INSTRUCCIONES DE DECLARACIN
Su misin es anunciar la utilizacin de objetos en un programa indicando qu identificador, tipo y otras caractersticas corresponde a cada uno de ellos.

INSTRUCCIONES PRIMITIVAS
Son aquellas que ejecuta el procesador de modo inmediato. Las instrucciones primitivas pueden ser de entrada, de asignacin o de salida. Instruccin de entrada Su misin consiste en tomar uno o varios datos desde un dispositivo de entrada y almacenarlos en la memoria central en los objetos cuyos identificadores aparecen en la propia instruccin. En un ordinograma aparece con el smbolo de operacin de entrada/salida (romboide) y con la frmula literal siguiente:

Leer <lista de objetos> Donde <lista de objetos> es el conjunto de elementos donde se van a depositar en memoria central los datos ledos. Cuando la lista se compone de ms de un elemento, estos se separan por comas.

RESPONSABLE: ING. ALEXIS MORA P.

27

Ejemplo: Entrada de los datos DA, MES y AO desde un dispositivo estndar (teclado).

Leer DA, MES, AO Instruccin de asignacin. Es la instruccin que nos permite realizar clculos evaluando una expresin y depositando su valor final en un objeto o realizar movimientos de datos de un valor final en un objeto o realizar movimientos de datos de un objeto a otro. Esta instruccin se realiza en dos tiempos: 1.- Se evala la expresin convirtindose en su valor final. 2.- El valor final se asigna al objeto borrndose cualquier otro valor previo que ste pudiera tener. A A+1

Instruccin de salida. Su misin consiste en enviar datos a un dispositivo externo, bien tomndolos de objetos depositados en la memoria central o definidos de alguna forma en la propia instruccin.

Ejemplo: Escritura en un dispositivo estndar (pantalla) de una fecha situada en la memoria en las variables DA, MES y AO.
Escribir DIA, MES, AO

INSTRUCCIONES DE CONTROL
Son instrucciones que no realizan trabajo efectivo alguno salvo la evaluacin de expresiones, generalmente lgicas, con el objetivo de controlar la ejecucin de otras instrucciones o alterar el orden de ejecucin normal de las instrucciones de un programa. Instrucciones alternativas Son aquellas que controlan la ejecucin de uno o varios bloques de instrucciones. Existen tres modelos tpicos de instrucciones alternativas: A) Alternativa simple Controla la ejecucin de un conjunto de instrucciones por el cumplimiento o no de una condicin, si se cumple, se ejecutan, si no se cumple no se ejecutan Ejemplo: Instruccin alternativa simple que escribe la palabra positivo si el contenido de la variable A es mayor que 0. A>0 SI A>0 ESCRIBIR positivo SI A<0 FIN B) Alternativa doble Controla la ejecucin de dos conjuntos de instrucciones, si se cumple, se ejecutan las instrucciones del primer bloque: si no se cumple se ejecutan las instrucciones del segundo.

RESPONSABLE: ING. ALEXIS MORA P.

28

Ejemplo: Instruccin alternativa doble que escribe la palabra POSITIVO si el contenido de la variable A es mayor que y NEGATIVO si no lo es. A>0 SI A>0 ESCRIBIR POSITIVO SI A<0 ESCRIBIR NEGATIVO C) Alternativa multiple. Controla la ejecucin de varios conjuntos de instrucciones. Se ejecutar el conjunto que se encuentre relacionado con el valor que resulta de la evaluacin de la expresin de tal forma que si este no aparece se ejecutar el ltimo. Las distintas opciones tienen que ser disjuntas, es decir, slo puede cumplirse una de ellas. Ejemplo: Instruccin alternativa mltiple que escribe una nota numrica entera de 0 a 10 con el nombre de la propia nota en letras. NOTA SI NOTA=0 ESCRIBIR CERO SI NOTA=1 ESCRIBIR UNO * * * SI NOTA=10 ESCRIBIR DIEZ SI NOTA=OTROS ESCRIBIR NOTA NO VALIDA Instrucciones repetitivas Son aquellas que controlan la repeticin de un conjunto de instrucciones denominado rango mediante la evaluacin de una condicin que se realiza dada nueva repeticin o por medio de un contador asociado. Existen cuatro tipos de instrucciones: A) Instruccin MIENTRAS (WHILE) Controla la ejecucin del conjunto de instrucciones que configuran su rango, de tal forma que stas se ejecutan mientras se cumpla la condicin, que ser evaluada siempre antes de cada repeticin, es decir, mientras la condicin sea CIERTA. B) Instruccin REPETIR (REPEAT-UNTIL) Controla la ejecucin del conjunto de instrucciones que configuran su rango de tal forma que estas se ejecutan hasta que se cumpla la condicin que ser evaluada siempre despus de cada repeticin, es decir, hasta que la condicin sea CIERTA. C) Instruccin PARA (FOR) Controla la ejecucin del conjunto de instrucciones que configuran su rango, de tal forma que estas se ejecutan un nmero determinado de veces que queda definido en lo que se denomina la cabecera del bucle. En ella se define un identificador de variable de control del bucle (Vc) definientose al mismo tiempo su valor inicial (Vi), su balor final (Vf) y el incremento (In) que esta variable de control va a adquirir en cada repeticin. La definicin del bucle ser: Vc = Vi, Vf [,In] D) Instruccin ITERAR (LOOP)

RESPONSABLE: ING. ALEXIS MORA P.

29

Controla la ejecucin de dos conjuntos de instrucciones de manera alternativa, de tal forma que estos se ejecutan hasta que se cumpla a condicin. Instrucciones de ruptura de secuencia. Alteran la secuencia normal de ejecucin de instrucciones en un programa, la alteracin de esta secuencias hace que continue en otro lugar definido en la propia instruccin utilizando lo que se denomina etiqueta. A) Instruccin de salto incondicional. Alteran la secuencia normal de ejecucin de las instrucciones de un programa continuando la misma en la instruccin referenciada por medio de la etiqueta que figura en la propia instruccin. Ejemplo: ir a <etiqueta> B) Instruccin de salto condicional Alteran la secuencia normal de ejecucin de las instrucciones de un programa si se cumple una condicin asociada a la propia instruccin continuando la misma en la instruccin referenciada por una etiqueta que figura tambin en la instruccin. Ejemplo: Si CONDICION entonces ir a <etiqueta>

INSTRUCCIONES COMPUESTAS
Una instruccin compuesta es aquella que representa a un conjunto de instrucciones que estan definidas en otra parte, en genral son llamadas a sus programas (funciones, subrutinas, parrafos, etc.)

COMENTARIOS
Son frases que se incluyen de forma moderada en el diseo de un algoritmo (en la codificacin suele ser mas recomendable su uso) con intencin de aclarar el cometido o funcin de un objeto o conjunto de instrucciones. -----[ Comentario

VARIABLES AUXILIARES DE UN PROGRAMA


Son objetos que utiliza un programa y por la funcin que realizan dentro del mismo toman un nombre especial

CONTADORES
Un contador es un objeto que se utiliza para contar cualquier evento que pueda ocurrir dentro de un programa. En general suslen contar desde forma natural desde 0 y de 1 en 1. Se utilizan dos operaciones bsicas: 1. Inicializacin: Todo contador se inicializa a 0 si realiza cuenta natural o a Vi (Vi = Valor inicial) si se desea realizar otro tipo de cuenta. CONTADOR 0 2. Contabilizacin o incremento: Cada vez que aparece el evento a contar se ha de incrementar el contador en 1 si se realiza cuenta natural o en la In (incremento) si se realiza otro tipo de cuenta. CONTADOR CONTADOR +1

RESPONSABLE: ING. ALEXIS MORA P.

30

ACUMULADORES
Son objetos que se utilizan en un programa para acumular elementos sucesivos con una misma operacin. En general se utilizan para calcular sumas y productos, para utilizarlos hay que realizar sobre ellos dos operaciones bsicas: 1. Inicializacin: Todo acumulador necesita ser inicializado con el valor neutro de la operacin que va a acumular, que en el caso de la suma es 0 y del producto es 1. SUMA 0 PRODUCTO 1 2. Acumulacin: Cuando se hace presente en la memoria el elemento a acumular por la realizacin de una lectura o un calculo, se efecta la acumulacin del mismo por medio de la asignacin: SUMA SUMA + elemento PRODUCTO PRODUCTO * elemento

INTERRUPTORES O CONMUTADORES (SWITCHES)


Los interruptores son objetos que se utilizan en un programa y solo pueden tomar dos valores (CIERTO y FALSO, 0 y1), realizando la funcin de transmitir informacin de un punto a otro dentro del programa. Un conmutador es un objeto que slo puede tomar dos valores opuestos(CIERTO y FALSO, 1 y 1) que se utiliza para conmutar entre dos procesos distintos de forma alternativa. Es lo contrario al anterior.

TIPOS DE PROGRAMAS
Programas lineales: Consisten en una secuencia de acciones primitivas (su ejecucin es lineal en el orden en que han sido escritas). Programas alternativos: Consisten en el anidamiento de acciones alternativas entremezcladas con instrucciones primitivas. Programas cclicos: Son aquellos en los que un conjunto de instrucciones de las existentes en el programa se repite un nmero determinado o indeterminado de voces. Otra clasificacin relacionada con la naturaleza de las operaciones que se realizan en la misma, es: Programas de gestin: resuelven problemas de gestin. Programas tcnico-cientficos: resuelven problemas matemticos, fsicos, etc. Programas de diseo (CAD). Resuelven problemas de diseo. Programas de simulacin. Intentan reflejar una situacin real para facilitar su estudio y analizar los problemas que se pueden plantear. Programas educativos (EAO). Utilizan las ventajas de la computadora para la docencia, convirtindola en un profesor para autodidactas. Programas de inteligencia artificial. Se utilizan para simular el razonamiento humano. Etctera.

LENGUAJES DE PROGRAMACIN
El primer lenguaje de programacin que se utiliz fue el lenguaje mquina, que es el nico que entiende la computadora y que se diferencia de unas a otras dependiendo del procesador que posean. Su alfabeto se compone exclusivamente de unos y ceros.

RESPONSABLE: ING. ALEXIS MORA P.

31

El lenguaje ensamblador result de la simplificacin del lenguaje mquina cambiando las cadenas de unos y ceros por smbolos nemotcnicos, existiendo una correspondencia de instrucciones de 1 a 1, con respecto al lenguaje mquina. Posteriormente surgieron los lenguajes de alto nivel, que se alejaban notablemente del lenguaje binario formando instrucciones con frases relativamente parecidas al lenguaje utilizado por las personas. Pueden clasificarse de la siguiente manera: a) Segn su parecido con el lenguaje natural. Bajo nivel: Lenguajes mquina y ensambladores. Alto nivel: Todos los dems. b) Segn la estructura de los programas. Convencionales o lnea a lnea. Estructurados. c) Segn la realizacin de los programas. Funcionales. Imperativos. d) Segn el tipo de proceso. Interactivos o conversacionales: Orientados al proceso por lotes (batch).

TCNICAS DE PROGRAMACIN. Existen varias clases de programacin, dependiendo de los mtodos utilizados y las tcnicas empleadas. Los tipos o tcnicas de programacin son bastante variados, aunque puede que muchos de los lectores slo conozcan una metodologa para realizar programas. En la mayora de los casos, las tcnicas se centran en programacin modular y programacin estructurada, pero existen otros tipos de programacin. Los explicaremos a lo largo del artculo. Programacin estructurada (PE) La programacin estructurada esta compuesta por un conjunto de tcnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuracin y mantenimiento del mismo. Esta programacin estructurada utiliza un nmero limitado de estructuras de control, reduciendo as considerablemente los errores. Esta tcnica incorpora: Diseo descendente (top-dow): el problema se descompone en etapas o estructuras jerrquicas. Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras ms simples capaces de ser resueltas con mayor facilidad. Estructuras bsicas: existen tres tipos de estructuras bsicas: o Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de una accin es la entrada de otra. o Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas. o Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero determinado de veces. Las principales ventajas de la programacin estructurada son: Los programas son mas fciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador

RESPONSABLE: ING. ALEXIS MORA P.

32

Los programas queden mejor documentados internamente. Un programa esta estructurado si posee un nico punto de entrada y slo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por ltimo, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos. Programacin modular En la programacin modular consta de varias secciones dividas de forma que interactan a travs de llamadas a procedimientos, que integran el programa en su totalidad.

En la programacin modular, el programa principal coordina las llamadas a los mdulos secundarios y pasa los datos necesarios en forma de parmetros. A su vez cada modulo puede contener sus propios datos y llamar a otros mdulos o funciones. Programacin orientada a objetos (POO) Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilizacin de los objetos. El elemento principal de la programacin orientada a objetos es el objeto. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento. El polimorfismo y la herencia son unas de sus principales caractersticas y por ello dedicaremos ms adelante un artculo exclusivamente a tratar estos dos trminos. En DesarrolloWeb.com hemos publicado anteriormente una explicacin de lo que es la programacin orientada a objetos. Programacin concurrente Este tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez. Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea. Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en las acciones. Programacin funcional Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. Programacin lgica Se suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una programacin basada en el clculo de predicados (una teora matemtica que permite lograr que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes).

RESPONSABLE: ING. ALEXIS MORA P.

33

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 3: C un lenguaje estructurado procedimental.

Objetivo de la Unidad de Trabajo: Presentar un lenguaje procedimental estructurado. (Tiempo estimado: 10 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar los manuales y el material bibliogrfico. Utilizar los recursos del sistema. Crear una gua-resumen de instalacin y utilizacin del compilador empleado a partir de los manuales del producto. Crear una gua-resumen de utilizacin del editor de textos empleado a partir de los manuales del producto. Describir e identificar los distintos elementos del listado de un programa fuente escrito en C. Identificar las distintas estructuras de programacin que aparecen en el listado fuente. Editar un programa a partir de su listado fuente. Utilizar el compilador de C elegido. Realizar pruebas. Corregir los errores observados. Documentar el programa. Actitudes/valores/normas (contenidos soporte) Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Utilizar los manuales especficos del compilador, del editor y del equipo que se va emplear. Discutir y utilizar varios listados en papel de programas fuente codificados en C. Utilizar prcticamente un editor para introducir, corregir, salvar e imprimir texto. Instalar el compilador que se va a emplear. Utilizar el depurador de cdigo que acompae al compilador. Obtener y probar el cdigo ejecutable de programas ya elaborados. Elaborar un esquema general del proceso de obtencin de programas ejecutables y de las funciones bsicas de un editor.

Hechos/conceptos (contenidos soporte) Historia del lenguaje C. C como lenguaje estructurado. Compiladores frente a intrpretes. Estructura de un programa C. Ficheros de cabecera. Directrices #include y #define. Variables. Declaracin y definicin. Expresiones. Sentencias. Funciones Un editor de texto. Elementos. Funciones de usuario. Funciones de librera. La compilacin. Caractersticas del compilador que se emplee. El enlazado. Libreras de C. Ejecucin de un programa. La depuracin.

Criterios de evaluacin Se han resuelto los ejercicios planteados. Se ha diferenciado entre la programacin de procesos interactivos y por lotes. Se han discutido y justificado los algoritmos diseados. Se han identificado y discutido las distintas fases del ciclo de vida de una aplicacin informtica. Se han identificado los elementos u objetos de un programa. Se han creado y diseado algoritmos sencillos. Se han obtenido conclusiones del estudio de la documentacin.

RESPONSABLE: ING. ALEXIS MORA P.

34

Historia del Lenguaje C C es un lenguaje de programacin de propsito general. Sus principales caractersticas son: Programacin estructurada Economa de las expresiones Abundancia en operadores y tipos de datos. Codificacin en alto y bajo nivel simultneamente. Reemplaza ventajosamente la programacin en ensamblador (assembler). Utilizacin natural de las funciones primitivas del sistema. No est orientado a ningn rea en especial. Produccin de cdigo objeto altamente optimizado. Facilidad de aprendizaje (;-)). El lenguajes C naci en los Laboratorios Bell de AT&T y ha sido estrechamente asociado con el Sistema Operativo UNIX, ya que su desarrollo se realiz en este sistema y debido a que tanto UNIX como el propio compilador de C y la casi totalidad de los programas y herramientas de UNIX, fueron escritos en C. Su eficacia y claridad han hecho que el lenguaje asembler apenas haya sido utilizado en UNIX. Este lenguajes est inspirado en el lenguaje B escrito por Ken Thompson en 1970 con intencin de recodificar el UNIX, que en la fase de arranque esta escrito en asembler, en vistas a su transportabilidad a otras mquinas. B era un lenguaje evolucionado e independiente de la mquina, inspirado en la lenguajes BCPL concedido por Martin Richard en 1967. En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el lenguaje C y reescribiendo el UNIX en dicho lenguaje. La novedad que proporcion el lenguaje C sobre el B fue el diseo de tipos y estructuras de datos. Una de las peculiaridades de C es su riqueza de operadores, Puede decirse que prcticamente dispone de un operador para cada una de las posibles operaciones en cdigo mquina. Finalmente, C, que ha sido pensado para ser altamente transportable y para programar lo improgramable, igual que otros lenguajes tiene sus inconvenientes: Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas de caracteres, con lo que este trabajo queda para la biblioteca de rutinas, con la consiguiente prdida de transportabilidad La excesiva libertad en la escritura de los programas puede llevar a errores en la programcin que, por ser correctos sintcticamente no se detectan a simple vista Por otra parte las precedencias de los operadores convierten a veces las expresiones en pequeos rompecabezas. A pesar de todo, C ha demostrado ser un lenguaje extremadamente eficaz y expresivo. C como lenguaje estructurado. VENTAJAS DEL C. Enorme flexibilidad y adaptabilidad. El lenguaje es en s muy pequeo y verstil, slo tiene 32 palabras reservadas; gracias a funciones externas, agrupadas en forma de bibliotecas, se puede adaptar a casi cualquier tarea. Compiladores pequeos y fciles de transportar. En efecto, al ser el lenguaje muy pequeo y conciso, el compilador tambin lo era. Adems los primeros compiladores estaban pensados para trabajar muy rpidamente; no hacan ningn tipo de comprobacin sobre el cdigo fuente, dejndole toda la responsabilidad al programador. Adems es fcil escribir en C programas transportables, y esto incluye al propio compilador. Concisin en la sintaxis. A veces se abusa de ello y se llega a perder claridad. C permite poner en un par de lneas lo que en otros lenguajes parecidos se pondra en una docena. Hecho por y para programadores. Como ya se ha dicho el propsito de C fue construir el sistema operativo UNIX y sus utilidades. Fue hecho por un pequeo nmero de personas casi por aficin, no por una compaa comercial con cientos de programadores. Las personas que lo hicieron tenan las ideas muy claras. xito de UNIX, distribucin gratuita en ambientes universitarios. Como tambin se ha dicho, AT&T tuvo la brillante idea de distribuir gratuitamente en universidades el UNIX incluyendo todo el cdigo fuente y el compilador de C (an hoy con cada sistema UNIX se suele incluir un compilador de C gratis). Como UNIX estaba escrito en C, quien quera modificar el sistema tena que aprender C. Adems las universidades son un buen caldo de cultivo, pues los profesionales que salen de ellas quieren seguir trabajando en entornos que les son familiares.

RESPONSABLE: ING. ALEXIS MORA P.

35

Eficiencia en la produccin de cdigo objeto. Muchas veces no merece la pena escribir algo en ensamblador pudiendo hacerse en C. Tradicionalmente el ensamblador generado por el compilador de C ha sido casi tan bueno como el que se pudiera escribir directamente, y por supuesto se gana siempre en claridad, lo que es muy importante a la hora de hacer modificaciones posteriores. Amplio juego de operadores. El lenguaje C tiene ms operadores que la mayora de lenguajes comparables, y son operadores tiles y concisos. Auge de los PCs y compiladores para DOS y Windows. El auge de la microinformtica ha hecho que la produccin de programas para entornos ofimticos y caseros aumente extraordinariamente. Esto ha hecho que muchas compaas vendieran compiladores de C que, adems, incluan un atractivo entorno de desarrollo integrado. DESVENTAJAS DEL C. No se comprueban los lmites de los vectores. La implementacin de los vectores es a bajo nivel, como otros aspectos, y el C no comprueba en absoluto si se sobrepasan los lmites en tiempo de ejecucin, por lo que un programa puede referenciar una zona que no tiene reservada, sin que el compilador proteste. Normalmente esto provocar un error y el programa no funcionar, pero dependiendo del sistema concreto con el que se trabaje puede que a veces si funcione, lo cual puede ser peor. La no comprobacin de lmites era antes una virtud, pues se buscaba que el compilador fuera sencillo de construir y rpido al trabajar, y se dejaba la responsabilidad a los programadores de C que se supona seran expertos y profesionales. Hoy da las mquinas son mucho ms rpidas que en aquella poca. La precedencia de los operadores no es totalmente intuitiva. En caso de duda, consulte la tabla de precedencia de operadores; si no la tiene a mano, ponga parntesis. La sintaxis puede llegar a ser demasiado concisa. Ensearle el listado de un programa medianamente complejo a un profano es desilusionarlo: slo ver smbolos extraos. Sin embargo, si el programa est bien escrito, cualquiera con experiencia lo entender todo perfectamente; pero es posible abusar de la concisin que nos proporciona y dejar el programa completamente ilegible. Incluso, existe un programa que sirve para ofuscar cdigo fuente en C; esto es oscurecer o liar el cdigo de tal forma que no se entienda nada pero compile perfectamente. Se emplea en los casos en que haya que distribuir el cdigo fuente de un programa sin compilar para que el usuario pueda cambiar ciertos parmetros antes, pero sin que pueda modificar dicho cdigo o apropiarse de algn algoritmo. Por otra parte, existen concursos de C ofuscado donde se premia el cdigo fuente ms original, sin que importe mucho lo que haga el programa. Existen algunos que se listan a s mismos, uno que calcula el nmero PI con muchos decimales y ocupa dos lneas, etc. Tambin se dan premios al programa ms feo, o al menos estructurado (con ms gotos), o al que se presenta formando un dibujo, etc CARACTERSTICAS DEL C. El C es un lenguaje de nivel medio. Esto no significa que sea menos potente, ms difcil de utilizar o menos desarrollado que un lenguaje de alto nivel como puede ser BASIC o Pascal; tampoco implica que C sea parecido al lenguaje ensamblador y por tanto presente sus problemas asociados. Por el contrario, manifiesta que el C combina elementos de los lenguajes de alto nivel con la funcionalidad del lenguaje ensamblador; por ejemplo, permite la manipulacin de bits, bytes y direcciones (elementos bsicos con los que opera la computadora). Esto hace que se adapte al desarrollo de software base (programacin del sistema), donde estas operaciones son habituales. El cdigo C es muy portable. Portabilidad significa que es posible adaptar el software escrito para un tipo de computadora a otra. Como muestra, si un programa escrito para un Apple Macintosh se puede trasladar fcilmente a un IBM PC, se considera portable. No es un lenguaje de tipos fuertes. Todos los lenguajes de programacin de alto nivel soportan el concepto de tipos de datos. Un tipo de datos define un conjunto de valores que puede almacenar una variable junto con un conjunto de operaciones que se pueden realizar sobre esta variable. Aunque C incorpora cinco tipos de datos bsicos (entero, real -simple y doble precisin-, carcter y vaco), no se trata de un lenguaje de tipos fuertes (como Pascal o Ada) en los que los datos utilizados deben tener sus tipos declarados explcitamente y el lenguaje limita la mezcla de tipos en las expresiones. La ventaja de los lenguajes de tipos fuertes es que se gasta menos esfuerzo en la depuracin del programa, ya que el compilador detecta muchos de los errores causados por la utilizacin indebida de los tipos de datos. As pues, C permitir casi todas las mezclas de tipos. Por ejemplo, los tipos entero y carcter se pueden entremezclar libremente en la mayora de las expresiones. El C tiene pocas palabras reservadas.

RESPONSABLE: ING. ALEXIS MORA P.

36

Slo tiene 32 palabras reservadas (27 por parte del estndar de Kemighan y Ritchie y 5 incorporadas por el comit de estandarizacin ANSI), que son las rdenes que constituyen el lenguaje C. Los lenguajes de alto nivel normalmente incluyen algunas ms. El C es un lenguaje estructurado. Aunque el trmino lenguaje estructurado en bloques no es aplicable estrictamente al lenguaje C, normalmente se considera un lenguaje estructurado por las similitudes en su estructura con ALGOL, Pascal y Modula-2. Tcnicamente, un lenguaje estructurado en bloques permite que los procedimientos y funciones se declaren dentro de otros procedimientos o funciones. De esta forma, los conceptos de global y local se extienden mediante la utilizacin de reglas de mbito adicionales, que establecen la visibilidad de una variable o procedimiento. C no se puede considerar realmente estructurado en bloques, puesto que no permite la creacin de funciones dentro de funciones. La caracterstica que distingue a un lenguaje estructurado es la compartimentalizacin del cdigo y los datos, o sea, la capacidad de un lenguaje de dividir y ocultar del resto del programa toda la informacin e instrucciones necesarias para llevar a cabo una determinada tarea. Una forma de llevarla a cabo es utilizar subrutinas que empleen variables locales (temporales), mediante las cuales el programador puede conseguir que los eventos que se producen dentro de las mismas no causen efectos colaterales en otras partes del programa. Esta capacidad hace que sea muy fcil que programas en C compartan secciones de cdigo. Si se desarrollan funciones compartimentalizadas, slo se necesitar conocer qu es lo que hace una funcin y no cmo lo hace. Recurdese que el uso excesivo de variables globales (variables con mbito en todo el programa) puede hacer que los errores proliferen en el programa, al permitir los efectos colaterales no deseados. Un lenguaje estructurado permite muchas posibilidades en programacin: Soporta directamente distintas construcciones de bucles, como pueden ser while, do-while y for; la utilizacin de goto est totalmente prohibida o desaprobada; permite sangrar instrucciones, etc. Los lenguajes estructurados son ms recientes que los no estructurados (COBOL, BASIC, etc.). Hoy en da se ha aceptado ampliamente que la claridad de los lenguajes estructurados facilita la programacin y el mantenimiento. Realmente, muy pocos programadores podran considerar seriamente la posibilidad de utilizar un lenguaje no estructurado para nuevos desarrollos de software. El componente principal de la estructura de C es la funcin (una subrutina independiente de C). En C las funciones son bloques constituyentes en donde tiene lugar toda la actividad del programa. Permiten que tareas distintas de un programa se definan y se codifiquen de forma separada, permitiendo as la modularidad de los programas. Despus de crear una funcin, se puede utilizar de forma apropiada en varias situaciones, evitando la creacin de efectos colaterales en otras partes del programa. El hecho de que se puedan crear funciones independientes es extremadamente crtico en grandes proyectos donde el cdigo de un programador no debe afectar accidentalmente al de otro. Otra forma de estructurar y compartimentalizar cdigo en C es utilizar bloques de cdigo. Un bloque de cdigo es un grupo de instrucciones de programa conectadas lgicamente que es tratado como una unidad. En C, un bloque de cdigo se crea colocando una secuencia de instrucciones entre llaves. En este ejemplo, if (x<10) { printf(Demasiado pequeo, intntelo de nuevo.\n); restablecer_contador(-1); } } las dos instrucciones que aparecen entre llaves tras el if se ejecutarn si x es menor que 10. Estas dos instrucciones, junto con las llaves, constituyen un bloque de cdigo. Se trata de una unidad lgica: una de las instrucciones no se puede ejecutar sin la otra. Los bloques de cdigo no solamente permiten implementar muchos algoritmos con claridad, elegancia y eficiencia sino que tambin ayudan al programador a asimilar la verdadera naturaleza de la rutina. El C es un lenguaje para programadores. Todos los lenguajes de programacin no estn hechos para los programadores. Por ejemplo, COBOL se dise para permitir a los no programadores comprender los programas de gestin (aplicaciones comerciales, orientadas a negocios); BASIC se cre esencialmente para introducir a los estudiantes en la programacin; PASCAL se diseo para ensear computacin a los estudiantes universitarios; etc. Por contra, C fue creado, influenciado y probado por programadores profesionales. El resultado final es que C ofrece al programador lo que ste quiere: pocas restricciones, pocas pegas, estructuras de bloques, funciones independientes y un conjunto compacto de palabras reservadas. Es muy interesante que mediante la utilizacin de C, un programador pueda alcanzar casi la

RESPONSABLE: ING. ALEXIS MORA P.

37

eficiencia del cdigo ensamblador, combinada con la estructura de ALGOL o Modula-2. Por tanto no es de extraar que C sea uno de los lenguajes ms populares entre los programadores profesionales de lite. Ventajas respecto al lenguaje ensamblador. El hecho de que C se utilice a menudo en lugar del lenguaje ensamblador contribuye mucho a su popularidad entre los programadores. El lenguaje ensamblador utiliza una representacin simblica del cdigo binario real que la computadora ejecuta. Cada operacin en lenguaje ensamblador se corresponde con una tarea bsica que la computadora ejecuta. Aunque el lenguaje ensamblador ofrece a los programadores la potencia de realizar las tareas con la mayor flexibilidad y eficiencia, es notoriamente difcil trabajar con l en el desarrollo y depuracin de un programa. Ms an, como el lenguaje ensamblador no es estructurado, el programa final tiende a ser cdigo espagueti (un complejo desorden de saltos, llamadas e indexaciones). Esta falta de estructuracin provoca que los programas en lenguaje ensamblador sean difciles de leer, mejorar y mantener. Quizs lo ms importante sea que las rutinas del lenguaje ensamblador no son portables entre mquinas con unidades de procesamiento central diferentes. Inicialmente, C se utiliz para la programacin de sistemas. Un programa de sistemas forma parte de una amplia clase de programas que constituyen el software base de una computadora o de sus utilidades de soporte. Por ejemplo, los siguientes se denominan normalmente programas de sistemas: Sistemas operativos, Intrpretes, Editores, Programas especficos, Compiladores, Administradores de bases de datos, etc. Portabilidad del C. Conforme C creca en popularidad, muchos programadores comenzaban a utilizarlo para programar todas las tareas debido a su portabilidad y eficiencia. Dado que existen compiladores de C para la mayora de las computadoras, es posible utilizar el cdigo escrito para una mquina, y compilarlo y ejecutarlo en otra con pocos o ningn cambio. Esta portabilidad ahorra tanto tiempo como dinero. Adems, los compiladores de C tienden a generar cdigo objeto ms compacto y rpido que la mayora de los otros tipos de compiladores. Eficiencia del C. Quizs la razn ms significativa por la que C se utiliza para todo tipo de tareas de programacin es que a los programadores les gusta!. C ofrece la velocidad del lenguaje ensamblador y la extensibilidad de FORTH, aunque tiene algunas de las restricciones de Pascal o Modula-2. Cada programador de C puede crear y mantener una biblioteca nica de funciones que se ajuste a su personalidad y que puede utilizar en diferentes programas. Puesto que C permite (de hecho fomenta) la compilacin separada, ofrece a los programadores poder gestionar proyectos con facilidad y minimizar la duplicidad de esfuerzos. Y, por supuesto, es el lenguaje sobre el que est desarrollado C++. Compiladores frente a intrpretes. Los trminos compilador e intrprete se refieren a la forma de ejecutar un programa. En teora, cualquier lenguaje de programacin puede ser compilado o interpretado, pero algunos se suelen ejecutar en una forma o en otra. Por ejemplo, normalmente, BASIC es interpretado y C es compilado. La forma de ejecutar un programa no viene definida por el lenguaje en el que se haya escrito. Los intrpretes y compiladores son simplemente programas sofisticados que trabajan sobre el cdigo fuente del programa. Un intrprete lee el cdigo fuente del programa lnea a lnea, realiza las instrucciones especficas contenidas en esa lnea y, a continuacin, pasa a la siguiente lnea. Un compilador lee el programa entero y lo convierte en cdigo objeto, que es una traduccin del cdigo fuente del programa a un formato que puede ejecutar directamente la computadora. El cdigo objeto tambin se denomina cdigo binario y cdigo mquina. Una vez compilado un programa, una lnea de cdigo fuente deja de tener significado en la ejecucin del programa. Cuando se utiliza un intrprete, el cdigo fuente debera estar presente cada vez que se quiere ejecutar el programa. Por ejemplo, en BASIC tradicional se tiene que ejecutar primero el intrprete de BASIC y, a continuacin, cargar el programa y escribir RUN cada vez que se desea utilizarlo. Luego, el intrprete de BASIC examina el programa lnea a lnea, para ver si es correcta, y a continuacin la ejecuta. Este lento proceso se realiza cada vez que se ejecuta el programa. Por contra, un compilador convierte un programa a cdigo objeto que puede ejecutar directamente la computadora. Debido a que el compilador traduce el programa una sola vez, lo nico que hay que hacer es ejecutarlo directamente, normalmente mediante el simple proceso de escribir su nombre. Por tanto, la compilacin slo se realiza una sola vez, mientras que el cdigo interpretado conlleva un costo de tiempo cada vez que se ejecuta el programa. Dos trminos que aparecern con frecuencia son tiempo de compilacin, que se refiere a los eventos que ocurren durante el proceso de compilacin, y tiempo de ejecucin, que se refiere a los eventos que ocurren mientras se ejecuta el programa. Normalmente, estos trminos se vern en las discusiones de errores, como pueden ser en las frases errores en tiempo de compilacin y errores en tiempo de ejecucin.

RESPONSABLE: ING. ALEXIS MORA P.

38

FORMATO DE UN PROGRAMA EN C. Palabras reservadas. La siguiente tabla muestra las 32 palabras reservadas que, junto con la sintaxis formal de C, constituyen el lenguaje de programacin C.

TIPOS DE DATOS. Existen cinco tipos de datos bsicos en C: caracteres (char), enteros (int), punto flotante (float), doble punto flotante (double) y sin valor (void). - Los valores del tipo char se utilizan para almacenar caracteres ASCII o cualquier cantidad de 8 bits. - Las variables del tipo int se utilizan para almacenar cantidades enteras. - Las variables del tipo float y double almacenan nmeros reales. - El tipo void se utiliza en tres casos: 1. Para declarar explcitamente el tipo de una funcin que no devuelve ningn valor. 2. Para declarar explcitamente una funcin que no tiene parmetros. 3. Para crear punteros genricos. C soporta otros tipos distintos, incluyendo estructuras, uniones, campos de bits, enumeraciones y tipos definidos por el usuario que se explicarn ms adelante. Modificadores de tipo. A excepcin del tipo void, pueden aadirse distintos modificadores precediendo a los tipos de datos bsicos. Un modificador se utiliza para alterar el significado del tipo bsico para que se ajuste de manera ms precisa a las necesidades de cada situacin. Tales modificadores son: signed, unsigned, long y short. - Todos ellos se pueden aplicar a los tipos enteros base. - Se puede aplicar unsigned y signed a los caracteres. - Se puede aplicar long al tipo double. - La utilizacin de signed sobre enteros es redundante (pero permitida) debido a que la declaracin por omisin del entero asume un nmero con signo. Lo mismo ocurre cuando se aplica al tipo char.

La tabla siguiente muestra todas las combinaciones permitidas que se ajustan al estndar ANSI de C para tamaos de palabra de 32 bits, junto con sus rangos y longitudes en bits, tal como se implementan en Borland C++. (Para tamaos de palabra de 16 bits, slo cambia * de 32 a 16 bits).

RESPONSABLE: ING. ALEXIS MORA P.

39

DECLARACIN DE VARIABLES. La declaracin de variables consiste en asociar un tipo de datos determinado a una variable. Todas las variables a usar en un programa se deben declarar antes de utilizarlas. A continuacin, se muestra el formato general de una declaracin: tipo lista_variables; Aqu, tipo debe ser un tipo de dato vlido en C y lista_variables puede estar constituida por uno o ms nombres de identificadores separados por comas. unsigned int anio_nacimiento, numero_socios; float importe, total_compra; double distancia_sol, peso; char letra, digito ; Es posible inicializar una variable (asignarle un valor inicial) en el momento de su declaracin: para ello basta con poner un signo igual (=) a continuacin del nombre de la misma, seguido de la constante correspondiente al tipo adecuado de sta. int dia = 15; // declaracin e inicializacin short int coord_x =10, coord_y =12 ; char caracter = z; int blancos=11, negros=15, verdes=30; No conviene mezclar, en una misma lnea, variables que slo se declaran con otras que se inicializan. CONSTANTES. Las constantes en C se refieren a valores fijos que no puede modificar el programa. Las constantes literales representan valores fijos que pueden ser de cualquier tipo de dato, como se muestra en la siguiente tabla.

Las constantes con nombre se pueden declarar en C de dos maneras: - Usando la directiva del preprocesador #define. Ej. #define PI 3.141592 En cuyo caso se estar indicando al compilador que antes de realizar la compilacin sustituya dentro del programa fuente todas las apariciones de PI por el valor 3.141592 - Anteponiendo la palabra reservada const delante de la declaracin del objeto. Ej. const int PI=3.141592; En cuyo caso se indicar al compilador que PI es un objeto cuyo valor no puede ser modificado durante el programa. Cualquier intento de modificacin del valor de PI provocara un error de compilacin. Es costumbre entre los programadores de C declarar las constantes con nombre en maysculas.

SENTENCIAS Una sentencia es cualquier expresin en C que se espera que tenga alguna consecuencia. Pueden ser asignaciones, operaciones, simples, llamadas a funciones o combinaciones de ellas. Toda sentencia termina con un ";". Una sentencia simple consiste en una expresin acabada en un punto y coma (;). La sentencia de asignacin Esta sentencia ya ests harto de verla a lo largo del tutorial. Aparece prcticamente en todos los ejemplos. Es una de las instrucciones ms comunes en un programa. Lo que te permite es darle un primer valor o cambiar el valor a una variable. Una sentencia de asignacin consta de tres partes:

RESPONSABLE: ING. ALEXIS MORA P.

40

La parte a la izquierda del smbolo de asignacin El propio smbolo de asignacin La parte de la derecha

Veamos la sintaxis: variable = expresin o llamada a funcin Mientras que la parte de la izquierda slo puede ser una variable, la de la derecha puede ser una expresin o una llamada a una funcin. Recordar que dentro del trmino expresin se incluyen valores constantes y variables. Las expresiones: operandos y operadores Una expresin es una combinacin de operandos y operadores. Los operandos pueden ser: Constantes literales o con nombre Variables Otras expresiones Lo que se hace con una expresin es evaluarla para que devuelva un valor. Tipos de expresiones Dentro de las expresiones distinguimos dos clases segn el tipo de datos que devuelven al evaluarlas: Aritmticas: las que devuelven un valor numrico Lgicas: las que devuelven true o false Las expresiones se utilizan fundamentalmente en las asignaciones y en las partes condicionales de las sentencias if, while y repeat. Esto puedes verlo en el siguiente ejemplo: El ejemplo trata de una bsqueda en un conjunto ordenado de elementos. En el while se chequea: si hay ms elementos y si aun no lo hemos encontrado. Si no se cumple alguna de las dos condiciones se sale del bucle. Evaluacin de expresiones Para evaluar una expresin no hay que hacer nada del otro mundo, pues es bien sencillo. Slo hay que saber sumar, restar, si un nmero es mayor que otro, ... Hay tres reglas de prioridad a seguir para evaluar una expresin: Primero, los parntesis (si tiene) Despus, seguir el orden de prioridad de operadores Por ltimo, si aparecen dos o ms operadores iguales, se evalan de izquierda a derecha. OPERADORES. Una caracterstica del lenguaje C es la cantidad de variedad de operadores que tiene, es decir, smbolos que operan sobre operandos (objetos) para producir los valores deseados. Cualquier combinacin vlida de operadores con los operandos necesarios constituye una expresin; una expresin completa que finaliza en un punto y coma es una sentencia y una serie de sentencias componen un programa. La importancia de operadores y expresiones es pues evidente; se encuentran entre las unidades de construccin fundamentales de un programa en C. Operadores aritmticos. En la siguiente tabla se muestra una lista de los operadores aritmticos permitidos en C.

Operadores relacionales y lgicos. A diferencia de otros lenguajes, una expresin de relacin o una expresin lgica, si es cierta toma el valor 1, y si es falsa toma el valor 0. Por ejemplo, la expresin var_entera = ( 'b' > 'a' ); le est asignando 1 a la variable var_entera.

RESPONSABLE: ING. ALEXIS MORA P.

41

La clave de los conceptos de operadores relacionales y lgicos es la idea de verdadero y falso. En C, verdadero es cualquier valor distinto de 0. Falso es 0. Las expresiones que utilizan los operadores relacionales y lgicos devolvern 0 para falso y 1 para verdadero.

Operadores a nivel de bit. Puesto que C se dise para sustituir al lenguaje ensamblador en la mayora de las tareas de programacin, soporta un completo complemento de operadores a nivel de bit. Estos son la comprobacin, configuracin o desplazamiento de los bits actuales de un byte o una palabra, que se corresponden con los tipos de datos char e int (NUNCA con los tipos float, double, long double y void).

Ejemplos: x << 2; z=x & y; z=120^127; El operador en tiempo de compilacin sizeof. sizeof es un operador unario en tiempo de compilacin que devuelve la longitud, en bytes, de la variable o el especificador de tipo encerrado entre parntesis al que precede. Por ejemplo: float f; printf(%f, sizeof f); // 4 printf(%d, sizeof(int));// 4 (suponiendo enteros de 32 bits) La utilidad principal de sizeof es ayudara generar cdigo portable cuando dicho cdigo depende del tamao de los tipos de datos incluidos en C. En C existen, adems, otros operadores que iremos estudiando en apartados posteriores como ? y : (condicional), & y * (punteros) y -> y . (elementos de estructuras y uniones). Precedencia de los operadores. El compilador evala de izquierda a derecha los operadores con el mismo nivel de precedencia. Por supuesto, se pueden utilizar parntesis para modificar el orden de evaluacin. La precedencia de operadores usada en C atiende a la siguiente tabla.

RESPONSABLE: ING. ALEXIS MORA P.

42

Sentencias simples Las sentencias simples se dividen en: sentencia de seleccin sentencia de iteracin sentencias de salto Sentencias de seleccin Existen dos tipos, if y switch. Adems, el operador "?" es una alternativa para if en ciertas situaciones. if y switch. Adems, el operador "?" es una alternativa para if en ciertas situaciones. IF La forma general es: if (expresion) sentencia; else sentencia;

RESPONSABLE: ING. ALEXIS MORA P.

43

Donde sentencia puede ser una sentencia simple, un bloque de sentencias o nada (en el caso de sentencias vacas). La clusula else es opcional. Si la expresin del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el cdigo asociado al if o al else, nunca ambos. Un if anidado es un if que es el objeto de otro if o else. Son muy comunes en la programacin. Un sentencia else siempre se refiere al if ms prximo que est en el mismo bloque que el else y que no est asociado con un if. Por ejemplo: else es opcional. Si la expresin del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el cdigo asociado al if o al else, nunca ambos. if(i) { if(j) sentencia 1; if(k) sentencia 2; /* este if esta */ else sentencia 3; /* asociado con este else */ } El estndar ANSI especfica que al menos se deben permitir 15 niveles de anidamiento. En la prctica, la mayora de los compiladores permiten bastantes ms. La alternativa ?

SWITCH Es una sentencia de seleccin mltiple, que compara sucesivamente el valor de una expresin con una lista de constantes enteras o de caracteres. Cuando se encuentra una16-correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es: -correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es: switch (expresin) { case constante1: secuencia de sentencias; break; .. .. default: secuencia de sentencias; } Sentencias de iteracin Tambin denominadas bucles. Permiten realizar un conjunto de instrucciones hasta que se alcance una cierta condicin (que puede estar predefinida como en el bucle for; o no haber final predeterminado, como en los bucles while y do-while). FOR El formato general es:for (inicializacin; condicin; incremento) sentencia; La inicializacin normalmente es una sentencia de asignacin que se utiliza para iniciar la variable de control del bucle. La condicin es una expresin relacional que determina cuando finaliza el bucle. El incremento define como cambia la variable de control cada vez que se repite el bucle. Estas tres secciones principales deben ser separadas por punto y coma (";"). El bulce for continua ejecutndose mientras que la condicin sea cierta. Una vez que la condicin es falsa, la ejecucin del programa sigue por la sentencia siguiente al for. No es obligatoria ninguna de las tres expresiones, por ejemplo, se puede realizar un bucle infinito de la forma: for. No es obligatoria ninguna de las tres expresiones, por ejemplo, se puede realizar un bucle infinito de la forma:for(;;) printf("este bucle estar siempre ejecutndose.\n");WHILE Su forma general es:while (condicin) sentencia; La condicin puede ser cualquier expresin, cualquier valor distinto de 0 es cierto. El bucle itera mientras la condicin sea cierta. Cuando la condicin se hace falsa, el control del programa pasa a la lnea siguiente al cdigo del bucle.DO-WHILE A diferencia de los bucles for y while, que analizan la condicin del bucle al principio del mismo, el bucle do-while analiza la condicin al final del bucle. Esto significa que le bucle do-while siempre se ejecuta al menos una vez. La forma general es: for y while, que analizan la condicin del bucle al principio do { sentencia; } while (condicin); Aunque las llaves no son necesarias cuando slo hay una sentencia, se utilizan normalmente para evitar confusiones al programador con el while.

RESPONSABLE: ING. ALEXIS MORA P.

44

Sentencias de salto C tiene cuatro sentencias que llevan a cabo un salto incondicional (adems de goto, pero su uso no est bien visto por sus programadores): return, break, exit() y continue. goto, pero su uso no est bien visto por sus programadores): return, break, exit() y continue. RETURN Se usa para volver de una funcin. Se trata de una sentencia de salto porque hace que la ejecucin vuelva al punto en que se hizo la llamada a la funcin. Si hay algn valor asociado con return, se trata del valor de vuelta de la funcin. Si no se especifica un valor de vuelta, se asume que devuelve un valor sin sentido. Donde expresin es opcional. Se pueden usar tantas sentencias return como se quiera en una funcin. Sin embargo, la funcin termina al encontrar el primero. expresin es opcional. Se pueden usar tantas sentencias return como se quiera en una funcin. Sin embargo, la funcin termina al encontrar el primero. BREAK Tiene dos usos: para finalizar un case en una sentencia switch y para forzar la terminacin inmediata de un bucle, saltando la evaluacin condicional normal del ciclo. Cuando se encuentra la sentencia break dentro de un bucle, el bucle finaliza inmediatamente y el control sigue en la sentencia posterior al bucle. EXIT() Igual que se puede interrumpir un bucle, se puede salir anticipadamente de un programa usando la funcin exit() de la biblioteca estndar. Esta funcin da lugar a la terminacin inmediata del programa, forzando la vuelta al sistema operativo. La forma general de la funcin exit() es: void exit (int cdigo_de_vuelta); El valor de cdigo_de_vuelta es el que se devuelve al proceso de llamada, que normalmente es el sistema operativo. Generalmente se usa un cero como cdigo de vuelta para indicar que se trata de una terminacin normal del programa. Se utiliza otros argumentos para indicar algn tipo de error. CONTINUE Funciona de forma similar a break. Sin embargo, en vez de forzar la terminacin, break. Sin embargo, en vez de forzar la terminacin, continue fuerza una nueva iteracin del bucle y salta cualquier cdigo que exista entremedias. Para el bucle for, continue hace que se ejecuten las partes de prueba condicional y de incremento del bucle. Para los bucles while y do-while, el control del programa pasa a la prueba condicional. El Entorno Integrado de Desarrollo C++ C++ incluye un editor integrado, un compilador, un enlazadory un depurador que permite editar, compilar, enlazar, depurar y ejecutar programas pulsando teclas, mediante mens intuitivos y fciles de usar sin abandonar el entorno de C++. Este programa se denomina entorno integrado de desarrollo EID (Integrated Development Environment, IDE). Instalacin de Turbo C++ El paquete Turbo C++ viene con un programa de instalacin automtico INSTALL. Este programa detecta el tipo de hardware utilizado y configura Turbo C++ de manera adecuada. Crea tambin los directorios necesarios y tranfiere los archivos de los discos del paquete a su disco duro. Para instalar Turbo C++, siga estos pasos: 1. Inserte el disco #1 de Turbo C++ en la unidad A de su PC. 2. Teclee A:INSTALL y pulse la tecla Enter (Intro). Turbo C++ le muestra un mensaje de bienvenida. 3. Pulse Enter. Turbo C++ le muestra un mensaje solicitndole cul es la unidad desde la que se instalar el programa (por defecto A:). 4. Pulse Enter para aceptar la unidad por omisin. Aparece otra pantalla de instalacin. La unidad por defecto y el directorio donde se instala Turbo C++ es C:\TC (un directorio llamado TC). 5. Resalte la opcin Start installation y pulse Enter. 6. Pulse Enter despus de resaltar la opcin que desea modificar. 7. Teclee el nuevo directorio donde desea almacenar los archivos Turbo C++ y pulse Enter.

RESPONSABLE: ING. ALEXIS MORA P.

45

8. Pulse la tecla F9 para iniciar la instalacin, resalte Start installation y pulse Enter. I Ingresar al entorno Integrado de desarrollo de Turbo C++ Para ingresar a Turbo C++ sitese en la unidad de disco y en el directorio donde se encuentre el archivo TC.exe. Por ejemplo, si el archivo TC.exe se encuentra en el subdirectorio TC\BIN del disco duro, utilice el comando CD (Change Directory, Cambiar Directorio) del DOS: C:\>CD TC\BIN para ingresar a este subdirectorio. Luego, escriba TC: C:\TC\BIN> TC El men principal de Turbo C++

El men principal de Turbo C++ est formado por un conjunto de submens deplegables a los que es posible acceder por medio de abreviaturas de teclado o haciendo clic con el puntero del ratn. Los submens del men principal son: File, Edit, Search, Aun, Compile, Debug, Project, Ootions, Windows y Help. Para activar o desplegar los mens, simplemente pulse la tecla AL T, junto con la primera letra del nombre del men. Por ej~mplo, para acceder al men AUN, mantenga pulsada la tecla AL T y, luego, presione A. Funciones FUNCIONES DE USUARIO Un programa C est formado por un conjunto de funciones que al menos contiene la funcin main. Una funcin se declara con el nombre de la funcin precedido del tipo de valor que retorna y una lista de argumentos encerrados entre parntesis. El cuerpo de la funcin est formado por un conjunto de declaraciones y de sentencias comprendidas entre llaves. FUNCIONES DE LIBRERA. stdio.h ctype.h string.h math.h stdlib.h assert.h setjmp.h signal.h time.h

Librerias C La librera estndar de C (tambin conocida como libc) es una recopilacin de ficheros cabecera y libreras con rutinas que implementan operaciones comunes, como las de entrada salida o el tratamiento de cadenas. A diferencia de otros lenguajes como COBOL, FORTRAN, o PL/I, C no incorpora palabras clave para estas tareas, por lo que prcticamente todo programa implementado en C se basa en la librera estndar para funcionar.

RESPONSABLE: ING. ALEXIS MORA P.

46

Diseo El nombre y las caractersticas de cada funcin, el prototipo, as como la definicin de algunos tipos de datos y macros, se encuentran en un fichero denominado archivo de cabecera (con extensin ".h"), pero la implementacin real de las funciones estn separadas en un archivo de la librera. La denominacin y el mbito de las cabeceras se han convertido en comunes, pero la organizacin de las libreras sigue siendo diversa, ya que stas suelen distribuirse con cada compilador. Dado que los compiladores de C, a menudo, ofrecen funcionalidades adicionales que no estn especificados en el ANSI C, la librera de un compilador no siempre es compatible con el estndar ni con las libreras de otros compiladores. Calidad del diseo Est demostrado que la mayor parte de la librera estndar de C ha sido bien diseada, aunque, se ha comprobado que algunas partes tambin son fuente de errores; funciones para entrada de cadenas como gets() o scanf(), producen desbordamientos de buffer, y muchas guas de programacin recomiendan evitar su uso. La funcin strtok() presenta otra singularidad, est diseada para ser utilizada como un analizador lxico rudimentario, pero resulta difcil de utilizar adems de ser muy frgil. Historia El lenguaje de programacin C, antes de normalizarse, no dispona de funcionalidades tales como operaciones de entrada/salida (a diferencia de lenguajes tradicionales como Cobol y Fortran). Con el tiempo, las comunidades de usuarios de C fueron compartiendo ideas, as como las implementaciones de lo que ahora se denomina las libreras estndar de C para proporcionar esas funcionalidades. Muchas de estas ideas se incorporaron finalmente en la definicin estandarizada del lenguaje. Tanto Unix como C fueron creados el los laboratorios Bell de AT&T a finales de la dcada de los 60 y principios de los 70. Fue en los 70 cuando el lenguaje de programacin C acrecent su popularidad. Muchas organizaciones y universidades crearon sus propias versiones del lenguaje para sus propios proyectos. A comienzos de los 80 se evidenciaron los problemas de compatibilidad derivados de la existencia de las mltiples implementaciones del lenguaje. en 1983 el Instituto Nacional Americano de Estndares (ANSI, de las siglas en ingls American National Standards Institute) creo un comit para establecer una especificacin estndar del lenguaje conocida como ANSI C. Este trabajo culmin con la creacin del llamado estndar C89 en 1989. Una parte del estndar resultante fue un conjunto de libreras de software denominado libreras estndar de ANSI C. Posteriores versiones del C estndar han aadido algunos nuevos ficheros cabecera a la librera. El soporte de estas nuevas extensiones vara segn implementaciones. Las cabeceras <iso646.h>, <wchar.h> y <wctype.h> fueron aadidas con Normativa Addendum 1 (abreviado NA1), y fueron ratificadas por el estndar en 1995. En 1999 se realiz una revisin del estndar que se denomin C99 a la que se aadieron las cabeceras <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> y <tgmath.h>. El estndar ANSI La librera estndar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programacin con una simple directiva. Cada cabecera contiene la declaracin de una o ms funciones, tipos de datos y macros. En comparacin con otros lenguajes de programacin (como por ejemplo Java) la librera estndar es muy pequea, est proporciona un conjunto bsico de funciones matemticas, de tratamiento de cadenas, conversiones de tipo y entrada/salida por consola o por ficheros. No se incluyen, ni un conjunto de tipos de datos contenedores bsicos (listas, pilas, colas, ...), ni herramientas para crear una interfaz grfica de usuario (GUI), ni operaciones para trabajar en red, no otras funcionalidades que un lenguaje como Java incorpora de manera estndar. La principal ventaja del reducido tamao de la librera estndar de C es que construir un entorno de trabajo en ANSI C es muy fcil y, en consecuencia, portar un programa en ANSI C de una plataforma a otra es relativamente sencillo. Se han desarrollado muchas otras libreras para proporcionar una funcionalidad equivalente a la de otros lenguajes de programacin. Por ejemplo, el proyecto de desarrollo del entorno de escritorio de GNOME cre las libreras GTK+ y GLib con funcionalidades para desarrollar y trabajar con interfaces grficas de usuario. La variedad de libreras disponibles ha hecho que, a lo largo de la historia, haya quedado demostrada la superioridad de algunas de estas herramientas. El gran inconveniente es que a menudo no funcionan especialmente bien en conjunto, normalmente son los propios programadores familiarizados con las diferentes libreras quienes consiguen sacarles el mximo partido, aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma.

RESPONSABLE: ING. ALEXIS MORA P.

47

ANSI C library header files <assert.h> Contiene la macro assert (asercin), utilizada para detectar errores lgicos y otros tipos de fallos en la depuracin de un programa.

<complex.h> Conjunto de funciones para manipular nmeros complejos (nuevo en C99). <ctype.h> <errno.h> <fenv.h> Contiene funciones para clasificar caracteres segn sus tipos o para convertir ente maysculas y minsculas independientemente del conjunto de caracteres (tpicamente ASCII o alguna de sus extensiones). Para testar los cdigos de error devueltos por las funciones de librera. Para controlar entornos en coma flotante (nuevo en C99). Contiene la definicin de constantes que especifican ciertas propiedades de la librera de coma flotante, como la diferencia mnima entre dos nmeros en coma flotante (_EPSOLON), el nmero mximo de dgitos de precisin (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).

<float.h>

<inttypes.h> Para operaciones de conversin con precisin entre tipos enteros (nuevo en C99). <iso646.h> <limits.h> <locale.h> <math.h> <setjmp.h> <signal.h> <stdarg.h> Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1). Contiene la definicin de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX). Para la funcin setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuracin regional). Contiene las funciones matemticas comunes. Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales. Para controlar algunas situaciones excepcionales como la divisin por cero. posibilita el acceso a una cantidad variable de argumentos pasados a una funcin.

<stdbool.h> Para el tipo booleano (nuevo en C99). <stdint.h> <stddef.h> <stdio.h> Para definir varios tipos enteros (nuevo en C99). Para definir varios tipos de macros de utilidad. Proporciona el ncleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable funcin printf). Para realizar ciertas operaciones como conversin de tipos, generacin de nmeros pseudoaleatorios, gestin de memoria dinmica, control de procesos, funciones de entorno, de sealizacin (??), de ordenacin y bsqueda. Para manipulacin de cadenas de caracteres. Contiene funcionalidades matemticas de tipo genrico (type-generic) (nuevo en C99). Para tratamiento y conversin entre formatos de fecha y hora. Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o ms bytes por carcter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1). Para clasificar caracteres anchos (nuevo en NA1).

<stdlib.h> <string.h> <tgmath.h> <time.h> <wchar.h> <wctype.h>

RESPONSABLE: ING. ALEXIS MORA P.

48

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 4: Comenzando a programar en C.

Objetivo de la Unidad de Trabajo: Presentar los tipos de datos que se utilizan en C. (Tiempo estimado: 30 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Identificar las distintas estructuras de programacin que aparecen en un listado fuente. Interpretar el problema. Elegir los objetos de programacin necesarios para la resolucin del problema. Construir el algoritmo utilizando tipos simples de datos. Codificar el algoritmo. Compilar el programa fuente, Montar (enlazar) el programa objeto y las libreras necesarias. Realizar pruebas. Corregir los errores observados. Documentar el programa. Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Utilizar y consultar libros, manuales y revistas. Identificar los distintos elementos que constituyen la estructura de un programa en C. Utilizar las variables de un programa en C. Crear funciones de usuario. Utilizar las funciones de librera. Discutir sobre ejercicios resueltos. Plantear ejercicios. Resolver ejercicios en grupo. Corregir distintas versiones del mismo ejercicio discutiendo las ventajas e inconvenientes de cada uno as como los elementos de programacin utilizados. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Hechos/conceptos (contenidos soporte) Tipos de datos. Simples. Estructuras de datos Elementos del lenguaje C. Caracteres de C. Tipos de datos. Fundamentales. Derivados. Nombres de tipos. Constantes. Identificadores. Palabras clave. Comentarios. Variables. Declaracin de constantes. Expresiones numricas. Operadores. Evaluacin de operadores. Conversin de tipos. Accesibilidad de variables. mbito. Variables locales y globales. Clases de almacenamiento. Variables declaradas externamente. Variables declaradas internamente Sintaxis de las sentencias y funciones de C. Entrada y salida estndar por consola. Funciones de entrada y salida con formato. Otras funciones de entrada y salida de caracteres. Sentencia de asignacin. Sentencias de control de programa. Sentencias de seleccin.Sentencias de interaccin. Sentencias de salto. Funciones: declaracin, definicin, llamada y pasando argumentos. Funciones predefinidas en C. Funciones matemticas. Otras funciones de inters.

Criterios de evaluacin Se han identificado los elementos del lenguaje C empleados. Se han resuelto y presentado los ejercicios propuestos valorando la correcta eleccin de las estructuras, calidad del resultado, eficiencia del resultado, documentacin y pruebas realizadas. Se han realizado trabajos en el aula. Se ha realizado una prueba escrita.

RESPONSABLE: ING. ALEXIS MORA P.

49

QUE ES UN PROGRAMA Un programa de computadora es un conjunto de instrucciones escritas en un lenguaje de programacin que representan la resolucin de un problema. Un lenguaje de programacin se encuentra formado por un conjunto de reglas sintcticas que permiten especificar la formacin de instruccionesvlidas y un conjunto de reglas semnticas que permiten especificar el significado de las instrucciones. El lenguaje de programacin para su utilizacin, previamente debe estar implementado en la computadora. Hasta la presente fecha se han desarrollado centenas de lenguajes deprogramacin, hasta el 1969 se conocan ms de 100. Los lenguajes de programacin mas difundidos actualmente son: Pascal, Foxpro, C/C++, Java, Visual Basic, Visual C++, Visual Java, VisualFoxpro. Estructura de un programa en C++ Todo programa en C++ consta de uno o ms bloques llamados funciones. Una funcin es un conjunto de una o ms sentencias designadas para realizar una tarea especfica. Un programa empieza en la funcin main( ), desde la cual es posible llamar a otras funciones. Ejemplo: declaraciones globales main( ) { variables locales bloque } funcion1 () { variables locales bloque } Veamos un programa sencillo: main( ) { /*Muestra un mensaje en la pantalla*/ printf("Hola, mundo"); } El programa muestra el mensaje: "Hola, mundo". ObseNe que el programa se inicia con la funcin Main( ), funcin que indica donde se inicia la ejecucin del programa. Todos los programas deben incluir esta funcin para indicar al compilador dnde empieza el programa. Usela una vez en cada programa, ya que si utiliza varios main( ), el compilador no podr reconocer cul es la que indica el comienzo. Obseve que, inmediatamente despus de main se abre y cierra parntesis; es para indicar que hacemos referencia a una funcin. La llave abierta ( { ), situada debajo de la m de main() seala el inicio del cuerpo de la funcin. El cuerpo de la funcin est formado por una o ms sentencias que realizan una tarea especfica. Al final del programa, la llave se cierra para sealar el final del cuerpo funcin. Por lo tanto, las llaves abierta y cerrada envuelven la sentencia sentencias que forman el cuerpo de la funcin. Comentarios Los comentarios son de mucha utilidad para poder entender lo que hace el cdigo del programa utilizado. Si el cdigo no est comentado, el trabajo de actualizacin y revisin puede ser una tarea difcil. C++ no ejecuta ni procesa los comentarios; por tanto, no ocupan espacio alguno en el cdigo compilado. En C++, un comentario empieza con una barra y un asterisco (/*), y termina con los caracteres invertidos (*/). Cualquier caracter entre estas marcas lo ignora el compilador de C. /* Este es un ejemplo de comentario */ /* Un comentario tambin puede estar escrito en varias lneas */ C++ admite otro tipo de separador de comentarios: la doble barra inclinada //. Este mtodo considera comentario todo texto comprendido despus de los caracteres l/y el fin fsico de la lnea (retorno de lnea y avance de lnea). //Este es un comentario descuento=precio*O.20; //Este es otro comentario

RESPONSABLE: ING. ALEXIS MORA P.

50

Palabras reservadas En Turbo C++ existen una serie de p~labras reservadas, con una finalidad determinada, que no podemos utilizar domo identificadores. Algunas palabras reservadas de Turbo C++: Break doubl long short this case else new signed typedef char extern private sizeof unsigned const f/oat protected static virtual continue for public struct void default if register switch volatile do int retum template while Identificadores Un identificador es el nombre que damos a las variables y funciones. Est formado por una secuencia de letras y dgitos, aunque tambin acepta el caracter de subrayado "_". Un identificador no acepta los acentos ni la . Un identificador debe cumplir las siguiente condiciones: 1. El primer caracter de un identificador no puede ser un nmero, es decir que debe ser una letra o el caracter de subrayado "_". 2. Los caracteres significativos son los 32 primeros del identificador. 3. Se diferencian las maysculas de las minsculas, as num, Num y nuM son identificado res distintos. Algunos ejemplos de identificado res vlidos y no vlidos: Vlidos No vlidos _desc 1num var1 nmer03 lugar_nac ao_nac Tipos de datos En Turbo C++ los tipos de datos se dividen en dos clases: bsicos y avanzados. A continuacin se detalla los tipos, el tamao que ocupa en memoria y el rango de sus posibles valores.

RESPONSABLE: ING. ALEXIS MORA P.

51

Variables Las variables se utilizan para almacenar valores que pueden modificarse durante la ejecucin del programa. Antes de usar una variable, primero debe declarar su tipo e identificador: float utilidad; int edad; Es posible declarar e inicial izado ms de una variable del mismo tipo en la .misma sentencia. Veamos un ejemplo: /*programa: area.c*/ #include <stdio.h> main() { float base=O, altura=O, area=O; //Declaracin e inicializacin de variables printf("CALCULO DEL AREA DE UN TRIANGULO\n"); printf("lngrese la base: "); scanf("%f", &base); printf("lngrese la altura: "); scanf("%f", &altura); area=base*altura/2; printf("EI rea del tringulo es: %.2f\n", area); printf(" Pulse cualquier tecla... "); getch(); } Asignacin de valores a variables Para asignar un valor a una variable utilice el operador de asignacin =. As, en el programa anterior, hemos declarado e inicializado tres variables: float base=O, altura=O, area=O; Tambin las puedes declarar e inicializar as: float base=altura=area=O; -En la lnea area=base * altu ra/2; se asigna a la variable area el valor que resulte de la expresin base*altura/2. Variables globales y locales Las variables pueden ser de tipo global o local. Las variable globales se declaran antes de la funcin main(). Pueden ser utilizadas en cualquier parte del programa y se destruyen al finalizar ste. Las variables locales se declaran despus de la funcin main( ), en la funcin en la que sern utilizadas. Slo existen dentro de la funcin en que se declara y se destruyen al finalizar dicha funcin. Constantes Al contrario que las variables, las constantes mantienen su valor durante la ejecucin de todo el programa. Utilice la directiva #define para indicar al compilador que se trata de una constante: #define <identificador> <valor> Observe que no se indica el punto y coma de final de sentencia ni tampoco el tipo de dato. La directiva #define no slo nos permite sustituir un nombre por un valor numrico, sin tambin por una cadena de caracteres.

RESPONSABLE: ING. ALEXIS MORA P.

52

La funcin Printf( ) Esta funcin permite la aparicin de valores numricos, caracteres y cadenas de texto por pantalla. Sintaxis: printf("cadena de control", argument01, argument02,... ); En la cadena de control indicamos la forma en que se mostrarn los argumentos posteriores. Tambin podemos introducir una cadena de texto (sin necesidad de argumentos), o combinar ambas posibilidades, as como secuencias de escape. El cdigo siguiente muestra un mensaje por pantalla. Observe que se utiliza la secuencia de escape \n con lo que el cursor se posiciona en la lnea siguiente: printf("Hola, amigos\n"); En el caso de que utilicemos argumentos deberemos indicar en la cadena de control tantos modificadores como argumentos vayamos a presentar. El modificador est compuesto por el caracter % seguido por un caracter de conversin, que indica de que tipo de dato se trata. Los modificadores ms utilizados son: %c Un nico caracter %d Un entero con signo, en base decimal %u Un entero sin signo, en base decimal %0 Un entero en base octal %x Un entero en base hexadecimal %e Un nmero real en coma flotante, con exponente %f Un nmero real en coma flotante, sin exponente %s Una cadena de caracteres %p Un puntero o direccin de memoria . funcin scanf( ) sta funcin permite ingresar datos en la memoria de la PC a travs del teclado. El prototipo de la funcin scanf es el siguiente: scanf(cadena de control, arg1, arg2...); :n la cadena de control se indica los modificadores que harn referencia al tipo le dato de los argumentos. Al igual que en la funcin printf los modificadores ~starn formados por el caracter % seguido de un caracter de conversin. Los lrgumentos indicados sern, nuevamente, las variables. -a principal caracterstica de la funcin scanf es que necesita saber la posicin le la memoria del ordenador en que se encuentra la variable para poder almacenar a informacin obtenida. Para indicarle esta posicin utilizaremos el smbolo lmpersand (&), que colocaremos delante del nombre de cada variable. (Esto no ier necesario en los arrays). :1 uso de scanf se ilustra en el programa siguiente: ~include <stdio.h> nainO float x; printf("lngrese un nmero: "); scanf("%f", &x); printf("EI cuadrado es %f", x*x); getchO; ~uando el usuario ejecute el programa e introduzca el valor 12, est ser la .alida del programa: ngrese un nmero: 12 :1 cuadrado es 144.000000 ~on "%f" dentro de scanf, el programa espera el ingreso de un nmero de tipo eal (float). Si hubiramos especificado "%d" el nmero debera ser de tipo int entero). El nmero que ingresemos se almacenar en la variable x. A utilizar ~x, el compilador coloca el nmero que introducimos en la direccin de x. La funcin putchar() Esta funcin toma un caracter de un programa en ejecucin y lo enva a la pantalla. Veamos un programa sencillo que toma un caracter del teclado y lo imprime en pantalla.

RESPONSABLE: ING. ALEXIS MORA P.

53

La funcin getch() Esta funcin lee un caracter del teclado sin hacer eco en la pantalla. Veamos un programa que realiza la conversin de grados fahrenheit a celsius. En este programa utilizaremos la funcin getch() para finalizar la ejecucin del programa. #include <stdio.h> #include <conio.h> main() { int resp; float fahr, celsius; do{ clrscr(); printf("Conversin de fahrenheit a celsius\n"); printf("lngrese grados fahrenheit: "), scanf("%f", &fahr); celsius=(5.0/9.0) * (fahr-32); printf("%.2f grados fahrenheit equivale a %.2f grados celsius\n", fahr, celsius); printf("Desea ingresar ms datos (S/N): "); resp=getch(); }while(resp!='N'); } LOS OPERADORES A continuacin se explican los tipos de operadores que permiten realizar operaciones matemticas y de asignacin en Turbo C++. Operadores aritmticos Los operadores aritmticos permiten realizar clculos utilizando datos numricos. Existen dos tipos de operadores aritmticos:

Operadores de relacin Los operadores de relacin se utilizan para comparar el contenido de dos variables. Al comparar un dato con otro, devuelven un 1, si es verdadero, o O, si es falso. En C existen seis operadores relacionales bsicos: Operador Significado > Mayor que < Menorque >= Mayor o igual que <= Menor o igual que == Igual que != Distinto a Operadores lgicos Las expresiones de relacin pueden combinarse para formar expresiones ms complejas utilizando los operadores lgicos. Bsicamente son tres: Operador && Significado ANO (Y lgicq) ,..-

RESPONSABLE: ING. ALEXIS MORA P.

54

|| !

OR (O lgico) NOT (No lgico)

El operador && combina dos condiciones simples y produce un resultado verdadero slo si los dos operandos son verdaderos. En los dems casos produce falso. El operador 11 produce un resultado verdadero si ambos o uno de los dos operandos es verdadero. Arroja falso slo si ambos operandos son falsos. El operador! (NOT) acta sobre una sola condicin simple u operando y simplemente niega (o invierte) su valor.

Funciones de Biblioteca del C++ Al igual que las funciones de entrada-salida por consola se encuentran en la librera "iostream.h", existen otras libreras en C++, cada una con sus propias funciones. La mejor forma de descubrirlas es echar un vistazo a un manual de C++. Las cabeceras de algunas libreras de utilidad son: "iostream.h": Contiene los objetos cin, cout, cerr y clog que corresponden al flujo de entrada y salida estndar, y flujo de error respectivamente. Esta librera nos proporciona funciones de entrada y salida con o sin formato. "stdlib.h": Contiene muchas funciones tiles, entre ellas algunas para convertir nmeros a cadenas de caracteres y a la inversa (funciones atoi, atol, ). "string": Contiene las funciones de tratamiento de cadenas de caracteres (strings). "ctype.h": Define funciones para operar sobre los caracteres y averiguar de qu tipo son maysculas, nmeros (funciones isupper, islower, isdigit, ) "math.h": Contiene funciones para clculos matemticos. Algunas de las ms tiles son:

Funciones aritmticas:

RESPONSABLE: ING. ALEXIS MORA P.

55

Generador de nmeros aleatorios:

RESPONSABLE: ING. ALEXIS MORA P.

56

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 5 : Estructuras estticas.

Objetivo de la Unidad de Trabajo: Presentar las estructuras internas estticas en C. (Tiempo estimado: 35 perodos)
Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia.

Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Identificar las distintas estructuras de datos. Interpretar el problema. Elegir las estructuras estticas necesarias para la resolucin del problema. Construir el algoritmo utilizando las estructuras estticas elegidas. Codificar el algoritmo. Compilar el programa fuente. Realizar pruebas. Corregir los errores observados. Documentar el programa.

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Aplicar las herramientas de diseo de algoritmos a la utilizacin de las estructuras estticas y punteros. Utilizar y consultar libros, manuales y revistas. Crear funciones de usuario. Utilizar las funciones de librera. Discutir ejercicios resueltos. Plantear ejercicios, Resolver ejercicios en grupo. Corregir distintas versiones del mismo ejercicio discutiendo las ventajas e inconvenientes de cada uno as como los elementos de programacin utilizados. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Hechos/conceptos (contenidos soporte) - Estructuras de datos: internas, estticas, dinmicas y externas. - Estructuras estticas. Definiciones y caractersticas. Tablas o arrays. Caractersticas. Tipos de tablas. Declaracin de tablas. Representacin de tablas. Operaciones con tablas. Cadenas de caracteres. Operaciones con cadenas. Funciones para manipular cadenas de caracteres. Funciones para la conversin de datos. Funciones para conversin de caracteres. - Estructuras. Creacin. Operaciones con estructu- Criterios de evaluacin ras. Arrays de estructuras. - Se han resuelto y presentado los ejercicios propues- Uniones. tos valorando la correcta eleccin de las estructu- Punteros. Creacin. Utilizacin. Operaciones con ras, la calidad del resultado, la documentacin y las punteros. pruebas realizadas. - Punteros y arrays. Punteros a cadenas de caracte- - Se ha justificado la importancia de las estructuras res. Inicializacin de cadenas. estticas. - Arrays de punteros. Punteros a punteros: - Se ha justificado la importancia de los punteros. inicializacin de un array de punteros a cadenas de - Se han realizado trabajos en el aula. caracteres. Punteros a estructuras. Punteros a uniones. Punteros a funciones.

RESPONSABLE: ING. ALEXIS MORA P.

57

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 6: Estructuras externas.

Objetivo de la Unidad de Trabajo: Presentar las estructuras externas de datos en C. (Tiempo estimado: 35 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Interpretar el problema. Elegir las estructuras externas necesarias para la resolucin del problema. Construir el algoritmo utilizando las estructuras externas elegidas. Codificar el algoritmo. Compilar el programa fuente. Realizar pruebas. Corregir los errores observados. Documentar el programa. Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia.

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Utilizar y consultar libros, manuales y revistas. Aplicar las herramientas de diseo de algoritmos a la utilizacin de las estructuras externas. Crear funciones de usuario. Utilizar las funciones de librera. Discutir ejercicios resueltos. Plantear ejercicios. Resolver ejercicios en grupo. Corregir distintas versiones del mismo ejercicio discutiendo las ventajas e inconvenientes de cada uno as como los elementos de programacin utilizados. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Hechos/conceptos (contenidos soporte) -

Archivos o ficheros. Terminologa. Caractersticas. Clasificacin segn su uso. Soportes.Tipos. - Organizacin de archivos. Secuencia. Aleatoria o directa. Secuencia indexada. - Forma de acceso a archivos. Secuencial. Directa. Dinmica. - Los archivos en C. Punteros a ficheros. Operaciones sobre archivos: creacin, consulta, actualizacin, clasificacin, reorganizacin, destruccin, fu- sin de archivos y rotura de un archivos. - Procesamiento de archivos secuenciales: creacin, Criterios de evaluacin consulta y actualizacin. Procesamiento de archivos directos: clave-direccin, - Se han resuelto y presentado ejercicios en la forma y tiempo previstos. colisiones y tratamiento, creacin, consulta y actualizacin. - Se ha reconocido y utilizado la organizacin lgica de los datos en los ficheros. - Procesam iento de archivos secuencialesindexados: clave, creacin, consulta y actualizacin. - Se han reconocido y utilizado las distintas formas de acceso a ficheros. - Mtodos de tratamiento de archivos: bsqueda (secuencial, binaria, mediante transformacin de - Se han relacionado las operaciones que se van a claves (colisiones), particin (por contenido, en serealizar sobre ficheros y su organizacin y acceso. cuencias); mezcla (con registro centinela, controla- Se han realizado las distintas operaciones sobre da por valor de clave mxima y controlada por fin de ficheros. archivo); clasificacin (por mezcla directa, por mezSe han aplicado los distintos mtodos de tratamiencla equilibrada); ordenacin (mtodos). to de archivos. - Se han realizado trabajos en el aula.

RESPONSABLE: ING. ALEXIS MORA P.

58

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 7: Estructuras dinmicas.

Objetivo de la Unidad de Trabajo: Presentar las estructuras dinmicas de datos en C. (Tiempo estimado: 35 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar los manuales y material bibliogrfico. Gestionar la memoria del sistema. Interpretar el problema. Elegir las estructuras dinmicas necesarias para la resolucin del problema. Construir el algoritmo utilizando las estructuras dinmicas elegidas. Codificar el algoritmo. Compilar el programa fuente. Realizar pruebas. Corregir los errores observados. Documentar el programa. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia.

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Aplicar las herramientas de diseo de algoritmos a la utilizacin de las estructuras dinmicas y punteros. Utilizar y consultar libros, manuales y revistas. Crear funciones de usuario, Utilizar las funciones de librera. Discutir sobre los ejercicios resueltos. Plantear ejercicios. Resolver ejercicios en grupo. Corregir distintas versiones del mismo ejercicio discutiendo las ventajas e inconvenientes de cada uno as como los elementos de programacin utilizados. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Hechos/conceptos (contenidos soporte) Estructuras dinmicas. Definiciones y caractersticas. Punteros. Asignacin dinmica de memoria. Arrays dinmicos. Listas. Terminologa. Representacin. Operaciones con listas.Tipos (enlazadas, circulares y doblemente enlazadas). Pilas. Terminologa. Representacin. Operaciones con pilas. Colas. Terminologa. Representacin. Operaciones con colas. rboles. Terminologa. Representacin. Tipos. Operaciones con rboles. Grafos. Terminologa. Representacin

Criterios de evaluacin Se han resuelto y presentado los ejercicios propuestos valorando la correcta eleccin y utilizacin de las estructuras; la calidad del resultado; la eficiencia del resultado; la documentacin y las pruebas realizadas. Se ha justificado la importancia de las estructuras dinmicas. Se ha justificado la importancia de los punteros en la gestin de la memoria. Se han realizado trabajos en el aula. Se ha realizado una prueba escrita.

Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma.

RESPONSABLE: ING. ALEXIS MORA P.

59

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 8: Utilizacin avanzada del lenguaje C.

Objetivo de la Unidad de Trabajo: Presentar los elementos importantes para el desarrollo de programas de aplicacin. (Tiempo estimado: 30 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Resolver problemas que requieran necesariamente el uso de varios tipos de estructuras de datos. Interpretar el problema. Elegir las estructuras necesarias para la resolucin del problema. Construir el algoritmo utilizando las estructuras elegidas. Codificar el algoritmo. Compilar el programa fuente. Realizar pruebas. Corregir los errores observados. Documentar el programa. Crear libreras. Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Utilizar y consultar libros, manuales y revistas. Plantear problemas cuya resolucin requiera necesariamente el uso de varios tipos de estructuras de datos. Crear funciones de usuario, Utilizar las funciones de librera. Discutir sobre ejercicios resueltos. Resolver ejercicios en grupo. Corregir distintas versiones del mismo ejercicio discutiendo las ventajas e inconvenientes de cada uno as como los elementos de programacin utilizados. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Hechos/conceptos (contenidos soporte) Cumplimentacin y extrapolacin del conocimiento de las estructuras de datos vistas hasta ahora. Recursos. El prepocesador de C. La programacin en entornos de teleproceso. Comunicaciones. Servicios del DOS y del BIOS. Operadores de bits. Campos de bits. Funciones para llamar al DOS. Utilizacin y acceso a la memoria de la pantalla. Acceso a color y grficos. Funciones de grficos. Libreras de grficos. C y DOS. Directorios y caminos. Definiciones generales. Redireccin de la salida. Redireccin de la entrada. Interconexin de entradas y salidas estndar. Operaciones con directorios. Funciones para el control de directorios. C y otros lenguajes. Libreras. Tcnicas que hay que emplear para la creacin y modificacin de libreras. -

Criterios de evaluacin Se han resuelto y presentado los ejercicios propuestos valorando la correcta eleccin y utilizacin de las estructuras, la calidad del resultado; la eficiencia del resultado; la documentacin y las pruebas realizadas. Se ha justificado la importancia de las estructuras empleadas. Se han realizado trabajos en el aula. Se ha realizado una prueba escrita.

RESPONSABLE: ING. ALEXIS MORA P.

60

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 9: Adaptacin de programas.

Objetivo de la Unidad de Trabajo: Conocer el mantenimiento de aplicaciones informticas. (Tiempo estimado: 25 perodos)
Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Reconocer las soluciones que se obtienen con el programa que se desea modificar. Interpretar el cdigo fuente del programa o mdulo que se desea modificar. Interpretar los cambios y adaptacin que se pretenden realizar sobre el programa existente as como su viabilidad. Reconocer las modificaciones que hay que realizar sobre el algoritmo inicial y sus posibles consecuencias. Elegir las estructuras necesarias para la resolucin de los cambios planteados. Modificar los algoritmos afectados por los cambios utilizando las estructuras elegidas. Codificar los mdulos afectados. Compilar los programas fuente. Realizar pruebas con los mdulos modificados. Corregir los errores observados. Realizar pruebas con el programa completo. Corregir los errores observados. Documentar los cambios realizados y de su repercusin en el resto del programa. Documentar el programa. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Evaluar inicialmente los conocimientos previos. Utilizar y consultar libros, manuales y revistas. Plantear modificaciones y adaptaciones sobre programas, ya probados, a partir de nuevos requerimientos. Identificar los mdulos que hay que modificar. Evaluar la viabilidad del proceso de modificacin y adaptacin. Utilizar las tcnicas de programacin estructurada y modular. Utilizar las estructuras de programacin.

Criterios de evaluacin Se ha justificado la importancia de la utilizacin de la programacin estructurada y modular. Se han presentado y ejecutado los programas realizados. Se ha justificado la viabilidad de los cambios que hay que introducir. Se han realizado las modificaciones y adaptaciones convenientes. Se ha valorado la calidad del producto final. Se han justificado los cambios realizados. Se ha elaborado documentacin sobre los cambios realizados y su implicacin en el funcionamiento de la aplicacin.

Hechos/conceptos (contenidos soporte) Utilizacin de los conocimientos adquiridos anteriormente. Tcnicas de programacin. Programacin convencional. Programacin estructurada: teorema y herramientas. Programacin modular: subprogramas; procedimientos; funciones; recursos. Libreras de funciones.

Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma.

RESPONSABLE: ING. ALEXIS MORA P.

61

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 10: Programacin orientada a objetos.

Objetivo de la Unidad de Trabajo: Introducir la programacin orientada a objetos. (Tiempo estimado: 45 perodos)
Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia.

Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. - Interpretar las caractersticas, mtodos y elementos de la programacin orientada a objetos (P.O.O.). - Utilizar un compilador de C++. - Interpretar el problema. - Elegir las estructuras de la P.O.O. necesarias para la resolucin del problema. - Construir el algoritmo. - Codificar el algoritmo. - Compilar el programa fuente. - Realizar pruebas. - Corregir los errores observados. - Documentar el programa. Hechos/conceptos (contenidos soporte) Introduccin. Historia de la P.O.O. Elementos de la P.O.O. Objetos. Mensajes. Mtodos. Clases, subclases y objetos. La programacin orientada a objetos frente a la programacin tradicional. Propiedades de la P.O.O. Historia de los lenguajes orientados a objetos. Ventajas de los lenguajes orientados a objetos. C++ como lenguaje orientado a objetos. C++ frente a C. Clases en C++. Sobrecarga de operadores. Otras caractersticas de C++. Introduccin a la P.O.O. en C++. Libreras y funciones de C++. -

Actividades de enseanza y aprendizaje Utilizar y consultar libros, manuales y revistas. Aplicar las herramientas de diseo de algoritmos a la P.O.O. Utilizar ejemplos de los elementos de la P.O.O. Adaptar y comparar programas codificados en C a C++. Utilizar listados de programas fuente en C++ para interpretar y diferenciar las distintas estructuras. Discutir sobre los ejercicios resueltos, Resolver ejercicios en grupo. Resolver problemas utilizando los mtodos de la P.O.O. Documentar los ejercicios resueltos de la forma en que se estime ms conveniente.

Criterios de evaluacin Se ha justificado la importancia de la programacin orientada a objetos y sus ventajas. Se han interpretado y elaborado las estructuras utilizadas en la P.O.O. Se han resuelto y presentado los ejercicios propuestos. Se han realizado trabajos en el aula. Se ha realizado una prueba escrita.

RESPONSABLE: ING. ALEXIS MORA P.

62

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

UNIDAD DE TRABAJO N 11: Proyecto.

Objetivo de la Unidad de Trabajo: Elaborar un proyecto de programacin. (Tiempo estimado: 50 perodos)


Procedimientos (contenidos organizadores) Manejar e interpretar manuales y material bibliogrfico. Interpretar el problema. Elegir el tipo de lenguaje en que se va a desarrollar la aplicacin. Elegir las estructuras necesarias para la resolucin del problema. Construir, codificar y compilar el algoritmo. Realizar pruebas. Corregir los errores observados. Documentar el programa. Realizar los manuales del usuario y del programador. Tomar iniciativas, realizando sugerencias de mejora. Desarrollar los trabajos y actividades emprendidos con eficacia. Mostrar inters y aprecio por la buena finalizacin de los trabajos realizados Rigurosidad en el anlisis de las necesidades y de los recursos disponibles

Actividades de enseanza y aprendizaje Plantear algn problema de gestin de cierta complejidad que requiera la utilizacin del mayor nmero de conocimientos estudiados en el mdulo. Consultar al profesor.

Criterios de evaluacin Se ha presentado y expuesto el problema planteado as como su resolucin justificando convenientemente cada uno de los pasos o fases que han llevado a su elaboracin. Se han ejecutado las pruebas necesarias para verificar la eficiencia y eficacia de la aplicacin desarrollada. Se ha presentado la documentacin necesaria para el conocimiento y utilizacin de la aplicacin: manual de usuario, manual del programador.

Hechos/conceptos (contenidos soporte) Todos los desarrollados durante las unidades anteriores, profundizando en todos los que fuera necesario.

Actitudes/valores/normas (contenidos soporte) Realizar los trabajos encomendados con autonoma. Responsabilizarse de las tareas realizadas. -

RESPONSABLE: ING. ALEXIS MORA P.

63

Componente de Transform acin Curricular - Familias Profesionales y Especialidades

omponente de Transformacin Curricular - Familias Profesionales y Especialidades

RESPONSABLE: ING. ALEXIS MORA P.

64

Anda mungkin juga menyukai