Sunteți pe pagina 1din 41

INSTITUTO TECNOLGICO DE

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

2.1 Introduccin al lenguaje y su entorno 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.

Cmo compilar en DJGPP?


Una vez que tengamos nuestro cdigo fuente, nuestro cdigo del programa, debemos
compilarlo, para ello acudimos al men del DJGPP
COMPILE, posteriormente marcamos sobre BUILD ALL (construir todo). Si a la hora de
compilar el DJGPP no nos ha dado ningn error, nuestro programa quedara listo para ser
ejecutado. En caso contrario a romperse el coco buscando el posible error.

Cmo ejecutar programas desde DJGPP?


Suponiendo que tenemos un programa ya editado en el RHIDE (editor del DJGPP). Y
que esta compilado. Debemos acudir al men FILE y
a continuacin a DOS SHELL. De esta forma pasaremos al entorno bajo MSDOS y desde
la lnea de comandos (C.\DJGPP\bin\) escribimos el nombre del programa compilado. Y
este ser ejecutado bajo MSDOS.
Comentarios en el cdigo fuente.
Muchas veces los buenos programadores hacen pequeos comentarios en partes de su
cdigo para clarificarlo. Esto se hace con la nica funcin de que si al da siguiente o al
mes siguiente queremos modificar alguna parte de nuestro cdigo sepamos con rapidez
y claridad las partes de este y para ello se especifican comentarios puestos por el propio
programador para entender que es lo que hace una parte del cdigo donde ha puesto el
comentario. Esto tambin se suele hacer por si hace falta que otro programador necesite
ver el cdigo o revisarlo y as facilitarle la tarea de comprensin del mismo.
A la hora de compilar un cdigo el compilador una vez que detecta los cometarios, (los
detecta por la inclusin de unos signos especficos) lo que hace es pasar de largo seguir
leyendo o procesando.
Para hacer comentarios en C se usan los signos de introduccin /* y de finalizacin */.
Ejemplo:
#include stdio.h
main () {
printf (OrioN ScripT by Quasi en http://www.ircorion.com ) /*esto imprime en pantalla el
script para IRC y la web*/
}
En este ejemplo observamos que no hara falta poner el comentario puesto que ya es
claro la funcin del printf pero hay otros casos en los que se realizan bucles o ciertas
operaciones en las que si seria de mucha utilidad poner comentarios aclaratorios.

Nuestro primer programa


Vamos a exponer el mtico programa que se suele hacer como primera aproximacin a
cualquier lenguaje de programacin.
El, Hola Mundo!!!
Cdigo fuente (ejemplo):
#include <stdio.h>
Main () {
Printf (Hola mundo!!!);
}
Ahora voy a comentar paso a paso el programa.
Comenzamos con: #include <stdio.h>
Include es una directriz que se encarga de meter libreras de funciones. En este caso
metemos la librera stdio Esta librera contiene funciones de consola. Funciones de
entrada y salida de datos, es donde se encuentra la funcin printf, posteriormente usada.
Es la librera por excelencia de C. Y la que siempre nos veremos obligados a incluir.
Si no lo has entendido bien el concepto no preocupar, ms adelante se habla de ello en
profundidad.
A continuacin viene la funcin main (). Esta funcin es el cuerpo principal del programa
como su propio nombre indica. Es el punto de partida y de salida de un programa.
Las rdenes en C es bueno agruparlas todas entre llaves.
Dentro del main metemos la funcin printf funcin que est en la biblioteca stdio y lo
que hace es mostrar por pantalla el texto que tenemos entre comillas. No olvidemos
terminar la instruccin de la funcin con un ;. Y cerramos la llave que finaliza el conjunto
de rdenes a realizar por el main. Las rdenes que se encuentran dentro del main
siempre se ejecutaran puesto que es el cuerpo principal del programa. Vendra a ser
como el tronco de un rbol, las ramificaciones de ese rbol seria otras funciones fuera
del main.
El lenguaje C se caracteriza entre otras cosas por seguir un orden muy claro y estricto.
Todos los programas deben presentar una anatoma comn.
1. Aadir todas las directrices o directivas que incluyan ficheros que contengan otras
funciones que necesitemos para nuestro programa. Siempre o casi siempre deberemos
insertar la librera stdio, puesto que es la que contiene las funciones principales de toma
(scanf) y muestreo de datos (printf). A la hora de aadir una librera siempre se siguen la
misma sintaxis: #include
<NombreDeLaLibreria>
2. Podemos obtener el nombre de las funciones o libreras que contienen las funciones
que necesitemos acudiendo al men HELP del compilador DJGPP.
3. Se declaran funciones o variables globales. Funciones externas creadas por nosotros
mismos y definidas al final del main. O variables globales que tendrn vida dentro y fuera
del main (cuerpo principal).
4. Se define la funcin main, se especifican todas las ordenes y se delimitan entre llaves
tal y como se expone en el ejemplo anterior.
5. Se definen las funciones si es que las hay, anteriormente declaradas antes del main.
En todo programa que realicemos sobre este lenguaje C. Debemos tener muy en cuenta,
el principio y el final de las cosas, y su orden y prioridad de ejecucin. En C las ordenes
se compilan de forma lineal y secuencial (de arriba a abajo y de una en una). En la
programacin est mal visto que se pierda el ciclo de proceso de un programa, siempre
debemos saber porque punto pasa el programa, como vara y cuando finaliza.
Estructura de datos
Esto que se explica a continuacin si no lo entiendes no le des ms importancia, pasar al
captulo siguiente.
Se dice que: programa = algoritmo + estructura de datos
Dependiendo la forma en la que se almacenan los datos tendremos lo que se conoce
como una estructura de datos.
Las estructuras de datos vienen predeterminadas por la disposicin y los valores en que
vienen dadas.
Normalmente las estructuras habituales son:
Matrices: Es una secuencia de elementos del mismo tipo relacionados unos con otros por
el orden en el que estn definidos
Las matrices pueden ser: unidimensionales, bidimensionales y tridimensionales.
Dependiendo claro est de su dimensin.
Cada departamento o valor de una matriz viene identificado por un ndice.
Listas: Conjunto de elementos en el que cada uno est relacionado con el elemento
anterior y siguiente. Los hay circulares.
Colas: Es un tipo especial de listas llamada FIFO (first imput first out)
Pilas: Conocidas como LIFO (last imput firts out)
rbol: Es una estructura en la que un elemento va a estar relacionado con otro o con
varios ms.
Fichero: Es una estructura que permite almacenar informacin en un dispositivo de
almacenamiento. Las filas cuando almacenan datos estn constituidas por una estructura
que se llama registro. A cada parte de un registro se le llama campo.
Bueno ahora entremos ya en materia de C. J
Recordemos siempre que el C distingue entre nomenclaturas, o sea diferencia entre
minsculas y maysculas.
En C, es necesario poner punto y coma ; al final de una orden, pero no se debe poner
al final de una condicin o estructura condicional tampoco se debe poner en otro tipo de
ordenes como algunos bucles.

2.2 Estructura de un programa

En la actualidad existen mltiples lenguajes de programacin denominados de alto


nivel, es decir, aquellos que permiten escribir programas en un formato lejano al lenguaje
mquina o ensamblador que es el que utiliza el procesador para ejecutar todos los
programas. Java es un lenguaje de alto nivel orientado a objeto pues los programas se
estructuran alrededor de clases y objetos. C, en cambio, no dispone de objetos y se
estructura en base a un conjunto de funciones, por lo que se denomina un lenguaje
procedimental.

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.

Un programa en C es un conjunto de funciones, definiciones de tipos de datos y


declaraciones de variables contenidos en un conjunto de ficheros. Un programa en C
siempre comienza a ejecutar por la funcin con nombre main. Cualquier funcin puede
llamar a cualquier funcin, y las variables declaradas fuera de las funciones tienen mbito
global o local al fichero que las contiene (si se declaran con el prefijo static). La siguiente
figura ilustra la estructura de un programa en C contenido en varios ficheros.

El compilador es el programa encargado de traducir un conjunto de funciones,


definiciones y declaraciones en mltiples ficheros a un fichero ejecutable. El compilador
de C tiene un comportamiento sorprendentemente sencillo y realiza mucho menos trabajo
del que se est acostumbrado con otros compiladores como el de Java. Para crear un
ejecutable, el compilador procesa los ficheros de cdigo uno a uno de forma
independiente, de forma que las definiciones de variables y funciones de un fichero no
las recuerda cuando procesa el fichero siguiente. Adems, el compilador realiza una
nica pasada por el texto, por lo que cuando se traduce un fichero, en un punto concreto
del texto, slo se dispone de las definiciones que se han encontrado hasta ese punto.

Como consecuencia de este comportamiento, una variable no puede ser utilizada, a no


ser que se haya declarado previamente en ese mismo fichero. Igualmente, una funcin
no puede ser invocada a no ser que se haya incluido previamente en el mismo fichero.
Para poder dividir igualmente el cdigo en mltiples ficheros el lenguaje permite la
definicin de prototipos de funciones (el tipo del resultado que devuelven, seguido del
nombre de la funcin y del tipo de sus parmetros entre parntesis) sin incluir el cdigo,
y adems permite la definicin de variables como externas, es decir, que estn en otro
fichero. A continuacin se muestran dos ficheros en los que la funcin fillIn y la
variable table estn definidas en un fichero pero las utiliza la funcin main en el otro
fichero.

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.

2.3 identificadores (variables y constantes)

Identificador.

Un identificador es un conjunto de caracteres alfanumricos de cualquier longitud que


sirve para identificar las entidades del programa (clases, funciones, variables, tipos
compuestos) Los identificadores pueden ser combinaciones de letras y nmeros. Cada
lenguaje tiene sus propias reglas que definen como pueden estar construidos. Cuando
un identificador se asocia a una entidad concreta, entonces es el nombre de dicha
entidad, y en adelante la representa en el programa. Nombrar las entidades hace posible
referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simblico.

Restricciones de la composicin de los identificadores en C++

Solo hay dos restricciones en cuanto a la composicin:

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.

CamelCase es un estilo de escritura que se aplica a frases o palabras compuestas. El


nombre se debe a que las maysculas a lo largo de una palabra en CamelCase se
asemejan a las jorobas de un camello. El nombre CamelCase se podra traducir como
Maysculas/Minsculas Camello. El trmino case se traduce como caja tipogrfica, que
a su vez implica si una letra es mayscula o minscula y tiene su origen en la disposicin
de los tipos mviles en casilleros o cajas.

Existen dos tipos de CamelCase:

UpperCamelCase, cuando la primera letra de cada una de las palabras es mayscula.


Ejemplo: EjemploDeUpperCamelCase.

lowerCamelCase, igual que la anterior con la excepcin de que la primera letra es


minscula. Ejemplo: ejemploDeLowerCamelCase.

Constantes y variables

Una Constante es aqulla que no cambia de valor durante la ejecucin de un programa


(o comprobacin de un algoritmo en este caso). Se representa en la forma descrita para
cada categora.
Las Variables son aqullas que pueden modificar su valor durante la ejecucin de un
programa (idem).

Su representacin se da a travs de letras y smbolos generalmente numricos a los que


se les asigna un valor.

Ejemplos:

Constantes Variables
36

450.35

0.58
Numricos
A
A
Juan
Nom
La Paz
Cadena Edad

Falso Ciudad

Verdadero Estatura
Lgicos

2.4 tipos de datos

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.

1. Tipos de datos bsicos

C ofrece tres tipos de datos bsicos:

Nmeros enteros definidos con la palabra clave int


Letras o caracteres definidos con la palabra clave char
Nmeros reales o en coma flotante definidos con las palabras claves float o double
Enteros

Se definen con int y admiten de forma opcional dos prefijos modificadores:

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.

unsigned: define un nmero natural (mayor o igual a cero).

Sugerencia

En tu entorno de desarrollo crea un fichero de texto con la siguiente estructura (puedes


simplemente copiar y pegar el texto del siguiente cuadro):

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

Reutiliza el programa de la seccin anterior y aade definiciones de letras y cadenas.


Para estas ltimas prueba a poner diferentes tamaos de tabla (demasiado pequeos y
demasiado grandes para la cadena). Escribe tambin expresiones aritmticas sobre las
letras. Recuerda que si el compilador no emite mensaje alguno, el programa es correcto.

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

Aade al programa de los apartados anteriores definiciones de nmeros reales. Prueba


a definir nmeros muy grandes o pequeos para ver la capacidad de representacin de
los tres tipos. Compila para ver si las definiciones son correctas.

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.

Tablas de mltiples dimensiones

C permite la definicin de tablas de mltiples dimensiones escribiendo los diferentes


tamaos rodeados de corchetes y concatenados. El acceso se realiza concatenando
tantos ndices como sea preciso rodeados de corchetes. Al igual que en el caso de las
tablas unidimensionales, no se realiza ningn tipo de comprobacin de los ndices cuando
se accede a un elemento. A continuacin se muestra la definicin de tablas de ms de
una dimensin.

#define MATRIX_A 100


#define MATRIX_B 30
#define COMMON_SIZE 10

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.

Tamao de los tipos de datos bsicos

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.

Tabla 1. Tamao de los tipos de datos bsicos de la plataforma Linux/i686

Tipo Tamao (bytes)

char, unsigned char 1

short int, unsigned short int 2

int, unsigned int, long int, unsigned long int 4

float 4

double 8

long double 12

2. Tipos de datos estructurados

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;
};

La construccin anterior slo define un nuevo tipo de datos, no se declara variable


alguna. Es decir, la construccin anterior tiene la misma entidad que el tipo int o float.
El nombre del nuevo tipo estructurado definido es struct nombre_de_la_estructura. Por
ejemplo:

1 #define FIRST_SIZE 100


2 #define LAST_SIZE 200
3 #define CONTACTS_NUM 100
4
5 /* Definicin de la estructura */
6 struct contact_information
7 {
8 char firstname[FIRST_SIZE];
9 char lastname[LAST_SIZE];
10 unsigned int homephone;
11 unsigned int mobilephone;
12 };
13
14 /* Declaracin de variables con esta estructura */
15 struct contact_information person1, person2, contacts[CONTACTS_NUM];

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.

La definicin de una estructura y la declaracin de variables se pueden combinar en la


misma construccin, pero preferimos que lo hagas por separado, por legibilidad:

struct contact_information
{
char firstname[FIRST_SIZE];
char lastname[LAST_SIZE];
unsigned int homephone;
unsigned int mobilephone;
} person1, person2 contacts[CONTACTS_NUM];

El acceso a los campos de una variable estructurada se denota por el nombre de la


variable seguido de un punto y del nombre del campo tal y como se muestra en el
siguiente ejemplo..

#define FIRST_SIZE 100


#define LAST_SIZE 200
#define CONTACTS_NUM 100

struct contact_information
{
char firstname[FIRST_SIZE];
char lastname[LAST_SIZE];
unsigned int homephone;
unsigned int mobilephone;
};

int main(int argc, char *argv[])


{
struct contact_information person1;

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;

Cuntas variables se han declarado en el cdigo anterior? Cuntos tipos de datos se


han definido? Imagnate que eres el compilador y que debes reservar memoria para
almacenar los datos que se acaban de declarar. Cules de estas lneas se traduciran
en reserva de memoria? De qu tamao?

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:

NIF: ocho dgitos seguidos de una letra.


CIF: letra seguida de 8 dgitos.
Pasaporte: ocho letras y/o nmeros.
NIE: letra seguida de 7 dgitos y una segunda letra.
Nombre de usuario: cadena de texto de hasta 16 letras.

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:

enum type_of_connection { GPRS, Wifi, Bluetooth, Ninguna};

A partir de esta definicin existe un nuevo tipo de datos enum type_of_connection que
puede ser utilizado como cualquier otro:

enum type_of_connection connection_type;


connection_type = GPRS;
connection_type = Bluetooth;

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()
{

/* Escribe aqu tu cdigo */

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.

struct map_annotation annotations[SIZE];

Qu problema tienen? (siempre puedes cortar y pegarlas en tu programa y utilizar


el compilador para comprobar)

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

Qu valores imprime por pantalla? A la vista del resultado, qu conclusin se


deriva del funcionamiento de los tipos de datos enumerados en C?

36. Define una estructura de datos para almacenar el resultado de un sorteo de la


Lotera Primitiva. Es decir, un grupo de seis nmeros, un nmero complementario
y un nmero de reintegro, todos ellos diferentes y entre los valores del 1 al 49.
Calcula el tamao que ocupa tu estructura de datos con los tamaos mostrados
en la tabla 1 (ver las Normas del juego).
37. Declara una tabla de 100 enteros y rellena su contenido con un valor cualquiera.
Declara una segunda tabla tambin de 100 enteros. Escribe el cdigo que
almacena en cada elemento de la segunda tabla la suma de elementos hasta esa
misma posicin de la primera tabla.
38. Se necesita disear una estructura de datos para el buzn de entrada de un
telfono mvil. Los mensajes en ese buzn son de dos tipos, o SMS, o MMS. Los
mensajes SMS tiene un remitente (un nmero de telfono), una fecha/hora (que
es un nmero entero), un texto de no ms de 140 letras y un tipo de mensaje que
puede ser SMC o normal. Los mensajes MMS tienen los mismos campos excepto
que en lugar del tipo de mensaje tienen una cadena de texto de hasta 200 letras
con la ruta a la imagen que contiene. Escribir las definiciones de las estructuras
de datos necesarias para tener una tabla de 100 mensajes como buzn de
entrada.

2.5 operadores aritmticos, lgicos y relacionales


Operadores Aritmeticos, Relacionales y Logicos
Para empezar necesitamos saber que es un operador. Bueno podemos decir que es un
signo, cadena de caracteres o incluso una combinacion de los anteriores cuya funcion es
de realizar calculos, comparaciones sobre diferentes tipos de expresiones, variables,
constantes o valores.
Operadores Aritmeticos
Estos operadores son utilizados para realizar operaciones aritmeticas, es decir, para
calcular un valor dando un resultado. Estos poseen un orden de ejecucion, es decir,
una jerarquia que son:
()
^
*, /
\
mod
+, -
y los podemos ver en la siguiente tabla:

Los Operadores Relacionales


Estos operadores son tambin conocidos como operadores de comparacin, comparan
dos expresiones dando un resultado True(verdadero), False (falso) o Null (no vlido) y
son los mostrados en la siguiente tabla:

Los Operadores Logicos


Estos ultimos se utilizan cuando Visual Basic compara 2 expresiones, lo que hace es
regresar uno de dos valores posibles: True o False, pero Visual Basic no
entiende True o False por lo que utiliza valores numricos para
representarlos, True o False son valores booleanos donde 0 es False y 1 es True.

En Visual Basic existen 6 operadores lgicos:


2.6 programacin estructurada
Lenguaje C\C++
Lenguaje C es un lenguaje de programacin estructurado de proposito general. Algunas
de sus caractersticas es el uso a un nivel ms bajo, entre lenguaje mquina y el
lenguaje de alto nivel.
El lenguaje C se origina con el lenguaje BCPL, creado por Martin Richards, influyo en el
desarrollo del lenguaje B implementado por Ken Thompson y su vez permitio el
desarrollo del lenguaje C , implementado por Dennis Ritchie en 1971.
Para 1973 El sistema operativo UNIX estaba escrito en lenguaje C.
El lenguaje C la unidad bsica de programacin es la funcin, los programas estn
formados por mdulos. Cada mdulo realiza una tarea especfica y es un subprograma
independiente. Los programas estructurados tienen un conjunto de mdulos
relacionados logicamente como una unidad integrada.

El lenguaje C++ es un lenguaje hibrido por maneja la programacin estructurada y la


programacion orientada a objetos. Incrementa la productividad, y la reutilizacin de
cdigo.
La unidad bsica de programacin en lenguaje C++ es la clase.Una clase contiene
datos y funciones o mtodos que manipulan los datos que definen las caracteristicas de
un objeto. Cuando se define una clase, se pueden crear objetos .

Estructura de un programa en C y C++


Todo programa en C consta de una o ms funciones, una de ellas es main.El programa
siempre comienza por la ejecucin de la funcin main.Se pueden definir algunas
funciones adicionales pueden preceder a main.

Cada funcin debe contener:


1.- Una cabecera de la funcin, que consta del nombre de la funcin, despues unos
parentesis para una lista opcional de argumentos.

2.- Despues el cuerpo de la funcin que describe el conjunto de sentencias o conjunto


de instrucciones encerradas por un par de llaves. Cada sentencia de expresin debe
terminar con punto y coma (;).
Los comentarios pueden aparecer en cualquier parte del programa, deben estar entre
los limitadores /* esto es un comentario */ sirven para documentar el codigo.

ejemplo con lenguaje C

#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);
}

ejemplo con lenguaje C++

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

Es una combinacin de letras,digitos o subrayado(_). Al programar en un lenguaje los


nombre de variables,funciones o clases reciben un nombre por medio de un
identificador.

LAS REGLAS PARA UN IDENTIFICADOR

1.-El primer carcter debe ser una letra o el subrayado(_)


2.-No se permiten espacios en blanco. Utilizar el subrayado (_) para separar las
palabras en un nombre que este formado de dos o mas palabras.
3.-No deben tener carcteres especiales.
4.-No debe utilizar una palabra reservada del lenguaje como identificador.
5.- El lenguaje C/C++ es sensible al uso de maysculas y minusculas. El compilador
distingue de las letras maysculas y minsculas.

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

Una variable en un languaje de programacin es un espacio de memoria que almacena


un tipo de dato.
Para el lenguaje de programacin C\C++ existen varios tipos de datos

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

Formato para declarar una variable

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;

tipo_de_dato designa un tipo de dato vlido en C++


nombre_de_variable es el identificador seleccionado por el programador

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;

tambien se puede realizar en forma individual.

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;

Aunque en un proceso de asignacin la variable debe estar a la izquierda de la


expresin despues = (ASIGNAR) el valor o expresin de la derecha
ejemplo:

total=total +1 primero calcula la operacion total + 1 y despues lo guarda en total.

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;

total=total/2; es equivalente total/=2;</area<<endl;


2.7 programacin orientada a objetos
La programacin orientada a objetos (POO, u OOP segn sus siglas en ingls) es
un paradigma de programacin que viene a innovar la forma de obtener resultados. Los
objetos manipulan los datos de entrada para la obtencin de datos de salida
especficos, donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseados de los lenguajes de programacin actuales
permiten la agrupacin en bibliotecas o libreras, sin embargo, muchos de estos
lenguajes permiten al usuario la creacin de sus propias bibliotecas.
Est basada en varias tcnicas,
incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamie
nto.
Su uso se populariz a principios de la dcada de 1990. En la actualidad, existe una
gran variedad de lenguajes de programacin que soportan la orientacin a objetos.
Algunos lenguajes orientados a objetos
Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas
principales de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulacin, en donde los "objetos" son la representacin de la informacin ms
importante.
Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que gran parte
de la teora de la programacin orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes:

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;

3.2 Estructuras selectivas


Estructura Selectiva
La estructura lgicas selectivas se encuentran en la solucin algortmica de casi todo
tipo de problemas. Las utilizamos cuando en el desarrollo de la solucin de un
problema debemos tomar una decisin, para establecer un proceso o sealar un
camino alternativo a seguir.
Esta toma de decisin (expresada con un rombo) se basa en la evaluacin de una
o ms condiciones que nos sealarn como alternativa o consecuencia, la rama a
seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se
toma una decisin, se marca la rama correspondiente a seguir, se vuelve a tomar una
decisin y as sucesivamente. Por lo que para alcanzar la solucin de este problema o
subproblema debemos aplicar prcticamente un rbol de decisin.
Las podemos clasificar en:
1. SI ENTONCES (Esctructura selectiva simple)
2.SI ENTONCES / SINO (Estructura selectiva doble)
3.SI MULTIPE (Estructura selectiva mltiple)
ESCTRUCTURA SELECTIVA SI- ENTONCES
ESTRUCTURA SELECTIVA SI ENTONCES /SINO

ESTRUCTURA SELECTIVAS ANIDADAS.


ESTRUCTURA SI MLTIPLE

3.3 Estructura repetitiva


Las estructuras repetitivas son aquellas que sirven para evitar la molestia de andar repitiendo una
acciones varias veces. Estas sirven para que una accin se ejecute un determinado numero de
veces, y depende del cumplimiento de una determinada acciones (una condicin).

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

En este blog hablaremos de la estructura FOR:

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

Inicialmente f vale 1 y como no es superior a 100 se ejecuta el bloque, imprimimos el


contenido de f, al finalizar el bloque repetitivo se incrementa la variable f en 1, como 2 no es
superior a 100 se repite el bloque de instrucciones.
Cuando la variable del for llega a 101 sale de la estructura repetitiva y contina la ejecucin del
algoritmo que se indica despus del crculo.
La variable f (o como sea que se decida llamarla) debe estar definida como una variable ms.
4.- Arreglos
4.1 unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que est formado por una
coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para
modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos
deben ser del mismo tipo.

El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir,


podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos
anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del
arreglo que nos da su posicin relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria.
Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos
guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar
entre otras.

REPRESENTACION EN MEMORIA: Los arreglos guardan en memoria la cantidad de


espacios que se le indican en la declaracin.

Ejemplo: sea el siguente arreglo unidimensional donde se va a guardar 5 datos de tipo


entero (integer)

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;

for i:=1 to num do


begin
readln(notas[i]);
suma:=suma+notas[i];
end;
media:=suma/num;
writeln('la media es:' , media:2:2);
writeln('la lista de calificaciones mayores a la media es:');
for i:=1 to num do
begin
if notas[i]>media then
writeln(notas[i]:3:1);
readln;
end;
END.

(*Escribir un programa en pascal que rellene un array con 11


numeros, luego dividirlos entre 3 y mostralos por pantalla *)

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

S-ar putea să vă placă și