martes, 21 de abril de 2009

programa de menu y formulas pidiendo 2numeros

23/04/09

Realizar un programa que despliegue un menu como el anterior que lea dos numero enteros y realiza la operacion correspondiente (suma, resta o multiplicacion)

#include
int main ()
{
int opcion;
printf("\n\t\t* * * * * * * * * * * *\n");
printf("\t\t* menu principal *\n");
printf("\t\t* Suma [1] *\n");
printf("\t\t* Resta [2] *\n");
printf("\t\t* Multiplicacion [3] *\n");
printf("\t\t* Salir [0] *\n");
printf("\t\t* * * * * * * * * * * *\n");
printf("\nElige tu opcion:");
scanf("%d", &opcion);
{
int num1, num2;
printf("Introdusca dos numeros separados con un espacio:");
scanf("%d %d" ,&num1, &num2);
printf("\nHOLA, los numeros que eligiste son: %d y %d\n", num1, num2);
{
int R, S, M;
R= num1-num2;
S= num1+num2;
M= num1*num2;
switch (opcion)
{
case 0:
puts("Salir ...");
break;
case 1:
printf("la suma es: %d", S);
break;
case 2:
printf("La Resta es: %d", R);
break;
case 3:
printf("La Multiplicacion es: %d", M);
break;
default:
printf("la opcion disponible es 1, 2, 3 y 0");
}
return 0;
}
return 0;
}
return 0;
}

lunes, 20 de abril de 2009

programa de opciones 0, 1, 2, 3


20/abril/2009


# include

int main ()

{

int opcion;

printf("* * * * * * * * * * * *\n");

printf("* menu principal *\n");

printf("* Suma [1] *\n");

printf("* Resta [2] *\n");

printf("* Multiplicacion [3] *\n");

printf("* Salir [0] *\n");

printf("* * * * * * * * * * * *\n");

printf(" Elige tu opcion: ");

scanf("%d", &opcion);

switch (opcion)

{

case 0: puts("Salir...");

break;

case 1:

puts("Suma...");

break;

case 2: puts("Resta...");

break;

case 3:

puts("Multiplicacion...");

break;

default:

printf("la opcion disponible es 1, 2, 3 y 0");

}

return 0;
}

martes, 14 de abril de 2009

ejercicios de 5.1 a 5.10

14/04/09

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;
else
f = -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;
else
if (b > c) mayor =b;
else mayor =c;
printf("El mayor es %d \n",mayor);
return 0;
}

CAPíTULO 5 ESTRUCTURAS DE SELECCIÓN: SENTENCIAS IF Y SWITCH

14/04/09



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 dos
alternativas 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 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). 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 verdaddera


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 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ó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 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, 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. La sintaxis myltibifurcación anidada es:



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 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 para
implementar menús.
Un menú de un restaurante presenta una lista de alternativas para que un cliente elija entre sus
diferentes 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 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.


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 de
la 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ás
cercana.

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 aprecia
que 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 producir
una expresión lógica falsa, debido u que la mayoría de los números reales no se almacenan
exactamente. Por ejemplo, aunque las expresiones reales siguientes son equivalentes:
a * ( l / a )
1 . 0
son algebraicamente iguales, la expresión
a * ( l / a ) == 1 . 0
puede 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-ion
Si 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í las
localizar 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 etiquetas
case son del mismo tipo (in t , char pero no f 1 o a t ) . Si el selector se evalúa a un valor no
listado 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.

CAPíTULO 4 OPERADORES Y EXPRESIONES

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 el
operador + 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 sentencia
int 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 operadores
aritmé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 los
operadores 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ón
determinada 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 final
17


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 llaman
operadores relacionales y se utilizan en expresiones de la forma:

expresión, operador-re1 aci onal expresión
expresión, y expresión expresiones compatibles C
operador-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 se
utilizan 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 cortocircuito
En C los operandos de la izquierda de && y t I se evalúan siempre en primer lugar; si el valor del
operando 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, y
no 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 un
desplazamiento 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 determina
cuántos bits se desplazarán. La Figura 4.2 muestra lo que sucede cuando el número 29 (binario
O001 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.miembro
puntero-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 para
reemplazar 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 es
la expresión a ejecutar; si la condición es verdadera se ejecuta expresion-v y si es falsa se ejecuta
expres 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ón
Cada expresión se evalúa comenzando desde la izquierda y continuando hacia la derecha. Por
ejemplo, en
int i = 10, j = 25;
dado que el operador coma se asocia de izquierda a derecha, la primera variable está declarada e
inicializada 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 izquierda
a 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 interesantes
i = 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 una
función, efectuar conversiones explícitas de tipo, indicar en el seno de una declaración que un
identificador 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. C
proporciona 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 es
sizeof (nombre-variabl e)
s i z eo f ( t ipo-da t o )
sizeof(expresión)

lunes, 30 de marzo de 2009

Cuestionario pag. 140-167

30/03/2009


1.- Defina los siguientes conceptos y proporcionen al menos 3 ejemplos:
  • Operadores Aritmeticos
  • Operadores Logicos
  • Operadores Relacionales

2.- Que son las reglas de prioridad y asociatividad

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

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

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

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

7.- Que es un operador de direccion. Cuales existen y explique sus funcionamientos

8.- Proporcione 3 ejemplos de operadores condicionales y su funcion

9.- Proporcione dos ejemplos que utilicen el operador (,) y explique su funcion

10.- Explique la funcion ([]) y proporcione dos ejemplos

11.- A que se refiere la convercion de tipos de datos

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

viernes, 27 de marzo de 2009

examen practico

27/03/09

examen practico



jueves, 19 de marzo de 2009

ejemplo 1 declarando una variable

19/03/09

en este ejemplo miramos como podemos simplificar unos comandos como el i=i*10 a i*=10 dando como resultado el mismo en los dos.

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

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

domingo, 8 de marzo de 2009

09/03/09



ejercicio 3.2 y 3.3


este programa imprime la palabra atapuerta y en el siguiente imprime un calculo de x, y


ejercicio 3.6


este programa imprime tambor de hojalata porque es la palabra que se va a definir despues imprime T una ves definida T,

ejercicio 3.5

este programa imprime una pregunta y al dar las variables hace que al poner las primeras dos letras te las imprime



ejercicio 3.4
este programa hace que se escuche un sumbido pero como no habia bocinas no sabemos si fuinciona aun.

viernes, 6 de marzo de 2009

ejercicios del capitulo 3

06/03/09



ejercicios3.1, 3.2, 3.4 y 3.5








#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::");

}

martes, 3 de marzo de 2009

tarea

03/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

ej003

27/02/09

ejercicio sobre hacer un dibujo con caracteres en turbo c++

#include
main()
{
printf("________0000______ ________\n");
printf("______0000________________________\n") ;
printf("____00000_________________________\n");
printf("___00000______ __________________\n");
printf("__000000________________________\n");
printf("_0000000_____________________\n");
printf("_0000000________________________\n");
printf("_0000__00__________________________\n");
printf("_0000__00000000___________________\n");
printf("_000000000000_____________________\n");
printf("__0000000000____________________ 0_\n");
printf("___0000_000000_________ ________00_\n");
printf("____00000_______0____________000__\n");
printf("______000000__00000______000000___\n");
printf("________000000000000000000000_____\n");
printf("__________00000000000000000_______\n");
printf("______________000000000\n");
return 0;
}

ej002

27/02/09

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

  • nombre
  • direccion
  • telefono
  • escuela
  • carrera

#include

main()

{

printf("hola\n\n");

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

printf("Mi direccion es Cjon. Quintana Roo y 23\n\n");

printf("Mi telefono es (653)-536-2709\n\n");

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

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

return 0;

}



jueves, 26 de febrero de 2009

ej001

26/02/2009
hoy es el primer programa ke hicimos y no funciono en el dev c++ solo en el turbo c++


#include
#include
main()
{
printf("hola");
printf("soy gabriel");
printf("estudio programacion");
return 0;
}

como el programa lo pone en una sola linea ahora con la modificacion del \n se ven en lineas separadas

#include
main()
{
printf("hola\n");
printf("soy Gabriel\n") ;
printf("estudio Programacion\n");
return 0;
}

sábado, 21 de febrero de 2009

3.5 PRUEBAS

21/02/09


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 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 - 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 se
convierte en un problema de dificultad cada vez más creciente. No importa cuantas pruebas se hagan:
<>.

3.4 DEPURACION DE UN PROGRAMA EN C

21/02/09


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 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 LOGICOS


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


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, 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.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 la
computadora 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 un
valor a la variable x que pueda sumarse a y para producir un valor z, por lo tanto al ejecutarse la
sentencia 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 resultados
incorrectos. 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.3 EL PROCESO DE EJECUCION DE UN PROGRAMA EN C

21/02/2009

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 a
có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 ejecutar
realmente 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 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. 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.

viernes, 20 de febrero de 2009

3.2.CREACION DE UN PROGRAMA

20/02/09

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 archivo
    constituye 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. El lenguaje C: elementos basicos

20/02/2009

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.



jueves, 19 de febrero de 2009

Tarea

19/02/2009

sintesis del 3-3.5

martes, 10 de febrero de 2009

Diagrama de 4 numeros y diga el mayor




escribir un algoritmo que lea 4 numeros y a continuacion imprima el mayor de los 4




diagrama de 3 numeros

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



Guia de examen

conceptos de:

1.- Algoritmo.
2.- Computadora.
3.- Compilador.
4.- Interprete.
5.- Dispositivo de almacenamiento.
6.- Hardware.
7.- Software.
8.- Lenguaje maquina.
9.- Lenguaje ensamblador.
10.- Lenguaje de programacion.
11.- Lenguaje C.
12.- Elementos de diagrama de flujo.
13.- Seudocodigo.
14.- Variables y constantes.
15.- Diagrama N-S.

lunes, 9 de febrero de 2009

Diagrama de dos condiciones

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

si la raiz es negativa en x1 y x2



domingo, 8 de febrero de 2009

Algoritmo de x1 y x2 con condicion

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*ax2= [-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

√ = raiz

viernes, 6 de febrero de 2009

Algoritmo de la edad en meses

Realizar algoritmo que lea la edad en meses de una persona y determine si puede votar o no. imprime "puede votar" o "no puede votar"

1.- Inicio
2.- Leer m
3.- Si m ≥ 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

Algoritmo para calcular el valor de x1, x2

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

√ = raiz

viernes, 30 de enero de 2009

Resumen del capitulo 2

FASES EN LA RESOLUCION DE PROBLEMAS
Las fases de resolución de un problema con computadoras son:
Análisis del problema
Diseño de algoritmo
Codificación
Compilación y ejecución
Verificación
Depuración
Diseño de un Algoritmo
se determina como hace el programa la tarea solicitada. Los métodos mas eficaces para el proceso de diseño se basa en el conocido DIVIDE Y VENCERAS un problema complejo se soluciona dividiendo en problemas y subproblemas y a la vez estos subproblemas en otros de nivel mas bajo hasta que pueda ser implementada una solución en la computadora.
Codificación de un Programa
es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas presedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programacion utilizado para su implementacion, el codigo puede ser escrito con igual facilidad en un lenguaje o en otro.
Compílacion y ejecucion de un programa
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacion se realiza con un programa editor. Posteriormente el programa fuente se convierte en un archivo de programa que se guarda (graba) en disco.
Verificacion y depuracion de un programa
Es el proceso de ejecución del programa con una aplia variedad de datos de entrada, llamados datos de test o prueba. que determinaran si el programa tiene errores (bugs).La depuracion es el proceso de encontrar 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.
Documentacion y mantenimiento
La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de resolución de dicho problema. La importancia de la documentación debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difíciles de leer, mas difíciles de depurar y casi imposibles de mantener y modificar.La documentación de un programa puede ser interna y externa. la documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigo,
Programacion Modular
La programación modular es uno de los métodos de diseño mas flexible y potente para mejorar la productividad de un programa.. Cada uno de estos módulos se analiza, codifica y pone a punto por separado.
Programación Estructurada
Significa escribir un programa de acuerdo a las siguientes reglas:
El programa tiene un diseño modular.
Los módulos son diseñados de modo descendente.
Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección repetición.
Concepto y características del Algoritmo
El objetivo fundamental es enseñar a resolver problemas mediante una computadora.
Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un numero finito de pasos.
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.
Representación Grafica de Algoritmos
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Para conseguir este objetivo se precisa que el algoritmo sea representado grafica o numéricamente, 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: pseudocódigo,4. lenguaje español, ingles...5. Formulas
Pseudocódigo
El pseudocodigo es un lenguaje de especificación (descripcion) de algoritmos. El uso de tal lenguaje hace el paso de codificación final relativamente facil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificacion de algoritmos.
Diagrama de flujo
Un diagrama de flujo (flowchart) es una de las tecnicas de representacion de algoritmos mas antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo, desde la aparicion de lenguajes de programacion estructurados. un diagrama de flujo es un diagrama que utiliza los simbolos (cajas) estandar y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas, denominadas lineas de flujo, que indican la secuencia en que se debe ejecutar.
Diagramas Nessi Schneiderman (Tarea)
diagrama N-S o también conocido como diagrama de Chapin es una técnica de especificación de algoritmos que combina la descripcion textual, propia del pseudocódigo, con la representación gráfica del diagrama de flujo. Es una representación gráfica de un algoritmo para programación estructurada. Desarrollados en 1972 por Isaac Nassi y Ben Shneiderman, estos diagramas también son conocidos como estructogramas debido a que muestran las estructuras de un programa.
Métodos Formales de verificaciones de programas.
Aunque la verificacion formal se sale fuera del ambito, por su importancia se van a tomar dos conceptos clave, asertos (afirmaciones) y precondiciones/postcondiciones invariantes que ayudan a documentar, corregir y clarificar el diseño de modulos y de programas.
Aserciones
Un aserto es una frase sobre una condicion especifica en un cierto punto de un algoritmo o programa.
Precondiciones y postcondiciones
Son afirmaciones sencillas sobre condiciones al principio y al final de los módulos. Una precondicion de un procedimiento es una afirmación lógica sobre sus parámetros de entrada. Una postcondicion de un procedimiento puede ser una afirmación lógica que describe el cambio en el estado del programa producido por la ejecución del procedimiento.

Métodos Formales de verificaciones de programas.

Aunque la verificacion formal se sale fuera del ambito, por su importancia se van a tomar dos conceptos clave, asertos (afirmaciones) y precondiciones/postcondiciones invariantes que ayudan a documentar, corregir y clarificar el diseño de modulos y de programas.

Aserciones
Una parte importante de una verificacion formal es la documentacion de un programa a traves de asertos o afirmaciones-sentencias logicas acerca del programa que se declaran <>-. Un aserto se escribe como un comentario y describe lo que se supone sea verdadero sobre las variables del programa en ese punto.
Un aserto es una frase sobre una condicion especifica en un cierto punto de un algoritmo o programa.

Precondiciones y postcondiciones
Son afirmaciones sencillas sobre condiciones al principio y al final de los modulos. Una precondicion de un procedimiento es una afirmacion logica sobre sus parametros de entrada; se supone que es verdadera cuando se llama al procedimiento. una postcondicion de un procedimiento puede ser una afirmacion logica que describe el cambio en el estado del programa producido por la ejecucion del procedimiento; la postcondicion describe el efecto de llamar al procedimiento. En otras palabras, la postcondicion indica que sera verdadera despues de que se ejecute el procedimiento.

Diagrama de flujo

Un diagrama de flujo (flowchart) es una de las tecnicas de representacion de algoritmos mas antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo, desde la aparicion de lenguajes de programacion estructurados. un diagrama de flujo es un diagrama que utiliza los simbolos (cajas) estandar y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas, denominadas lineas de flujo, que indican la secuencia en que se debe ejecutar.

Algunos simbolos utilizados en el diagrama; sin embargo, los simbolos mas utilizados representan



  • proceso

  • fin

  • decision

  • entrada/salida

  • conectores

  • direccion del flujo

Pseudocódigo

El pseudocodigo es un lenguaje de especificacion (descripcion) de algoritmos. El uso de tal lenguaje hace el paso de codificacion final relativamente facil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificacion de algoritmos.
El pseudocodigo nacio como un lenguaje similar al ingles y era un medio de representar basicamente las estructuras de control de programacion estructurada. El pseudocodigo 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 logica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especifico otra ventaja es que puede ser traducido facilmente 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 homonimas 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

Representación Grafica de Algoritmos

Para representar un algoritmo se debe utilizar algun metodo que permita independizar dicho algoritmo del lenguaje de programacion elegido. Ello permitira que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado grafica o numericamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningun lenguaje de programacion, sino que la descripcion pueda servir facilmente para su transformacion en un programa, es decir, su codificacion.
Los metodos usuales para representar un algoritmo son:

1. diagrama de flujo.
2. diagrama N-S (Nassi- Schneiderman),
3. lenguaje de especificacion de algoritmos: pseudocodigo,
4. lenguaje español, ingles...
5. formulas

Las formulas para la solucion de una ecuacion cuadratica (de segundo grado) son un medio sucinto de expresar el procedimiento algoritmico que se debe ejecutar para obtener las raices de una ecuacion 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 descripcion paso a paso con un lenguaje natural del citado algoritmo. Un algoritmo es un metodo o conjunto de reglas para solucionar un problema. En calculos elementales estas reglas tienen las siguientes propiedades:
  • deben estar seguidas de alguna secuencia definidade pasos hasta que se obtenga un resultado coherente.
  • solo puede ejecutarse una operacion 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 pelicula

regresar a casa

Resumen del capitulo 1

Una computadora es una maquina para procesar información y obtener resultados en función de unos datos de entrada.

Hardware: parte física de una computadora (dispositivos electrónicos).
Software: parte lógica de una computadora (programas)

Las computadoras se componen de:

  • Dispositivos de entrada/salida (E/S)
  • Unidad Central de Proceso (Unidad de Control y Unidad Lógica y Aritmética)
  • Memoria central
  • Dispositivo de almacenamiento masivo de información (memoria auxiliar o externa)

El software del sistema comprende, entre otros, el sistema operativo Windows, Linux, en computadoras personales y los lenguajes de programación. Los lenguajes de programación de alto nivel están diseñados para hacer más fácil la escritura de programas que los lenguajes de bajo nivel. Existen numerosos lenguajes de programación cada uno de los cuales tiene sus propias características y funcionalidades y normalmente son mas fáciles de transportar a maquinas diferentes que los escritos en lenguajes de bajo nivel.

Los programas escritos en lenguajes de alto nivel deben ser traducidos por un compilador antes de que se puedan ejecutar en una maquina especifica. En la mayoría de los lenguajes de programación se requiere un compilador para cada maquina en la que se desea ejecutar a programas escritos en un lenguaje especifico...

Los lenguajes de programación se clasifican en:

  • alto nivel: Pascal, FORTRAN, Visual Basic, C, Ada, Modula-2, C++, Java, Delphi, C#, etc.
  • bajo nivel: Ensamblador.
  • Maquina: Código maquina.
  • diseño de Web: SMGL, HTML, XML, PHP,…

Los programas traductores de lenguaje son:

  • Compiladores
  • Interpretes

C es un lenguaje de programación que contiene excelentes características como lenguaje para aprendizaje de programación y lenguaje profesional de propósito general; básicamente es un entorno de programación con editor y compilador incorporado.

Concepto y características del Algoritmo

El objetivo fundamental es enseñar a resolver problemas mediante una computadora. La metodologia de la programacion es la metodologia necesaria para resolver problemas mediante programas.

Un algoritmos es un metodo para resolver problemas, algoritmo proviene-como se comento anteriormente-de Mohammed al-KhoWarizmi, matematico persa que vivio durante el siglo IX y alcanzo gran reputacion por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir numeros decimales; la traduccion al latin del apellido en la palabra algorismus derivo posteriormente en algoritmo.Los pasos para la resolucion de un problema son:
1. Diseño del algoritmo, que describe la secuencia ordenada de pasos-sin ambiguedades-que conducen a la solucion de un problema dado. (Analisis del problema y desarrollo del algoritmo.)
2. Expresar el algoritmo como un programa en un lenguaje de programacion adecuado. (Fase de codificacion.)
3. Ejecucion y validacion del programa por la computadora.
Caracteristicas de los algoritmos


las caracteristicas fundamentales que debe cumplir todo algoritmo son:

  • Un algoritmo debe ser preciso e indicar el orden de realizacion de cada paso.
  • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algun momento; o sea, debe tener un numero finito de pasos.

La definicion de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendra:

Entrada: ingredientes y utensilios empleados.

Proceso: elaboracion de la receta en la cocina.

Salida: terminacion del plato (por ejemplo, cordero).

jueves, 29 de enero de 2009

Tarea Algoritmos 2.1. y 2.2.

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 el teléfono
  • Tomar el teléfono
  • Insertarle monedas o tarjeta
  • Macar el numero deseado
  • Hablar por teléfono
  • Terminar de hablar
  • Colgar el teléfono
  • Soltar teléfono
  • Fin

b) Cocinar una tortilla.

  • Inicio
  • Tomar los cerillos (no hacerlo en caso de estufa eléctrica)
  • Prender el cerrillo (no hacerlo en caso de estufa eléctrica)
  • Prender la estufa (presionar botón y girar perilla del gas si es eléctrica)
  • Poner el comal sobre la estufa
  • Poner tortilla en el comal
  • Calentar la tortilla sobre el comal
  • Voltear la tortilla
  • Dejar calentar la tortilla sobre el comal
  • Sacar la tortilla
  • Fin

c) Arreglar un pinchazo de una bicicleta.

  • Inicio
  • Voltear la bicicleta
  • Tomar una llave o dado con ratch
  • Quitar las tuercas
  • Quitar llanta
  • Quitar el tubo pinchado del rin
  • Parchar el tubo
  • Poner tubo
  • Poner llanta
  • Volver a colocar las tuercas
  • Voltear la bicicleta
  • Fin

d) Freír un huevo.

  • Inicio
  • Tomar los cerillos (no hacerlo en caso de estufa eléctrica)
  • Prender cerillo (no hacerlo en caso de estufa eléctrica)
  • Prender la estufa (presionar botón y girar perilla del gas)
  • Regular a fuego medio
  • Poner el sartén sobre la estufa
  • Agregarle aceite de cocina al sartén
  • Tomar el huevo
  • Quebrar el huevo y poner su contenido dentro del sartén
  • Tirar el cascaron
  • Esperar a que se fríe el huevo
  • Sacarlo
  • Fin


2.2 Escribir un algoritmo para:


a) Sumar dos números enteros.

  • Inicio
  • Leer n1, n2
  • Calcular n= n1 + n2
  • Imprime n
  • Fin

b) Restar dos números enteros.

  • Inicio
  • Leer n1,n2
  • Calcular n=n1 – n2
  • Imprime n
  • Fin

c) Multiplicar dos números enteros.

  • Inicio
  • Leer n1, n2
  • Calcular n= n1 * n2
  • Imprime n
  • Fin

d) Dividir un numero entero por otro.

  • Inicio
  • Leer n1, n2
  • Calcular n=n1 / n2
  • Imprime n
  • Fin

Algoritmos

Algoritmo del area de un circulo:


  • Inicio

  • Leer radio

  • Calcular area= 3.141592653589*r2

  • Imprimir area

  • Fin


Algoritmo de un salario:


  • Inicio

  • Leer Horas, Tarifa, tasa

  • Calcular PagaBruta = Horas * Tarifa

  • Calcular Impuestos = PagaBruta * Tasa

  • Calcular PagaNeta = PagaBruta – Impuestos

  • Imprimir PagaBruta, Impuestos, PagaNeta

  • Fin

Analisis del problema

La primera fase de la resolucion de un progblema con computadora es el analisis del problema. Esta fase requiere una clara definicion, donde se contemple exactamente lo que debe hacer el programa y el resultado o solucion deseada.


Dado que busca una solucion por computadora, se precisan especificaciones detalladas de entrada y salida. la figura muestra los requisietos que se deben definir en el analisis.



Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:

  • ¿Que entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
  • ¿Cual es la salida deseada? (tipo de datos de los resultados y cantidad).
  • ¿Que metodo produce la salida deseada?
  • Requisitos o requerimientos adicionales y restricciones a la solucion.

HERRAMIENTAS DE PROGRAMACION


Diagrama de flujo


Es una representacion grafica de un algoritmo.


Los simbolos del diagrama de flujo son:


Entradas/Salidas:




ejemplo 2.1 Calcular la paga neta de un trabajador conociendo el numero de horas trabajadas, la tarifa y la tasa de impuestos. Algoritmo:



1.- Leer Horas, Tarifa, tasa
2.- Calcular Pagabruta = Horas * Tarifa
3.- Calcular Impuestos = Pagabruta * Tasa
4.- Calcular Paganeta = - Impuestos
5.- Visualizar Pagabruta, Impuestos, Paganeta

miércoles, 28 de enero de 2009

Concepto de Software y sus tipos

El software de una computadora es un conjunto de intrucciones de programa detalladas y coordinan los componentes hardware de una computadora y controlan las operaciones de un sistema informatico.
Un programa de sofware es un conjunto de sentencias o intrucciones al computador. Existen dos tipos importantes de software: software del sistema y software de aplicaciones.
Software del sistema es un conjunto generalizado de programas que gestionalos recursos del computador, tal como procesador central, enlaces de comunicaciones y dispositivos perifericos. Los programadores que escriben software del sistemase llaman programadores de sistemas.
Software de aplicaciones son el conjunto de programas escritos por empresas o usuarios individuales o en equipo y que instruyen a la computadora para que ejecute una tarea especifica. Los programadores que escriben software de aplicaciones se llaman programadores de aplicaciones.

Conceptos básicos de Redes e Internet

Una red es un conjunto de compudores conectados entre si para compartir recursos. Al contrario que un gran computador que es un unico computador compartido por muchos usuarios , una red (network) consta de muchos computadores que comparten recursos.
El uso de multiples computadores enlazados por una red de comunicaciones para distribuir el proceso se denomina proceso dristribuido en contraste con el proceso centralizado en el cual todo el proceso se realiza por un computador central. De esta forma los sistemas de computadoras tambien se clasifican en sistemas distribuidos y sistemas centralizados.
Las redes se pueden clasificar en varias categorias siendo las mas conocidas las redes de area local (LAN, Local Area Network) y las redes area amplia o ancha WAN (Wide Area Network). Una Red de Area Local permite a muchos computadores acceder a recursos compartidos de un computador mas potente denominado servidor. Una WAN es una red que enlaza muchos computadores personales y redes de area local en una zona geogrefica amplia. La red WAN mas conocida y popular en la actualidad es la red Internet qu esta soportada por la World Wide Web.
Las computadoras se conectan en redes LAN y WAN, aunque hoy en dia las redes ma implantadas son las redes que se conectan con tecnologia internet y por tanto conexion a la red internet. Estas redes son intranet y extranet y se conoces como redes corporativas ya que se enlazan computadoras de los empleados de las empresas.

Puertos Serie, Paralelo y firewire

El PC esta equipado con puertos serie y paralelo. El puerto serie (como minimo suele tener dos) es un conectador macho de la parte trasera o lateral del PC con 9 o 25 clavijas, aunque solo suelen utilizarse 3 o 4 para la transmision en serie. El puerto pararelo tambien se denomina puerto de impresora, ya que es donde solia conectarse la impresora hasta que aparecieron los conectores USB. El conectar de la impresora de la parte trasera del PC es un conector hembra de 25 clavijas. Los puertos se llaman tambien COM1, COM2 y LTP conocidos por nombres de dispositivos logicos que el programa de inicio del PC automaticamente asigna a estos dispositivos durante el inicio, poe ejemplo A:, C:, E:, CON, PRN y KBD son nombres logicos.

Firewire

El bus IEEE 1394 es una nueva interfaz SCSI (un bus antiguo pero avanzado utilizado para discos duros, unidades de CD-ROM, escaneres y unidades de cinta). Es un bus serie de alta velocidad con una tasa de transferencia maxima d 400 Mbps patentado por Apple. Los computadores Apple y Sony suelen venir con puertos firewire, y ya comienza a ser usual que los PC incluyan al menos un puerto firewire. Las actuales videocamaras digitales y otros dispositivos de audio e imagen suelen incorporar conectores firewire.