martes, 14 de abril de 2009

lunes, 13 de abril de 2009

RESUMEN CAPITULO 5



5.1. ESTRUCTURAS DE CONTROL


Las estructuras de control controlan el flujo de ejecución de un programa o función. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad lógica con un punto de entrada y un punto de salida.

Las instrucciones o sentencias se organizan en tres tipos de estructuras de control que sirven para controlar el flujo de la ejecución: secuencia, selección (decisión) y repetición.

Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ({ y }) que se utiliza para especificar un flujo secuencial.

El control fluye de la sentencia1 a la sentencia2 y así sucesivamente. Sin embargo, existen problemas que requieren etapas con dos o más opciones o alternativas a elegir en función del valor de una condición o expresión.



5.2. LA SENTENCIA if


En C, la estructura de control de selección principal es una sentencia it. La sentencia it tiene dos alternativas o formatos posibles. El formato más sencillo tiene la sintaxis siguiente:







La sentencia if funciona de la siguiente manera. Cuando se alcanza la sentencia if dentro de un programa, se evalúa la expresión entre paréntesis que viene a continuación de if. Si expresión es verdadera, se ejecuta Acción; en caso contrario no se ejecuta Acción (en su formato más simple, Acción es una sentencia simple y en los restantes formatos es una sentencia compuesta).








5.3. SENTENCIA if DE DOS ALTERNATIVAS: if-else


Un segundo formato de la sentencia if es la sentencia if-else. Este formato de la sentencia if tiene la siguiente sintaxis:









En este formato Acción1 y Accion2 son individualmente, o bien una única sentencia que termina en un punto y coma (;) o un grupo de sentencias encerrado entre llaves. Cuando se ejecuta la sentencia if - else, se evalúa Expresión. Si Expresión es verdadera, se ejecuta Acción1 y en caso contrario se ejecuta Acción. La Figura 5.2. Muestra la semántica de la sentencia if-else.



5.4. SENTENCIAS if-else ANIDADAS


Hasta este punto, las sentencias if implementan decisiones que implican una o dos alternativas. Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a su vez una sentencia if. Una sentencia if anidada se puede utilizar para implementar decisiones con varias alternativas o multi-alternativas.
La sentencia if anidada tiene tres alternativas. Se incrementa una de las tres variables (num_pos, num_neg y num_ceros) en 1, dependiendo de que x sea mayor que cero, menor que cero o igual a cero respectivamente. Las cajas muestran la estructura lógica de la sentencia if anidada; la segunda sentencia if es la acción o tarea Falsa (a continuación de else) de la primera sentencia if.

La ejecución de la sentencia if anidada se realiza como sigue: se comprueba la primera condición (x > O); si es verdadera, num_pos se incrementa en 1 y se salta el resto de la sentencia if. Si la primera condición es falsa, se comprueba la segunda condición (x <>




5.4.1. Sangría en las sentencias if anidadas


El formato multibiturcación se compone de una serie de sentencias if anidadas, en cada línea se puede escribir una sentencia if.


5.4.2. Comparación de sentencias if anidadas y secuencias de sentencias if


Los programadores tienen dos alternativas: 1) usar una secuencia de sentencias if; 2) una única sentencia if anidada. Por ejemplo, la sentencia if del Ejemplo 5.7. se puede reescribir como la siguiente secuencia de sentencias if:


5.5. SENTENCIA DE CONTROL switch


La sentencia switch es una sentencia C que se utiliza para seleccionar una de entre múltiples alternativas. La sentencia switch es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector. El valor de esta expresión puede ser de tipo int o char, pero no de tipo float ni double.
La expresión de control o selector se evalúa y se compara con cada una de las etiquetas de case. La expresión selector debe ser un tipo ordinal (por ejemplo, it, char, pero no float o string). Cada etiqueta es un valor único, constante y cada etiqueta debe tener un valor diferente de los otros. Si el valor de la expresión selector es igual a una de las etiquetas case —por ejemplo, etiquetar— entonces la ejecución comenzará con la primera sentencia de la secuencia sentencia1 y continuará hasta que se encuentra el final de la sentencia de control switch, o hasta encontrar la sentencia break.
Es habitual que después de cada bloque de sentencias correspondiente a una secuencia se desee terminar la ejecución del switch; para ello se sitúa la sentencia break como última sentencia del bloque. La sentencia break; hace que siga la ejecución en la siguiente sentencia al switch.


5.5.1. Caso particular de case


Está permitido tener varias expresiones case en una alternativa dada dentro de la sentencia switch. Por ejemplo, se puede escribir:


5.5.2. Uso de sentencias switch en menús


La sentencia if - else es más versátil que la sentencia switch y se pueden utilizar unas sentencias if else anidadas o multidecisión, en cualquier parte que se utilice una sentencia case. Sin embargo, normalmente, la sentencia switch es más clara. Por ejemplo, la sentencia switch es idónea para implementar menús.

Un menú en un programa de computadora hace la misma función: presentar una lista de alternativas en la pantalla para que el usuario elija una de ellas.


5.6. EXPRESIONES CONDICIONALES: EL OPERADOR ?:


Las sentencias de selección (if y switch) consideradas hasta ahora, son similares a las sentencias previstas en otros lenguajes, tales como Pascal y Fortran 90. C tiene un tercer mecanismo de selección, una expresión que produce uno de dos valores, resultado de una expresión lógica o booleana (también denominada condición). Este mecanismo se denomina expresión condicional. Una expresión condicional tiene el formato C ? A : B y es realmente una operación ternaria (tres operandos) en el que C, A y B son los tres operandos y ? : es el operador.
Se evalúa condición, si el valor de condición es verdadera (distinto de cero) entonces se devuelve como resultado el valor de expresión1 si el valor de condición es falsa (cero) se devuelve como resultado el valor de expresion2.
Una aplicación del operador condicional (?:) es llamar a una de dos funciones según el valor de la variable.


5.7. EVALUACIÓN EN CORTOCIRCUITO DE EXPRESIONES LÓGICAS


Cuando se evalúan expresiones lógicas en C se emplea una técnica denominada evaluación en cortocircuito. Este tipo de evaluación significa que se puede detener la evaluación de una expresión lógica tan pronto como su valor pueda ser determinado con absoluta certeza. Por ejemplo, si el valor de (soltero == ‘s‘) es falso, la expresión lógica (soltero == ‘s’) && (sexo ‘h’) && (edad > 18) && (edad <= 45) será falsa con independencia de cual sea el valor de las otras condiciones. La razón es que una expresión lógica del tipo falso && (...) debe ser siempre falsa, cuando uno de los operandos de la operación AND es falso. En consecuencia no hay necesidad de continuar la evaluación de las otras condiciones cuando (soltero == ‘s’) se evalúa a falso.

El compilador C utiliza este tipo de evaluación. Es decir, la evaluación de una expresión lógica de la forma, a && a. se detiene si la subexpresión a de la izquierda se evalúa a falsa.

C realiza evaluación en cortocircuito con los operadores && y , de modo que evalúa primero la expresión más a la izquierda de las dos expresiones unidas por && o bien por . Si de esta evaluación se deduce la información suficiente para determinar el valor final de la expresión (independiente del valor de la segunda expresión), el compilador C no evalúa la segunda expresión.

miércoles, 18 de marzo de 2009

EJERCICIOS 3.1 - 3.6


3.2

3.3


3.4

3.5
3.6

TAREA EJERCICIO 3.1 - 3.5









3.1











3.2













3.4
3.5

EJERCICIO


EJERCICIOS EJEMPLO.


Realizar un programa que despliegue los siguientes datos; cada dato en una línea diferente y a doble espacio:
nombre
dirección
teléfono
escuela
carrera


#include
main()

{

printf("hola\n\n");

printf("soy Iliana\n\n") ;

printf("Mi dirección es Av. Kino y callejón Morelos #63\n\n");

printf("Mi teléfono es (653)1076819\n\n");

printf("Estudio en CESUES\n\n");

printf("Mi carrera es Ingenieria Industrial\n\n");

return 0;


}





RESUMEN 3.1 AL 3.5





3.1. ESTRUCTURA GENERAL DE UN PROGRAMA EN C



Un programa en C se compone de una o más funciones. Una de las funciones debe ser obligatoriamente main. Una función en C es un grupo de instrucciones que realizan una o más acciones. Asimismo, un programa contendrá una serie de directivas #include que permitirán incluir en el mismo archivos de cabecera que a su vez constarán de funciones y datos predefinidos en ellos.











De un modo más explícito, un programa C puede incluir:
• Directivas de preprocesador:
• Declaraciones globales;
• La función main (); mt main ()
• Funciones definidas por el usuario;
• Comentarios del programa

La directiva #include de la primera línea es necesaria para que el programa tenga salida. Se refiere a un archivo externo denominado stdio.h en el que se proporciona la información relativa a la función printf ( ). Obsérvese que los ángulos <> no son parte del nombre del archivo; se utilizan para indicar que el archivo es un archivo de la biblioteca estándar C.

La segunda línea es un comentario, identificado por los caracteres /* y */. Los comentarios se incluyen en programas que proporcionan explicaciones a los lectores de los mismos. Son ignorados por el compilador.
La tercera línea contiene la cabecera de la función main ( ), obligatoria en cada programa C. Indica el comienzo del programa y requiere los paréntesis ( ) a continuación de main ( ).

La cuarta y séptima línea contienen sólo las llaves { y } que encierran el cuerpo de la función main ( ) y son necesarias en todos los programas C.

La quinta línea contiene la sentencia printf (“Bienvenido a la programación en C\n”);

Advertencia
El programa más corto de C es el «programa vacío» que no hace nada.
La sentencia return 0; no es obligatoria en la mayoría de los compiladores, aunque algunos emiten un mensaje de advertencia si se omite.

3.1.1. DIRECTIVAS DEL PROCESADOR

El procesador en un programa C se puede considerar como un editor de texto inteligente que consta de directivas (instrucciones al compilador antes de que se compile el programa principal). Las dos directivas mas usuales son #include y #define.










Todas las directivas del procesador comienzan con el signo del libro o <> (#), que indica al compilador que lea las directivas antes de compilar la parte (función) principal del programa. Las directivas son instrucciones el compilador. Las directivas no son generalmente sentencias, obsérvese que su línea no termina en punto y coma, sino instrucciones que se dan al compilador antes de que el programa se compile. Aunque las directivas pueden definir macros, nombres de constantes, archivos fuente adicionales, etc., su uso mas frecuente en C es la inclusión de archivos de cabecera.

Existen archivos de cabecera estándar que se utilizan ampliamente, tales como stdio.h, stdlib.h, math.h, string.h y se utilizaran otros archivos de cabecera definidos por el usuario para diseño estructurado.

La directiva #include indica al compilador que lea el archivo fuente que viene a continuación de ella y su contenido lo inserte en la posición donde se encuentra dicha directiva. Estos archivos se denominan archivos de cabecera o archivos de inclusión.

Los archivos de cabecera (archivos con extensión .h contienen código fuente C) se sitúan en un programa C mediante la directiva de preprocesador #include con una instrucción que tiene el siguiente formato:

#include o bien #include "nombrearch.h"
Nombrearch debe ser un archivo de texto ASCII (su archivo fuente) que reside en su disco el archivo de cabecera mas frecuente es stdio.h.

3.1.2. DECLARACIONES GLOBALES

Las declaraciones globales indican al compilador que las funciones definidas por el usuario o variables así declaradas son comunes a todas las funciones de su programa. Las declaraciones globales se sitúan antes de la función main ( ). Si se declara global una variable Grado clase del tipo int Grado_clase; cualquier función de su programa, incluyendo main () , puede acceder a la variable Grado_clase.

La zona de declaraciones globales de un programa puede incluir declaraciones de variables además de declaraciones de función. Las declaraciones de función se denominan prototipos int media (int a, int b);

3.1.3. FUNCIÓN MAIN ( )

Cada programa C tiene una función main () que es el punto de entrada al programa. Su estructura es:

Las sentencias incluidas entre las llaves {. . . } se denominan bloque. Un programa debe tener sólo una función main ( ) . Si se intenta hacer dos funciones main ( ) se produce un error. Además de la función main ( ), un programa C consta de una colección de funciones.

Una función C es un subprograma que devuelve un único valor, un conjunto de valores o realiza alguna tarea específica tal como E/S.

En un programa corto, el programa completo puede incluirse totalmente en la función main ( ).
Un programa largo, sin embargo, tiene demasiados códigos para incluirlo en esta función. La función main ( ) en un programa largo consta prácticamente de llamadas a las funciones definidas por el usuario. El programa siguiente se compone de tres funciones: obtenerdatos ( ), alfabetizar ( ) y verpalabras ( ) que se invocan sucesivamente.

3.1.4. FUNCIONES DEFINIDAS POR EL USUARIO

Un programa C es una colección de funciones. Todos los programas se construyen a partir de una o más funciones que se integran para crear una aplicación. Todas las funciones contienen una o más sentencias C y se crean generalmente para realizar una única tarea, como imprimir la pantalla, escribir un archivo o cambiar el color de la pantalla. Se pueden declarar y ejecutar un número de funciones casi ilimitado en un programa C.
Las funciones definidas por el usuario se invocan por su nombre y los parámetros opcionales que puedan tener. Después de que la función es llamada, el código asociado con la función se ejecuta y, a continuación, se retorna a la función llamadora.

Todas las funciones tienen nombre y reciben una lista de valores. Se puede asignar cualquier nombre a su función, pero normalmente se procura que dicho nombre describa el propósito de la función. En C. las funciones requieren una declaración o prototipo en el programa:

Una declaración de función indica al compilador el nombre de la función por el que ésta será invocada en el programa. Si la función no se define, el compilador informa de un error. La palabra reservada void significa que la función no devuelve un valor.

3.1.5. COMENTARIOS

Un comentario es cualquier información que se añade a su archivo fuente para proporcionar documentación de cualquier tipo. El compilador ignora los comentarios, no realiza ninguna tarea concreta. El u de comentarios es totalmente opcional, aunque dicho uso es muy recomendable.

La información que se suele incluir es el nombre del archivo, el nombre del programador, una breve descripción, la fecha en que se creó la versión y la información de la revisión. Los comentarios en C estándar comienzan con la secuencia /* y terminan con la secuencia */.

Todo el texto situado entre las dos secuencias es un comentario ignorado por el compilador.

3.2. CREACIÓN DE UN PROGRAMA

Una vez creado un programa en C como el anterior, se debe ejecutar. ¿Cómo realizar esta tarea? Los pasos a dar dependerán del compilador C que utilice. Sin embargo, serán similares a los mostrados en la Figura 3.2. En general, los pasos serían:






































· Utilizar un editor de texto para escribir el programa y grabarlo en un archivo. Este archivo constituye el código fuente de un programa.
· Compilar el código fuente. Se traduce el código fuente en un código objeto (extensión .obj) (lenguaje máquina entendible por la computadora). Un archivo objeto contiene instrucciones en lenguaje máquina que se pueden ejecutar por una computadora. Los archivos estándar C y los de cabecera definidos por el usuario son incluidos (include) en su código fuente por el preprocesador. Los archivos de cabecera contienen información necesaria para la compilación, corno es el caso de stdio.h que contiene información scanf y de printf ( ).
· Enlazar el código objeto con las bibliotecas correspondientes. Una biblioteca C contiene código objeto de una colección de rutinas o funciones que realizan tareas, como visualizar informaciones en la pantalla o calcular la raíz cuadrada de un número. El enlace del código objeto del programa con el objeto de las funciones utilizadas y cualquier otro código empleado en el enlace, producirá un código ejecutable. Un programa C consta de un número diferente de archivos objeto y archivos biblioteca.

Para crear un programa se utilizan las siguientes etapas:
1. Definir su programa.
2. Definir directivas del preprocesador.
3. Definir declaraciones globales.
4. Crear main ( ).
5. Crear el cuerpo del programa.
6. Crear sus propias funciones definidas por el usuario.
7. Compilar, enlazar, ejecutar y comprobar su programa.
8. Utilizar comentarios.

3.3. EL PROCESO DE EJECUCIÓN DE UN PROGRAMA EN C

Un programa de computadora escrito en un lenguaje de programación (por ejemplo, C) tiene forma de texto ordinario. Se escribe el programa en una hoja de papel y a este programa se le denomina prograi texto o código fuente. Considérese el ejemplo sencillo:

La Figura 3.3 muestra el método de edición de un programa y la creación del programa en un disco, en un archivo que se denomina archivo de texto (archivo fuente). Con la ayuda de un editor de texto se puede editar el texto fácilmente, es decir, cambiar, mover, cortar, pegar y borrar texto. Se puede ver, normalmente, una parte del texto en la pantalla y se puede marcar partes del texto a editar con ayuda de un ratón o el teclado. El modo de funcionamiento de un editor de texto y las órdenes de edición asociadas varían de un sistema a otro.













Una vez editado un programa, se le proporciona un nombre. Se suele dar una extensión al nombre (normalmente .c, aunque en algunos sistemas puede tener otros sufijos).
La siguiente etapa es la de compilación. En ella se traduce el código fuente escrito en lenguaje C a código máquina (entendible por la computadora). El programa que realiza esta traducción se llama compilador. Cada compilador se construye para un determinado lenguaje de programación (por ejemplo C); un compilador puede ser un programa independiente (como suele ser el caso de sistemas operativos como VMS, UNIX, etc.) o bien formar parte de un programa entorno integrado de desarrollo (EID). Los programas EID contienen todos los recursos que se necesitan para desarrollar y ejecutar un programa, por ejemplo, editores de texto, compiladores, enlazadores, navegadores y depuradores.
Cada lenguaje de programación tiene unas reglas especiales para la construcción de programas que se denomina sintaxis. El compilador lee el programa del archivo de texto creado anteriormente y comprueba que el programa sigue las reglas de sintaxis del lenguaje de programación.
Cuando se compila su programa, el compilador traduce el código fuente C (las sentencias del programa) en un código máquina (código objeto). El código objeto consta de instrucciones máquina e información de cómo cargar el programa en memoria antes de su ejecución. Si el compilador encuentra errores, los presentará en la pantalla. Una vez corregidos los errores con ayuda del editor se vuelve a compilar sucesivamente hasta que no se produzcan errores.
El archivo objeto contiene sólo la traducción del código fuente. Esto no es suficiente para ejecutar realmente el programa. Es necesario incluir los archivos de biblioteca (por ejemplo, en el programa area . c, stdio. h). Una biblioteca es una colección de código que ha sido programada y traducida y lista para utilizar en su programa.
El proceso de ejecución de un programa no suele funcionar la primera vez; es decir, casi siempre hay errores de sintaxis o errores en tiempo de ejecución. El proceso de detectar y corregir errores se denomina depuración o puesta u punto de u programa.
La Figura 3.6 muestra el proceso completo de puesta a punto de un programa.
Se comienza escribiendo el archivo fuente con el editor. Se compila el archivo fuente y se comprueban mensajes de errores. Se retorna al editor y se fijan los errores de sintaxis. Cuando el compilador tiene éxito, el enlazador construye el archivo ejecutable. Se ejecuta el archivo ejecutable. Si se encuentra un error, se puede activar el depurador para ejecutar sentencia a sentencia. Una vez que se encuentra la causa del error, se vuelve al editor y se repite la compilación. El proceso de compilar, enlazar y ejecutar el programa se repetirá hasta que no se produzcan errores.
· Etapas del proceso
· El código fuente (archivo del programa) se crea con la ayuda del editor de texto.
· El compilador traduce el archivo texto en un archivo objeto.
· El enlazador pone juntos a diferentes archivos objetos para poner un archivo ejecutable.
· El sistema operativo pone el archivo ejecutable en la memoria central y se ejecuta el programa.
3.4. DEPURACIÓN DE UN PROGRAMA EN C

Rara vez los programas funcionan bien la primera vez que se ejecutan. Los errores que se producen en los programas han de ser detectados, aislados (fijados) y corregidos. El proceso de encontrar errores se denomina depuración del programa. La corrección del error es probablemente la etapa más difícil, siendo la detección y aislamiento del error las tareas más difíciles.
Existen diferentes situaciones en las cuales se suelen introducir errores en un programa. Dos de las más frecuentes son:
1. Violación (no cumplimiento) de las reglas gramaticales del lenguaje de alto nivel en el que se escribe el programa.
2. Los errores en el diseño del algoritmo en el que está basado el programa.
Cuando el compilador detecta un error, visualiza un mensaje de error indicando que se ha cometido un error y la posible causa del error. Desgraciadamente los mensajes de error son difíciles de interpretar y a veces se llegan a conclusiones erróneas. También varían de un compilador a otro. A medida que se gana en experiencia, el proceso de puesta a punto de un programa se mejora considerablemente. Nuestro objetivo en cada capítulo es describir los errores que ocurren más frecuentemente y sugerir posibles causas de error, junto con reglas de estilo de escritura de programas. Desde el punto de vista conceptual existen tres tipos de errores: sintaxis, lógicos y de regresión.
3.4.1. ERRORES DE SINTAXIS

Los errores de sintaxis son aquellos que se producen cuando el programa viola la sintaxis, es decir, las reglas de gramática del lenguaje. Errores de sintaxis típicos son: escritura incorrecta de palabras reservadas, omisión de signos de puntuación (comillas, punto y coma...). Los errores de sintaxis son los más fáciles de fijar, ya que ellos son detectados y aislados por el compilador.
Estos errores se suelen detectar por el compilador durante el proceso de compilación. A medida que se produce el proceso de traducción del código fuente (por ejemplo, programa escrito en C) a lenguaje máquina de la computadora, el compilador verifica si el programa que se está traduciendo cumple las reglas de sintaxis del lenguaje. Si el programa viola alguna de estas reglas, el compilador genera un mensaje de error (o diagnóstico) que explica el problema (aparente). Algunos errores típicos (ya citados anteriormente):
• Punto y coma después de la cabecera main O.
• Omisión de punto y coma al final de una sentencia.
• Olvido de la secuencia */ para finalizar un comentario.
• Olvido de las dobles comillas al cerrar una cadena.
•Etc.
Si una sentencia tiene un error de sintaxis rio se traducirá completamente y el programa no se ejecutará. Así, por ejemplo, si una línea de programa es double radio se producirá un error ya que falta el punto y coma () después de la letra última “o”. Posteriormente se explicará el proceso de corrección por parte del programador.
3.4.2. ERRORES LÓGICOS
Un segundo tipo de error importante es el error lógico, ya que tal error representa errores del programador en el diseño del algoritmo y posterior programa. Los errores lógicos son más difíciles de encontrar y aislar ya que no suelen ser detectados por el compilador.
Suponga, por ejemplo, que una línea de un programa contiene la sentencia \
pero resulta que el tercer asterisco (operador de multiplicación) es en realidad un signo + (operador suma). El compilador no produce ningún mensaje de error de sintaxis ya que no se ha violado ninguna regla de sintaxis y, por tanto, el compilador no detecta error y el programa se compilará y ejecutará bien, aunque producirá resultados de valores incorrectos ya que la fórmula utilizada para calcular el peso contiene un error lógico.
Una vez que se ha determinado que un programa contiene un error lógico —si es que se encuentra en la primera ejecución y no pasa desapercibida al programador— encontrar el error es una de las tareas más difíciles de la programación. El depurador (debugger) es un programa de software diseñado específicamente para la detección, verificación y corrección de errores, ayudará en las tareas de depuración.
Los errores lógicos ocurren cuando un programa es la implementación de un algoritmo defectuoso. Dado que los errores lógicos normalmente no producen errores en tiempo de ejecución y no visualizan mensajes de error; son más difíciles de detectar porque el programa parece ejecutarse sin contratiempos. El único signo de un error lógico puede ser la salida incorrecta de un programa. La sentencia es una sentencia perfectamente legal en C, pero la ecuación no responde a ningún cálculo válido para obtener el total de grados centígrados en una sala.
Se pueden detectar en-ores lógicos comprobando el programa en su totalidad, comprobando su salida con los resultados previstos. Se pueden prevenir errores lógicos con un estudio minucioso y detallado del algoritmo antes de que el programa se ejecute, pero resultará fácil cometer errores lógicos y es el conocimiento de C, de las técnicas algorítmicas y la experiencia lo que permitirá la detección de los errores lógicos.
3.4.3. ERRORES DE REGRESIÓN

Los errores de regresión son aquellos que se crean accidentalmente cuando se intenta corregir un error lógico. Siempre que se corrige un error se debe comprobar totalmente la exactitud (corrección) para asegurarse que se fija el error que se está tratando y no produce otro error.
Los errores de regresión son habituales, pero son fáciles de leer y corregir. Una ley no escrita es que: «un error se ha producido, probablemente, por el último código modificado».
3.4.4. MENSAJES DE ERROR

Los compiladores emiten mensajes de error o de advertencia durante las fases de compilación, de enlace o de ejecución de un programa.
Los mensajes de error producidos durante la compilación se suelen producir, normalmente, por errores de sintaxis y suele variar según los compiladores; pero, en general, se agrupan en tres grandes bloques:
· Errores fatales. Son raros. Algunos de ellos indican un error interno del compilador. Cuando ocurre un error fatal, la compilación se detiene inmediatamente, se debe tomar la acción apropiada y a continuación se vuelve a iniciar la compilación.
· Errores de sintaxis. Son los errores típicos de sintaxis, errores de línea de órdenes y errores de acceso a memoria o disco. El compilador terminará la fase actual de compilación y se detiene.
· Advertencias (warning). No impiden la compilación. Indican condiciones que son sospechosas, pero son legítimas como parte del lenguaje.
3.5. PRUEBAS
Los errores de ejecución ocurren después que el programa se ha compilado con éxito y aún se está ejecutando. Existen ciertos errores que la computadora sólo puede detectar cuando se ejecuta el programa La mayoría de los sistemas informáticos detectarán ciertos errores en tiempo de ejecución y presentar un mensaje de error apropiado. Muchos errores en tiempo de ejecución tienen que ver con los cálculos numéricos. Por ejemplo, si la computadora intenta dividir un número por cero o leer un archivo no creado, se produce un error en tiempo de ejecución.
Es preciso tener presente que el compilador puede no emitir ningún mensaje de error durante la ejecución y eso no garantiza que el programa sea correcto. Recuerde que el compilador sólo le indica si se escribió bien sintácticamente un programa en C. No indica si el programa hace lo que realmente desea que haga. Los errores lógicos pueden aparecer —y de hecho aparecerán— por un mal diseño del algoritmo y posterior programa.
Para determinar si un programa contiene un error lógico, se debe ejecutar utilizando datos de muestra y comprobar la salida verificando su exactitud. Esta prueba (testing) se debe hacer varias veces utilizando diferentes entradas, preparadas —en el caso ideal—, por personas diferentes al programador, que puedan indicar suposiciones no evidentes en la elección de los datos (le prueba. Si cualquier combinación de entradas produce salida incorrecta, entonces el programa contiene un error lógico.
Una vez que se ha determinado que un programa contiene un error lógico, la localización del error es una (le las partes más difíciles de la programación. La ejecución se debe realizar paso a paso (seguir la traza) hasta el punto en que se observe que un valor calculado difiere del valor esperado. Para simplificar este seguimiento o traza, la mayoría de los compiladores de C proporcionan un depurador integrado’ incorporado con el editor, y todos ellos en un mismo paquete de software, que permiten al programador ejecutar realmente un programa, línea a línea, observando los efectos de la ejecución de cada línea en los valores de los objetos del programa. Una vez que se ha localizado el error, se utilizará el editor de texto para corregir dicho error.
Es preciso hacer constar que casi nunca será posible comprobar un programa para todos los posibles conjuntos de datos de prueba. Existen casos en desarrollos profesionales en los que, aparentemente, los programas han estado siendo utilizados sin problemas durante años, hasta que se utilizó una combinación específica de entradas y ésta produjo una salida incorrecta debida a un error lógico. El conjunto de datos específicos que produjo el error nunca se había introducido.
A medida que los programas crecen en tamaño y complejidad, el problema de las pruebas se convierte en un problema de dificultad cada vez más creciente. No importa cuantas pruebas se hagan:
«Las pruebas nunca se terminan, sólo se detienen y no existen garantías de que se han encontrado y corregido todos los errores de un programa>. Dijkstra ya predijo a principios de las setenta una máximas que siempre se ha de tener presente en la construcción de un programa: «Las pruebas sólo muestran la presencia de errores, no su ausencia. No se puede probar que un programa es correcto (exacto) sólo e puede mostrar que es incorrecto».

jueves, 12 de febrero de 2009

GUIA EXAMEN

COMPUTADORA:

Es un dispositivo eléctrico, utilizado para procesar información y obtener resultados, capaces de ejecutar cálculos y tomar dediciones a velocidades más rápidas que el hombre.


HARDWARE:

Es el equipo físico o los dispositivos asociados con una computadora.


SOFTWARE:

Conjunto de instrucciones dadas, el conjunto de instrucciones que indica a la computadora aquello que debe hacer.


DISPOSITIVOS DE ALMACENAMIENTO:

Memoria principal, memoria ROM, procesador, microprocesador
Secundarios: diskette, cd, dvd. Cinta magnética.


LENGUAJE DE PROGRAMACIÓN:

Sirve para escribir programas que permiten la comunicación usuario/maquina.

INTERPRETE:

Convierte las instrucciones escritas en lenguaje de programación en las instrucciones escritas en lenguaje maquina que esta puede entender.

LENGUAJE MAQUINA:

Un sistema de codificación nativo de la maquina y la escritura de programas secuénciales de 0 y 1.


ENSAMBLADORES:

Son programas que traducen otros programas escritos en códigos neumático en instrucciones numéricos en lenguaje maquina que son compatibles y legibles por la maquina.


COMPILADORES:

Son programas de alto nivel como C, JAVA, que ocupan ser traducidos a código maquina.


LENGUAJE C:

Es el lenguaje de programación general asociado de método universal al sistema operativo UNIX.

Ventajas: poderoso, flexible, operacional, se utiliza en programas preferenciales, puede ser escrito para un tipo de computadoras.

ELEMENTOS DEL DIAGRAMA DE FLUJO O SÍMBOLOS:


















ALGORITMO:

Es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Su estructura: entrada – proceso – salida

PSEUDOCÓDIGO:

Es un lenguaje de especificaciones de algoritmos. Es una herramienta de programación en la que las instrucciones se escriben en palabras similares al ingles o español, que faciliten tanto la escritura como la lectura de programas.

DIAGRAMA (NS):

Es un diagrama de flujo en el que se omiten las flechas de unión y las cajas son continuas. Las acciones sucesivas se escriben en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en cajas.