Está en la página 1de 16

Repblica Bolivariana De Venezuela Ministerio Del Poder Popular Para La Educacin Universitaria Edo.

Bolvar Heres-Parroquia Catedral Aldea Universitaria Ciudad Angostura Trayecto I Periodo III

Facilitadora: Ingris Manaure

Participante: Donelys Cedeo

Ciudad Bolvar, Abril Del 2012.

INTRODUCCIN

El Lenguaje de programacin C fue implantado por primera vez en los aos 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo el sistema operativo UNIX. El lenguaje C, a diferencia de lenguajes como Basic y Pascal que son lenguajes de alto nivel, es un lenguaje de nivel medio ya que combina las propiedades de un lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es esa misma caracterstica la que le da a este lenguaje ms potencia y dominio sobre los recursos del sistema. Entre una de las caractersticas ms importantes de C est la portabilidad, esto es, un programa escrito en C se puede trasladar fcilmente entre distintos sistemas operativos como Windows, DOS o Linux. Cuando hablamos de lenguaje C tambin estamos hablando de las etapas, procesos de ejecucin, depuracin, pruebas, tipos de datos, constantes, variables, entradas y salidas.

ETAPAS O FASE DE EJECUCIN


Una vez que tenemos el programa en lenguaje mquina, para poderlo ejecutar hay que introducirlo en la memoria. 1. Una utilidad del S.O. llamada cargador colocar el programa, y sus datos de entrada, en memoria principal, preparndolo para su ejecucin. 2. El S.O. le pasa el control a la C.P.U. para que comience la ejecucin del programa, realizando la Unidad de Control los siguientes pasos (fases): Captacin de la instruccin: Lee de la Memoria Principal la instruccin a ejecutar. Ejecucin de la instruccin: Interpreta la instruccin leda y enva seales de control a las unidades que deban intervenir en su ejecucin. Tras dicha ejecucin se establece cul ser la siguiente instruccin a ejecutar.

PROCESO DE EJECUCIN DE UN PROGRAMA:


Los pasos a seguir los podemos resumir de la siguiente manera: 1 . Escribir el cdigo fuente, por ejemplo con el editor del EID. 2 . Compilar el fichero fuente 3 . Si se producen errores de sintaxis (o warnings) volver al editor y eliminar los errores de sintaxis. 4 . Si no hay errores se obtendr el cdigo objeto y el enlazador construir el archivo ejecutable. 5 . Una vez tengamos el archivo ejecutable, ser el sistema operativo el encargado de colocar el programa en la memoria central y ejecutarlo. 6 . Comprobar el funcionamiento del programa. 7 . Si se detecta errores o un mal funcionamiento del programa, activar el depurador para trazar el programa y ejecutarlo sentencia a sentencia. 8 . Una vez que hayamos encontrado la causa del error, volveremos al editor y lo corregimos. 9 . El proceso de compilar, enlazar y ejecutar el programa lo repetiremos hasta que no se produzcan errores.

DEPURACION
Un depurador (debugger), es un programa diseado especficamente para la deteccin, verificacin y correccin de errores. Los depuradores nos permiten trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido de las variables y direcciones de memoria durante la ejecucin del programa. Adems permiten alterar el flujo de ejecucin del mismo, cambiar los valores de las variables e introducir puntos de parada. La depuracin del programa consiste en localizar y corregir los errores que se hayan podido producir durante el desarrollo. El objetivo es conseguir un programa que funcione lo ms correctamente posible, aunque hay que tener presente que ningn programa complejo est libre de errores al 100% Los errores pueden ser de tres tipos: de compilacin, de enlace y de ejecucin. Errores en tiempo de compilacin Se producen al traducir el cdigo fuente a cdigo objeto. El compilador los detecta y marca en qu lnea se han producido, y de qu tipo son, por lo que son relativamente fciles de corregir. Los errores de compilacin ms frecuentes son:

Errores sintcticos: escribir mal alguna instruccin o algn identificador, u olvidarnos del punto y coma que debe terminar cada instruccin. Errores de tipos: intentar asignar a una variable de cierto tipo un valor de otro tipo incompatible, o invocar a una funcin con argumentos de tipo equivocado. Recuerde que C puede hacer conversiones de tipo automticas, por lo que estos errores pueden quedar enmascarados. Errores de identificadores no reconocidos: ocurren cuando se intenta utilizar una variable o una constante que no ha sido declarada, o cuyo mbito no llega al lugar donde se intenta utilizar.

Adems de los errores, el compilador puede dar avisos (warnings) en lugares donde potencialmente puede existir un error de compilacin. Es conveniente revisar todos los avisos y tratar de corregirlos antes de continuar con la ejecucin. Errores en tiempo de enlace Cuando el compilador termina la traduccin se produce el enlace de todos los archivos objeto. En este momento se resuelven todas las llamadas a funciones, de modo que si alguna funcin no est presente en el conjunto de archivos objeto, el enlazador fallar y explicar la causa del error.

La causa ms habitual de fallo del enlazador es la inconsistencia entre la definicin de una funcin, la llamada a esa funcin y su prototipo. Por ejemplo, si tenemos una funcin cuyo prototipo es:

int prueba(char a, float x); y en la definicin de la misma aparece definida como: int prueba(char a) { ... cdigo de la funcin ... } El enlazador fallar porque no encontrar el prototipo adecuado de la funcin prueba, ya que las listas de parmetros son diferentes. Tambin puede fallar si en la invocacin de la funcin cometemos un error semejante. Otra causa de fallo del enlazador es el intento de uso de una funcin sin enlazar adecuadamente la librera. Errores de tiempo de ejecucin Si la compilacin y el enlace terminan sin novedad, se genera un archivo ejecutable. Es el momento de comprobar que el programa realmente hace lo que se espera que haga. Para ello hay que probarlo con diversos conjuntos de datos de entrada; la elaboracin de estos juegos de pruebas es una tcnica que excede nuestras pretensiones. Los errores que surgen en tiempo de ejecucin son los ms complicados de corregir, ya que muchas veces no est clara la causa del error. En el peor de los casos, puede ser necesario redisear la aplicacin por completo. Simplificando mucho, podemos encontrarnos con estos errores en tiempo de ejecucin:

Errores lgicos. Se producen cuando alguna condicin lgica est mal planteada. Entonces, el flujo del programa puede ir por la rama si_no cuando debera ir por la rama si, o puede salirse de un bucle cuando debera repetir una vez ms, o entrar en un bucle infinito, etc. Errores aritmticos. Ocurren cuando una variable se desborda (overflow), o se intenta una operacin de divisin entre cero, o alguna operacin aritmtica est mal planteada. Errores de punteros. Los punteros son herramientas muy potentes que permiten la manipulacin dinmica de la memoria, pero tambin conllevan grandes riesgos porque un puntero descontrolado puede hacer autnticas locuras en la memoria del ordenador, hasta el punto de colgar sistemas poco fiables (como los sistemas Windows anteriores a XP)

Errores de conversin automtica de tipos. Se producen cuando C realiza una conversin automtica que no tenamos prevista. Entonces el dato puede cambiar y dar al traste con la lgica del programa. Errores de diseo. Ocurren cuando el programa no est bien diseado y realiza tareas diferentes de las que se pretendan. Son los peores errores, porque obligarn a modificar una parte (o la totalidad) del trabajo realizado, debiendo, en ocasiones, volver a las primeras fases del ciclo de vida para repetir todo el proceso.

PRUEBAS
Una vez que se ha construido o escrito un programa en algn lenguaje de programacin, se requiere desarrollar un procedimiento sistemtico para establecer si se trata de un programa correcto. Los pasos bsicos de tal procedimiento sistemtico son los siguientes: Prueba y demostracin. Un buen programador debe pensar en desarrollar un conjunto de casos prueba, junto con su cdigo. Un caso prueba es un conjunto de datos de entrada que junto con el programa produce una salida conocida de antemano, con los cuales se puede evaluar la funcionalidad y correctez del programa. Si el programa pasa todos los casos prueba, entonces podemos considerar que el programa es correcto. Los casos prueba se deben considerar, como se dijo, al momento de hacer la codificacin del programa. Por ejemplo, un programa que vaya a realizar algunas operaciones aritmticas deber considerar la aparicin de valores que probablemente le causen problemas como divisiones por cero o aproximaciones numricas, ambos casos se deben tomar en cuenta y por lo tanto se deber incluir en el programa la solucin a este tipo de problemas se acaso se presenta. Como la computacin an es una ciencia emprica, el diseo de casos prueba depender del conocimiento que el programador tenga sobre el problema. Puede darse el caso de que no se consideren todos los posibles problemas que puedan afectar la ejecucin de un programa y es entonces cuando empieza la etapa de mantenimiento del software.

TIPOS DE DATOS
Es la explicacin de un conjunto de valores, denominado dominio, sobre el cual se pueden realizar un conjunto de operaciones. Toda variable debe estar asociada a un tipo de dato, responsable de indicar el dominio de valores vlidos.

Tipos Enteros: Subconjunto finito de los nmeros enteros, cuyo rango o tamao depender del lenguaje de programacin en el que posteriormente se codificar el algoritmo y de la computadora utilizada. Ejemplos: 5 , 6 , -15 , 4 , 0 , 20 , 17 , -1340 , 26 Dependiendo del nmero de bits empleado en cada computadora (n), los dominios del tipo de dato entero varan en a) -2 (n - 1), ..., 0, ..., 2 (n - 1) - 1 enteros positivos y negativos Si el n = 16 -2 (16 - 1), ..., 0, ..., 2 (16 - 1) - 1= -2 (15), ..., 0, ..., 2 (15) - 1 = -32768,..., 0, ..., 32767 b) 0, ..., 2n - 1 enteros positivos Si n = 16 0, ..., 216 - 1 = 0, ..., 65535

Tipo Real: Subconjunto de los nmeros reales limitado no slo en el tamao, sino tambin en cuanto a la precisin (que depende de la computadora). Se conocen como nmeros de punto flotante cuya representacin consta de una mantisa (parte fraccional), de una base y de un exponente (potencia a la cual se eleva la base). Para el nmero 0.437875x103 se tiene: Mantisa = 0.437875 base = 10 exponente = 3 Ejemplos: 0.08 , 3739.41 , -3.7452 , 52.3244 , -8.12 , 3.0

Tipo Carcter: Conjunto finito y ordenado de los caracteres que la computadora reconoce (letra, dgito, signo de puntuacin, etc.) Un carcter es almacenado en un byte usando el cdigo de 8 bits ASCII (American Standard Code for Information Interchange), lo que da la posibilidad de representar 28 = 256 caracteres diferentes. Ejemplos: v . A a ) { + 9 *

Tipo Lgico: Conjunto formado por los valores Cierto y Falso. El tipo lgico en C++ no existe pero el usuario lo puede definir mediante la sentencia: enum lgico {falso, cierto}; Tipos derivados Aparte de los tipos bsicos y sus variantes, C++ soporta otros tipos de naturaleza compleja que derivan de aquellos. Dicho en otras palabras: C++ permite al usuario construir otros tipos a partir de los bsicos. De estos "nuevos" tipos, los de nivel de abstraccin ms alto son las clases, incluyendo sus formas particulares (estructuras y uniones); tambin pueden crearse campos de bits; matrices y una familia de tipos muy importante: los punteros. Hay punteros a cada uno de los dems tipos: a carcter, a entero, a estructura, a funcin, a puntero, etc. Los tipos derivados se construyen con palabras clave: class, struct, unin u operadores especiales como los siguientes:

puntero a

*const puntero constante a & [] () referencia a array[1] de retorno de funcin

Tipo de dato Entero Real Carcter Cadena de carcter

Char

Palabra reservada Ejemplo Int Int numero=0; Float Float numero=12.2; Char Char letra = a; Char palabra[10] = HOLA;

CONSTANTE
Es una variable cuyo valor no puede cambiar durante la ejecucin del programa. Recibe un valor en el momento de la compilacin y este permanece inalterado durante todo el programa. Las constantes se definen como variables normales pero precediendo el nombre de su tipo del modificador const y dndoles siempre un valor inicial al declararlas.

En C existen cuatro tipos de constantes:


constantes literales, constantes definidas, constantes enumeradas, constantes declaradas.

Constantes literales Son las ms usuales; toman valores tales como 4 5 .3 2 5 6 4, 2 2 2 o bien "Introduzca sus datos" que se escriben directamente en el texto del programa. Las constantes literales o constantes, en general, se clasifican tambin en cuatro grupos, cada uno de los cuales puede ser de cualquiera de los tipos:

constantes enteras, constantes caracteres, constantes de coma flotante, constantes de cadena.

Constantes definidas (simblicas)

Son identificadores que se asocian con valores literales constantes y que toman determinados nombres Las constantes pueden recibir nombres simblicos mediante la directiva #define. #define NUEVALINEA \n #define PI 3.141592 #define VALOR 54 C sustituye los valores \n, 3.141592 y 54 cuando se encuentra las constantes simblicas NUEVALINEA, PI y VALOR. Las lneas anteriores no son sentencias y, por ello, no terminan en punto y coma. printf ("El valor es %dNUEVALINEA",V ALOR) ; Escribe en pantalla la constante VALOR. Realmente, el compilador lo que hace es sustituir en el programa todas las ocurrencias de VALOR por 54, antes de analizar sintcticamente el programa fuente.

Constantes enumeradas

Permiten asociar un identificador, tal como Color, con una secuencia de otros nombres, tales como A z u l, Verde, R o j o y Amarillo. Permiten crear listas de elementos afines. Un ejemplo tpico es una constante enumerada de lista de colores, que se puede declarar como: enum Colores {Rojo, Naranja, Amarillo, Verde, Azul,violeta}; Cuando se procesa esta sentencia, el compilador asigna un valor que comienza en O a cada elemento enumerado; as, Ro j o equivale a O, Naranja es 1, etc. El compilador enumera los identificadores por usted. Despus de declarar un tipo de dato enumerado, se pueden crear variables de ese tipo, como con cualquier otro tipo de datos. As, por ejemplo, se puede definir una variable de tipo enum colores. enum Colores Colorfavorito = Verde;

Constantes declaradas const y volatile

Son como variables: sus valores se almacenan en memoria, pero no se pueden modificar. El calificador const permite dar nombres simblicos a constantes a modo de otros lenguajes, como Pascal. El formato general para crear una constante es: CONST tipo nombre = valor;

Si se omite tipo, C utiliza i n t (entero por defecto) const int Meses=12; / * Meses es constante simblica de Valor 12* const char CARACTER='@'; const int OCTALz0233; const char CADENA [ ] ="Curso de C" ; C soporta el calificador de tipo variable const. Especifica que el valor de una variable no se puede modificar durante el programa. Cualquier intento de modificar el valor de la variable definida con const producir un mensaje de error.

VARIABLES LOCALES
Son las que se declaran dentro de una funcin y solo sirven para ser usadas dentro de esa funcin, por lo que no pueden ser utilizadas en otra funcin. El rea donde se declaran se llama bloque de declaracin de variables del objeto, hay un bloque de declaracin de variable en cada objeto de la unidad. En los objetos del bloque de declaracin de variables esta, generalmente, inmediatamente despus de iniciar la estructura del objeto, es decir de la palabra procedure y antes del primer begin del objeto. El cuerpo principal de la unidad esta entre el primer begin y el ltimo end: de la unidad. Una aproximacin a lo que ocurre cuando se declara una variable local es la equivalencia que se expresa en la siguiente tabla:

DECLARACIN DE local
{ local($SomeVar); $SomeVar = 'My Value'; ...

SIGNIFICADO
{ my $TempCopy = $SomeVar; $SomeVar = undef; $SomeVar = 'My Value'; ... $SomeVar = $TempCopy;

VARIABLES GLOBALES

Son las que se declaran despus del llamado a las cabeceras, pero antes de cualquier funcin, y son tiles para cualquier parte del programa, es decir, a diferencia de las locales pueden utilizarse en cualquier objeto. Utilizar una variable global requiere ms cuidado, ya que el valor asignado en algn objeto se mantiene al llegar a otro u oros objetos. Esta caracterstica es a veces beneficiosa para no estar escribiendo tantas veces variables locales. Estas variables se declaran en el bloque de declaracin de la unidad, el cual esta entre la palabra interface e implementation, estas se suelen declarar en una lnea antes de la palabra implementation.

VARIABLES DINMICAS
Las variables dinmicas se declaran mediante la palabra reservada local. En contra de lo que pudiera parecer, no son variables locales. Son variables globales (``package variables'') cuyo valor es salvado y recuperado al finalizar el bloque en el que se declaran. Las variables declaradas mediante local son accesibles desde cualquier subrutina. La localidad se refiere al mbito temporal de su valor, pero no a su visibilidad, que es global.

ENTRADA/SALIDA EN C
En C no existe ninguna palabra clave para realizar la entrada y salida de datos (E/S). Se realizan a travs de funciones de biblioteca (concretamente, la biblioteca stdio.h,) El archivo de la librera de encabezado stdio.h contiene un sinnmero de funciones para entrada y salida de datos. Entre las funciones ms importantes para esta seccin estn la funcin printf () que es una funcin de salida de datos; y la funcin scanf () que es una funcin para entrada de datos.

E/S POR CONSOLA


Las funciones principales que realizan la entrada y salida sin formato son: getchar (): Lee un carcter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su valor. Putchar (): Imprime un carcter en la pantalla en la posicin actual del cursor. Gets (): Lee una cadena de caracteres introducida por el teclado y la sita en una direccin apuntada por su argumento de tipo puntero a carcter. Puts (): Escribe su argumento de tipo cadena en la pantalla seguida de un carcter de salto de lnea. El siguiente fragmento de cdigo lee un carcter del teclado y lo muestra por pantalla. A continuacin lee una cadena (de 10 caracteres incluido el carcter nulo) y tambin la muestra por pantalla:

#include <stdio.h> main () { char cadena [10]; Int i; i=getchar (); putchar (i); gets (cadena); puts (cadena); } Las funciones principales que realizan la entrada y salida con formato, es decir, se pueden leer y escribir en distintas formas controladas, son: Printf (): Escribe datos en la consola con el formato especificado. Scanf (): Funcin de entrada por consola con el formato especificado. Sus prototipos son los siguientes: int printf (" caracteres de transmisin y escape", lista de argumentos); int scanf (" caracteres de transmisin y escape", lista de argumentos); En la funcin printf () (con scanf() no), entre las comillas se pueden poner rtulos literales mezclados con los caracteres de transmisin. Funcin printf() Sirve para imprimir por pantalla. Supongamos que queremos mostrar el contenido de la variable "x" por pantalla: printf( '%i', x ); Suponiendo que x valga 10 (x=10) en la pantalla tendramos: 10

Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer: printf ( '%i %i', x, y ); resultado (suponiendo x=10, y=20): 10 20 Tambin podemos mezclar texto con enteros: printf( 'El valor de x es %i, que bien!\n', x ); que quedara como: El valor de x es 10, que bien! Como vemos %i al imprimir se sustituye por el valor de la variable.

SALIDA POR PANTALLA Y ENTRADA POR TECLADO.


En C++ adems de las funciones printf() y scanf(), que siguen estando vigentes, se pueden utilizar los operadores cin y cout. Para utilizar estos nuevos operadores es necesario incluir la librera iostream.h con la instruccin #include <iostream.h>. As en un programa en C habra que hacer algo de este estilo: char nombre; int num=2; printf ('Introduzca el nombre del fichero %d: ', num); scanf (' %s', nombre) En C++ podra escribirse as: char nombre; int num=2; cout << 'Introduzca el nombre del fichero ' << num << ': '; cin >> nombre; La funcin scanf(), es una funcin de entrada de datos por consola, que lee todos los tipos de datos definidos en C, convirtiendo automticamente al formato interno apropiado de acuerdo a los especificadores de formato. El prototipo o la declaracin de la funcin scanf() es el siguiente: int scanf(const char *formato [, direcciones, ]);La funcin scanf(), como se puede ver en la declaracin tiene dos tipos de elementos, el primero es la

cadena de caracteres o texto (char *formato) que se va a leer por pantalla con su respectivo especificador de formato; y el segundo elemento contiene las direcciones de memoria de las variables que se vana leer.

E/S POR ARCHIVOS


En C un archivo puede ser cualquier cosa, desde un archivo de disco a un terminal o una impresora. Se asocia una secuencia con un archivo especfico realizando una operacin de apertura, una vez que est abierto, la informacin puede ser intercambiada entre ste y el programa. El puntero a un archivo es el hilo que unifica el sistema de E/S con buffer. Un puntero a un archivo es un puntero a una informacin que define varias cosas sobre l, incluyendo el nombre, el estado y la posicin actual del archivo. En esencia, el puntero a un archivo identifica un archivo en disco especfico y utiliza la secuencia asociada para dirigir el funcionamiento de las funciones de E/S con buffer. Para obtener una variable de tipo puntero a archivo se debe utilizar una sentencia como la siguiente: FILE *punt;

CONCLUSIN

El lenguaje C, a diferencia de lenguajes como Basic y Pascal que son lenguajes de alto nivel, es un lenguaje de nivel medio ya que combina las propiedades de un lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es esa misma caracterstica la que le da a este lenguaje ms potencia y dominio sobre los recursos del sistema. Entre una de las caractersticas ms importantes de C est la portabilidad, esto es, un programa escrito en C se puede trasladar fcilmente entre distintos sistemas operativos como Windows, DOS o Linux. En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de caractersticas, se pueden desarrollar compiladores de C fcilmente. En consecuencia, el lenguaje C est disponible en un amplio abanico de plataformas (seguramente ms que cualquier otro lenguaje). Adems, a pesar de su naturaleza de bajo nivel, el lenguaje se desarroll para incentivar la programacin independiente de la mquina. Un programa escrito cumpliendo los estndares e intentando que sea porttil puede compilarse en muchos computadores

También podría gustarte