jueves, 23 de abril de 2009

EJERCICIO.

ABRIL 23, 2009.

Realizar un programa que despliegue un menu como el anterior; que lea dos numeros enteros y realice la operacion correspondiente (suma, resta o multiplicacion).

lunes, 20 de abril de 2009

MENU PRINCIPAL

ABRIL 20, 2009.

#include
int main()
{
int opcion;
printf("* * * * * * * * * * * * *\n");
printf("* *\n");
printf("* * menu principal * *\n");
printf("* *\n");
printf("* suma.............[1] *\n");
printf("* resta............[2] *\n");
printf("* multiplicacion...[3] *\n");
printf("* salir............[0] *\n");
printf("* *\n");
printf("* * * * * * * * * * * * *\n");
printf(" dame la opcion: ");
scanf("%d",&opcion);
switch (opcion)
{
case 1: puts("suma\n");
break;
case 2: puts("resta\n");
break;
case 3: puts("multiplicacion\n");
break;
case 0: puts("salir\n");
break;
}
return 0;
}

viernes, 17 de abril de 2009

EJERCICIOS.

ABRIL 17, 2009.


Realizar un programa que tradusca el numero a palabra basado en la entrada que le de el usuario. Por ejemplo: si el usuario le da un 0 el sistema debe decir cero pero en palabra el rango aceptable cera de 0 a 5.

#include
int main()
{
char opcion;
printf("introdusca numero enter de 0-5 y pulse enter:");
scanf("%d",&opcion);
switch (opcion)
{
case 0:
puts("cero!");
break;
case 1:
puts("uno!");
break;
case 2:
puts("dos!");
break;
case 3:
puts("tres!");
break;
case 4:
puts("cuatro!");
break;
case 5:
puts("cinco!");
break;
default:
puts("fuera de rango");
}
return 0;
}




Realizar un programa que lea un caracter y determine si es vocal o no vocal.

#include
int main()
{
char car;
printf("introdusca una nota y determine si es vocal o no vocal y pulse enter:");
scanf("%c",&car);
switch (car)
{
case 'a': case 'A':
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U':
printf( "%c es una vocal\n",car);
break;
default:
printf( "%c no es una vocal\n",car);
}
return 0;
}

jueves, 16 de abril de 2009

PROGRAMA DE EJERCICIO.

ABRIL 16, 2009.

Un fabricante de montañas rusas desea un sistema que escanee la altura de los prospectos y determine si son aptos para utilizar el juego, el sistema debe de mostrar el mensaje aceptado para utilizar el juego y/o rechasado para utilizar el juego. El limite de altura es 1.30 cm. Relizar la lectura en cm.


Realize un programa que determine si una persona puede o no puede votar.

#include
void main ()
{
int edad;
printf("Introduzca la edad de la persona: ");
scanf("%d",&edad);
if (edad >= 18)
printf("%d es apto para votar\n",edad);
if (edad < 18)
printf("%d no es apto para votar\n",edad);
}

miércoles, 15 de abril de 2009

EJERCICIOS 5.1 - 5.10.

ABRIL 15, 2009.

EJEMPLO 5.1

#include
int main ()
{
int n, d;
printf ( "Introduzca dos enteros: ");
scanf("%d %d",&n,&d);
if (n%d == 0)printf(" %d es divisible por %d\n",n,d);
return 0;
}

EJEMPLO 5.2

#include
void main ()
{
float nota;
printf("Introduzca la nota obtenida (0-10): ");
scanf("%f", &nota);
if (nota >= 5)puts("Aprobado");
}

EJEMPLO 5.3

#include
void main ()
{
float numero;
printf("Introduzca un numero positivo o negativo: ");
scanf("%f",&numero);
if (numero > 0)
printf("%f es mayor que cero\n",numero);
if (numero < 0)
printf("%f es menor que cero\n",numero);
if (numero == 0)
printf("%f es igual a cero\n",numero);
}

EJEMPLO 5.4

#include
int main()
{
int n, d;
printf( "Introduzca dos enteros; ");
scanf("%D %d",&n,&d);
if (n%d == 0)printf("%d es divisible por %d\n",n,d);
else printf("%d no es divisible por %d\n",n,d);
return 0;
}

EJEMPLO 5.5

#include
int main()
{
int x, y;
printf( "Introduzca dos enteros: ");
scanf("%d %d",&x,&y);
if (x > y)printf("%6d\n",x);
else printf("%6d\n",y);
return 0;
}

EJEMPLO 5.6

#include
#include
intmain()
{
float f,x;
printf("\n Elige un valor de x: ");
scanf("%f",&x);
if (x <= 0.0)f = pow(x,2) - x;
elsef = -pow(x,2) + 3*x;printf("f(%.1f) = %.3f",x,f);
return 0;
}

EJEMPLO 5.8

#include
void main()
{
float numero;
printf( " Introduzca un numero positivo o negativo: ");
scanf("%f",&numero);
if (numero > 0)
{
printf("%.2f %s", numero, "es mayor que cero\n");
puts( "Pruebe de nuevo introduciendo un numero negativo");
}
else if (numero <10)
{
printf("%.2f %s", numero, "es menor que cero\n");
puts( "pruebe de nuevo introduciendo un numero positivo");
}
else
{ printf("%.2f %s", numero, "es igual a cero\n");
puts( " ¿por que no introduce otro numero? ");
}
}

EJEMPLO 5.10

#include
int main()
{
int a, b, c, mayor;
printf("\nIntroduzca tres enteros:");
scanf("%d %d %d",&a,&b,&c);
if (a > b)if (a > c) mayor =a;
else mayor =c;
elseif (b > c) mayor =b;
else mayor =c;
printf("El mayor es %d \n",mayor);
return 0;
}

RESUMEN DEL CAPITULO 5.

ABRIL 15, 2009.

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. Hasta este momento sólo se ha utilizado el flujo secuencial. Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ({ y 1) que se utiliza para especificar un flujo secuencial.
{
sentencia ;
sentencia ;
sentencia ;
}
El control fluye de la sentenciu, 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 if. La sentencia if tiene dosalternativas o formatos posibles. El formato más sencillo tiene la sintaxis siguiente:

i f (Expresión) Acción
Acción se ejecuta si la expresión
\ lógica es verdadera Expresión lógica que determina
SI la acción se ha de ejecutar

La sentencia i f funciona de la siguiente manera. Cuando se alcanza la sentencia if dentro de unprograma, se evalúa la expresión entre paréntesis que viene a continuación de if. Si Expresión esverdadera, 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). En cualquier caso la ejecución del programa continúa con la siguiente sentencia del programa. La Figura 5.1 muestra un diagrama deflujo que indica el flujo de ejecución del programa.Otro sistema de representar la sentencia i f es:

if (condición) sentencia;

condicion es una expresión entera(lógica).sentencia es cualquier sentencia ejecutable, que se ejecutará sólo si la condición toma.

5.3. SENTENCIA if DE DOS ALTERNATIVAS: if -else

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

if (Expresión)

Expresión lógica que determina la de ejecutar
Acción1
accion que se realiza si la expresion logica es verdadera

else

accion2
acción que se ejecuta si la expresion lógica es falsa
En este formato Acción y Acción son individualmente, o bien una Única sentencia que terminaen 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ón y en caso contrario se ejecuta Acción . La Figura 5.2 muestra la semántica de la sentencia if -else.un valor distinto de cero.

5.4. SENTENCIAS if -else ANIDADAS

Hasta este punto, las sentencias if implementan decisiones que implican una o dos alternativas. En esta sección, se mostrará como se puede utilizar la sentencia i f para implementar decisiones que impliquen diferentes alternativas.
Una sentencia i f es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a su vezuna 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, numjos 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 muitibifurcación se compone de una serie de sentencias if anidadas, que se pueden escribir en cada línea 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 Únicasentencia if anidada. Por ejemplo, la sentencia i f del Ejemplo 5.7 se puede reescribir como la siguiente secuencia de sentencias if.
if (x > O)
if (x < O)
if ( x == O)
numsos = num-pos + 1;num-neg = num-neg + 1;
num-ceros = num-ceros + 1;
Aunque la secuencia anterior es lógicamente equivalente a la original, no es tan legible ni eficiente. Al contrario que la sentencia i f anidada, la secuencia no muestra claramente cual es la sentencia a ejecutar para un valor determinado de x. Con respecto a la eficiencia, la sentencia if anidada se ejecuta más rápidamente cuando x es positivo ya que la primera condición (x > o) es verdadera, lo que significa que la parte de la sentencia i f a continuación del primer e i s e se salta. En contraste, se comprueban siempre las tres condiciones en la secuencia de sentencias if. Si x es negativa, se comprueban dos condiciones en las sentencias if anidadas frente a las tres condiciones de las secuencias de sentencias if. Una estructura típica if -else anidada permitida es:
if (numero > O)
{
...
}
else
{
if ( . . . )
{
...
}
else
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 expresicí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 se1 ector 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, int , 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, etiqueta - entonces la ejecución comenzará con la primera sentencia de la secuencia sentencia 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. 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:
switch(c) {
case '0':case '1': case '2': case '3': case '4':
case '5':case '6': case '7': case '8': case '9':
num-digitos++; /*se incrementa en 1 el valor de num-digitos * /break;
case" :case '\t': case '\n':
num-blancos++; /*se incrementa en 1 el valor de num-blancos*/break;
default:
num-distintos++;
}

5.5.2. Uso de sentencias switch en menús

La sentencia i f -else es más versátil que la sentencia switch y se puede utilizar unas sentencias if -else anidadas o multidecisión, en cualquier parte que se utiliza una sentencia case. Sin embargo,normalmente, la sentencia switch es más clara. Por ejemplo, la sentencia switch es idónea paraimplementar menús.Un menú de un restaurante presenta una lista de alternativas para que un cliente elija entre susdiferentes opciones. 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.En los capítulos siguientes se volverá a tratar el tema de los menús en programación con ejemplosprácticos.

5.6. EXPRESIONES CONDICIONALES: EL OPERADOR ? :

Las sentencias de selección (if y switch) consideradas hasta ahora, son similares a las sentenciasprevistas 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.

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

Cuando se evalúan expresiones lógicas en C se puede emplear 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’) hh (edad> 18) && (edad <= 4 5) 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 y necesidad de continuar la evaluación de las otras condiciones cuando (sol tero == ’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 dela forma, && a se detiene si la subexpresión de la izquierda se evalúa a falsa.
C realiza evaluación en cortocircuito con los operadores && y I I , de modo que evalúa primero la expresión más a la izquierda de las dos expresiones unidas por && o bien por I I . 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 de C no evalúa la segunda expresión.

5.9. ERRORES FRECUENTES DE PROGRAMACIÓN

I . Uno de los errores más comunes en una sentencia if es utilizar un operador de asignación (=)en lugar de un operador de igualdad (==).
2. En una sentencia i f anidada, cada cláusula el se se corresponde con la i f precedente máscercana.
Por ejemplo, en el segmento de programa siguiente
if (a > O)
if (b > O)
c = a + b ;
else
c = a + abs(b) ;
d = a * b * c ;
¿Cuál es la sentencia if asociada a else?
El sistema más fácil para evitar errores es el sangrado o indentación, con lo que ya se apreciaque la cláusula else se corresponde a la sentencia que contiene la condición
b > o
if (a > O)
if (b > O)
else
c = a + b ;
c = a + abs(b) ;
d = a * b * c ;

3. Las comparaciones con operadores == de cantidades algebraicamente iguales pueden produciruna expresión lógica falsa, debido u que la mayoría de los números reales no se almacenanexactamente. Por ejemplo, aunque las expresiones reales siguientes son equivalentes:
a * ( l / a )
1 . 0
son algebraicamente iguales, la expresióna * ( l / a ) == 1 . 0puede ser falsa debido a que a es real.
4. Cuando en una sentencia s w i tch o en un bloque de sentencias falta una de las llaves ( { , 1)aparece un mensaje de error tal como:
Error . . . : Cumpound statement missing } in funct-ionSi no se tiene cuidado con la presentación de la escritura del código, puede ser muy difícil
5. El selector de una sentencia s w l t ch debe ser de tipo entero o compatible entero. Así laslocalizar la llave que falta.constantes reales
2 . 4 , - 4 . 5 , 3 . 1 4 1 6
no pueden ser utilizadas en el selector.
6. Cuando se utiliza una sentencia s w i t ch, asegúrese que el selector de s w i t ch y las etiquetascase son del mismo tipo (in t , char pero no f 1 o a t ) . Si el selector se evalúa a un valor nolistado en ninguna de las etiquetas case, la sentencia s w i t ch no gestionará ninguna acción;por esta causa se suele poner ma etiqueta d e f d u l t pura resolver este problema.

RESUMEN CAPITULO 4.

ABRIL 15, 2009.

4.1. OPERADORES Y EXPRESIONES

Los programas C constan de datos, sentencias de programas y expresiones. Una expresión es,normalmente, una ecuación matemática, tal como 3 + 5. En esta expresión, el símbolo más (+) es el operador de suma, y los números 3 y 5 se llaman operandos. En síntesis, una expresión es una secuencia de operaciones y operandos que especifica un cálculo.Cuando se utiliza el + entre números (o variables) se denomina operador binario, debido a que eloperador + suma dos números. Otro tipo de operador de C es el operador unitario («unario»), que actúa sobre un Único valor. Si la variable x contiene el valor 5, -x es el valor -5. El signo menos (-) es el operador unitario menos.C soporta un conjunto potente de operadores unarios, binarios y de otros tipos.

4.2. OPERADOR DE ASIGNACIÓN

El operador = asigna el valor de la expresión derecha a la variable situada a su izquierda.
codigo = 3467;
fahrenheit = 123.
456;coordX = 525;
coordY = 725;
Este operador es asociativo por la derecha, eso permite realizar asignaciones múltiples. Así,a = b = c = 45;
equivale a
a = (b = (c = 45));
o dicho de otro modo, a las variables a, b y c se asigna el valor 4 5.
Esta propiedad permite inicializar varias variables con una sola sentenciaint a, b, c;
a = b = c = 5; / * se asigna 5 a las variables a, b y c */
Además del operador de asignación =, C proporciona cinco operadores de asignación adicionales.
Estos operadores de asignación actúan como una notación abreviada para expresiones utilizadas
En la Tabla 4.1 aparecen los seis operadores de asignación.con frecuencia. Así, por ejemplo, si se desea multiplicar 1 O por i, se puede escribir

4.3. OPERADORES ARITMÉTICOS

Los operadores aritméticos sirven para realizar operaciones aritméticas básicas. Los operadoresaritméticos C siguen las reglas algebraicas típicas de jerarquía o prioridad. Estas reglas especifican la precedencia de las operaciones aritméticas.
Considere la expresión
3 + 5 * 2
¿Cual es el valor correcto, 1 6 ( 8 * 2 ) o 13 ( 3 + 1 O ) ? De acuerdo a las citadas reglas, la multiplicación se realiza antes que la suma. Por consiguiente, la expresión anterior equivale a:
3 t (5 * 2 )
En C las expresiones interiores a paréntesis se evalúan primero; a continuación, se realizan losoperadores unitarios, seguidos por los operadores de multiplicación, división, resto, suma y resta.

4.3.1. Asociatividad

En una expresión tal como
3 * 4 + 5
el compilador realiza primero la multiplicación -por tener el operador * prioridad más alta- y luego la suma, por tanto, produce 17. Para forzar un orden en las operaciones se deben utilizar paréntesis
3 * (4 + 5)
produce 2 7, ya que 4 + 5 se realiza en primer lugar.
de izquierda a derecha o de derecha a izquierda. Por ejemplo,La asociatividad determina el orden en que se agrupan los operadores de igual prioridad; es decir,
x ~ y + z se agrupa como (x ~ y ) + z
ya que - y +, con igual prioridad, tienen asociatividad de izquierda a derecha. Sin embargo,
x = y = z
se agrupa como
x = ( y = z)dado que su asociatividad es de derecha a izquierda.

4.3.2. Uso de paréntesis

Los paréntesis se pueden utilizar para cambiar el orden usual de evaluación de una expresióndeterminada por su prioridad y asociatividad. Las subexpresiones entre paréntesis se evalúan en primer lugar según el modo estándar y los resultados se combinan para evaluar la expresión completa. Si los paréntesis están «anidados» -es decir, un conjunto de paréntesis contenido en otro- se ejecutan en primer lugar los paréntesis más internos. Por ejemplo, considérese la expresión
(7 * (10 - 5) % 3)* 4 + 9
La subexpresión (1 O - 5) se evalúa primero, produciendo
( 7 * 5 % 3 ) * 4 + 9
A continuación se evalúa de izquierda a derecha la subexpresión (7 * 5 % 3 )(35 % 3) * 4 + 9
seguida de
2 * 4 + 9
Se realiza a continuación la multiplicación, obteniendo
8 + 9
y la suma produce el resultado final17

4.4. OPERADORES DE INCREMENTACIÓN Y DECREMENTACIÓN

De las características que incorpora C, una de las más Útiles son los operadores de incremento ++ y decremento --. Los operadores ++ y --, denominados de incrementación y decrementación, suman o restan 1 a su argumento, respectivamente, cada vez que se aplican a una variable.

4.5. OPERADORES RELACIONALES

C no tiene tipos de datos lógicos o booleanos, como Pascal, para representar los valores verdadero (true) y falso (false). En su lugar se utiliza el tipo i n t para este propósito, con el valor entero O que representa a falso y distinto de cero a verdadero.
falso cero
verdadero distinto de cero
Operadores tales como >= y == que comprueban una relación entre dos operandos se llamanoperadores relacionales y se utilizan en expresiones de la forma:
expresión, operador-re1 aci onal expresiónexpresión, y expresión expresiones compatibles Coperador-re1 acional un operador de la tabla 4.7
Los operadores relacionales se usan normalmente en sentencias de selección ( i f ) o de iteración(while, for), que sirven para comprobar una condición. Utilizando operadores relacionales se realizan operaciones de igualdad, desigualdad y diferencias relativas. La Tabla 4.7 muestra los operadores relacionales que se pueden aplicar a operandos de cualquier tipo de dato estándar: char, int , float, double, etc.Cuando se utilizan los operadores en una expresión, el operador relaciona1 produce un O, o un 1,dependiendo del resultado de la condición. O se devuelve para una condiciónfalsa, y 1 se devuelve para una condición verdadera. Por ejemplo, si se escribe
c = 3 < 7 ;
la variable c se pone a 1, dado que como 3 es menor que '1, entonces la operación < devuelve un valor de 1, que se asigna a c.

4.6. OPERADORES LÓGICOS

Además de los operadores matemáticos, C tiene también operadores lógicos. Estos operadores seutilizan con expresiones para devolver un valor verdadero (cualquier entero distinto de cero) o un valor falso (O). Los operadores lógicos se denominan también operadores hooleanos, en honor de George Boole, creador del álgebra de Boole.Los operadores lógicos de C son: not ( ! 1 , and (&&I y or ( I I I . El operador lógico ! (not, no)producefalso (cero) si su operando es verdadero (distinto de cero) y viceversa. El operador lógico && (and, y ) produce verdadero sólo si ambos operandos son verdadero (no cero); si cualquiera de los operandos es falso produce falso. El operador lógico I I (or, o) produce verdadero si cualquiera de los operandos es verdadero (distinto de cero) y produce falso sólo si ambos operandos son falsos. La Tabla 4.8 muestra los operadores lógicos de C.

4.6.1. Evaluación en cortocircuitoEn C los operandos de la izquierda de && y t I se evalúan siempre en primer lugar; si el valor deloperando de la izquierda determina de forma inequívoca el valor de la expresión, el operando derecho no se evalúa. Esto significa que si el operando de la izquierda de && es falso o el de t 1 es verdadero, el operando de la derecha no se evalúa. Esta propiedad se denomina evaluacio'n en cortocircuito y se debe a que si p es falso, la condición p && q es falsa con independencia del valor de q y de este modo C no evalúa q. De modo similar si p es verdadera la condición p I I q es verdadera con independencia del valor de q y C no evalúa a q.

4.7. OPERADORES DE MANIPULACIÓN DE BITS

Una de las razones por las que C se ha hecho tan popular en computadoras personales es que el lenguaje ofrece muchos operadores de manipulación de bits a bajo nivel.
Los operadores de manipulación o tratamiento de bits (binuise) ejecutan operaciones lógicas sobre cada uno de los bits de los operandos. Estas operaciones son comparables en eficiencia y en velocidada sus equivalentes en lenguaje ensamblador.
Cada operador de manipulación de bits realiza una operación lógica bit a bit sobre datos internos.
Los operadores de manipulación de bits se aplican sólo a variables y constantes char, int y long, yno a datos en coma flotante. Dado que los números binarios constan de 1 ,s y 0,s (denominados bits), estos 1 y 0 se manipulan para producir el resultado deseado para cada uno de los operadores.
Las siguientes tablas de verdad describen las acciones que realizan los diversos operadores sobre los diversos patrones de bit de un dato int (char o long).

4.7.1. Operadores de asignación adicionales

AI igual que los operadores aritméticos, los operadores de asignación abreviados están disponibles también para operadores de manipulación de bits. Estos operadores se muestran en la Tabla 4.13.

4.7.2. Operadores de desplazamiento de bits (>>, <<)

Equivalen a la instrucción SHR ( << ) de los microprocesadores 80x86. Efectúa undesplazamiento a la derecha (>>) o a la izquierda (<<) de n posiciones de los bits del operando, siendo n un número entero. El número de bits desplazados depende del valor a la derecha del operador. Los formatos de los operadores de desplazamiento son:
( >>) y SHL
1. valor << numero-de-bi ts;
2. valor >> numero-de-bits;
El valor puede ser una variable entera o carácter, o una constante. El número-de-hits determinacuántos bits se desplazarán. La Figura 4.2 muestra lo que sucede cuando el número 29 (binarioO001 1101) se desplaza a la izquierda tres bits con un desplazamiento a la izquierda bit a bit (<<).

4.7.3. Operadores de direcciones

Son operadores que permiten manipular las direcciones de las variables y registros en general:
*expresión
&valorpi (lvalue)
registro.
miembropuntero-hacia-registro -> miembro

4.8. OPERADOR CONDICIONAL

El operador condicional, ? : , es un operador ternario que devuelve un resultado cuyo valor depende de la condición comprobada. Tiene asociatividad a derechas (derecha a izquierda).
Al ser un operador ternario requiere tres operandos. El operador condicional se utiliza parareemplazar a la sentencia i f -e 1 se lógica en algunas situaciones. El formato del operador condicional es:expresion-c ? expresion-v : expresion-f;Se evalúa expresion-c y su valor (cero = falso, distinto de cero = verdadero) determina cuál esla expresión a ejecutar; si la condición es verdadera se ejecuta expresion-v y si es falsa se ejecutaexpres i on- f.
La Figura 4.3 muestra el funcionamiento del operador condicional.

4.9. OPERADOR COMA

El operador coma permite combinar dos o más expresiones separadas por comas en una sola línea. Se evalúa primero la expresión de la izquierda y luego las restantes expresiones de izquierda a derecha. La expresión más a la derecha determina el resultado global. El uso del operador coma es como sigue:expresión , expresión , expresión , . . . , expresiónCada expresión se evalúa comenzando desde la izquierda y continuando hacia la derecha. Porejemplo, en
int i = 10, j = 25;
dado que el operador coma se asocia de izquierda a derecha, la primera variable está declarada einicializada antes que la segunda variable j . Otros ejemplos son:
i++, j++ ; equivale u
i++, j++, k++ ; equivale a
i++; j++;
i++; j++; k++;
El operador coma tiene la menor prioridad de todos los operadores C, y se asocia de izquierdaa derecha.
El resultado de la expresión global se determina por el valor de expresión,,. Por ejemplo,
int i, j, resultado;
resultado = j = 10, i = j, ++i;
El valor de esta expresión y valor asignado a resultado es 11. En primer lugar, a j se asigna el
La técnica del operador coma permite operaciones interesantesi = 1 0 ;
j = (i = 12, i + 8 ) ;Cuando se ejecute la sección de código anterior, j vale 2 O, ya que i vale 1 O en la primera sentencia, valor 1 o, a continuación a i se asigna el valor de j . Por último, i se incrementa a 1 1 .en la segunda toma i el valor 12 y al sumar i + 8 resulta 2 O.

4.10. OPERADORES ESPECIALES ( ) [ ]

C admite algunos operadores especiales que sirven para propósitos diferentes. Entre ellos se destacan:() , [ ] .

4.10.1. El operador ( )

El operador ( ) es el operador de llamada a funciones. Sirve para encerrar los argumentos de unafunción, efectuar conversiones explícitas de tipo, indicar en el seno de una declaración que unidentificador corresponde a una función, resolver los conflictos de prioridad entre operadores.

4.10.2. El operador []

Sirve para dimensionar los arrays y designar un elemento de un array.
Ejemplos de ello:
double v[201; / * define un array de 20 elementos * /printf ("v[2] = %e",v[21); / * escribe el elemento 2 de v * /return vli-INFERIOR]; / * devuelve el elemento i-INFERIOR * /

4.11. EL OPERADOR SIZEOF

Con frecuencia su programa necesita conocer el tamaño en bytes de un tipo de dato o variable. Cproporciona el operador s i zeo f , que toma un argumento, bien un tipo de dato o bien el nombre de una variable (escalar, array, registro, etc.). El formato del operador essizeof (nombre-variabl e)s i z eo f ( t ipo-da t o )sizeof(expresión)

lunes, 30 de marzo de 2009

CUESTIONARIO DEL CAPITULO 4. (pag. 140 - 167)

MARZO 30, 2009.

1. Defina los siguientes conceptos y proporcione al menos tres ejemplos:

* operadores aritmeticos.
* operadores logicos.
* operadores relacionales.

2. Que son las reglas de prioridad y asociatividad?

3. Proporcione un ejemplo de cada tipo de operador de asignacion que existe y descriva su funcion.

4. Explique que son los operadores de incremento y decremento, proporcione dos ejemplos de cada uno y sus funcion.

5. Liste los operadores relacionales, proporcione un ejemplo y sus funcion.

6. Construya las tablas de verdad de las operaciones and y or.

7. Que es un operador de direccion. Cuales existen y explique su funcionamiento.

8. Proporcione tres ejemplos de operadores condicionales y su funcion.

9. Proporcione dos ejemplos que utilicen el operadoe coma (,) y explique su funciom.

10. Explique la funcion del operador corchetes ([]) y proporcione dos ejemplos.

11. A que se refiere la convercion de tipos.

12. Liste los operadores con mayor grado de prioridad (al menos cuatro niveles).

viernes, 27 de marzo de 2009

PROBLEMAS DE EXAMEN.

MARZO 27, 2009

#include i
nt main()
{

printf("* * * * * * * * * * * *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* * * * * * * * * * * *\n");
return 0;
}


#include
int main()
{

printf("* * * * * * * * * * * *\n");
printf("* *\n");
printf("* ¡GOOOL! *\n");
printf("* *\n");
printf("* *\n");
printf("* * * * * * * * * * * *\n");
return 0;
}


#include
int main ()
{
int i;
i=5;
i*=2;
printf("ahora el valor es: %d\n",i);
}


#include
int main()
{
int A;
A=5;
printf("La anchura es igual a: %d\n",A);
int L;
L=10;
A=A*L;
printf("Ahora el valor es: %d\n",A);
}

#include
int main()
{
int F;
F=5;
printf("Los grados en Farenheit es igual a: %d\n",F);
int c;
F=c*9/5 + 32;
printf("Ahora el valor en centigrados es: %d\n",F);
}

jueves, 19 de marzo de 2009

EJERCICIO CAPITULO 4.

MARZO 19, 2009.

#include
int main ()
{
int i;
i=5;
printf("el valor de i= %d\n",i);
i*=10;
printf("ahora el valor es: %d\n",i);
}

miércoles, 11 de marzo de 2009

EJERCICIOS.

MARZO 11, 2009.

3.5
#include stdio.h
int main ()

{
char primero, ultimo;
printf ("Introdusca su primera y ultima inicial:");
scanf ("%c %c", &primero,&ultimo);
printf ("Hola, %c . %c . \n",primero,ultimo);
return 0;
}


3.6
#include stdio.h
#define T "Tambor de hojalata."
int main ()
{
char st[21]="Todo puede hacerse.";
puts(T);
puts("Permiso para salir en la foto.");
puts(st);
puts(&st[8]);
return 0;
}

lunes, 9 de marzo de 2009

EJERCICIOS CAPITULO 3.

MARZO 09, 2009.

#include stdio.h
#include string.h
int main()
{
char mensaje[20];
strcpy (mensaje, "atapuerta\n");
printf(mensaje);
return 0;
}


#include stdio.h
int main ()
{
int x, y1;x = 75;
y1 = 89;
if (x > 10);
{
int y2 = 50;
y1 = y1+y2;
}
printf("x = %d, y1 = %d\n", x,y1);
return 0;
}


#include stdio.h
int main()
{
char sonidos = '\a';
char bs = '\b';
printf ("%c%c", sonidos, sonidos);
printf ("ZZ");
printf ("%c%c",bs,bs);
return 0;
}













































































































DIBUJO CON CARACTERES.

MARZO 09, 2009.
#include
int main()
{
printf("_¶¶¶_____¶___________¶¶________¶¶_______¶¶_\n");
printf("¶¶¶¶___¶¶¶___¶¶¶¶¶___¶¶_______¶¶¶¶_____¶¶¶_\n");
printf("¶¶¶¶___¶¶¶__¶¶¶_¶¶¶__¶¶______¶¶¶¶¶_____¶¶¶_\n");
printf("¶¶¶¶__¶¶¶¶_¶¶¶___¶¶¶_¶¶______¶¶¶¶¶_____¶¶¶_\n");
printf("¶¶¶¶__¶¶¶¶_¶¶¶____¶¶_¶¶______¶¶_¶¶¶____¶¶__\n");
printf("¶¶¶¶__¶¶¶¶_¶¶_____¶¶_¶¶_____¶¶¶_¶¶¶___¶¶¶__\n");
printf("¶¶¶¶¶¶¶¶¶¶_¶¶_____¶¶_¶¶_____¶¶¶_¶¶¶___¶¶¶__\n");
printf("¶¶¶¶¶¶¶¶¶¶_¶¶¶____¶¶_¶¶____¶¶¶¶¶¶¶¶¶__¶¶___\n");
printf("¶¶¶¶__¶¶¶¶_¶¶¶____¶¶_¶¶____¶¶¶___¶¶¶_______\n");
printf("¶¶¶¶__¶¶¶¶__¶¶¶__¶¶¶_¶¶¶¶¶¶¶¶____¶¶¶__¶¶___\n");
printf("¶¶¶¶__¶¶¶¶___¶¶¶¶¶¶__¶¶¶¶¶¶¶¶_____¶¶_¶¶¶___\n");
printf("¶¶¶¶___¶¶¶____¶¶¶________¶¶¶_______\n");

return 0;
}

EJERCICIOS DEL CAPITULO 3.

MARZO 06, 2009.

EJERCICIOS 3.1, 3.2, 3.3, 3.4 Y 3.5.

#include
int main ()
{
char pax[] = "Juan Sin Miedo";
printf ("%s %s\n",pax,&pax[4]);
puts (pax);
puts(&pax[4]);
return 0;
}


#include
int main ()
{
printf("Jesus Manuel Arellanes Cordova\n");
printf("Av. Zaragoza y 46\n");
return 0;
}


#include i
nt main ()
{
printf("Terminó el sueño de la Champions League para los equipos italianos.\n");
printf("Inter, Juventus y Roma fueron eliminados en los 8vos de final por clubes\n");
printf("ingleses.\n");
return 0;
}


#include
void main()
{
printf("El lenguaje de programacion C");
}


#include
int main ()
{
printf("****\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("****\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("****\n");
return 0;
}

























































#include
void main()
{
printf("Una vez creado un programa en C, se debe ejecutar.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::");

}

TAREA.

MARZO 03, 2009.


leer desde la pagina 100-120 en adelante
mensaje de error pagina 109
identificadores pagina 112
palabras reservadas pagina 112
comentarios pagina 113 (toda la pagina 113)
tipos de datos pagina 114
tabla de la pagina 120

viernes, 27 de febrero de 2009

ej 002.

FEBRERO 27, 2009.

Realizar un programa que despliegue los siguientes datos; cada dato en una linea diferente y a doble espacio:

* nombre
* direccion
* telefono
* escuela
* carrera
* colonia

# include
main ()

{
printf ("Soy Manuel Arellanes\n\n");
printf ("Mi direccion es Zaragoza y 46\n\n");
printf ("Mi telefono es 6538491536\n\n");
printf ("Estudio en CESUES\n\n");
printf ("Ingenieria Industrial\n\n");

return 0;
}

NOTA: \n\n es para hacer doble espacio.

jueves, 26 de febrero de 2009

ej 001.cpp

FEBRERO 26, 2009.

# include
main ()

{

printf ("Hola ");
printf ("soy Manuel Arellanes ");
printf ("Estudio Programacion ");

return 0;
}

Programa modificado con \n; que sirve para saltar un espacio hacia abajo.

# include
main ()

{

printf ("Hola\n");
printf ("Soy Manuel Arellanes\n");
printf ("Estudio Programacion\n");

return 0;
}

lunes, 23 de febrero de 2009

RESUMEN DEL CAPITULO 3.1 - 3.5

FEBRERO 21, DEL 2009.

3. LENGUAJE C: ELEMENTOS BASICOS.

3.1 ESTRUCTURA GENERAL DE UN PROGRAMA EN C.

Un programa en C se compone de una o mas funciones. Una de las funciones debe ser obligatoriamente main. una funcion en C es un grupo de instrucciones que realiza una o mas acciones. Asimismo, un programa contendra una serie de directivas #include que permitiran incluir en el mismo archivos de cabecera que a su vez constaran de funciones y datos predefinidos en ellos.

De un modo mas explicito, un programa C puede incluir:

* Directivas de preprocesador;
* Declaraciones globales;
* La funcion main ( ); int main ( )
* Funciones definidas por el usuario;
* Comentarios del programa

Advertencia

* El programa mas corto del C es el <> que no hace nada.
* La sentencia return o; no es obligatoria en la mayoria 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 (funcion) principal del programa.Las directivas son instrucciones el compilador. Las directivas no son generalmente sentencias -observese que su linea no termina en punto y coma-, sino intrucciones 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 inclusion de archivos de cabecera.

Existen archivos de cabecera estandar que se utilan 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 continuacion de ella y su contenido lo inserte en la posicion donde se encuentra dicha directiva. Estos archivos se denominan archivos de cabecera o archivos de inclusion.

Los archivos de cabecera (archivos con extension .h contienen codigo fuente C) se situan en un programa C mediante la directiva de preprocesador #include con una intrucion 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 asi declaradas son comunes a todas las funciones de su programa. Las declaraciones globales se situan antes de la funcion main (). Si se declara global una variable grado_clase del tipo int grado_clase; cualquier funcion 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 ademas de declaraciones de funcion. Las declaraciones de funcion se denominan prototipos int media (int a, int b).

3.1.3. FUNCION MAIN ()

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

La sentencia incluida entre las llaves { . . . } se denominan bloque. Un programa debe de tener solo una funcion main (). Si se intenta hacer dos funciones main () se produce un error ademas de la funcion main (), un programa C consta de una coleccion de funciones.

Una funcion C es un subprograma que devuelve un unico valor, un conjunto de valores o realiza alguna tarea especifica tal como E/S.

En un programa corto, el programa completo puede incluirse totalmente en la funcion main (). Un programa largo, sin embargo, tiene demasiados codigos para incluirlos en esta funcion. La funcion main() en un programa largo consta practicamnte de llamadas a las funciones definidas por el usuario. El programa siguiente se compone de tres funciones: obtenerdatos () , alfabetizar () y verpalabras () que invocan sucesivamente.

3.1.4. FUNCIONES DEFINIDAS POR EL USUARIO

Un programa C es una coleccion de funciones. Todos los programas se construyen apartir de una o mas funciones que se integran para crear una aplicacion. Todas las funciones contienen una o mas sentencias C se crean generalmente para realizar una unica tarea, como imprimir la pantalla, escribir un archivo o cambiar el color de la pantalla. Se pueden declarar y ejecutar un numero de funciones casi ilimitado en un programa C.

Las funciones definidas por el usuario se invocan por su nombre y los parametros opcionales que puedan tener. Despues de que la funcion es llamada, el codigo asociado con la funcion se ejecuta y, acontinuacion, se retorna a la funcion llamadora.

Todas las funciones tienen nombre y reciben una lista de valores. Se pueden asignar cualquier nombre a su funcion, pero normalmente se procura que dicho nombre describa el proposito de la funcion. En C, las funciones requieren una declaracion o prototipo en el programa:

void trazarcurva ( );

Una declaracion de funcion indica al compilador el nombre de la funcion por el que esta sera invocada en el programa. Si la funcion no se define, el compilador informa de un error. La palabra reservada void significa que la funcion nom devuelve un valor.
void contarvocales ( char caracter ).

3.1.5. COMENTARIOS

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

3.2 CREACION DE UN PROGRAMA.

Una vez creado un programa en C, 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 archivoconstituye el código fuente de un programa.

* Compilar el código fuente. Se traduce el código fuente en un codigo objeto (extensión . ob j ) (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, como es el caso de stdi0.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. Definición 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 EJECUCION DE UN PROGRAMA EN C.

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

#include
int main()
{printf ("Longitud de circunferencia de radio 5: %f" ,2*3.1416*5) ;return 0;
}

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, 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 acódigo máquina (entendible por la computadora). El programa que realiza esta traducción se llama cornpilador. 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.

El archivo objeto contiene sólo la traducción del código fuente. Esto no es suficiente para ejecutarrealmente el programa. Es necesario incluir los archivos de biblioteca (por ejemplo, en el programa area. c , s t d i o . 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 a 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 a punto de un 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 secomprueban mensajes de errores. Se retorna al editor y se fijan los errores de sintaxis. Cuando elcompilador tiene éxito, el enlazador construye el archivo ejecutable. Se ejecuta el archivo ejecutable. Sise 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 codigo 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 DEPURACION 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 fácil, siendola 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 lasmás frecuentes son:

1. Violación (no cumplimiento) de las reglas gramaticales del lenguaje de alto nivel en el que se
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 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 compilador. 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 mensuje 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 ma i n ( ) .
* 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 no se traducirá completamente y el programa no seejecutará. 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 LOGICOS

Un segundo tipo de error importante es el error lógico, ya que tal error representa errores delprogramador 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

double peso = densidad * 5.25 * PI * pow(longitud,5)/4.0

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 cornpilador 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) 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 total-grados-centigrados = fahrenheit-a-centigrddos * temperatura-cen;
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 errores 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 REGRESION

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 comunes, 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 modificadon.

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, porerrores 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.4.5. ERRORES EN TIEMPO DE EJECUCION

Existen dos tipos de errores en tiempo de ejecución: aquellos que son detectados por el sistema en tiempo de ejecución de C y aquellos que permiten la terminación del programa pero producen resultados incorrectos.

Un error en tiempo de ejecución puede ocurrir como resultado de que el programa obliga a lacomputadora a realizar una operación ilegal, tal como dividir un número por cero, raíz cuadrada de un número negativo o manipular datos no válidos o no definidos. Cuando ocurre este tipo de error, la computadora detendrá la ejecución de su programa y emitirá (visualizará) un mensaje de diagnóstico tal como:

Divide error, line number * * *

Si se intenta manipular datos no válidos o indefinidos su salida puede contener resultados extraños. Por ejemplo, se puede producir un desbordumiento aritmético cuando un programa intenta almacenar un número que es mayor que el tamaño máximo que puede manipular su computadora.

El programa depurar. c se compila con éxito; pero no contiene ninguna sentencia que asigne unvalor a la variable x que pueda sumarse a y para producir un valor z, por lo tanto al ejecutarse lasentencia de asignación z = x + y ; se produce un error en tiempo de ejecución, un error de lógica.

* /
prueba de errores en tiempo de ejecución
*/
#include

void main ()
{
/ * Variables locales * /

float x, y, z;
y = 10.0
z = x + y; / * valor inesperado: error de ejecución * /

printf("E1 valor de z es = %f\n",z);

}

El programa anterior, sin embargo, podría terminar su ejecución, aunque produciría resultadosincorrectos. Dado que no se asigna ningún valor a x, contendrá un valor impredecible y el resultado de la suma será también impredecible. Muchos compiladores inicializan las variables automáticamente a cero, haciendo en este caso más difícil de detectar la omisión, sobre todo cuando el programa se transfiere a otro compilador que no asigna ningún valor definido.

Otra fuente de errores en tiempo de ejecución se suele producir por errores en la entrada de datos producidos por la lectura del dato incorrecto en una variable de entrada.

3.5 PRUEVAS.

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án 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 laejecució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 demuestra y comprobar la salida verificando su exactitud. Esta prueba (testing) se debe hacer varias veces utilizando diferentes entradas, preparadas - e n el caso ideal-, por personas diferentes al programador, que puedan indicar suposiciones no evidentes en la elección de los datos de 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 de 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 seconvierte en un problema de dificultad cada vez más creciente. No importa cuantas pruebas se hagan:<>.

miércoles, 11 de febrero de 2009

GUIA PARA EL EXAMEN.

FEBRERO 11, 2009.

1. CONCEPTO DE ALGORITMO:

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


2. 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.


3.COMPLILADOR:

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


4. INTERPRETE:

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


5. DISPOSITIVOS DE ALMACENAMIENTO:

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


6. HARDWARE:

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


7. SOFTWARE:

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


8. LENGUAJE MAQUINA:

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


9. LENGUAJE ENSAMBLADOR:


10. LENGUAJE DE PROGRAMACION:

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


11. 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.


12. ELEMENTOS DEL DIAGRAMA DE FLUJO O SIMBOLOS:

13. PSEUDOCODIGO:
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.
14. VARIABLES:
Puede ser un numero que esta cambiando constantemente.
15. CONSTANTES:
Es un valor de tipo permanente, que no puede modificarse, al menos no dentro del contexto o situación para el cual está previsto. Suele relacionarse y usarse en combinación con las variables, que si admiten modificación en sus valores.
16. DIAGRAMA N-S:
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.

ALGORITMO DE CUATRO NUMEROS.

FEBRERO 10, 2009.

DIAGRAMA DE TRES NUMEROS.

FEBRERO 10, 2009.

Dado 3 numeros, determinar si la suma de cualquier pareja de ellos es igual al tercer numero. si se cumple esta condicion, escribir "iguales" y en caso contrario "distintos".


martes, 10 de febrero de 2009

DIAGRAMA DE 2 CONDICIONES.

FEBRERO 09, 2009.

Realizar diagrama que calcule el valor de x1 y x2 basado en una ecuacion cuadratica de 2do. grado, si la raiz es negativa mandar mensaje que no se puede "delta es negativo y no es posible calcular raiz cuadratica" y si la raiz es cero imprimir "x1 es igual a x2" ya que seria el mismo valor.























SOLUCION DEL MAESTRO:


















lunes, 9 de febrero de 2009

TAREA

FEBRERO 07, 2009.

Realizar algoritmo que calcule el valor de x1 y x2 basado en una ecuacion cuadratica de 2do. grado y la formula general.

  1. Inicio

  2. Leer a, b, c.

  3. calcular: x1= [-b+√[a^2-(4*a*c)]]/2*a x2= [-b-√[a^2-(4*a*c)]]/2*a

  4. imprimir x1, x2

  5. si x1 o x2 es negativo imprimir "no es posible calcular delta por que es negativo"

  6. si x1 o x2 es positivo pasar a paso 7

  7. fin
FEBRERO 09, 2009.

SOLUCION DEL MAESTRO:


viernes, 6 de febrero de 2009

EJERCICIO.

FEBRERO 06, 2009.




Relaizar un algoritmo que lea la edad en meses de una persona y determine (imprime puede votar o no puede votar) si puede votar o no puede votar.






  1. inicio


  2. leer meses


  3. si meses ≥ 216 hacer paso 4 si no paso 6


  4. imprimir "si puede votar"


  5. saltar al paso 7


  6. imprimir "no puede votar"


  7. fin


jueves, 5 de febrero de 2009

TAREA.

FEBRERO 05, 2009.

Realizar un algoritmo que calcule el valor de x1 y x2 basado en una ecuacion cuadratica de 2do grado y la formula general.

ax² + bx + c = 0

X1 = -b +√ b² - 4ac / 2a

X2 = -b -√ b² - 4ac / 2a

inicio
leer a,b,c
calcular X1 = -b +√ b^² - 4*a*c / 2*a
X2 = -b -√ b^² - 4*a*c / 2*a
imprimir X1,X2
fin

viernes, 30 de enero de 2009

RESUMEN DEL CAPITULO 2.

ENERO 30, 2009

Pseudo código.

El pseudo código es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final relativamente fácil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificación de algoritmos. El pseudo código nacio como un lenguaje similar al ingles y era un medio de representar básicamente las estructuras de control de programacion estructurada. El pseudo código tiene que traducirse posteriormente a un lenguaje de programacion y no puede ser ejecutado por una computadora. La ventaja es que en su uso, en la planificacion de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especifico otra ventaja es que puede ser traducido fácilmente a lenguajes como Pascal, C, FORTRAN 77/90, C++, Java, C#, etc.

Utiliza para representar las acciones sucesivas palabras reservadas en ingles-similares a sus homónimas en los lenguajes de programacion-, tales como start, end, stop, if then-else, while-end, repeat-until, etc.
ejemplo:
start
//calculo de impuesto y salarios
read nombre, horas, precio_hora
tasas- 0,25 * salario_bruto - tasas
write nombre, salario _ bruto, tasas, salario _ neto
end .

Diagrama de Flujo.

Un diagrama de flujo (flowchar) es una representación gráfica de un algoritmo. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ansi), y los más frecuentemente empleados se muestran a continuación.

Representación Grafica de Algoritmos.

Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programacion elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado grafica o numéricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningún lenguaje de programacion, sino que la descripción pueda servir fácilmente para su transformación en un programa, es decir, su codificación.Los métodos usuales para representar un algoritmo son:

1. diagrama de flujo.
2. diagrama N-S (Nassi- Schneiderman),
3. lenguaje de especificación de algoritmos: pseudo código,
4. lenguaje español, ingles...
5. formulas.

Las formulas para la solución de una ecuación cuadrática (de segundo grado) son un medio sucinto de expresar el procedimiento algorítmico que se debe ejecutar para obtener las raíces de una ecuación que significa lo siguiente:

1. Elevar al cuadrado b.
2. Tomar a; multiplicar por c; multiplicar por 4.
3. Restar el resultado obteniendo de 2 del resultado de 1, etc.

Escritura de Algoritmos.

El sistema para describir (<>) un algoritmo consiste en realizar una descripción paso a paso con un lenguaje natural del citado algoritmo. Un algoritmo es un método o conjunto de reglas para solucionar un problema. En cálculos elementales estas reglas tienen las siguientes propiedades:

* deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente.
* solo puede ejecutarse una operación a la vez.

El flujo de control usual de un algoritmo es secuencial: consideremos el algoritmo general de modo similar a:

Ir al cine
Comprar una entrada (billete o ticket)
Ver la película
Regresar a casa.

Metodologia de la programacion y desarrollo del software.

La resolución de un problema con una computadora se hace escribiendo un programa, que exige al menos los siguientes pasos:Definición o análisis del problema.Diseño de algoritmo.Transformación del algoritmo en un programa.Ejecución y validación del programa.

Fases en la resolucion de un problema.

Las fases de resolución de un problema con computadora son:
Análisis del problema.
Diseño del algoritmo.
Codificación.
Compilación y ejecución.
Verificación.
DepuraciónMantenimiento.
Documentación.
ciclo de vida de un sistema
Análisis del problema: el problema se analiza teniendo presente las especificaciones del cliente.
Diseño: aquí se diseña la solución que conducirá a un algoritmo que resuelva el problema.
Codificación: la solución se escribe en la sintaxis del lenguaje de alto niel y se obtiene un programa fuente se copila a continuación.
Ejecución, verificación y depuración: el programa se ejecuta, se comprueba y se eliminan los errores denominados bugs.

Analisis del problema.

Esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada.

ALGORITMOS PAGINA 85.

ENERO 30, 2009.

Escribir un algoritmo para:
Sumar dos números enteros
inicio
leer n1,n2
calcular n = n1 + n2
imprime n
fin.

Restar dos números enteros
inicio
leer n1,n2
calcular n = n1 – n2
imprime n
fin.

Multiplicar dos números enteros
inicio
leer n1,n2
calcular n = n1 * n2
imprime n
fin.

Dividir dos números enteros
inicio
leer n1,n2
calcular n = n1 / n2
imprime n
fin.

EJERCICIO 2.1

Diseñar una solución para resolver cada uno de los siguientes problemas y tratar de refinar sus soluciones mediante algoritmos adecuados.

A) realizar una llamada telefónica desde un teléfono público.

inicio
ver donde esta el teléfono
ir hacia le teléfono
tomar el teléfono
insertarle monedas
macar el numero deseado
hablar por teléfono
terminar de hablar
colgar el teléfono
Fin.

B) Cocinar una tortilla

inicio
tomar los cerillos
prender el cerrillo
prender la estufa
poner el comal
calentar una tortilla
darle vuelta
sacar la tortilla
Fin.

C) arreglar un pinchazo de una bicicleta
inicio
tomar la llave
voltear la bicicleta
quitar las tuercas
quitar llanta
parcharla
poner llanta
poner tornillos
voltear bicicleta
Fin.

D) freír un huevo
inicio
prender la estufa y poner le sartén
agarra el huevo y quebrarlo dentro del sartén
revolver
sacarlo
Fin .

jueves, 29 de enero de 2009

ALGORITMO DEL AREA DE UN CIRCULO.

ENERO 29, 2009.

Algoritmo que Calcular el area de un circulo:

1. Inicio
2. Leer "r"
3. Calcular a = π r²
4. Imprimir "area"
5. Fin



miércoles, 28 de enero de 2009

PROGRAMACION MODULAR.

ENERO 28, 2009.

2.2 PROGRAMACION MODULAR:
La programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa. En programación modular el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada uno de estos módulos se analiza, codifican y ponen a punto por separado.Cada programa contiene un módulo denominado programa principal que controla todo lo que sucede; se transfiere el control a submódulos, de modo que ellos puedan ejecutar sus funciones; sin embargo, cada submódulo devuelve el control al módulo principal cuando se haya completado su tarea. Si la tarea asignada a cada submodulo es demasiado compleja, éste deberá romperse en otros módulos más pequeños. El proceso sucesivo de subdivisión de módulos continúa hasta que cada módulo tenga solamente una tarea específica que ejecutar. Esta tarea puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos. Un módulo puede transferir temporalmente (bifurcar) el control a otro módulo; sin embargo, cada modulo debe eventualmente devolver el control al módulo del cual se recibe originalmente el control.


Programacion modular.
Dado que los módulos son independientes, diferentes programadores pueden trabajar simultáneamente en diferentes partes del mismo programa, de ésta manera se reduce gran tiempo de diseño del algoritmo y la codificación, además una modificación radical dentro de un módulo no afectará a los demás.
2.3 PROGRAMACION ESTRUCTURADA:
La Programación Estructurada significa escribir un programa de acuerdo a las siguientes reglas:
1. El programa tiene un diseño modular.
2. Los módulos son diseñados de modo descendente.
3. Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.
La programacion estructurada es el conjunto de tecnicas que incorporan:
* recursos abstractos.
* diseño descendente (top-down).
* estructuras basicas.

lunes, 26 de enero de 2009

Codifocacion de un Programa.

ENERO 26, 2009.

Codificacion:
Es la escritura en un lenguaje de programacion de la representacion del algoritmo desarrollada en las etapas precedentes.

Documentacion interna:
La documentacion de un programa se calsifica en internas y externas. La documentacion interna es la que se incluye dentro del codigo del programa fuente mediante comentarios que ayudan a la comprenncion del codigao.

Compilacion y ejecucion de un programa:
Una ves que el algoritmo se a combertido en eun programa fuente, es preciso introducirlo en memorias mediante el teclado y almacenarlo posteriormente en un disco. Esta oparacion se realiza con un programa editor. Posteriormente el programa fuente se convierte en un archivo de programa que se guarda en un disco.
El programa fuente debe ser traducido a lenguaje maquina, este proceso se realiza con el complilador y el sistema operativo que se encarga practicamente de la compilacion.

Verificacion y depuracion de un programa:
Es el proceso de ejecucion del programa con una ampliavariedad de datosde entrada, llamados datosde test o prueba, que determina si el programa tiene errores.

La depuracion es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores. Cuando se ejecuta un programa, se pueden producir tres tipos de errores:

1. Errores de compilacion. se producen normalmente por uso incorrecto de las reglas de lenguaje de programacion y suelen ser errores de sintaxis.

2. Errores de ejecucion. Estos errores se prodecen por instrucciones que las computadoras pueden comprender pero no ejecutar.

3. Errores logicos. Se producen en la logica del programa y fuente del error suele ser el diseño del algoritmo. Estos errores son los mas dificiles de detectar, ya que el programa puede funcionar y no producir errores de copilacion ni de ejecucion, y solo puede advertirse el error por obtencion de resultados incorrectos.

Algoritmo de un triangulo.

ENERO 25, 2009.


Realizar un algoritmo que calcule el área de un rectángulo dada la base y la altura de acuerdo a la formula a = b*h.

Algoritmo

Inicio
Declare opción, base, altura, área
Leer opción
Seleccionar opción
Declare área, altura, base
Leer base, altura
área: base*altura
Imprimir área
Caso contrario
Imprimir "FIN SI”
Fin

viernes, 23 de enero de 2009

Diseño de Algoritmo.

ENERO 23, 2009.

TERMINAL:
Marcar el inicio y el fin del diagrama.

ENTRADA/SALIDA:
Introduce datos al proceso o solucion (programa).

DESICION; SI NO:
Cambia el flujo del algoritmo de acuerdo a una evaluacion logica.

PROCESO:
Involucra cualquier proceso, calculo o computo. Por ejemplo "calculo a = b*n"

SALIDA:
Envia la informacion al dispositivo de salida estandar. Normalmente el monitor.

jueves, 22 de enero de 2009

Diagrama Nissi-Schneiderman.

ENERO 22, 2009.

DIAGRAMAS DE NASSI - SCHNEIDERMAN

Definición:
El diagrama N-S o también conocido como diagrama de Chapin es una técnica de especificación de algoritmos que combina la descripción textual, propia del pseudocódigo, con la representación gráfica del diagrama de flujo.
El diagrama N-S cuenta con un conjunto limitado de símbolos para representar los pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigüedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras reservadas más utilizadas son:
Inicio Fin Leer Escribir
Mientras Repita Hasta Para
Incrementar Decrementar Hacer Función
Entero Real Caracter Cadena
Lógico Retornar
Los símbolos utilizados en el diagrama de Chapin son corresponden a cada tipo de estructura. Dado que se tienen tres tipos de estructuras, se utilizan tres símbolos. Esto hace que los procesos del algoritmo sean más fáciles de representar y de interpretar.

http://www.monografias.com/trabajos19/algoritmos/algoritmos.shtml

miércoles, 21 de enero de 2009

Capitulo 2.

Enero 21, 2009.

Introduccion:

1. Definicion o analisis del programa.
2. Diseño del algoritmo.
3. Transformacion del algoritmo en un programa.
4. Ejecucion y validacion del programa.

Conceptos Clabe:

1. Algoritmo.
2. Ciclo de Vida.
3. Diagrama Nassi Schneiderman.
4. Diagramas de Flujo.
5. Diseño.

2.1. FASES EN LA RESOLUCION DE PROBLEMAS.

Las fases de resolucion de un problema con computadora son:

* Analisis del problema.
* Diseño del algoritmo.
* Compilacion y ejecucion.
* Verificacion.
* Depuracion.
* Codificacion.

Construyendo un ciclo de vida del software y sus caracteristicas mas sobresalientes son:

- Analisis.
- Diseño.
- Codificacion.
- Ejecucion.
- Mantenimiento.
- Documentacion.

Algoritmo: es un metodo para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

Caracteristicas de un algoritmo:
a) preciso (indica el orden de realizacion en cada paso),
b) definido (si se sigue dos veces, obtiene el mismo resultado cada vez),
c) finito (tiene fin; un numero determinado de pasos).

Un algoritmo debe producir un resultado en un tiempo finito. Los algoritmos se pueden expresar por formulas, diagramas de flujo o N-S y pseudocodigos.

Heuristica: Se denomina heurística a la capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines. La capacidad heurística es un rasgo característico de los humanos, desde cuyo punto de vista puede describirse como el arte y la ciencia del descubrimiento y de la invención o de resolver problemas mediante la creatividad y el pensamiento lateral o pensamiento divergente.

lunes, 19 de enero de 2009

Conceptos Basicos de C.

ENERO 19, 2009.

  1. Concepto de Lenguaje de Programacion. (4 lineas)
  2. Clasificacion de los Lenguajes de Programacion. (12 lineas)
  3. Paradigmas de Programacion. (6 lineas)
  4. Historia del Lenguaje C. (12 lineas)
  5. Los Herederos (C++, Java, C#). (8 lineas)

1. Sirven para escribir programas que permitan la comunicacion usuario/maquina. Los programas de las computadoras modernas constan de secuencias de instrucciones que se codifican como secuencias de digitos numericos que podran entender dichas computadoras.

2. Lenguaje Maquina: se conoce como sistema de codificacion, que es un lenguaje nativo de programacion. Las instrucciones en lenguaje maquina dependeran de cada computadora y debido a la dificultad de su escritura, los investigadores de la epoca simplificaron el procesos de programacion desarrollando sistemas de notacion en los cuales las instrucciones se representaban en formatos nemonicos (nemotecnicos).

Lenguaje de Bajo Nivel (ensambladores): son programas que traducen otros programas escritos en codigo nemotecnico en instrucciones numericas en leguaje maquina que son compatibles y legibles por la maquina. Estos programas de traduccion se llaman ensambladores porqre su tarea es ensamlar las instrucciones reales de la maquina con los nemotecnicos e identificadores que representan las instrucciones escritas en ensamblador.

Lenguaje de Alto Nivel: En la decada de los 50 y 60 comenzaron a desarrollarse lenguajes de programacion de tercera generacion que diferian de las generaciones anteriores en que sus instrucciones o primitivas eran de alto nivel e independientes de la maquina. Estos lenguajes se llamaron lenguajes de alto nivel.

3. Un paradigma de programacion representa fundamentalmente enfoques diferentes para la construccion de soluciones a problemas y por consiguiente afectan al proceso completo de desarrollo de software. Los paradigmas de programacion clasicos son: procedimental (o imperactivo), funcional, declarativo y orientado a objetos.

4. C es un lenguaje de programacion de proposito general asociado, de modo universal, al sistema operativo UNIX. sin embargo, la oportunidad, eficacia y potencia de C, se ha producido porque este lenguaje no esta practicamente asociado a ningun sistema operativo, ni a ninguna maquina, en especial. Esta es la raon fundamental por la cual C, es conocido como el lenguaje de programacion de sistemas por excelencia.