Bitácora del desarrollo de mi clase de C++, en el que publicaré el material de la clase y recibiré comentarios y sugerencias de mis alumnos.

lunes, 29 de enero de 2007

1.4. Conceptos básicos del ambiente en C


El archivo ejecutable asociado con el entorno de Turbo C++ tiene el nombre de TC.EXE y generalmente se encuentra ubicado en el directorio C: \TC\BIN, si la instalación se hizo en el disco duro C: y no se especificó otro directorio diferente a \TC. Podemos ejecutar turbo C ya sea desde el indicador de MS-DOS o desde el explorador de Windows.

Es importante que el archivo AUTOEXEC.BAT de la computadora tenga las siguientes líneas para que Turbo C busque las bibliotecas de funciones en el lugar indicado: set lib=c:\tc\lib set include=c:\tc\include Y por otro lado también es aconsejable que dentro del mismo archivo AUTOEXEC.BAT se indique como un path (o ruta de búsqueda) el directorio donde está contenido Turbo C: path=c:\tc\bin; Cada archivo de programa que se crea en Turbo C puede tener el nombre que deseemos y siempre tiene una extensión .CPP El ambiente de Turbo C++ tiene la funcionalidad de un editor de textos (herramienta para escribir archivos de texto), además de permitir la ejecución, depuración (corrección de errores), y creación de ejecutables de los programas creados en lenguaje C. Contiene una barra de menú y un área donde podemos tener diferentes ventanas abiertas, entre ellas una o varias con programas, la de ayuda, la de ejecución, la de mensajes, etc. En la parte de abajo indica las teclas rápidas para las funciones principales o las que pueden ser usadas en ese momento. Al menú se puede entrar con el ratón haciendo clic en la opción de interés o mediante el teclado presionando ALT y la letra resaltada en la opción. Por ahora veremos sólo algunas de las opciones de éstos menús. Las opciones tienen una letra subrayada, que indica que una vez dentro del menú se puede teclear esa letra para ejecutar la orden. Algunas indican teclas o combinaciones de teclas para ejecutarlas, en este caso no es necesario estar dentro del menú, sino que se pueden ejecutar las órdenes pulsando la tecla correspondiente desde la ventana de edición. Menu File (Archivo): Su uso general es el manejo de los archivos. CPP, es decir, los programas escritos en lenguaje C. New (Nuevo) – Abre una ventana en blanco con el nombre de archivo NONAMEXX.CPP, donde XX es el número de archivo nuevo correspondiente en la sesión. En esta ventana es posible escribir un programa. El nombre del archivo se puede cambiar una vez que se grabe. Open F3 (Abrir) – Permite abrir un archivo existente ya sea para verlo, ejecutarlo o modificarlo. Generalmente cuando no se termina un programa en una sesión, se guarda y se abre después con esta opción. Save F2 (Guardar o grabar) – Guarda el archivo en alguno de los dispositivos de almacenamiento. Cuando el archivo no tiene nombre (es un NONAME) Turbo C pregunta el nombre y el directorio donde se desea guardar. Si es un archivo que ya se ha guardado con anterioridad esta orden sólo sobrescribe el archivo, es decir, actualiza el anteriormente guardado por el actual. Save As (Guardar como) – En ocasiones es necesario cambiar de nombre a un archivo, esta opción permite hacerlo, el archivo anterior permanece con su antiguo nombre, y el actual se graba con el nombre que se indique al ejecutar la orden. Save all (Guardar todo) – Ya que en el ambiente de turbo C es posible tener varios archivos abiertos y estarlos modificando alternadamente, con esta orden se graban los cambios realizados en cada una de las ventanas, es decir, todos los archivos que se encuentren abiertos. Change dir (Cambiar directorio) – Todas las operaciones sobre archivos se realizan sobre un directorio por default, aunque es posible cambiarlo cada vez que se da una orden (Save, Save as, Open). Cuando todos o una gran parte de los archivos con los que se está trabajando está en otro directorio al actual, es conveniente cambiar éste con esta orden para no tener que indicarlo cada vez que se ejecuta otra orden. Print (Imprimir) – Permite obtener una impresión del código de la ventana actual. Dos shell (Indicador de dos) – Con esta opción es posible ir por un momento al indicador de MS-DOS, sin cerrar archivos ni el mismo entorno de C. Es una salida temporal y cuando se desea volver al entorno de C se debe dar la orden EXIT: C:\> exit Quit Alt-X (Salir) – Cierra automáticamente todos los archivos y sale del ambiente de Turbo C. Básicamente es el fin de la sesión con Turbo C. Si en el momento de salir existen archivos modificados que no han sido guardados, Turbo C pregunta si se desean guardar en ese momento. Menú Edit (Editar): Proporciona algunas facilidades para la edición de programas, como copiar, borrar, deshacer y rehacer entre otras. En estas opciones se maneja un concepto importante en cualquier tipo de aplicación: el “clipboard” o portapapeles, es una parte de la memoria que guarda segmentos que se han copiado o cortado dentro del archivo y se pueden “pegar” o duplicar en cualquier otra parte y tantas veces sea necesario. También el concepto de marcar texto es importante. El marcado de texto se realiza con el ratón haciendo clic en uno de los extremos a marcar y arrastrando el ratón hacia el otro extremo mientras se sostiene el botón izquierdo apretado. De otra manera, si se carece de ratón, puede colocarse el cursor al inicio del texto y moverlo mientras se aprieta la tecla Shift al final del texto que se desea marcar. Undo Alt-BkSpc (Deshacer) – Permite deshacer una modificación realizada en el archivo o programa. Si se ha borrado algo accidentalmente o se ha cometido un error se pueden deshacer las últimas acciones. Redo Shift-Alt-BkSpc (Rehacer) – Con esta opción se rehace algo que se ha deshecho con Undo. Especial para indecisos. Cut Shift-Del (Cortar) – Quita el texto seleccionado del programa y lo manda al portapapeles. Es posible recuperar este texto con la opción de “pegar”. Copy Ctrl-Ins (Copiar) – También manda el texto seleccionado al portapapeles, pero no lo elimina del programa, para obtener su copia se debe ejecutar “pegar" donde se desea la copia del segmento. Paste Shift-Ins (Pegar) – Permite obtener la copia del texto que se ha mandado al portapapeles ya sea con Cut o con Copy. Esta orden se puede ejecutar más de una vez y obtener varias copias del mismo segmento de archivo. Clear Ctrl-Del (Limpiar) – Elimina el texto seleccionado del archivo, pero no lo manda al portapapeles, es decir no es posible pegarlo en otras partes del programa. En caso de arrepentimiento se debe recurrir a Deshacer. Copy example (Copiar ejemplo) – Algunas secciones de la ayuda de Turbo C contienen ejemplos, es posible copiar el ejemplo al portapapeles para después pegarlo en alguna parte del programa. Show clipboard (Mostrar portapapeles) – Abre una ventana con todo lo que se ha copiado al portapapeles, con el fin de pegar segmentos copiados o cortados anteriormente. Menú Search: Proporciona facilidades de búsqueda y reemplazo de textos dentro de todo el programa. Find (Encontrar) – Busca dentro del archivo el texto que se le indique. Replace (Reemplazar) – Permite hacer búsqueda y reemplazo de un texto por otro, ambos se deben de indicar después de ejecutar la orden. Search again Ctrl-L (Buscar otra vez) – Vuelve a ejecutar la orden anterior ya sea Find o Replace, con el fin de no tener que indicar otra vez el texto a buscar ni el texto de reemplazo.

viernes, 26 de enero de 2007

1.3. Secuencia para la creación de un programa (flujo)


1.3.1. Organización de un programa

Enseguida se presenta un programa sencillo escrito en Turbo C++.

/* Un programa sencillo en C*/
#include (stdio.h)
main( )
{
printf(“Suerte a todos en este curso.\n”);
}

La primera línea: /* Un programa sencillo en C*/ Es un comentario. Las líneas de comentario no contienen instrucciones de lenguaje C, sino que sirven al programador para documentar o explicar los programas para mejorar su legibilidad. Los comentarios en C comienzan con /* y terminan con */. Todo lo escrito entre estos símbolos es ignorado por el compilador de C. En este caso el comentario simplemente explica de qué se trata el programa.

La siguiente línea #include especifica una directiva del preprocesador, en este caso se le indica al compilador que incluya una biblioteca.

La línea: main( ), forma parte de todo programa de C. Los paréntesis después de main indican que main es un bloque constructivo del programa (función. Los programas en C contienen una o más funciones, una de las cuales deberá de ser main. Todos los programas empiezan a ejecutarse en la función main.

La llave izquierda { debe iniciar el cuerpo de cada función. Una llave derecha correspondiente debe dar por terminada cada función. Este par de llaves y la porción existente entre ambas se conoce como bloque. El bloque es una unidad importante de programa.

La línea printf(“Suerte a todos en este curso.\n”); Instruye a la computadora para que ejecute una acción. A toda la línea se le llama enunciado. Todo enunciado debe terminar con un punto y coma (terminador de enunciado. En este caso el enunciado instruye a la computadora de que imprima la cadena de caracteres “Suerte a todos en este curso”.

1.3.2 Entradas y salidas simples
C es prácticamente único en su tratamiento de las operaciones de entrada/salida. Esto se debe a que el lenguaje C no define ninguna palabra clave para realizar entrada/salida, sino que se realizan a través de funciones de biblioteca.

En el ejemplo anterior utilizamos la función printf(), la cual está incluida en la biblioteca stdio.h y sirve para tener salida en pantalla de lo que se le indique como argumentos, es decir, lo que se incluya dentro de los paréntesis enseguida de printf()

Cuando un programa utiliza funciones de biblioteca, se debe especificar al compilador cuál o cuáles bibliotecas se utilizarán. Esto se hace mediante la directiva del preprocesador #include indicando cuál es la biblioteca a utilizar. Se requiere una línea #include por cada biblioteca.

En el ejemplo anterior se utilizó el enunciado:
printf(“Suerte a todos en este curso.\n”);

Que instruye a la computadora a que imprima en pantalla lo que se encuentra entre comillas. Sin embargo en este ejemplo los caracteres \n no son mostrados en pantalla, esto se debe a que la función printf cuando encuentra una diagonal invertida dentro del texto a imprimir lo toma como “carácter de escape” y lee el siguiente carácter formando una “secuencia de escape”, es decir una combinación de caracteres que indica que printf debe ejecutar algo extraordinario. En el caso de \n significa un salto de línea, esto es que después de imprimir en pantalla Suerte a todos en este curso. El cursor saltará una línea y quedará en la línea siguiente.

Las secuencias de escape que se pueden utilizar se muestran a continuación:

Secuencia de escape Descripción
\n Nueva línea. Coloca el cursor al principio de la siguiente línea.
\t Tabulador horizontal. Mueve el cursor al siguiente tabulador.
\r Retorno de carro. Coloca el cursor al principio de la línea actual; no avanza a la siguiente línea.
\a Alerta. Hace sonar la campana del sistema.
\\ Diagonal invertida. Imprime un carácter de diagonal invertido.
\” Doble comilla. Imprime un carácter de doble comilla.

Si se necesitara imprimir el mensaje del ejemplo Suerte a todos en este curso en tres líneas el programa quedaría de este modo.

/* Un programa sencillo en C*/
#include (stdio.h)
main()
{
printf(“Suerte\n”); /* Un salto de línea por cada printf */
printf(“a todos en\n”);
printf(“este curso.\n”);
}

Aunque se podría hacer exactamente lo mismo con una sola línea:

/* Un programa sencillo en C*/
#include (stdio.h)
main()
{
printf(“Suerte\na todos en\neste curso.\n”);
/* Se realizan tres saltos de línea dentro de la misma cadena */
}

El siguiente ejercicio mostrará otros ejemplos de esto:

Instrucciones Salida
printf(“me siento \”super\”\n”); me siento “super”
printf(“Si aprendo lenguaje C\n”);
printf(“compraré una computadora.\n”); Si aprendo lenguaje C
compraré una computadora.
printf(“Quiero saber cómo se utiliza \\n\n”); Quiero saber como se utiliza \n
printf(“\”5/4\” es una división\n”); “5/4” es una división
printf(“Son nombres compuestos:\n”);
printf(“José\tAntonio\nJuan\tCarlos\n”);
printf(“Fátima\tYumiko\n”); Son nombres compuestos:
José Antonio
Juan Carlos
Fátima Yumiko

Función scanf()
La función scanf() se utiliza para obtener un valor del usuario. Es una función de entrada que también forma parte de la biblioteca stdio.h. La función scanf() normalmente utiliza dos argumentos, aunque pueden ser más como se verá en algunos ejemplos. El primer argumento es la cadena de control de formato, que indica el tipo de dato que deberá ser escrito por el usuario. El segundo argumento le indica a scanf dónde debe almacenar el valor tecleado por el usuario.

Ejemplo:

#include (stdio.h)
main()
{
int entero1;
printf(“Introduzca un número entero: “);
scanf(“%d”, &entero1);
printf(“El número introducido es: %d\n”, entero1);
}

El resultado de la ejecución es:
Introduzca un número entero: 10
El número introducido es: 10

A continuación se describe la línea:
scanf(“%d”, &entero1);

En la cadena de control de formato el especificador de conversión %d indica que el dato debe ser de un número entero. El signo % es tratado por scanf () y también por printf() como un carácter de escape (como \) y la combinación %d como una cadena de escape (como \n). La letra d significa “entero decimal”.

En el segundo argumento el símbolo & (ampersand) al ser combinado con el nombre de una variable, le indica a scanf() la posición de memoria en la cual está almacenada la variable entero1. La computadora almacena el valor de entero1 en dicha posición. En las llamadas a la función scanf() hay un salto de línea automático, ya que el usuario debe teclear el número y después la tecla ENTER, conocida también como “entrada”, para que scanf() acepte el número tecleado.

Por otro lado debe notarse la línea al inicio del programa:
int entero1;

Lo que hace este enunciado es declarar una variable de tipo entero (sólo podrá contener números enteros) llamada entero1.

En el enunciado
printf(“El número introducido es: %d\n”, entero1);

se están enviando a printf() dos argumentos: el primero es la cadena de control de formato, con la que se indica que además del texto “El número introducido es:”, se está indicando que se imprimirá en pantalla un número entero mediante la cadena de control %d. El número entero que se imprimirá será el valor que haya tomado la variable entero1, que es el mismo que tecleó el usuario y fue asignado con el enunciado scanf().

Es posible introducir mas de un número en una sola llamada a la función scanf(), como se verá en el siguiente ejemplo:

#include (stdio.h)
main()
{
int entero1, entero2;
printf(“Introduzca dos números enteros:\n“);
scanf(“%d%d”, &entero1,&entero2);
printf(“Los números introducidos son:\n%d\ny %d”, entero1, entero2);
}

Salida:
Introduzca dos números enteros:
10
20
Los números introducidos son:
10
20


La visión del usuario al tener que introducir dos números enteros después de un solo mensaje puede resultar confusa. En este caso se envían tres parámetros a la función scanf(), en la cadena de control de formato se incluyen dos secuencias de escape %d, cada una corresponde a un número entero diferente. Los siguientes parámetros &entero1 y &entero2, indican a printf() las variables que almacenarán los valores tecleados por el usuario: entero1 almacena el primer valor introducido por el usuario y entero2 almacena el segundo.

Por otro lado, en el último enunciado se envían tres parámetros también a la función printf(), en la cadena de control de formato tenemos también dos secuencias de escape %d, cada una correspondiente a un valor entero. De este modo el valor de entero1 se mostrará en la línea que sigue a “Los números introducidos son:” y el valor de entero2 se mostrará en la siguiente línea.

Conceptos de memoria
/* Programa de suma */
#include (stdio.h)
#include (conio.h)
main()
{
int entero1, entero2, suma;
printf(“Introduzca un número\n”);
scanf(“%d”, &entero1);
printf(“Introduzca otro número\n”);
scanf(“%d”, &entero2);
suma=entero1+entero2;
printf(“La suma es %d\n”,suma);
getch ();
return 0;
}

La línea int entero1, entero2, suma, es una declaración. Las palabras entero1, entero2 y suma son los nombres de variables. Una variable es una posición de memoria donde se puede almacenar un valor para uso de un programa. Estas variables contendrán valores enteros. Todas las variables deben declararse con un nombre y un tipo de dato enseguida de la llave izquierda que inicia el cuerpo de main antes de que puedan ser utilizadas por el programa.

Los nombres de variables corresponden a localizaciones o posiciones en la memoria de la computadora. Cada variable tiene un nombre, un tipo y un valor.

En el ejemplo, cuando se ejecuta el primer enunciado scanf el valor escrito por el usuario se coloca en la posición entero1. Suponga que el usuario tecleó el 13.

entero1 13
entero2
suma

Para el segundo enunciado scanf, en la dirección entero2 será colocado el segundo número introducido por el usuario. Supongamos un 15.

entero1 13
entero2 15
suma

Mediante el enunciado suma = entero1 + entero2, el valor correspondiente a la suma de los dos enteros es colocado en la dirección de memoria suma.

entero1 13
entero2 15
suma 28

Siempre que se coloca un valor en una posición de memoria, este valor sustituye al valor anterior existente en dicha posición. En el ejemplo los dos enunciados scanf provocaron que un nuevo valor fuera colocado en las posiciones de memoria respectivas o, dicho de otra manera, fueron asignados a las variables correspondientes. En el enunciado que realiza la suma, un nuevo valor es asignado a la variable suma, sin importar si tenía o no otro valor anterior, sin embargo las variables entero1 y entero2 solo fueron leídas y no se les asignó ningún otro valor. Por lo que al final de la ejecución del programa conservan sus valores originales.



1.2. Historia del desarrollo del lenguaje C


La historia de C parte de un lenguaje anterior, el lenguaje B, escrito por Ken Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que hasta el momento se había programado en ensamblador. La pega del ensamblador era que lo ligaba a una serie de máquinas concretas, por lo que conseguir un lenguaje abstraído de cada máquina conseguiría una portabilidad del sistema muchísimo mayor. A su vez B fue inspirado en el BCPL de Martin Richard, diseñado tres años antes.

En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean pocos), codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.

Durante muchos años no existen reglas estándar para el lenguaje, pero en 1983 se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto Nacional Americano de Estándares). El proceso dura seis años y a principios de los 90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y comienza a comercializarse con el nombre ANSI C.

Paralelamente, en 1980 surge C++ de la mano de Bjarne Stroustrup (también de Laboratorios Bell de AT&T). Diseña este lenguaje con el objetivo de añadir a C nuevas características: clases y funciones virtuales (de SIMULA67), tipos genéricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un auténtico motor de objetos con herencia múltiple que permite combinar la programación imperativa de C con la programación orientada a objetos. Estas nuevas características mantienen siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicación al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes.

El siguiente hecho fundamental en la evolución de C++ es sin duda la incorporación de la librería STL años más tarde, obra de Alexander Stepanov y Adrew Koening. Esta librería de clases con contenedores y algoritmos genéricos proporciona a C++ una potencia única entre los lenguajes de alto nivel.

Debido al éxito del lenguaje, en 1990 se reúnen las organizaciones ANSI e ISO para definir un estándar que formalice el lenguaje. El proceso culmina en 1998 con la aprobación del ANSI C++.

La última variante que ha surgido de C es el moderno C#. En el año 2000, Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseñado por Anders Hejlsberg), que servirá de lenguaje principal de la plataforma. C# es un híbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar operadores propia del primero (no incorpora la herencia múltiple) con la plena orientación a objetos del segundo. La orientación a objetos es tal que el propio programa está encapsulado en una clase.

Actualmente C# se encuentra entre los 10 lenguajes más utilizados. A pesar de su corta historia, ha recibido la aprobación del estándar de dos organizaciones: en el 2001 se aprueba el ECMA y en el 2003 el ISO.


 

1.1. Breve historia de la computación en general


Al principio el ábaco fue considerado como una de las herramientas mecánicas para la realización de cálculos aritméticos y como uno de lo avances mas notorios del hombre hacia la modernización, fue hasta que en 1642 Blaise Pascal diseño un aparato que se le nombro “La Pascalina” que estaba basado en mecanismos de relojería que permitía efectuar las operaciones básicas (Suma y Resta).

El funcionamiento principal de La Maquina de Pascal (La Pascalina) se centra en las Ruedas o Engranes, la maquina constaba de varias Ruedas, una Representa a las Unidades, otra a las Decenas, otra a las Centenas, la idea de esta maquina era que una de las ruedas al dar un giro completo en este caso la de la centena ocasionaba que se moviera un décimo de giro la rueda de las unidades y asi sucesivamente.

En 1964, Leibnitz Creo una Maquina que Podía Multiplicar y Dividir, además de las funciones de Sumar y Restar.

William Oughtred, creo una herramienta basada en un descubrimiento matemático realizado 20 años atrás, los logaritmos. El Uso Fundamental de Los Logaritmos es Facilitar el Calculo de Multiplicaciones y Divisiones, reduciéndola a la Suma y Resta de sus logaritmos. Basado en estos resultados, Oughtred invento “La Regla de Calculo” esto fue en paralelo con la salida o descubrimiento de la Maquina de Pascal.

La persona que sentó las Bases para la Computación Moderna Fue “Charles Babbage” (matematico e Ingeniero Ingles). El propuso la construcción de una maquina para que hiciera los cálculos y para no utilizar la regla de calculo, y le llamo “La Maquina de Diferencias”, durante su desarrollo de la Maquina de Diferencias Tuvo Dos Ideas Que hasta este momento Son parte de la computación moderna y forman parte del diseño de cualquier computadora:

1.- La maquina debe de ser capaz de ejecutar varias operaciones elegibles por unas instrucción que se encuentran en un medio externo, es decir que se pueda Programar para que lleve acabo una tarea.

2.- La maquina debe de disponer de un medio para almacenar los datos intermedios y finales

Pensando en estas dos ideas, diseño y le llamo La Maquina Analítica que nunca se construyo por que la tecnología de la época no estaba lo suficientemente desarrollada para llevarla acabo, Tiempo después se realiza la construcción de la Maquina analítica.

Las Características de esta Maquina Analítica incluye una Memoria que puede almacenar hasta 1000 números de hasta 50 dígitos cada uno, las operaciones que realizaba esta maquina eran almacenadas en unas “Tarjetas Perforadas”, se estimaba que la maquina tardaba un segundo en hacer una suma y un Minuto en una Multiplicación.

La Maquina de Hollerith
En la década de 1880, la oficina del censo de los Estados Unidos, deseaba agilizar el proceso del censo de 1890, para llevar acabo esta labor, se contrato a Herman Hollerith (un experto en estadística) para que diseñara alguna técnica que pudiera acelerar el levantamiento de datos y análisis de los datos obtenidos en el censo.

Hollerith propuso la utilización de tarjetas en las que se perforarían los datos, según un estándar preestablecido, una vez perforadas las tarjetas están serian tabuladas y clasificadas por maquinas especiales.

La idea de las tarjetas perforadas no fue original de Hollerith, el se vaso en el trabajo hecho en el telar de Joseph Jacquard, Joseph ingenio un sistema donde la trama de un diseño de una tela asi como la información necesaria para realizar su confección era almacenada en Tarjetas Perforada, el telar realizaba el diseño leyendo la información contenidas en las tarjeta.

La propuesta de Hollerith resulto ser un éxito se proceso la información del censo de 1890 en tan solo 3 Años en comparación con los otros censos que en promedio se procesaban en 8 años.

Después de algún tiempo Hollerith dejo la Oficina del Censo y fundo su propia compañía que se llamo la “Tabulating Machines Company”, y que luego de algunos cambios se convertiría en IBM (International Business Machines Coporation).

En Resumen La Aportación que hizo Hollerith a la Informática fue la Introducción de Las Tarjetas Perforadas para el procesamiento de la información.

El MARK I
En 1944 Concluyo la construcción del “Primer Computador Electromecánico Universal”: “El MARK I”. El Mark I le tomaba seis segundos para efectuar una multiplicación y doce para una división, era una computador que estaba basada en rieles (tenia aproximadamente 3000) con 800 kilómetros de cable, con Dimensiones de 17 metros de largo, 3 metros de alto y un metro de profundidad. Al Mark I posteriormente se le fueron haciendo mejoras obteniéndose EL MARK II, MARK III, MARK IV.

ENIAC
En 1946 aparece la Primera “Computadora Electrónica” a la cual se le llamo así por que Funcionaba con Tubos al Vació esta computadora era 1500 veces mas rápida que el Mark I, así podía efectuar 5000 sumas o 500 multiplicación en un segundo y permitía el uso de aplicaciones científicas en astronomía, meteorología, etc.

Durante el desarrollo del proyecto el Matematico Von Neumman propuso unas mejoras que ayudaron a llegar a los modelos actuales de computadoras:

1.- Utilizar un sistema de numeración en Base a Dos Dígitos (Binario)

2.- Hacer que las instrucciones de operación estén en la memoria, al igual que los datos.

Basado en el modelo de Von Neumman apareció en 1952 el computador EDVAC que cumplía con todas las especificaciones propuesta por el matemático.

Así Von Neumman junto con Charles Babbage son considerados los Padres de la Informática.

A partir de 1951 las computadoras dejan de ser exclusivas de las universidades, con la construcción de la UNIVAC, se inicia entonces la comercialización de las computadores y dentro de poco IBM se consolidaría como la mayor Empresa de Fabricación de Computadoras.

Generación de Computadoras
En los últimos 40 años el desarrollo de computadoras a sufrido varios cambios, se pueden distinguir diferentes generaciones de computadoras las cuales han sufrido demasiados cambios tecnológicos.

La Primera Generación (1950-1958)
la primera generación coincide con el inicio de la computación comercial, las computadoras de esta generación se caracterizan por su limitada capacidad de memoria y procesamiento. Ejecutaban los procesos secuencialmente : toda la información debería ser almacenada en memoria antes de que el programa debería ser ejecutado y no se podía alimentar a la computadora con otra información hasta que el programa actual terminara.

Como la lectura de las tarjetas era un proceso mecánico, la diferencia que existía entre la velocidad de calculo y las velocidades de lectura de tarjetas o de impresión era significativa. Esto ocasionaba, bajo el esquema secuencial que la unidad central de procesamiento de la computadora permanecería inactiva la mayor parte del tiempo.

Esta situación motivo medios alternos de almacenamiento que fueran mejores. Es entonces cuando se inicia el desarrollo de dos medios magnéticos de almacenamiento: la cinta y el disco, en esta generación empiezan a desarrollarse los primeros lenguajes de programación.

La Segunda Generación (1958-1964)
La segunda generación se inicia cuando aparece las primeras computadoras con transistores, sustituyendo a los computadores que funcionaban con tubos al vació. La tecnología de los transistores incrementaron significativamente la velocidad de procesamiento.

Entonces se idea un modelo de procesamiento conocido con el nombre de procesamiento por lotes (Batch), bajo este modelo, se podían efectuar operaciones de entrada y salida de datos simultáneamente con el proceso del calculo del computador. Esta información era almacenada en cintas magnéticas hasta que el computador se desocupara y pudiera procesar la información. Al termino del proceso, los resultados eran almacenados en otra cinta magnética, hasta que pudieran ser impresos. La implantación de este modelo requería un computador auxiliar que controlara la entrada y salida de información, así como la interacción con el computador principal.

La Tercera Generación (1965-1974)
La era del silicio había llegado, varios circuitos integrados de transistores podían ser incluidos en una pastilla de silicio que no superaba el centímetro cuadrado de tamaño. Los beneficios que se experimentaron fueron: mayor velocidad, menos calor, más memoria, menos tamaño y menos costo. En esta generación se disminuyo el tiempo de ocio introduciendo el modelo de procesamiento concurrente. Bajo este esquema, varios programas pueden residir simultáneamente en la memoria, pero uno solo utiliza el procesador en un momento dado.

Los lenguajes de programación se clasificaron en tres tipos: Los Comerciales, de los cuales el COBOL y RPG eran los que habían tenido mayor aceptación. Los Científicos, en donde el FORTTRAN era el de mayor uso, y el PASCAL el favorito en los principales centros de enseñanza y los de uso General entre los cuales destacan el PL/1, el BASIC y el C.

La Cuarta Generación (1975-?)
Esta es la generación del microcomputador actual. Debido al gran desarrollo logrado en la miniaturización de los circuitos integrados, fue posible llevar el poder de la computación hasta el desarrollo de Laptops. Se desarrollaron las computadoras personales que se caracterizaron principalmente por su bajo costo y su simplicidad de uso.

Una de las áreas que ha desarrollado en esta generación es la referente a la comunicación hombre-maquina o Interfase Amistosa. Se han diseñado interfases graficas, como iconos para representar acciones, ventanas para visualizar la información, etc.



 

jueves, 25 de enero de 2007

Temario de la clase de Lenguaje de Programación, C++

1.- Introducción
1.1. Breve historia de la computación en general
1.2. Historia del desarrollo del lenguaje C
1.3. Secuencia para la creación de un programa (flujo)
1.4. Conceptos básicos del ambiente en C

2.- Algoritmos y diagramas de Flujo
2.1. Formulación de algoritmos
2.2. Pseudocódigo y diagramas de flujo
2.3. Entorno

3. Tipos de variables
3.1. Nombre y definición de los diferentes tipos de variables
3.2. Definición de constantes simbólicas y literales
3.3. Definición de variables carácter

4. Operadores
4.1. Operadores aritméticos
4.2. Operadores de igualdad y relacionales
4.3. Operadores lógicos
4.4. Operadores compuestos
4.5. Operador condicional
4.6. Precedencia de los operadores

5. Alcance de las variables
5.1. Variables externas y locales
5.2. Variables estáticas, externas estáticas y de registro

6. Estructuras de control de flujo de un programa
6.1. Estructura de selección if (condicional)
6.2. Estructuras condiconales anidadas (if anidadados)
6.3. Estructura de repetición for y for anidados
6.4. Estructura de repetición while y while anidados
6.5. Enunciados break y continue y función exit
6.6. Enunciado switch

7. Manejo de arreglos (vectores y matrices)
7.1. Arreglos unidimensionales (listas) y multidimensionales (tablas)
7.2. Definición e inicialización de arreglos

8. Manejo de estructuras y apuntadores
8.1. Estructuras
8.2. Apuntadores

9. Tipo de funciones y función main
9.1. Definición de la función main
9.2. Funciones principales de las librerías stdio.h y conio.h
9.3. Definición de funciones propias
9.4. Paso de información por valor y por referencia
9.5. Empleo de funciones de librería para el manejo de archivos

10. Manejo de archivos
10.1. Tipos de archivos
10.2. Funciones para manejo de archivos



Bienvenida¡¡¡¡


Alumnos, este es mi Blogg de la clase de lenguaje de programación, en principio estaremos dando C++ como lenguaje de base, en él me basaré para dar toda la información y temas que iremos desarrollando a lo largo de la clase, sean todos Bienvenidos y comenzamos¡¡¡