You are on page 1of 6

UNIDAD INTRODUCCIN AL LENGUAJE DE PROGRAMACIN

1.1. Breve Historia.


Primera Generacin
Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de
programarlas, es decir, de almacenar en memoria la informacin sobre la tarea que
iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban
los pasos de clculo, uno por uno.
John Von Neumann desarroll el modelo que lleva su nombre, para describir este
concepto de programa almacenado. En este modelo, se tiene una abstraccin de la
memoria como un conjunto de celdas, que almacenan simplemente nmeros. Estos
nmeros pueden representar dos cosas: los datos, sobre los que va a trabajar el
programa; o bien, el programa en s.
Se tena el problema de representar las acciones que iba a realizar la computadora, y
que la memoria, al estar compuesta por switches correspondientes al concepto de bit,
solamente nos permita almacenar nmeros binarios.
La solucin que se tom fue la siguiente: a cada accin que sea capaz de realizar
nuestra computadora, asociarle un nmero, que ser su cdigo de operacin
(opcode). Por ejemplo, una calculadora programable simple podra asignar los
opcodes:
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.
La descripcin y uso de los opcodes es lo que llamamos lenguaje de mquina. Es
decir, la lista de cdigos que la mquina va a interpretar como instrucciones, describe
las capacidades de programacin que tenemos de ella; es el lenguaje ms primitivo,
depende directamente del hardware, y requiere del programador que conozca el
funcionamiento de la mquina al ms bajo nivel.
Los lenguajes ms primitivos fueron los lenguajes de mquina. Esto, ya que el
hardware se desarroll antes del software, y adems cualquier software finalmente
tiene que expresarse en el lenguaje que maneja el hardware.
La programacin en esos momentos era sumamente tediosa, pues el programador
tena que bajarse al nivel de la mquina y decirle, paso a pasito, cada punto de la
tarea que tena que realizar. Adems, deba expresarlo en forma numrica; y por
supuesto, este proceso era propenso a errores, con lo que la productividad del
programador era muy limitada. Sin embargo, hay que recordar que en estos
momentos, simplemente an no exista alternativa.
Segunda Generacin
El primer gran avance que se dio fue la abstraccin dada por el Lenguaje
Ensamblador, y con l, el nacimiento de las primeras herramientas automticas para
generar el cdigo mquina. Esto redujo los errores triviales, como poda ser el nmero
que corresponda a una operacin, que son sumamente engorrosos y difciles de
detectar, pero fciles de cometer. Sin embargo, an aqu es fcil para el programador
perderse y cometer errores de lgica, pues debe bajar al nivel de la forma en que
trabaja el CPU, y entender bien todo lo que sucede dentro de l.

Tercera Generacin
Con el desarrollo en los 50s y 60s de algoritmos de ms elevado nivel, y el aumento
de poder del hardware, empezaron a entrar al uso de computadoras cientficos de
otras ramas; ellos conocan mucho de Fsica, Qumica y otras ramas similares, pero
no de Computacin, y por supuesto, les era sumamente complicado trabajar con
lenguaje Ensamblador en vez de frmulas. As, naci el concepto de Lenguaje de Alto
Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su
nombre indica, inici como un simple esfuerzo de traducir un lenguaje de frmulas, al
lenguaje ensamblador y por consiguiente al lenguaje de mquina. A partir de
FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo
concepto: buscar la mayor abstraccin posible, y facilitar la vida al programador,
aumentando la productividad, encargndose los compiladores o intrpretes de traducir
el lenguaje de alto nivel, al lenguaje de computadora.
Hay que notar la existencia de lenguajes que combinan caractersticas de los de alto
nivel y los de bajo nivel (es decir, Ensamblador), que son conocidos como lenguaje de
nivel medio.
Cuarta Generacin
Los idiomas de la cuarta generacin parecen, segn las instrucciones, a las de la
tercera generacin. Lo nuevo de estos lenguajes son conceptos como clases, objetos
y eventos que permiten soluciones ms fciles y lgicos. Lenguajes como C++, java y
C# se llaman lenguajes orientadas al objeto.
Los idiomas modernos no slo permiten abstracciones si no tambin la
implementacin impuesta de restricciones en abstracciones. La mayora de los
idiomas modernos son orientados a objeto, permitiendo manejar los objetos ms
fcilmente y tambin se pueden limitar el acceso al uso de estos objetos y sus datos.

1.2. Caractersticas
Caractersticas ms importantes de C++:
- Tamao pequeo.
- Uso extensivo de llamadas a funciones.
- Comandos breves (poco tecleo).
- Lenguaje estructurado.
- Implementacin de apuntadores
- El uso de constructores de alto nivel.
- El poder manejar actividades de bajo-nivel.
- El generar programas eficientes.
- Portabilidad del cdigo en diversos entornos operativos.

1.3. Sentencias y operadores

Existen sentencias de varios tipos, que nos permitirn enfrentarnos a todas las
situaciones posibles en programacin. Estos tipos son:
Bloques = {}
Expresiones
o Llamada a funcin = Funcion (valor, valor2);
o Asignacin = <variable> <operador de asignacin>
<expresin>; variable = funcin (valor1, valor2)
Bucles
o while
o do...while
o for
Seleccin
o if...else
o switch

1.4. Tipos de Datos


Los tipos de datos en C++ se clasifican en primitivos y derivados.
Los tipos de datos primitivos son los que estn definidos dentro del lenguaje.
Los tipos de datos derivados se forman a partir de los tipos primitivos.

Tipo Descripcin N de bytes tpico Rango

short Entero corto 2 -32768 a 32767

int Entero 4 -2147483648 a +2147483647

long Entero largo 4 -2147483648 a +2147483647

char Carcter 1 -128 a 127


Positivos: 3.4E-38 a 3.4E38
float Nmero con coma 4
Negativos: -3.4E-38 a -3.4E38
Nmero con coma de Positivos: 1.7E-308 a 1.7E308
double 8
doble precisin Negativos: -1.7E-308 a -1.7E308
Positivos: 3.4E-4932 a 1.1E4932
long double Real doble largo 10
Negativos: -3.4E-4932 a -1.1E4932
bool Dato de tipo lgico 1 0, 1

wchar_t Carcter Unicode 2 0 a 65535

1.5. Expresiones.
Las expresiones son combinaciones de constantes, variables, smbolos de operacin,
parntesis y nombres de funcin especiales.

1.6. Operadores aritmticos, lgicos y relacionales.


OPERADORES ARITMETICOS
+ suma resta * multiplicacin / divisin % mod o residuo
OPERADORES RELACIONALES
< menor que > mayor que <= menor o igual >= mayor o igual == igual
!= diferente
OPERADORES LOGICOS
&& and (y lgica) | | or ( lgico) ! not (negacin)
OPERADORES DE ASIGNACION
= igual += mas igual -=menos igual *= por igual /= dividido igual

1.7. Estructuras Bsicas de Control.


1.1.1. Estructura Secuencial.
La estructura secuencial est formada por una secuencia de instrucciones
que se ejecutan en orden una a continuacin de la otra.
Cada una de las instrucciones estn separadas por el carcter punto y
coma (;)
1.1.2. Estructura Selectiva
Las estructuras condicionales controlan si una sentencia o bloque de
sentencias se ejecutan, en funcin del cumplimiento o no de una condicin
o expresin lgica.
C++ tiene dos estructuras de control para la seleccin, if y switch
1.1.3. Estructuras Iterativas
C++ dispone de tres estructuras repetitivas: while, do-while y for.

UNIDAD II - ESTRUCTURA DE DATOS. ARREGLOS


Arreglos Unidimensionales Vectores
Concepto y declaracin: Un vector, tambin llamado array (arreglo) unidimensional, es
una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos
en un solo bloque de memoria juntos, uno despus de otro. A este grupo de elementos
se les identifica por un mismo nombre y la posicin en la que se encuentran. La
primera posicin del array es la posicin 0.
Declarar un vector en C++ es sencillo, seguimos la siguiente sintaxis:
Tipo nombre [tamao]; int a [5]

Arreglos Bidimensionales Matrices


Concepto y declaracin: Una matriz es un vector de vectores o un tambin llamado
array bidimensional. La manera de declarar una matriz es C++ es similar a un vector:
tipo nombre [nmero de filas][nmero de columnas]; int myMatriz1[10][5];

UNIDAD III - PROGRAMACIN MODULAR


Funciones Predefinidas. Teoria

Las siguientes funciones se encuentran en las libreras: stdid.h stdlib.h:

Funcin (sintaxis) Tipo Propsito


abs(i) int Devuelve el valor absoluto de i
ran() int Devuelve un entero aleatorio
srand(u) void Inicializa el generador de nmeros aleatorios
Double/
div(d1/d2) Devuelve el cociente y el resto de la divisin
int
atuf(s) Double Convierte la cadena a una cantidad de doble precisin
atoi(s) int Convierte cadenas a un entero
atol(s) long Convierte cadenas a un entero largo

UNIDAD IV - ESTRUCTURAS. UNIONES. PUNTEROS.


Punteros
Concepto y declaracin: Los punteros permiten simular el paso por referencia, crear y
manipular estructuras dinamicas de datos, tales como listas enlazadas, pilas, colas y
rboles. Generalmente las variables contienen valores especificos. Los punteros son
variables pero en vez de contener un valor especifico, contienen las direcciones de las
variables a las que apuntan. Para obtener o modificar el valor de la variable a la que
apuntan se utiliza el operador de indireccin. Los punteros, al ser variables deben ser
declaradas como punteros antes de ser utilizadas.
Sintaxis
int *ptrID, ID;
ID = 8;
ptrID = &ID; // puntero a ID
ptrID es un puntero a int, mientras que la variable ID es solo una variable del tipo int.
Todo puntero debe ser precedido por un asterisco (*) en la declaracin.
Se puede declarar ms de un puntero en la misma sentencia. En el ejemplo que sigue
se ve la declaracin de dos punteros a int.
Estructuras.
Estructura es un tipo de dato definido por el usuario. Nosotros tenemos la capacidad
de definir nuevos tipos de datos considerablemente ms complejos que los tipos
manejados hasta ahora. Una estructura es una combinacin de varios datos definidos
previamente, incluyendo otras estructuras ya definidas. Una definicin fcil de entender
sera: Es un grupo de datos afines en una forma fcil de usar para el programador o
usuario del programa
Reserva dinmica de memoria.
La memoria dinmica es un espacio de almacenamiento que se puede solicitar en
tiempo de ejecucin. Adems de solicitar espacios de almacenamiento, tambin podemos
liberarlos (en tiempo de ejecucin) cuando dejemos de necesitarlos.
Para realizar esta administracin de la memoria dinmica, C++ cuenta con dos
operadores new y delete. Antes de utilizarlos, debemos incluir el encabezado <new>.
El operador new reserva memoria dinmica de cualquier tipo.

UNIDAD V - ENTRADA Y SALIDA


En C, los ficheros admiten seis modos en cuanto a la direccin del flujo de datos:
r: slo lectura. El fichero debe existir.
w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a: aadir, se abre para escritura, el cursor se situa al final del fichero. Si el fichero
no existe, se crea.
r+: lectura y escritura. El fichero debe existir.
w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a+: aadir, lectura y escritura, el cursor se situa al final del fichero. Si el fichero no
existe, se crea.
En cuanto a los valores permitidos para los bytes, se puede aadir otro carcter a la
cadena de modo:
t: modo texto. Normalmente es el modo por defecto. Se suele omitir.
b: modo binario.
En ciertos sistemas operativos no existe esta distincin, y todos los ficheros son
binarios.
En C++ es algo diferente, el constructor de las clases ifstream, ofstream y fstream
admite los parmetros para abrir el fichero directamente, y tambin disponemos del
mtodo open, para poder crear el stream sin asociarlo con un fichero concreto y
hacer esa asociacin ms tarde

You might also like