martes, 20 de noviembre de 2007

CARATULA




ESCUELA: INGENIERIA DE SISTEMAS

ALGORITMOS

INTEGRANTES


BAZAN ESPINOZA, Gladys Milagros. (
milita3103@hotmail.com)

ABREGÚ MARCOS, Rosangela. (
rosangela_20_4@hotmail.com)

GONZALES MESTANZA, Edgar Joseph. (
joseph_737_3@hotmail.com)

GUEVARA ACUÑA, Jhon Miguel. (
j_guevara_06@hotmail.com)


SEMESTRE 2007 – II

Lima Perú

INTRODUCCION






¿QUÉ ES ALGORITMO?

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes, ...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo de computación.

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.


































CONCEPTOS PREVIOS IMPORTANTES

LENGUAJE

Conjunto de símbolos que sirven para transmitir un mensaje.

LA COMUNICACIÓN

Proceso que requiere una serie de reglas para transmitir el mensaje y existen 4 elementos importantes: Emisor, Receptor, Medio de comunicación y mensaje.


¿QUÉ ES UN DATO?

Es un conjunto de símbolos utilizados para expresar: un valor numérico, un hecho, un objeto o una idea, para ser objeto de tratamiento.


¿QUÉ ES INFORMACIÓN?

º Es la transformación de los elementos procesados.
º Los datos de entrada se convierten en información significativa.


Organización Física de la
Computadora - HARDWARE

Una computadora necesita:

•Aceptar la entrada y visualizar la salida.
•Almacenar la información en un formato consistente.
•Ejecutar las operaciones aritméticas o lógicas.
•Monitorizar, controlar y dirigir las operaciones del sistema.


Lenguaje de Programación

Es un conjunto de símbolos, caracteres y reglas (programas) que permiten a las personas comunicarse con la computadora.

CLASES DE LENGUAJE DE PROGRAMACION

1. LENGUAJE DE MAQUINA
2. LENGUAJE DE BAJO NIVEL (ENSAMBLADOR)
3. LENGUAJE DE ALTO NIVEL
(APLICATIVOS)


Clasificación

1.- Lenguajes de Máquina
Instrucciones que son entendidas directamente por el computador.


2.- Lenguajes de Bajo Nivel (Ensamblador)
Son código alfabéticos conocidos como mnemo-técnicos para las operaciones y direcciones simbólicas.


3.- Lenguajes de Alto Nivel (Aplicativos)
Son instrucciones o sentencias mas próximos al humano normal, lo que facilita la comunicación con el computador estos pueden ser (BASIC, Pascal, Delphi, Visual Basic, Visual Foxpro, etc.)


HISTORIA DE LOS ALGORITMOS


lLa palabra algoritmo proviene del nombre del matemático llamado Muhammad ibn Musa al-Jwarizmi que vivió entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal logro no fuera el de crear nuevos teoremas o corrientes de pensamiento, sino el de simplificar la matemática a punto tal que pudieran ser comprendidas y aplicadas por un mayor número de personas. También estudió la manera de reducir las operaciones que formaban el cálculo. Es por esto que aun no siendo el creador del primer algoritmo, el concepto lleva aunque no su nombre, sí su pseudónimo.


DEFINICIÓN DE ALGORITMO

-Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.
-Un algoritmo puede definir una secuencia finita de instrucciones cada una de las cuales tiene un significado claro y puede ser efectuada con una cantidad finita de esfuerzo en una longitud de tiempo también finito.


Estructura Básica de un Algoritmo:


º inicio
º datos de entrada (operaciones básicas)
º procesamiento de los datos
º datos de salida
º fin


DISEÑO DE LENGUAJES ALGORITMICOS

º Grafica: Diagramas de Flujo, N-S
º Narrativa: Pseudo Código
º Código: Programa


DIAGRAMA DE FLUJO

Un Diagrama de flujo es la representación detallada en forma gráfica de un algoritmo.


VENTAJAS:

Permite Visualizar mejor en la complejidad de un algoritmo.
Fácil de Entender.













HISTORIA DEL COMPUTADOR

Las Computadoras nacieron para resolver problemas numéricos en cálculos científicos y matemáticos. Sin embargo, el paso de los años ha cambiado las aplicaciones y hoy día las computadoras no sólo se utilizan en cálculos numéricos, sino para procesar todo tipo de datos en la organización.

























EVOLUCION DE LOS MICROPROCESADORES



















HISTORIA DE LOS LENGUAJES DE PROGRAMACION










COBOL (1960)
FORTRAN IV (1961)
BASIC (1964)
LOGO (1967)
PASCAL (1971)
C (1972) -à PLATAFORMA DE UNIX,SOLARIS
ADA (1979)
C++ (1980) à PLATAFORMA DE LINUX, MacOS
JAVA (1995)
C# (2000) -à presentado por MICROSOFT











ESTRUCTURA DE UN SISTEMA DE COMPUTO










UN SISTEMA DE COMPUTO ES UN CONJUNTO DE ELEMENTOS FISICOS Y ELECTRONICOS (HARDWARE), LOS CUALES FUNCIONAN ORDENADAMENTE BAJO EL CONTROL DE PROGRAMAS (SOFTWARE); AMBOS COMPONENTES SE COMPORTAN COMO UN TODO ES POSIBLE ESTABLECER CONTACTO CON ELLOS GRACIAS AL USUARIO O PERSONA QUE MANEJA EL SISTEMA.











ELEMENTOS DE UN SISTEMA DE COMPUTO








ESTRUCTURA DEL C.P.U








ELEMENTOS BASICOS DE UN PROGRAMA



LOS ELEMENTOS BASICOS CONSTITUTIVOS DE UN PROGRAMA O ALGORITMO SON:
º PALABRAS RESERVADAS (INICIO,FIN, SI-ENTONCES,…ETC.)
º IDENTIFICADORES (NOMBRES DE VARIABLES, PROCEDIMIENTOS, FUNCIONES,..ETC) º CARACTERES ESPECIALES (COMA, APOSTROFO,ETC)
º CONSTANTES
º VARIABLES
º EXPRESIONES
º INSTRUCCIONES


OTROS ELEMENTOS DEL PROGRAMA





BUCLES
CONTADORES
ACUMULADORES
INTERRUPTORES
ESTRUCTURAS
1. SECUENCIALES
2. SELECTIVAS
3. REPETITIVAS






DEFINICION DE COMPILADOR




UN COMPILADOR ES UN PROGRAMA QUE TRADUCE UN PROGRAMA EN LENGUAJE DE ALTO NIVEL, TAL COMO C / C++ /JAVA , ETC EN UN PROGRAMA DE UN LENGUAJE MAS SENCILLO QUE LA COMPUTADORA PUEDE COMPRENDER.





PARTES DEL COMPILADOR




ESCANER
Conocido también como analizador léxico, es el componente que clasifica cada instrucción y los somete a un diccionario nos dice si hay expresiones escritas incorrectamente.




PARSER
TAMBIÉN CONOCIDO COMO ANALIZADOR SINTÁCTICO, ES EL COMPONENTE QUE VERIFICA EL ORDEN ADECUADO DE LAS INSTRUCCIONES DE UN PROGRAMA, NOS AVISA SI HAY ALGUNA INCOHERENCIA EN LA SECUENCIA DE LAS INSTRUCCIONES.




SINTETIZADOR
ES EL MODULO QUE GENERA EL CODIGO BINARIO (0011101001) QUE SERA EJECUTADO POR EL ORDENADOR O COMPUTADORA.





PROGRAMA OBJETO (.OBJ)




ES EL PROGRAMA TRADUCIDO POR EL COMPILADOR INTERPRETE (NECESITA DEL PROGRAMA DE ALTO NIVEL) A LENGUAJE DE BAJO NIVEL.





ENLAZADOR O LINKEADOR




ES EL PROGRAMA QUE PASA EL PROGRAMA OBJETO A PROGRAMA EJECUTABLE





PROGRAMA EJECUTABLE (.EXE)




EL PROGRAMA TRADUCIDO POR EL COMPILADOR TRADUCTOR (NO NECESITA DEL PROGRAMA DE ALTO NIVEL) PARA PASAR A LENGUAJE DE BAJO NIVEL.





TIPO DE DATOS




DATOS NUMERICOS




ENTEROS (SU CONTENIDO SERA UN NUMERO ENTERO)
315 1024 -200 1450 -1537
REALES (SU CONTENIDO SERA UN NUMERO REAL)
9.8 1.41 3.14 156.4 -13.5





DATOS ALFANUMERICOS




CARÁCTER (SU CONTENIDO SERA UN CARÁCTER ALFANUMERICO)
‘A’ ‘C’ ‘&’ ‘%’ ‘9’
CADENA (SU CONTENIDO SERA UN CONJUNTO DE CARACTERES)
“PQR” “&&&” “LIMA” “VALLEJO” “PERU”





Operadores Aritméticos





•Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operándos numéricos y proporcionan resultados numéricos.


•En caso de realizar mas de una operación aritmética, utilizar los paréntesis para agrupar las operaciones que se realizarán primero.
•Por ejemplo:
•4 + 12 /2 = 10 (sin agrupar)
•(4 + 12) /2 = 8 (con agrupador)










Operadores div y mod





El símbolo / se utiliza para la división real, y el operador div representa la división entera.






Operadores Relacionales



•Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.


EVOLUCIÓN DE LA PROGRAMACIÓN


EVOLUCION DE LOS LENGUAJES DE PROGRAMACION






COBOL (1960)
FORTRAN IV (1961)
BASIC (1964)
LOGO (1967)
PASCAL (1971)
C (1972) -à PLATAFORMA DE UNIX,SOLARIS
ADA (1979)
C++ (1980) à PLATAFORMA DE LINUX, MacOS
JAVA (1995)
C# (2000) -à presentado por MICROSOFT




ALGORITMO DE DIJKSTRA


Un famoso Teorema de Dijkstra, demostrado por Edsger Dijkstra en los años sesenta, demuestra que todo programa sin importar su complejidad puede escribirse utilizando únicamente las tres instrucciones de control siguientes:


ESTRUCTURAS BASICAS DE PROGRAMACION

º Secuenciales (Accion por Accion)
º Selectivas (Con Condiciones)
º Repetitivas o Iterativas
(Con Bucles de Retroalimentación)

Solo se necesita estas tres estructuras para hacer cualquier programa informático.


SENTENCIAS DE PROGRAMACION

º SELECTIVA
º IF (SI)
º ELSE (SINO)
º SWITH (SEGÚN SEA)
º REPETITIVA
º FOR (DESDE)
º WHILE (MIENTRAS)
º DO WHILE (HACER MIENTRAS)
º BIFURCACION
º BREAK (ROMPER)
º RETURN (VOLVER)


ESTRUCTURA DE DATOS


º Son los datos relacionados entre si que interactúan con los algoritmos de programación.
º TIPOS DE ESTRUCTURA DE DATOS
º FIJOS :

º SE DEFINEN PRIMERO Y NO VARIAN LA CAPACIDAD DE MEMORIA
º ENTERO, REAL, CARÁCTER, CADENA
º DINAMICO:
º LINEALES: PILAS, COLAS, LISTAS ENLAZADAS
º NO LINEALES: ARBOLES Y GRAFOS


LENGUAJE C

C es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. Es un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se pueden desarrollar cualquier tipo de aplicación.
La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. El primer compilador de C fue escrito por Dennis Ritchie.


CARACTERISTICAS DEL LENGUAJE C


º El lenguaje C se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan del código fuente para funcionar (Por ejem: Basic). Los compilados convierten el código fuente en un fichero objeto y éste en un ejecutable. Este es el caso del lenguaje C.
º Podemos decir que el lenguaje C es un lenguaje de nivel medio, ya que combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es un lenguaje estructurado, ya que permite crear procedimientos en bloques dentro de otros procedimientos. Hay que destacar que el C es un lenguaje portable, ya que permite utilizar el mismo código en diferentes equipos y sistemas informáticos: el lenguaje es independiente de la arquitectura de cualquier máquina en particular.


ESTRUCTURA DE UN PROGRAMA EN C


Todo programa en C consta de una o más funciones, una de las cuales se llama main. Todo programa en C debe contener al menos la función main(), desde la cual es posible llamar a otras funciones.
Cada función se designa con una cabecera, compuesta por el nombre de la misma y la lista de argumentos (si los hubiese), la declaración de las variables a utilizar y la secuencia de sentencias a ejecutar.
lEjemplo:

directivas
constantes
declaraciones de funciones
declaraciones de variables globales
main( )
{
declaración de variables locales
cuerpo de la función principal
}
funcion_1( )
{
declaración de variables locales
cuerpo de la función_1
}

Comentarios

A la hora de programar es conveniente añadir comentarios para poder saber que es lo que hace cada parte del código. Los comentarios facilitan el trabajo a otros programadores que puedan utilizar nuestro archivo fuente.
Para poner comentarios en un programa escrito en C usamos los símbolos /* y */ o el símbolo //. Los comentarios no son tomados en cuenta por el compilador.
Ejemplo:
/* Un comentario también puede
estar escrito en varias líneas */
O
// Un comentario también puede
// estar escrito en varias líneas


TIPOS DE DATOS


Tipos
Básicamente existe cuatro tipos de datos, de los cuales se puede definir otros tipos de datos
TIPO Tamaño Rango de valores
char 1 byte -128 a 127
int 2 bytes -32768 a 32767
float 4 bytes 3'4 E-38 a 3'4 E+38
double 8 bytes 1'7 E-308 a 1'7 E+308

Calificadores de tipo

Los calificadores de tipo tienen la misión de modificar el rango de valores de un determinado tipo de variable. Estos calificadores son cuatro:
Signed: Le indica a la variable que va a llevar signo.
tamaño rango de valores
signed char 1 byte -128 a 127
signed int 2 bytes -32768 a 32767
Unsigned: Le indica a la variable que no va a llevar signo (valor absoluto).
tamaño rango de valores
unsigned char 1 byte 0 a 255
unsigned int 2 bytes 0 a 65535
Short: Rango de valores en formato corto (limitado).
tamaño rango de valores
short char 1 byte -128 a 127
short int 2 bytes -32768 a 32767
Long: Rango de valores en formato largo (ampliado).
tamaño rango de valores
long int 4 bytes -2.147.483.648 a 2.147.483.647
long double 10 bytes -3'36 E-4932 a 1'18 E+4932


Archivos de Cabecera


En la programación en C es posible utilizar funciones que no estén incluidas en el propio programa. Para ello utilizamos la directiva #include, que nos permite añadir librerías o funciones que se encuentran en otros ficheros a nuestro programa.
#include
#include
#include
#include
#include


FUNCIONES DE ENTRADA/SALIDA

#include
cout cout<< “cadena de caracteres”<> variables;
#include
printf printf (“formato”, lista de datos);
scanf scanf (“formato”, lista de direcciones de variables);
puts puts(“cadena”);
gets gets(cadena);
#include
getch a = getch();
putch putch(caracter);
FUNCIONES DEL SISTEMA
#include
System(“CLS”)
System(“PAUSE”);
return 0;


FUNCIONES MATEMATICAS #include
TRIGONOMETRICAS

acos(x) devuelve el arco del coseno de x
asin(x) devuelve el arco del seno de x
atan(x) devuelve el arco tangente de x
cos(x) devuelve el coseno de x en radianes
sin(x) devuelve el seno de x en radianes
tan(x) devuelve la tangente de x en radianes
cosh(x) devuelve el coseno hiperbólico de x
sinh(x) devuelve el seno hiperbólico de x
tanh(x) devuelve la tangente hiperbólica de x
hypot(x,y) devuelve la longitud de la hipotenusa de un triángulo donde x e y son los catetos
ALGEBRAICAS
exp(n) devuelve e (2,7182818) elevado a la n.
pow(b,n) devuelve b elevado a la n
log(n) devuelve el logaritmo natural de x
logio(x) devuelve el algoritmo decimal de x
sqrt(x) devuelve la raíz cuadrada de x
ceil(x) devuelve el menor entero de los enteros mayores a x
floor(x) devuelve el mayor entero de los enteros menores a x
abs(x) devuelve el valor absoluto de x
labs(x) igual al anterior pero x está dado en entero longint
fabs(x) igual al anterior pero x está dado en double
modf(n&x) devuelve la parte fraccionaria de n y la parte entera la guarda en x.
rand( ) devuelve un entero en el rango comprendido entre 0 y 32767
srand(exp) produce la generación aleatoria del número.
randomize( ) utiliza el reloj del computador para generar el número aleatorio (time.h, stdlib.h)
random(n) devuelve un número entero aleatorio dentro del rango de 0 an-1. (stdlib.h)


FUNCIONES NUMERICAS = #include
setw(n) determina un ancho n del dato numérico
setprecision(n) determina n cantidad de decimales
FUNCIONES DE CADENA =#include
PARA COPIAR
strcat(c1,c2) concatena y copia c2 en c1
strncat(c1,c2) concatena y copia los n primeros caracteres de c2 en c1.
strcpy(c1,c2) copia el contenido de c2 en c1.
strncpy(c1,c2,n) copia el contenido de los n primeros caracteres de c2 en c1.
strdup(c1, c2) proporciona un duplicado de c2.


PARA BUSCAR CARACTERES EN UNA CADENA
strchr(c,ch) devuelve los caracteres de la cadena desde donde encontró por primera vez el carácter ch.
strrchr(c,ch) devuelve los caracteres de la cadena desde donde encontró por última vez el carácter ch.
strpbrk(c1,c2) devuelve los caracteres de c1 desde donde encontró el primer carácter de c2.
strspn(c1,c2) devuelve el número de caracteres comunes de c1 y c2.
strcspn(c1,c2) devuelve el número de caracteres que están en c1 y no en c2 hasta el primer carácter común.
strstr(c1,c2) devuelve los caracteres desde donde encontró c2 en caso que no sea una subcadena devuelve el puntero nulo.
PARA COMPARAR
strcmp(c1,c2) devuelve un número luego de efectuar la comparación entre c1 y c2.
strncmp(c1,c2,n) igual al anterior pero hace la comparación de los n primeros caracteres. (0 si son iguales, >0 si c1>c2, >0 si c1>c2)

OTRAS
strlen(c) devuelve la longitud sin contar el delimitador nulo.
strlwr(c) devuelve la cadena en minúscula excepto la ñ.
strupr(c) devuelve la cadena en mayúscula excepto la ñ.
strnset(c,ch,n) coloca ch en los primeros n caracteres de c.
strrev(c) invierte la cadena, el único carácter que respeta es el delimitador nulo.
memset(d,c,n) fija los primeros n caracteres de la cadena d con el carácter c.
FUNCIONES DE CARACTER = #include
tolower(ch) devuelve el carácter en minúscula o el mismo si no es carácter.
toupper(ch) devuelve el carácter en mayúscula o el mismo si no es carácter.
FUNCIONES PARA CONVERSION DE DATOS = #include
atof(c) convierte la cadena c a una cantidad en doble precisión.
atoi(c) convierte la cadena c en un entero.
atol(c) convierte la cadena c en un entero largo.


OPERADORES ARITMETICOS Y DE ASIGNACION


Permiten realizar operaciones matemáticas en lenguaje C.
Operadores aritméticos
Existen dos tipos de operadores aritméticos:
Los binarios:
+ Suma
- Resta
* Multiplicación
/ División
% Módulo (resto)
y los unarios:
++ Incremento (suma 1)
-- Decremento (resta 1)
- Cambio de signo

Operadores de asignación

La mayoría de los operadores aritméticos binarios tienen su correspondiente operador de asignación:
= Asignación simple
+= Suma
-= Resta
*= Multiplicación
/= División
%= Módulo (resto)
Con estos operadores se pueden escribir, de forma más breve, expresiones del tipo:
n=n+3 se puede escribir n+=3
k=k*(x-2) lo podemos sustituir por k*=x-2


Jerarquía de los operadores

Es importante tener en cuenta la precedencia de los operadores a la hora de trabajar con ellos:
( ) Mayor precedencia
++, --
*, /, %
+, - Menor precendencia


OPERADORES RELACIONALES

Utilizados para comparar el contenido de dos variables. En C existen seis operadores relacionales básicos:
> Mayor que
<>= Mayor o igual que
<= Menor o igual que == Igual que != Distinto que El resultado que devuelven estos operadores es 1 para Verdadero y 0 para Falso. Si hay más de un operador se evalúan de izquierda a derecha. Además los operadores == y != están por debajo del resto en cuanto al orden de precedencia.


OPERADORES LOGICOS

Los operadores lógicos básicos son tres:
&& AND
OR
! NOT (El valor contrario)
Estos operadores actúan sobre expresiones lógicas. Permiten unir expresiones lógicas simples formando otras más complejas.
V = Verdadero F = Falso

ESTRUCTURA SELECTIVA O CONDICIONAL


Los controles que se manejan en esta estructura son:

· IF (Si)
· ELSE (Según Sea)

ESTRUCTURAS SELECTIVAS

Este tipo de sentencias permiten variar el flujo del programa en base a unas determinadas condiciones. Existen varias estructuras diferentes:
Estructura IF...ELSE
Sintaxis:
if (condición es verdad)
acción1;
else
acción2;


Estructura Selectiva Si (if)


La estructura selectiva permite la realización de una instrucción u otra según un criterio o condición, y solo una de estas instrucciones se ejecutará.




EJEMPLO: Hallar el algoritmo que ordene de forma ascendente dos numeros a,b


#include
void main()
{
int a,b;
cout<<"Ingrese valor de a: "; cin>>a;
cout<<"Ingrese valor de b: "; cin>>b;
if (a <>


#include
void main( )
{ int a, b, c, aux;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
if (a>b)
{ if (a>c)
{ cout<<"El Mayor es ="< < a; }
else
{aux=a;a=c;c=aux;
cout<<"El Mayor es ="< }
else
{ aux=a;a=b;b=aux;
if (a>c)
{ cout<<"El Mayor es ="<< a; }
else
{ aux = a ; a = c ; c = aux ;
cout<<"El Mayor es ="<< a ; }
}
}


ESTRUCTURAS SELECTIVAS

ESTRUCTURAS SELECTIVAS DE ALTERNATIVA MÚLTIPLE


•C++ le permite anidar enunciados if-else para crear una forma de alternativa múltiple, que le proporciona gran poder y flexibilidad a sus aplicaciones.
•SINTAXIS:
If (Condicion 1)
{
Else if (condicion 2)
accion 1
Else if (condicion 3)
accion 2
Else if (condicion n)
accion n
Else
{
Accion x
}



Ejemplo 1: Elaborar un algoritmo que muestre un mensaje
según los datos de la tabla



#include // para cin y cout
void main( )
{
int nota;
cout << "Ingrese nota: "; cin >> nota;
if(nota >= 18)
cout << "¡Felicitaciones!" <<>= 16)
cout << "¡Tu nota es buena!" <<>= 13)
cout << "¡Tu nota es regular!" <<>= 11)
cout << "¡Tu nota es baja!" <<>


SINTAXIS: SWITCH

switch( Variable )
{ case ‘N1’:
Accion 1;
break;
case ‘N2’:
Accion 2;
break;
case ‘Nn ’:
Accion n;
break;
default:
Accion x;
}


Ejemplo 1:

Haga un algoritmo para que, dados dos números enteros a, b y una clave, realice la operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas son: + - * /.


#include // para cin y cout
void main(void)
{ char op; int ok = 0; float x, y, resultado;
cout << "Introduzca operando1, operador y operando2: ";
cin >> x >> op >> y;
switch(op)
{
case ‘+’:
resultado = x + y;
break;
case ‘-’:
z = x - y;
break;
case ‘*’:
resultado = x * y;
break;
case ‘/’:
if (y != 0)
{resultado = x / y;}
else
{cout< < División irreal” ;
ok = 1; }
break;
default:
cout<<"el operador no existe"<< endl;
ok = 1;
}
if (ok ! = 1)
cout<<"la "<< op <<" es: "<< resultado << endl ;
}


ESTRUCTURA REPETITIVAS

ITERACION : CICLO

La iteración simplemente significa hacer algo en forma repetida. En programación a esto se le llama ciclo porque la estructura de control iteración ocasiona que el programa fluya entrando en un ciclo.


ESTRUCTURAS DE CONTROL REPETITIVO

º WHILE
º DO…WHILE
º FOR( inicialización; condición; incremento)

SENTENCIA: WHILE

SINTAXIS:
WHILE (CONDICION)
{
SENTENCIAS;
}

SENTENCIA WHILE

Con esta sentencia se controla la condición antes de entrar en el bucle. Si ésta no se cumple, el programa no entrará en el bucle. Naturalmente, si en el interior del bucle hay más de una sentencia, éstas deberán ir entre llaves para que se ejecuten como un bloque.

EJEMPLO: SENTENCIA WHILE

CONSTRUYA UN ALGORITMO QUE CALCULE E IMPRIMA LOS 20 PRIMEROS NUMEROS DE LA SERIE DE FIBONACCI.
0,1,1,2,3,5,8,13,21,34,…..

EJEMPLO: SENTENCIA WHILE

#include
void main()
{ long int a=0, b=1,i=3;
long int t, tmp;
cout<<"Fibonacci 1: "<< a <


SENTENCIA: DO…WHILE

SINTAXIS:
DO
{
SENTENCIAS;
}
WHILE (CONDICION)

SENTENCIA: DO…WHILE


Con esta sentencia se controla la condición al final del bucle. Si ésta se cumple, el programa vuelve a ejecutar las sentencias del bucle. La única diferencia entre las sentencias while y do...while es que con la segunda el cuerpo del bucle se ejecutará por lo menos una vez.


EJEMPLO: DO…WHILE

ALGORITMO QUE CUENTA DEL 0 AL 10
INT X
DO
{
COUT<

SENTENCIA: FOR


SINTAXIS:
FOR (inicialización; condición; incremento)
{
sentencias;
}




SENTENCIA: FOR



EJEMPLO: SENTENCIA FOR

º HACER EL ALGORITMO QUE CALCULE EL FACTORIAL DE UN NUMERO N.
º Si N=5
º FACTORIAL DE 5 ES= 1*2*3*4*5=120



EJEMPLO: SENTENCIA FOR

#include
void main()
{ int n;
cout<<"Ingresar n= ";cin>>n;
if(n>=0)
{ int i, fac=1;
for (i=1;i<=n;i++) { fac=fac*i; } cout<<"El Factorial es: "< < fac <

EJEMPLO: SENTENCIA FOR


PROGRAMACION MODULAR

Funciones y Procedimientos

•Las funciones generan retorno de un valor. Una función es una colección independiente de declaraciones y sentencias, generalmente enfocadas a realizar una tarea específica.
•Los procedimientos realizan parte del proceso de un programa
•El C++, no diferencia entre ambas las trabaja igual.

Funciones

Modulo principal

•Se trabaja con un modulo principal, el cual contiene las llamadas a las funciones y/o procedimientos a realizar







•Por ejemplo:
Trabajando con funciones programa que calcule la suma de 2 números.
El pseudocodigo será:





Inicio
Var: a,b,s: real
Escribir (“Ingresar primer numero”)
Leer (a)
Escribir (“Ingresar segundo numero”)
MODULO PRINCIPAL
Leer (b)
s= suma (a,b)
Escribir (“La suma es: ” , s)
Fin

Funcion suma (x:real , y:real)
Var: suma: real
suma = x + y FUNCION
retornar (suma)
Fin-función



Ejemplo : Visión completa




#include
float suma(float,float); //variable Global Declaración de Función
(Variable Global)

//Programa Principal


void main( )
{
float a,b,s; //variables locales
cout<<"ingrese 1 numero: ";cin>>a;
MóduloPrincipal
cout<<"ingrese 2 numero: ";cin>>b;
s=suma(a,b); //Uso de la Función
cout<<"El resultado es: "<


//Función (Módulo)
float suma(float x, float y)
{
float ss; //variable local Función
ss = x + y; (Módulo)
return ss; //Retorno del Resultado
}


Ejemplo: Promedio de Notas



#include
void main()
{
float Funcion_1 (int x), z1=0;
int n=0;
cout<<"Ingrese la cantidad de alumnos:"; cin>>n;
z1=Funcion_1(n);
cout<<"El Promedio es: "<< d="0," s="0," nota="0," p="0;" i="0;i< x;i++)">













lunes, 19 de noviembre de 2007

MATRICES Y VECTORES

MATRICES Y VECTORES

1. MATRICES (ARREGLOS BIDIMESIONALES)


Una Matriz es un arreglo de valores, ordenadas por medio de filas y columnas. En el lenguaje C, los arreglos se inicializan en 0,0 y las filas son horizontales y las columnas verticales.



EJEMPLO: LA MATRIZ A






LEER E IMPRIMIR UNA MATRIZ



#include
void main()
{float matriz[10][10];
int k1=0,k2=0;
cout<<"Numero de Filas:";cin>>k1;
cout<<"Numero de Columnas:";cin>>k2;
for (int x=0;x < y="0;y < k2;y++)">

}
}
}


2. VECTORES (ARREGLOS UNI-DIMENSIONALES)


Vector es un tipo de arreglo de valores unidimensionales, cuya posición inicia en 0.

Ejemplo Vector R:

R[7]={21,32,14,35,46,23,20}

Asignando los valores:

R[0]=21 R[1]=32 R[2]=14 R[3]=35
R[4]=46 R[5]=23 R[6]=20


Ejemplo: Cálculo de Sueldos


Una empresa que cuenta con k empleados desea realizar algunos cálculos para la nueva nómina. Los datos con que cuenta son los sueldos de los k empleados:
k, s1, s2, s3, ..., sk.
Elabore un diagrama de flujo para leer los datos y contestar a las siguientes preguntas:
¿Cuál es el aumento correspondiente a cada empleado según el siguiente criterio?
17% si el sueldo es inferior a $5,000
10% si el sueldo está entre $5,000 y $15,000
5% si el sueldo es superior a $15,000
¿Cuál es el nuevo sueldo para cada empleado?
¿Cuál es el total de la nueva nómina?
¿Cuál es el incremento en la nómina?
Resuelva los incisos progresivamente.


#include
void main()
{float sueldos[100],ss=0, nn=0;
int k=0,i=0;
cout<<"Numero de Empleados :";cin>>k;
//Ingreso de Sueldos
for(i=0;i5000) && (sueldos[i]<=15000)) {cout<<"Aumento del 10%. "; sueldos[i]=1.1*sueldos[i]; cout<<"Nuevo sueldo es:"<< nn="nn+sueldos[i];">