domingo, 25 de noviembre de 2007

SESION 3

ALGORITMOS Sesión Nº 3
Profesor: Ing José A Espinal

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

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.
Ejemplo:
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”<cin cin>> 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
< Menor 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

No hay comentarios: