Documente Academic
Documente Profesional
Documente Cultură
CERRO AZUL
Alumno
Reyes pulido Eduardo
MATERIA
INTRODUCCIN A LA PROGRAMACIN
DOCENTE
NOE FRANCISCO REYES CRUZ
CARRERA
INGENIERA ELECTROMECANICA
NO.DE CONTROL 17500239 5 de octubre de 2017
2.- El lenguaje y su entorno integrado de desarrollo
Qu es el lenguaje C?
El lenguaje C es un lenguaje de programacin estructurado. Lo que quiere decir que el
cdigo o algoritmo esta ordenado o estructurado.
As pues es fcilmente diferenciable de un lenguaje orientado a objetos.
El lenguaje C es uno de los lenguajes ms rpidos y potentes que existen hoy en da con
una sintaxis sumamente compacta y de alta portabilidad.
Es comn leer que se lo caracteriza como un lenguaje de "bajo nivel". No debe
confundirse el trmino "bajo" con "poco", ya que el significado del mismo es en realidad
"profundo", en el sentido que C maneja los elementos bsicos presentes en todas las
computadoras: caracteres, nmeros y direcciones.
Adems este lenguaje sirve de puente a otros, lo que quiere decir que sabiendo lenguaje
C, sabrs defenderte fcilmente con cualquier otro lenguaje de programacin
estructurada, solo tendrs que cambiar las palabras reservadas y poco ms.
Para verificar la importancia y magnitud de este lenguaje solo hay que observar que el
sistema operativo Linux el cual ha sido desarrollado en su prctica totalidad con el C.
Adems vemos que en las universidades y ciclos formativos referentes a la informtica
exigen el aprendizaje absoluto de este lenguaje, en muchos casos por encima del resto.
El lenguaje C no es lo mismo que el lenguaje C++ como en muchos casos se piensa.
Para controlar este ltimo hace falta tener una buena base de C. Se podra decir que C++
es una extensin del C y con el podramos llegar a introducirnos en la programacin
basada en windows. C++ incorpora el potencial de C al servicio de una programacin
basada en el SO de Microsoft.
Pero no todo es oro lo que reluce en este lenguaje, es lgico que con tanto potencial halla
determinados puntos oscuros, nos referimos pues a que el lenguaje en C es de caso
sensible, lo que quiere decir que distingue entre maysculas y minsculas y otros casos.
Volvindonos locos por ser un lenguaje pelin quisquilloso. Pero su potencial obliga a ello.
Por otro lado, todas las instrucciones que damos en C, se separan o finalizan con el ;
(punto y coma).
La descripcin del lenguaje se realiza siguiendo las normas del ANSI C.
El lenguaje C ofrece a los usuarios ventajas y desventajas, dependiendo de su nivel de
conocimiento del mismo.
1. Es un lenguaje complicado para el usuario novel (el usuario requiere cierta experiencia
para empezar a trabajar).
2. Suministra una visin de conjunto.
3. Eficacia.
4. Nos ofrece libertad para organizar el trabajo.
5. Lenguaje de alto nivel, se asemeja al lenguaje humano (normalmente el ingles).
6. Es un lenguaje diseado para la resolucin de problemas, independientes de las
caractersticas del computador.
7. En ocasiones determinadas nos permite programar como lenguaje de bajo nivel,
consiguiendo una mayor eficacia.
8. Flexibilidad
9. Muy POTENTE
10. Es muy usado en aplicaciones cientficas, industriales, simulaciones de vuelo; es
decir, se aplica en reas desconocidas por gran parte de los usuarios.
11. No es un lenguaje muy estructurado como ocurre en lenguajes como ALGOL 68 o
PASCAL.
Compilador de lenguaje C
Antes de todo explicare que es un compilador. Un compilador dicho sencillamente, sera
un programa capaz de hacer otros programas.
Profundizando ms:
El ordenador trabaja nica y exclusivamente con combinaciones de ceros y unos. Por
decirlo de alguna manera, solo entiende el llamado cdigo binario. Ahora bien, si nosotros
quisiramos desarrollar un programa para algn ordenador, deberamos hacerlo a base
de combinaciones de ceros y unos. Deberamos escribirlo en cdigo binario. Esto sera
una labor muy tediosa, prcticamente imposible, tarea reservada a gurs de las
matemticas. En el mundo podran contarse con los dedos de las manos los que saben
programar en lenguaje
binario, son los encargados de programar a ms bajo nivel las funciones de los
microprocesadores.
Ahora es aqu donde entran los lenguajes como el C, delphi, basic, etc. Estos lenguajes
lo que hacen es poner a nuestro alcance una serie de instrucciones que nosotros
podemos entender con facilidad. Funciones racionales para el hombre. Aqu se
encuentran las palabras reservadas (if, goto, else, while...). Una vez escrito todo el
programa mediante estas reglas racionales que nos sirve el lenguaje que usemos,
tendremos lo que se llama el cdigo fuente. Pero este solo lo entienden los
programadores no el ordenador, que como habamos visto solo entenda ceros y unos.
Es aqu donde acta el compilador. Este es el encargado de pasar nuestro cdigo fuente
(ordenes racionales) a cdigo binario (lenguaje que entiende el ordenador). Y es as como
de nuestro cdigo fuente podemos obtener un ejecutable.
Un fichero que el ordenador podr interpretar y ejecutar, los llamados (*.exe), otros
ficheros ejecutables serian (*.bat, *.con).
Teniendo el cdigo fuente podremos modificar nuestro programa y compilarlo para
generar otro ejecutable tantas veces como queramos.
Pero de no tener el cdigo fuente no podremos modificar nada.
A menudo se confunden los distintos tipos de compiladores. Existen 3 tipos de
compiladores, cuya funcin es la misma. Pasar de cdigo fuente a mquina.
Compiladores: Propiamente llamados, se dedican a traducir el cdigo fuente a cdigo
mquina.
Intrpretes: Va cogiendo cada instruccin cuando la precise y la va convirtiendo en su
instruccin correspondiente en cdigo mquina. Para aquellos que programen en
scripting, el cliente mIRC para IRC nos facilita un intrprete para elaborar lo que se llama
un script (subprograma).
Entornos de desarrollo: La mezcla de los dos sistemas, primero interpreta para
posteriormente compilar sin errores.
Ventajas y desventajas
Ventaja de un compilador: Una vez compilado su ejecucin y tiempo de proceso es ms
rpido.
Ventaja del intrprete: Se puede depurar el cdigo de forma ms rpida y sencilla.
El editor
Un editor es simplemente el lugar donde editamos o escribimos nuestro cdigo fuente.
Podramos hacerlo simplemente en el notepad de windows J Y luego compilarlo con algn
compilador. Pero el DJGPP, ya tiene su propio editor integrado, el llamado RHIDE.
Un buen editor es importante en cualquier lenguaje de programacin. Puesto que
mediante tcnicas puede clarificar mucho nuestro cdigo fuente. Tcnicas como pueden
ser el uso de colores, esto es que cuando escribimos una palabra reservada sale en un
color distinto que cuando escribimos un dato o una cadena de caracteres a mostrar por
pantalla. Existen tambin editores que van ordenando nuestro cdigo fuente,
estructurndolo.
Es importante escribir un cdigo fuente claro y bien organizado o estructurado y con
comentarios. Para que nuestros superiores o nosotros mismos podremos entenderlo con
facilidad en posteriores revisiones.
Compilar y ver los resultados en DJGPP.
Java es un lenguaje con una funcionalidad muy extensa, y aunque coincide con C en un
porcentaje amplio de esta funcionalidad las diferencias entre ambos son mucho mayores
que las coincidencias. Las construcciones del lenguaje C son mucho ms simples que
las de Java. En mecanismos tales como bucles, condicionales, etc., ambos lenguajes
coinciden, pero en el resto de aspectos tales como la definicin de estructuras de datos
C ofrece mecanismos ms simples.
Fichero1.c Fichero2.c
#define SIZE 100
1 #define SIZE 100
/* Tabla de 100 enteros 1
2 (Global) */ /* Variable global declarada en otro
2
3 int table[SIZE]; fichero */
3
4 extern int table[SIZE];
4
5 /* Rellena una tabla con ceros
*/ 5
6 /* Funcin declarada en otro fichero */
void fill_in(int *t, int size) 6
7 void fill_in(int *, int);
{ 7
8
int i; 8
9 /* Punto de entrada del programa */
for (i = 0; i < size; i++) 9
10 int main(int argc, char *argv[])
{ 10
11 {
t[i] = 0; 11
12 fill_in(table, SIZE);
} 12
13 return 0;
return; 13
14 }
}
La lnea 3 en Fichero2.c notifica al compilador que existe una tabla de 100 enteros con
nombre table definida en otro fichero. La lnea 6 es un prototipo de funcin. Contiene el
tipo del resultado (void) seguido del nombre de la funcin (fill_in) y de los nombres y
tipos de los parmetros entre parntesis (int *t, int size). Esta lnea informa al
compilador que una funcin de estas caractersticas est definida en otro lugar de del
programa. Gracias a estas definiciones la lnea 11 es correcta. La funcin fill_inpuede
ser invocada, y la variable table es conocida.
La lnea 1 de ambos ficheros (#define) es una directiva del preprocesador, que indica
que tiene que cambiar todas las ocurrencias de una cadena de caracteres dada (en este
caso SIZE) por un valor especfico (en este caso, 100). El preprocesador corre
automticamente antes que el compilador y se encarga de estas sustituciones. Usa la
directiva #define siempre que vayas a definir constantes en tu programa, sobre todo
para los tamaos de arrays, y escribe siempre esas constantes en maysculas, de forma
que sean fciles de leer y modificar.
Identificador.
El primer carcter debe ser una letra o el guin bajo. El Estndar establece que los
identificadores comenzando con guin bajo y mayscula no deben ser utilizados.
Este tipo de nombres se reserva para los compiladores y las Libreras Estndar.
Tampoco se permite la utilizacin de nombres que contengan dos guiones bajos
seguidos.
El estndar ANSI establece que como mnimo sern significativos los 31 primeros
caracteres, aunque pueden ser ms, segn la implementacin. Es decir, para que
un compilador se adhiera al estndar ANSI, debe considerar como significativos, al
menos, los 31 primeros caracteres.
Reglas para los identificadores.
En un programa no referimos al valor de una variable por su identificador, que es el
nombre que se le da a la variable. Por convencin, en Java, los nombres de las
variables empiezan con una letra minscula y los nombres de las clases empiezan
con una letra mayscula. Un identificador de variable, en Java, tiene que cumplir:
Debe ser un identificador legal de Java comprendido en una serie de caracteres
Unicode. Unicode es un sistema de codificacin que soporta texto escrito en
distintos lenguajes humanos. Unicode permite la codificacin de 34.168 caracteres.
Esto le permite utilizar en sus programas Java varios alfabetos como el japons, el
griego, el ruso o el hebreo. Esto es importante para que los programadores puedan
escribir cdigo en su lenguaje nativo. Por lo tanto podremos utilizar la como parte
de un identificador de variable, clase, etc.
No puede ser el mismo que una palabra clave o el nombre de un valor booleano
(true o false).
No deben tener el mismo nombre que otras variables cuyas declaraciones
aparezcan en el mismo mbito para evitar confusiones aunque si es posible su
declaracin.
Por convencin, los nombres de variables empiezan por un letra minscula y
cuando estn compuestos por ms de una palabra se colocan juntas y el resto
comenzando por maysculas. Por ejemplo pesoCoche
Camel Case.
Constantes y variables
Ejemplos:
Constantes Variables
36
450.35
0.58
Numricos
A
A
Juan
Nom
La Paz
Cadena Edad
Falso Ciudad
Verdadero Estatura
Lgicos
Las estructuras de datos del lenguaje C son ms simples que las que ofrece Java porque
no existe el concepto de clase ni de objeto. C ofrece tipos de datos bsicos y dos
construcciones para crear datos ms complejos. El control de acceso a datos que ofrece
Java (mtodos y campos privados, pblicos y protegidos) no existe en C. Las variable
son globales, locales a un fichero, o locales a un bloque de cdigo.
short y long: Modifica el tamao en bits del entero. Existen por tanto tres tipos
de enteros: int, short int (que se puede abreviar como short), y long int (que
se puede abreviar como long).
El lenguaje C no define tamaos fijos para sus tipos de datos bsicos. Lo nico
que garantiza es que un short int tiene un tamao menor o igual que un int y este
a su vez un tamao menor o igual a un long int. Esta caracterstica del lenguaje ha
complicado la creacin de programas que sean compatibles entre varias
plataformas.
Sugerencia
int main()
{
Inserta en la funcin main varias definiciones de enteros para probar todas las
combinaciones posibles (hasta diez). Para comprobar que la sintaxis utilizada es correcta
abre una ventana con el intrprete de comandos y, en la carpeta donde se encuentra el
fichero creado, ejecuta el comando gcc -Wall -o programa
fichero.c reemplazando fichero.c por el nombre del fichero que has creado. Si el
comando no imprime mensaje alguno por pantalla, tu programa es correcto. Vers que el
compilador genera un fichero con extensin.o, puedes borrarlo.
Letras y cadenas
Las variables de tipo letra se declaran como char. Para referirse a una letra se rodea de
comillas simples: 'M'. Como las letras se representan internamente como nmeros, el
lenguaje C permite realizar operaciones aritmticas como 'M' + 25.
Las cadenas de texto o strings son simplemente tablas de char. Las funciones de
biblioteca para manipular estas cadenas asumen que el ltimo byte tiene valor cero. Las
cadenas de texto se escriben en el programa rodeadas de dobles comillas y contienen el
valor cero al final. A continuacin se muestran dos definiciones:
#define SIZE 6
char a = 'A';
char b[SIZE] = "hello";
Por qu la segunda definicin es una tabla de seis elementos si la palabra tiene slo
cinco letras?
Sugerencia
Nmeros reales
Los nmeros reales se definen con float o double. La diferencia entre ambas es la
precisin que ofrece su representacin interna. Hay un nmero infinito de reales, pero se
representan con un nmero finito de bits. A mayor nmero de bits, mayor nmero de
reales se representan, y por tanto, mayor precisin. Los reales definidos
con double tienen un tamao doble a los definidos con float. Al igual que en el caso
de los enteros, el tamao de estas representaciones vara de una plataforma a otra.
Algunas plataformas ofrecen nmeros reales con tamao mayor al double que se
definen como long double. Los tamaos tpicos para los tipos float, double y long
double son 4, 8 y 12 bytes respectivamente. A continuacin se muestran varias
definiciones de nmeros reales.
float a = 3.5;
double b = -5.4e-12;
long double c = 3.54e320;
Sugerencia
Tablas
Las tablas en C son prcticamente idnticas a las de Java, con el tamao entre corchetes
a continuacin del nombre. Al igual que en Java, los ndices de la tabla comienzan por
cero. A continuacin se muestran algunos ejemplos:
#define SIZE_TABLE 100
#define SIZE_SHORT 5
#define SIZE_LONG 3
#define SIZE_NAME 10
int table[SIZE_TABLE];
short st[SIZE_SHORT] = { 1, 2, 3, 4, 5 };
long lt[SIZE_LONG] = { 20, 30, 40};
char name[SIZE_NAME];
Los elementos de la tabla se acceden con el nombre de la tabla seguido del ndice entre
corchetes.
Una de las diferencias entre C y Java es que el acceso a una tabla en C no se verifica.
Cuando se ejecuta un programa en Java si se accede a una tabla con un ndice
incorrecto, se genera una excepcin de tipo ArrayIndexOutOfBounds. Estas
comprobaciones no se hacen nunca en C (a no ser que se escriban explcitamente en el
programa). Si se accede a una tabla con un ndice incorrecto se manipulan datos en una
zona de memoria incorrecta y el programa continua su ejecucin.
Tras este acceso incorrecto pueden suceder dos cosas. La primera es que la memoria a
la que ha accedido por error est fuera de los lmites del programa. En este caso la
ejecucin termina de manera abrupta y en el intrprete de comandos se muestra el
mensajesegmentation fault. La otra posibilidad es que se acceda a otro lugar dentro
de los datos del programa. Esta situacin seguramente producir un error cuyos sntomas
sean difciles de relacionar con el acceso incorrecto.
int matrix[MATRIX_A][MATRIX_B];
long squarematrix[COMMON_SIZE][COMMON_SIZE];
char soup[COMMON_SIZE][COMMON_SIZE];
Sugerencia
Aade al programa de los apartados anteriores definiciones y manipulacin de tablas de
los diferentes tipos de datos bsicos. Comprueba que son correctos sintcticamente
mediante el compilador.
En C, el tamao de los tipos de datos bsicos puede variar de una plataforma a otra. Esta
caracterstica est detrs de buena parte de las crticas que recibe este lenguaje, pues
de ella se derivan problemas de compatibilidad (una aplicacin se comporta de forma
diferente cuando se ejecuta en plataformas diferentes).
A modo de ejemplo, en la siguiente tabla se incluyen los tamaos de los tipos de datos
para las plataformas Linux/Intel i686.
float 4
double 8
long double 12
C permite definir estructuras de datos que agrupan campos de otros tipos de datos. La
sintaxis se muestra a continuacin:
struct nombre_de_la_estructura
{
tipo_1 nombre_del_campo1;
tipo_2 nombre_del_campo2;
...
tipo_N nombre_del_campoN;
};
Las lneas 6 a 12 definen un nuevo tipo de datos estructurado que contiene cuatro
campos, los dos primeros son tablas de letras y los dos ltimos son enteros. A pesar de
que estos campos tienen nombres y tamaos, hasta el momento no se ha declarado
ninguna variable. Es en la lnea 15 en la que se s se declaran tres variables de este
nuevo tipo estructurado. La ltima de ellas es una tabla de 100 de estas estructuras.
Asegrate de que tienes clara la diferencia entre la definicin de un tipo de datos y
la declaracin de variables de ese tipo. La siguiente figura muestra estos conceptos
para una estructura y un tipo bsico.
Sugerencia
Copia y pega en un fichero de texto en tu entorno de trabajo el cdigo del ejemplo anterior.
Compila para comprobar que es correcto. Realiza cambios en la estructura: nmero de
campos, tipos de datos, declaracin de nuevas variables, etc. Comprueba que todos ellos
mantienen el texto correcto utilizando el compilador.
struct contact_information
{
char firstname[FIRST_SIZE];
char lastname[LAST_SIZE];
unsigned int homephone;
unsigned int mobilephone;
} person1, person2 contacts[CONTACTS_NUM];
struct contact_information
{
char firstname[FIRST_SIZE];
char lastname[LAST_SIZE];
unsigned int homephone;
unsigned int mobilephone;
};
person1.firstname[0] = 'A';
person1.firstname[1] = 0;
person1.lastname[0] = 'B';
person1.lastname[1] = 0;
person1.homephone = 975556768;
person1.mobilephone = 666555444;
}
Los tipos estructurados pueden anidarse. El nico requisito es que la definicin de un tipo
preceda a su uso. Por ejemplo:
1 #define SIZE 100
2 struct point_data
3 {
4 int coord_x;
5 int coord_y;
6 };
7
8 struct polygon {
9 char description[SIZE];
10 struct point_data points[SIZE;
11 };
12
13 struct polygon p;
3. Uniones
En una estructura, cada campo tiene espacio en memoria para almacenar su valor. Pero
hay situaciones especiales en la que las estructuras de datos pueden desperdiciar
memoria. Supongamos que una aplicacin puede identificar a los usuarios mediante uno
de los siguientes posibles cinco datos:
Una posible estructura de datos para almacenar esta inforamacin se muestra en la parte
izquierda de la siguiente figura:
Si asumimos que los enteros ocupan 4 bytes y las letras 1 byte, la estructura necesita 40
bytes para ser almacenada en memoria tal y como se muestra en la parte derecha de la
figura anterior. Pero de todos los campos slo uno contiene informacin, el resto estn
vacos. Esto quiere decir que la estructura de datos slo utilizar entre un 12.5% y un
40% del espacio que ocupa. Ms de la mitad de la memoria se desperdicia.
C ofrece una estructura en la que todos los campos comparten el mismo espacio de
memoria y que est pensada precisamente para aquellos casos en las que slo uno de
esos campos se utiliza en cada momento. Esta estructura se define reemplazando la
palabrastruct por union. La siguiente figura muestra la definicin de los datos de
usuario utilizando union.
Cuando se define una union se reserva slo el espacio del mayor de los campos. Los
datos se almacenan comenzando por la misma posicin de memoria y con la estructura
del campo seleccionado. Esta construccin no guarda en ningn lugar cul de los campos
se est utilizando. Si esa informacin es necesaria, el programador debe almacenarla en
una estructura de datos auxiliar. El acceso a los campos de una union se realiza igual
que en una estructura.
4. Enumeraciones
Este tipo de datos se utiliza cuando se necesitan variables para almacenar un conjunto
reducido de valores no cubiertos por ninguno de los tipos bsicos. Supongamos una
aplicacin quiere almacenar el tipo de conexin de la que dispone el dispositivo y que
puede tener los valores GPRS, Wifi, Bluetooth o ninguna. C permite definir un tipo de
datos que slo puede tener estos valores mediante la palabra claveenum de la siguiente
forma:
A partir de esta definicin existe un nuevo tipo de datos enum type_of_connection que
puede ser utilizado como cualquier otro:
5. Ejercicios
Para resolver los siguientes ejercicios te recomendamos que crees un fichero de texto en
tu entorno de trabajo y que escribas en l las soluciones. Compila y (si procede) ejecuta
el programa para verificar que realiza las operaciones esperadas. Puedes utilizar el
siguiente esqueleto:
#include <stdio.h>
int main()
{
return 0;
}
1. Escribe la definicin de una estructura que almacene una tabla de 10 enteros, una
cadena de 20 letras, un nmero real de precisin simple y uno de precisin doble.
A continuacin, en una lnea separada, declara dos variables de este tipo. Compila
el programa para verificar que la sintaxis es la correcta.
2. Un programador ha escrito las siguientes definiciones:
3. #define SIZE 100
4.
5. struct map_annotation
6. {
7. char note[SIZE];
8. struct coordinates point;
9. };
10.
11. struct coordinates
12. {
13. float longitude;
14. float latitude;
15. };
16.
17. Incluye en tu programa la variable cadena para almacenar una cadena de texto de
10 letras definida como char cadena[SIZE];, donde SIZE es 11. Se quiere procesar
esa cadena de forma que cada letra pase a valer una letra que est cuatro
posiciones mas avanzadas en el abecedario. Escribe el cdigo para ejecutar esta
operacin (no te preocupes por las letras w, x, y y z. Al final del programa
incluye la siguiente lnea para imprimir la cadena por pantalla:
printf("%s\n", cadena);
18. Descarga el programa enum.c en tu entorno de desarrollo Linux. Abre una ventana
con un intrprete de comandos, complalo con el comando gcc -Wall -o enum
enum.c y ejectalo con el comando ./enum.
19. #include <stdio.h>
20.
21. int main(int argc, char *argv[])
22. {
23. enum status { ON = 0, OFF = 1 };
24. enum status a, b;
25.
26. a = 0;
27. a++;
28. a = 20;
29. b = a++;
30.
31. /* Imprime a y luego b en la misma linea */
32. /* Print a and then b in the same line */
33. printf("%d %d\n", a, b);
34. return 0;
35. }
#include
/* programa para calcular el rea de un circulo
programa ejemplo */
int main()
{
float radio,area;
printf("Radio = ? ");
scanf("%f",&radio);
area=3.1416*radio*radio;
printf("Area= %f", area);
}
int main()
{ // Programa que calcula el area de un circulo
// Problema ejemplo
float radio,area;
cout<<" Radio = ? ");
cin>>radio;
area= 3.1416 *radio * radio;
cout<<"Area ="<<area<<endl;
Identificador
Ejemplos de identificadores
suma_total
pendiente
densidad
numMax
identificador invalido
4abc empieza con un nmero
F*9 contiene un carcter especial
for (es una palabra reservada del lenguaje)
Variables
Valores enteros es el cero o cualquier nmero positivo o negativo sin punto decimal, se
clasifican de la siguiente manera:
char
bytes = 1
Mximo = 127 (255 cuando es unsigned)
Mnimo = -128 (0 cuando es unsigned)
short
bytes = 2
Mximo = 32767 (65,535 cuando es unsigned)
Mnimo = -32768 (0 cuando es unsigned)
int
bytes = 4
Mximo = 2,147,483,647 (4294967295 cuando es unsigned)
Mnimo = -2,147,483,648 (0 cuando es unsigned)
long
bytes = 4
Mximo = 2,147,483,647 (4294967295 cuando es unsigned)
Mnimo = -2,147,483,648 (0 cuando es unsigned)
long long
bytes = 8
Mximo = 9,223,372,036,854,775,807 (18,446,744,073,709,551,616 cuando es
unsigned)
Mnimo = 9,223,372,036,854,775,808 (0 cuando es unsigned)
Nmeros en punto flotante o nmero real, es cualquier nmero con o si n signo que
tiene punto decimal. Se clasifican de la siguiente forma:
float
bytes = 4
Mximo Exponente = 10^37
Mnimo Exponente = 10^-37
double
bytes = 8
Mximo Exponente = 10^308
Mnimo Exponente = 10^-308
para dar nombre a una variable se utiliza un identificador y se debe especificar el tipo de
datos que va almacenar,utilizando la siguiente forma declaratoria
tipo_de_dato nombre_de_variable;
ejemplo:
int suma;
declara suma como nombre de la variable que almacena un nmero entero, int es la
palabra reserva en C++ para especificar un nmero entero.
Cuando existen ms de una variable para declarar un mismo tipo se puede hacer de la
siguiente forma:
tipo_de_dato nombre_variable1,nombre_variable_2,nombre_variable_n;
ejemplo:
float x1,x2,x3;
float a;
float b;
float c;
float d;
Asignacin de memoria
El proceso mas importante en la programacin es cuando una variable recibe un valor.
Una variable se puede declarar y al mismo tiempo asignar un valor.
ejemplo:
int total=0;
los operadores de asignacion que puede utilizar son +=, -=, *=, /=
ejemplo:
total= total +1; es equivalente total +=1;
total=total -1; es equvalente total-=1;
total=total *5; es equivalente total*=5;
ABAP4
ABL5
ActionScript
ActionScript 3
C Sharp (C#)
Clarion
Clipper6
D
Object Pascal (Embarcadero Delphi)
Gambas
GObject
Genie
Harbour
Eiffel
Fortran 90/95
Java
JavaScript7
Lexico8
Objective-C
Ocaml
Oz
R
Pauscal (en espaol)
Perl910
PHP11
PowerBuilder
Processing.12
Python
Ruby
Self
Smalltalk13
Swift
Magik
Vala
VB.NET
Visual FoxPro14
Visual Basic 6.0
Visual DataFlex
Visual Objects
XBase++
DRP
Scala1516
Muchos de estos lenguajes de programacin no son puramente orientados a objetos,
sino que son hbridos que combinan la POO con otros paradigmas.
Al igual que C++, otros lenguajes, como OOCOBOL, OOLisp, OOProlog y Object
REXX, han sido creados aadiendo extensiones orientadas a objetos a un lenguaje de
programacin clsico.
Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin
Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de
maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en
todo el mundo.
3.- Estructuras condicionales, selectivas y repetitivas.
3.1 Estructuras condicionales.
Las estructuras condicionales hacen referencia a la toma lgica de decisiones para
realizar alguna tarea en caso de cumplirse una o varias de las alternativas u opciones
posibles. Este tipo de situaciones las aplicamos a diario y son muy comunes, puesto
que por naturaleza es muy complicado realizar varias acciones de forma simultnea. En
el campo de la programacin es la situacin es similar, puesto que la aplicacin de este
criterio garantiza en correcto funcionamiento de una aplicacin.
Las estructuras condicionales se clasifican de acuerdo al nmero de alternativas
posibles, estas son:
Simples.
Compuestas.
Mltiples.
Anidadas
Simple: Ejecuta una determinada accin cuando se cumple una determinada condicin.
S la accin es verdadera, entonces ejecuta la sentencia que dependa de la misma, en
caso de ser falsa no se ejecuta ninguna accin. Su representacin es la siguiente:
if (condicin)
cout<<Usted aprob la asignatura; Esta sentencia se ejecuta, si y slo s se cumple la
condicin.
Compuestas: Permite elegir entre dos alternativas posibles en funcin del cumplimiento
o no de la condicin a evaluar. Su representacin es:
if (condicin)
cout<<Mensaje; Esta sentencia se ejecuta, si y slo s se cumple la condicin
else cout<<Mensaje Esta sentencia se ejecuta, en caso de no cumplirse la condicin.
Es importante resaltar que al cumplirse alguna condicin se puede realizar cualquier
tipo de proceso, como por ejemplo: mostrar un mensaje, calcular, entre otros.
Mltiples: Permite asociar un conjunto de condiciones a un grupo de acciones que se
excluyen mutuamente. La estructura se conoce como CASE y permite una desviacin
del flujo de control hacia mltiples procesos en funcin del resultado de la evaluacin de
una expresin o indicador.
switch (variable) Variable : Valor ingresado por teclado.
case (valor):
accin; Valor: Posible valor ingresado por teclado
break; Break : Indica la interrupcin del grupo de opciones case
case (valor):
accin; Default :: Indica que el usuario seleccion una opcin no vlida.
break;
default:
accin;
Anidadas: Implican la seleccin de una de dos alternativas, es posible tambin utilizar la
instruccin if para disear estructuras de seleccin que contengan ms de dos
alternativas, es decir, se puede estructurar un programa con condiciones y sub-
condiciones . Su representacin es la siguiente:
if (condicin) if (edad>17)
if (sub-condicin) if (sexo=F)
cout<<Mensaje; cout<<Ud es mujer mayor de edad;
Las estructuras repetitivas permiten ejecutar acciones que pueden descomponerse en otras
acciones primitivas, esta estructura debe tener una entrada y una salida en la cual se ejecute
la accin un determinado o indeterminado numero de veces. Las estructuras repetitivas pueden ser
:WHILE (mientras), FOR (para), DO WHILE (hacer mientras).
Esta estructura se compone de tres expresiones. La primera expresin es aquella que asigna un
valor inicial (accin a ejecutar), la segunda expresin es la que determina como y cuando se
continua o no el bucle, una condicin que debe ser satisfecha para que se continue
la ejecucin (expresin lgica), y la tercera expresin permite que el valor inicial (indice) se
modifique en cada pasada.
Ejemplo: Realizar un programa que imprima en pantalla los nmeros del 1 al 100
x : array[1..5] of integer
En memoria el computador guarda 5 espacios: esto quiere decir en el arreglo X en la
posicin 1 guarda 34, en el arreglo X en la posicin 2 guarda 22, asi hasta la ltima
posicin del arreglo X posicion 5 guarda 72.
X [1]
34
X [2]
22
X [3]
39
X [4]
63
X [5]
72
Declaracion de los arreglos unidimensionales: Se declara el tipo del arreglo, con la
palabra reservada TYPE, luego se declara la variable de tipo arreglo, esto se hace en el
bloque de declaracion de variables palabra reservada VAR.
Type
nombre_arreglo= array[x..y]of tipo_dato;
Ejemplos:
salarios= array [1x] of real;
nombre_trabajador=array[1..x] of string;
Nota: El tipo de dato del arreglo puede ser: integer,real, boolean, string etc.
Variables tipo array
Var
sueldo:salarios;
nombre:nombre_trabajador;
Una vez declarados los arreglos procedemos a cargar informacin en ellos, para esto
usamos estructuras repetitivas la mas recomendable por su facilidad es el for, una vez
cargada la informacin se puede hacer cualquier operacin de calculo y por ltimo
mostramos la informacin de los arreglos usando de igual manera la estructura
repetitiva for.
carga de un arreglo, la letra i es el indice o subindice del arreglo e indica la posicin del
arreglo:
for i:=1 to num do
begin
readln(notas[i]);
end;
Mostrar la informacin de un arreglo, la letra i es el indice o subindice del arreglo e
indica la posicin del arreglo::
for i:=1 to num do
begin
writeln(notas[i]:3:1);
end;
Se han hechos programas que suman una cantidad de nmeros usando dos variables,
una para leer cada nmero y otra para acumular la suma. Este enfoque tiene la
desventaja de que se pierden los valores de los sumandos. El uso de arreglos permite
calcular la suma de los nmeros con una cantidad mnima de cdigo y a la vez
conservar cada valor, como muestra el siguiente programa completo:
Program SumaN;
Uses
Crt;
Const
n = 5;
Var
nums: Array[1..n] Of Integer;
s, i: Integer;
Begin
For i:=1 To n Do
Begin
Write('Escriba el nmero: ');
ReadLn(nums[i]);
s := s + nums[i];
End;
WriteLn('La suma es: ', s);
End.
Ntese el uso de una constante para marcar el tamao del arreglo; dicha constante,
tambin sirve para controlar el For. De este modo, slo se hace necesario cambiar un
nmero para adecuar el programa a la escala apropiada
Ejercicios de arreglos unidimensionales:
* Dadas n cantidad de notas, calcular e imprimir el promedio de las notas y todas las
notas que fueron mayor a la media calculada.
PROGRAM calificaciones;
USES CRT;
type
listacalificaciones=array[1..n]of real;
VAR
notas:listacalificaciones;
media,suma:real;
num,i:integer;
BEGIN
WRITELN('INTRODUZCA la cantidad de notas a procesar');
READLN(NUM);
suma:=0;
PROGRAM numeros;
USES CRT;
type
arreglonumeros=array[1..11]of real;
VAR
num:arreglonumeros;
i:integer;
numero:real;
BEGIN
for i:=1 to 11 do
begin
WRITELN('Introduzca el numero ' , i, ' a dividir');
readln(num[i]);
numero:=num[i]/3;
write('los numero resultantes de la division son:' ,numero:2:2);
readln;
end;
end.
4.2 Multidimencionales