Title: Curso de introduccci
1Curso de introduccción a la programación en
lenguaje "C" dirigido a Ingenieros Electrónicos,
Eléctricos y de Producción.- Se presenta el
concepto de algoritmo y como representar y
diseñar algoritmos para solucionar problemas. -
Se introducen los conceptos fundamentales de un
lenguaje de programación tipos de datos,
variables, estructuras de control, arreglos, y
finalmente subprogramas y funciones. - Se
imparten técnicas para lograr un buen estilo de
programación. - Enfasis en la programación
estructurada.
COMPUTACION I - CI2125
LIBROS DE TEXTO
- Brian Kernighan, Dennis Ritchie, El lenguaje de
programación C - Deitel H. M. Deitel P. J., Como Programar en
C/C - Peter Norton, Introducción a la Computación
- Luis Joyanes A, Programación en C, Libro de
Problemas
2 Teoría 70 (2 Parciales 35 c/u), - Práctica
30 (Evaluación continua y proyecto final)
EVALUACION
SITIOS DE INTERES EN LA WEB
Mi pagina donde publicaremos material dado en
Teoría, Practica y LAB, así como las notas de los
parciales http//www.ldc.usb.ve/mperez/cursos/
ci2125/Otros sitios de interes publico y
gratuito http//www.geocities.com/david_ees/Alg
oritmia/cap01.htm http//cplus.about.com/od/beg
innerctutoria1/l/aa042902a.htm
http//www.cprogramming.com/ http//www.elrinco
ndelc.com/portal/Software libre para la
comunicad, compilador de C Dev C
http//www.bloodshed.net/
3Evolución del Computador
Antecedentes históricos Máquinas mecánicas las
computadoras de Charles Babbage Máquinas
electromecánicas el computador de Konrad
Zuse Generaciones tecnológicas Primera
generación válvulas Segunda generación
transistores Tercera generación circuitos
integrados Cuarta generación
microprocesadores Quinta generación? el
microprocesador como
elemento básico
4Antecedentes históricos
Primer reto operaciones básicas El ábaco
primer instrumento para calcular. Tablilla
dividida en varias columnas. Cada una con
un conjunto de cuentas engarzadas
en una varilla. Su origen se remonta a los
siglos III o IV a. de C. Sigue
en uso
5Antecedentes históricos
Máquina aritmética Desarrollada por Blas Pascal
(1642, a los 18 años) Constaba de un conjunto de
ruedas dentadas, cada una de ellas numerada del 0
al 9. Al pasar una rueda del 9 al 0 avanzaba un
diente de rueda a la siguiente. Máquina
Mecánica. Charles Babbage (1791-1871) Uno de
los padres del computador actual Adelantado
para la tecnología de la época Consta de una
memoria, una unidad aritmética, sistema de
engranajes para transferir datos entre memoria y
la unidad aritmética y un dispositivo para
introducir y sacar datos de la máquina Empleaba
tarjetas perforadas para Programarse
6Antecedentes históricos
Máquina Electromecánicas Herman Hollerith
(1860-1929). Censo de los Estados Unidos
Tarjetas perforadas Crea la empresa (TMC) que
da lugar a IBM Konrad Zuse Construye (1941) el
primer calculador universal programable (Z3).
Trabaja en binario. Computador MARK-I Howard
Aiken Evolución Mark-II máquina
de relés Mark-III y Mark-IV máquinas de
tubos de vacío con programa
almacenado.
71ª Generación válvulas de vacío
Velocidad de proceso en ms. Disipación calorífica
muy elevada Gran tamaño y poca capacidad Lenguaje
máquina Monoprogramación Sin sistema operativo
81ª Generación válvulas de vacío
Colossus grupo de científicos ingleses con
Alan Turin (1943). Ayudó a descifrar el
código enigma de los alemanes. ENIAC Electronic
Numerical Integrator and Calculator. Eckert y
Mauchly (1941) 1er computador electrónico de
propósito general. Programa cableado Cálculo de
tablas de fuego de artillería Operativo durante
la II Guerra Mundial. Conocido en 1946
91ª Generación válvulas de vacío
ENIAC Características 30 Tm 18.000 tubos de
vacío 100 Kw 100 Khz Operaciones suma, resta,
multiplicación y división (suma 200µs) 20
registros de 10 dígitos (2 pies/registro) Entrada/
Salida de datos Tarjetas perforadas
101ª Generación válvulas de vacío
EDVAC (Electronic Discrete Variable Automatic
Computer) Eckert-Mauchly-von Neumann Bases de la
Arquitectura von Neumann Programa almacenado
Tubos de vacío Aritmética binaria 5 unidades
Entrada, Memoria, UAL, Control, Salida UNIVAC I -
Remington-Rand Co. (Eckert-Mauchly Computer Co.)
1er computador comercial con éxito. 1951
48 sistemas, 250.000
112ª Generación transistores (1948)
Menor tamaño, menor disipación de calor, mayor
fiabilidad Primeros lenguajes de alto nivel
FORTRAN COBOL ALGOL Sistema
Operativo Extensión de los computadores
comerciales
122ª Generación transistores
Innovadores, con poca repercusión comercial
UNIVAC LARC IBM STRETCH (o 7030)
Burroughs D-825 ATLAS Comerciales CDC
1604 y 3600 IBM 1410 PDP 1 de DEC
Serie 1100 de Univac
133ª Generación circuitos integrados
Menor tamaño, más baratos, menor consumo de
energía Primera familia de computadores,
compatibles a nivel de arquitectura IBM360
Supercomputadores 6600 de Control Data
(Cray). Minicomputadores PDP-8 y PDP-11
Sistemas Operativos Multiprogramación, tiempo
compartido Lenguajes alto nivel estructurado
(Dijkstra, 1968)
144ª Generación microprocesadores VLSI
Microprocesadores y memorias de semiconductor.
1971 1er microprocesador, INTEL 4004 (4
bits) 8 bits Intel 8080-85, Motorola 6800 y
Zilog Z-80 16 bits Intel 8086-88, Motorola
68000 y Z-8000 32 bits Intel 80386, Motorola
68030 Computadores personales y estaciones de
trabajo
Válvula, transistor, circuito integrado,
microprocesador
154ª Generación microprocesadores VLSI
Otras aplicaciones electrodomésticos, equipos
de música y vídeo, etc. Arquitectura RISC (MIPS
R2000, SPARC) Supercomputadores computadores
paralelos Lenguajes de programación C y Ada
Sistemas Operativos. Estandarización UNIX
Interfaces gráficas Generalización de las redes
de computadores
165ª Generación? microprocesadores
El microprocesador como elemento básico La
computación masivamente paralela Inteligencia
artificial La comunicación y las conexiones
entre computadores como algo generalizado. Intern
et. Correo electrónico. World Wide Web....
17Los ordenadores actuales
Integrados con millones de transistores Velocidad
es gt GHz UAL y UC Microprocesador o CPU Memoria
Principal (capacidad gt Giga) Unidad de E/S en
chipsets Diversidad y compatibilidad de
periféricos (USB) Interconectividad de sistemas
18ARQUITECTURA DEL COMPUTADOR
- Cualquier computadora es parte de un sistema, Un
sistema de computo consta de cuatro partes - HARDWARE, conocido como la computadora
- SOFTWARE, conocido como los programas
- DATOS, los cuales son convertidos por el sistema
en información, los datos computarizados son
digitales (dígitos o números). Un archivo es un
conjunto de datos que se le ha dado un nombre
trabajo.doc, foto.jpg, musica.mp3, programa.c,
datos.txt - PERSONAS, conocidos como los usuarios
19ARQUITECTURA DEL COMPUTADOR
- HARDWARE, tiene muchas partes, pero cada pieza
cae en una de las siguientes - Procesador (CPU Central Processing Unit )
- Memoria
- Dispositivos de entrada y salida
- Dispositivos de almacenamiento
20ARQUITECTURA DEL COMPUTADOR
HARDWARE, Arquitectura de von Neumann Soporta
el concepto del programa almacenado, un concepto
teórico muy importante que fue establecido por el
matemático John von Neumann el 30 de junio de
1945, tanto el programa como sus datos son
almacenados en la memoria del computador.
Estos elementos están interconectados a través de
un conjunto de líneas que llevan instrucciones
(control bus), datos (data bus) y que permiten
dar los valores de direcciones de memoria y
dispositivos (memory bus).
21ARQUITECTURA DEL COMPUTADOR
HARDWARE, Arquitectura de von Neumann Soporta
el concepto del programa almacenado, un concepto
teórico muy importante que fue establecido por el
matemático John von Neumann el 30 de junio de
1945, tanto el programa como sus datos son
almacenados en la memoria del computador.
Estos elementos están interconectados a través de
un conjunto de líneas que llevan instrucciones
(control bus), datos (data bus) y que permiten
dar los valores de direcciones de memoria y
dispositivos (memory bus).
22ARQUITECTURA DEL COMPUTADOR
- PROCESADOR (CPU) es el cerebro de la computadora,
organiza y lleva a cabo las instrucciones del
usuario o del software - Pueden ser uno o mas microprocesadores conectados
a una tarjeta de circuitos , todos sobre una
tarjeta denominada Madre, que los conecta entre
si.
23ARQUITECTURA DEL COMPUTADOR
- PROCESADOR (CPU)
- Consiste de tres unidades principales
- Unidad Aritmética/Lógica (ALU) La ALU es donde
se realizan todas las operaciones que involucran
un procesamiento matemático (particularmente
aritmético) o lógico (operaciones booleanas).
- Registros Los registros permiten el
almacenammiento de datos para estas operaciones y
sus resultados. - Unidad de Control (CU) En la CU es donde se
ejecutan todo el resto de las operaciones
(decisión, control, movimiento de datos). - Una CPU con todos estos elementos implementada en
un solo chip recibe el nombre de microprocesador.
Cada 18 meses se duplica el poder de computo de
los micro procesadores basados en la tecnología
del silicio
24ARQUITECTURA DEL COMPUTADOR
- PROCESADOR (CPU) Velocidad de procesamiento
Poder de computo - Ley de Moore Honor a Gordon Moore, fundador de
Intel. - El poder de computo se duplica
cada 18 meses - Esto es debido a que cada 18 meses, el avance en
la tecnología de silicio ha permitido colocar mas
transistores en chips mas pequeños, hoy día se
cuentan por millones, versus, a principios de los
70s de solo miles.
http//www.intel.com
25ARQUITECTURA DEL COMPUTADOR
- PROCESADOR (CPU) Velocidad de procesamiento
Poder de computo - Ley de Moore Honor a Gordon Moore, fundador de
Intel. - El número de transistores de un
chip se duplica cada dos años. - Si el Hierro fue la materia prima del siglo XIX,
.. el Silicio es la del siglo XX. - Pero la Ley de Moore también significa costes en
descenso. A medida que los ingredientes de las
plataformas y los componentes basados en el
silicio obtienen más rendimiento, resulta
exponencialmente más barato fabricarlos y, por
consiguiente, son más abundantes, más potentes y
están más integrados en nuestra vida cotidiana. - Los microprocesadores de hoy día equipan todo
tipo de artículos, desde juguetes hasta
semáforos. Una tarjeta de cumpleaños musical que
cuesta unos cuantos bolívares hoy día tiene más
capacidad de proceso que los grandes ordenadores
más rápidos de hace décadas.
26ARQUITECTURA DEL COMPUTADOR
- PROCESADOR (CPU) Velocidad de procesamiento
Poder de computo - Ley de Moore Honor a Gordon Moore, fundador de
Intel. - El número de transistores de un
chip se duplica cada dos años. - Esto ha dado como resultado ganancias en el
desempeño e incremento en la velocidad. Pero no
solo esto determina la velocidad de un chip, sino
otros factores como el Reloj, los buses de datos
la memoria caché y el coprocesador matemático.
La velocidad de un procesador se mide en
Megahertz, los megahertz indican la velocidad del
reloj interno que posee todo microprocesador.
Un Pentium 4 tiene una velocidad de 3.0 GHz
(GHz 1000 MHz )
27ARQUITECTURA DEL COMPUTADOR
DATOS son convertidos por el sistema en
información, los datos
computarizados son digitales (dígitos o números).
Los datos se representan utilizando únicamente
los símbolos 0 y 1 0 y
1 son llamados BITS ( BInary digiTS )
Un conjunto de 8 bits se denomina byte
(octeto, de ocho) Con 8 bits, pueden
representarse 2 a la 8, combinaciones
podemos crear 256 combinaciones diferentes de
octetos con 0 y 1 El código ASCII (American
Standard Code for Information Interchange)
representación de caracteres y símbolos de forma
electrónica, en combinaciones de 8 bits.
Incluye códigos para las letras del alfabeto
(minúsculas y mayúsculas), los dígitos decimales,
32 caracteres especiales y caracteres de control.
28ARQUITECTURA DEL COMPUTADOR
DATOS los datos computarizados son digitales
(dígitos o números). Usar estándares requiere
disciplina y a veces restringe la creatividad.
Sin embargo, es muy útil para la comunicación
entre usuarios. Internet requiere aún más enfoque
en estándares, porque se trata en muchos casos de
usuarios de idiomas diferentes. Las personas que
tuvieron la visión de internet, trataron de
establecer un plataforma de comunicación global.
Usar estándares es una forma de cumplir este
objetivo
Ejemplo Código ASCII carácter o símbolo que
representa byte 64 _at_
00100000 65 A 00100001
Recuerden, en el sistema numérico decimal 123
base 10 1x 102 2 x 101 3 x 100 100
20 3 De igual manera en el sistema numérico
binario 100000 base 2 1 x 26 0 x 25 0 x
24 0 x 2 3 0 0 0 64
29ARQUITECTURA DEL COMPUTADOR
MEMORIA, Los programas se cargan y se corren
desde la memoria. Los datos usados por el
programa también se cargan en memoria para un
acceso rápido. La unidad de medición para
describir la memoria es el byte ( 8 bits ) Es
decir la capacidad de almacenar datos se mide en
el numero de bytes que puede almacenar Kilobyte
(KB) 2 10 bytes 1024 bytes,
aprox 1000 bytes Megabyte (MB) 2 20 bytes
1048576 bytes, aprox 1000 KB Gigabyte
(GB) 2 30 bytes 1073741824 bytes, aprox
1000 MB Hay dos tipos de memoria RAM ( Random
Access Memory) Se usa para cargar programas y
datos mientras están en uso, pues permite un
acceso mas rápido entre ella y el CPU. Son
chips volátiles, al apagar el computador se
borran los datos ROM ( Read Only Memory ) Se usa
para mantener información de manera permanente,
esto se realiza en fabrica, y no son volátiles,
por ejemplo, datos de arranque del computador.
30ARQUITECTURA DEL COMPUTADOR
DISPOSITIVOS DE ENTRADA Y SALIDA. Los
dispositivos de entrada aceptan los datos del
usuario Teclado, ratón, escaners, cámaras
digitales, micrófonos, etc Los dispositivos de
salida devuelven los datos procesados por el
usuario Pantalla o monitor, la impresora,
cornetas Los dispositivos de entrada/salida Pe
rmiten la comunicación en las dos vías módems,
conectividad en redes, etc.
31ARQUITECTURA DEL COMPUTADOR
ALMACENAMIENTO. El propósito del
almacenamiento, es guardar de manera permanente
nuestros datos o programas. Diferencias entre
almacenamiento y memoria 1 Hay mas lugar en el
almacenamiento que en la memoria 2 Los contenidos
son conservados en el almacenamiento cuando la
computadora se apaga 3 El almacenamiento es mucho
mas barato que la memoria El dispositivo que
contiene un disco se llama unidad de
disco Ejemplos Disco duro disco construido
dentro del computador no removible, con gran
capacidad Unidad de diskettes permite
leer/grabar datos en discos flexibles de
diferentes formatos. Unidad de CD RW permite
leer/grabar datos en unidades de CD Unidades de
diferentes formatos de discos ópticos,
microdrive, flashcard, etc.
32ARQUITECTURA DEL COMPUTADOR
SOFTWARE Permite a la computadora realizar una
tarea determinada Programa conjunto especifico
de instrucciones electrónicas que dirigen a una
computadora a realizar una tarea
especifica. SOFTWARE DEL SISTEMA Sistema
Operativo Le dice a la computadora como
interactuar con el usuario y como usar los
dispositivos SOFTWARE DE APLICACIÓN Otros
programas que ayudan a la gente a realizar tareas
especificas, desde procesamiento de palabras
(Word), hasta para interactuar en la WEB !!
33ARQUITECTURA DEL COMPUTADOR
- SISTEMA OPERATIVO S.O.
- Conjunto de programas que se encargar de realizar
la administración de todos los recursos que posee
un computador - Permiten que el desarrollo de nuevos programas o
aplicaciones se independice del tipo de Hardware,
Portabilidad - COMANDO Significa mandato, orden
- El usuario interactúa con el S.O a través de
Comandos !! - Pueden ser
- Líneas de Comando como en UNIX, DOS, LINUX
- Entorno TEXTO-GRAFICO como en MS-WINDOWS,
OPENWINDOWS, AMBIENTES GRAFICOS DE LINUX DE LA
COMUNIDAD DE OPEN SOURCE - Tareas del S.O.
- ORGANIZA Y ADMINISTRA LOS MEDIOS DE
ALMACENAMIENTO - DIRECTORIOS Entidades logicas para organizar
jerarquicamente la ubicación de la informacion.
Se usan comandos para crear Directorios - ARCHIVOS Entidades logicas que contiene
informacion diversa, creada por la aplicación o
el usuario. Como archivos de texto, imágenes,
musica, video. Con comandos del S.O las guardamos
en Directorios
34ARQUITECTURA DEL COMPUTADOR
- SOFTWARE DE APLICACION
- Aplicaciones es un conjunto de programas que
llevan a cabo tareas especificas tales como
Manejo de base de datos, Procesadores de texto,
Diseño grafico, control de procesos, sistemas de
finanzas, planillas de calculo, etc. - Sistemas de desarrollo Son conjuntos de
programas, que implementan una tecnología de
desarrollo, para generar nuevas aplicaciones. - - Implementados usando Lenguajes de programación
- LENGUAJES DE PROGRAMACION
- Nivel de abstracción
- - Lenguajes de 1er nivel (bajo nivel) código de
maquina - - Lenguajes de 2do nivel (bajo nivel) Uso de
Ensamblador - - Lenguajes de 3er nivel (alto nivel) Uso de
traductores tipo interpretadores o compiladores.
( Lenguajes Pascal, Fortran, C, Basic, C,
Prolog, Lisp, Cobol, PL1, Ada, Java, HTML, XML,
etc)
35Lenguajes de Programación
- Lenguajes de 1er Nivel
- Lenguaje de máquina, binario
- Ejecuta acciones directas en el CPU
- Instrucciones del tipo 1001001100101
- Como recordar esto?
- Prácticamente nadie trabaja hoy a este nivel,
excepto los diseñadores de "chips" procesadores.
36Lenguajes de Programación
- Lenguajes de 2do Nivel
- lenguaje más comprensible por el hombre consiste
por lo tanto en establecer la equivalencia de
bloques binarios con signos de nuestro lenguaje
habitual - Comandos del tipo ADC (ADd with Carry)
- Se llama ENSAMBLADOR, el prog que traduce los
comandos al lenguaje de máquina - Progreso en la redacción de comandos
- Muy atado al tipo de CPU de la máquina
37Lenguajes de Programación
- Lenguajes de 3er Nivel
- Lenguajes de "alto nivel", es decir más cercanos
al modo de expresar del hombre que de la
operación de la máquina. - El programador manipula entidades lógicas
abstractas, sin los detalles de su implementación
a nivel de maquina - Más fáciles de manejar y más independientes de
las características técnicas de los procesadores - Redactar un programa, sin tener que preocuparse
por el código binario o de ensamble
38Lenguajes de Programación
- Lenguajes de 3er Nivel
- Necesita un programa traductor, que transforma
los bloques del lenguaje en bloques binarios - El avance en el desarrollo de "compiladores" e
"intérpretes" (los dos tipos de programas
traductores) ha sido por lo tanto fundamental en
el desarrollo de los lenguajes de alto nivel - Ventajas facilidad de aprendizaje,
lectura/escritura, corrección, transformación y
conversión de un lenguaje a otro.
39Lenguajes de Programación
- FORTRAN ( FORmula TRANslation)
- 1953, Job Backus, un empleado de IBM propuso el
desarrollo de un nuevo lenguaje de programación,
el Fortran. Por aquella época, todos los
programadores escribían en ensamblador - Fue el primer lenguaje de alto nivel fue
desarrollado por IBM y su primera versión se
lanzo en 1957. - Se caracteriza por su potencia en los cálculos
matemáticos pero está limitado en lo relativo al
tratamiento de datos no numéricos
40Lenguajes de Programación
- ALGOL ( ALGOrithmic Lenguage)
- Primer lenguaje creado por un comité
internacional (GAMM y ACM). - En 1960 se reunieron representantes de varios
países europeos y de Estados Unidos para crear un
lenguaje destinado a "describir procesos"
mediante instrucciones de control (iteraciones y
alternaciones) de nivel más elevado que las
existentes en las versiones existentes de su
predecesor, el FORTRAN.
41Lenguajes de Programación
FECHA LENGUAJE ACONTECIMIENTO
1953 FORTRAN Job Backus propone el desarrollo de un nuevo lenguaje
1954 FORTRAN Un equipo de IBM comienza a trabajar en el FORTRAN
1957 FORTRAN IBM desarrolla la primera versión
1959 LISP El profesor John McCarthy y sus alumnos desarrolla el LISP
1960 ALGOL Se reúnen representantes europeos y de EEUU para la creación de un nuevo lenguaje
1960 COBOL Fue creado COBOL
1962 APL Se publica el libro de Kenneth Iverson A Programming Language
Mediado de los 60 APL El APL es implantado por IBM en una versión conocida como APL/360
1965 BASIC Aparece BASIC
1966 FORTRAN Aparece el FORTRA IV
1968 ALGOL Se implemento una nueva versión multi-proposito
Finales de los 60 APL Está disponible para el mercado en general
1970 PASCAL Niklaus Wirth diseña PASCAL
1972 PROLOG Se desarrolla en la Universidad de Aix-Marsailles en Francia.
42Lenguajes de Programación
FECHA LENGUAJE ACONTECIMIENTO
1972 C Dennis Ritchie crea el lenguaje C.
1977 FORTRAN Aparece el FORTRAN 77
Finales de los 70 MODULA-2 Niklaus Wirth dirige el desarrollo de MODULA-2
Principio de los 80 C Se desarrolla el lenguaje C
1985 CLIPPER Se crea CLIPPER
1986 CLIPPER Aparece CLIPPER AUTUMN86
1987 CLIPPER CLIPPER SUMMER87
1990 FORTRAN Aparece el FORTRAN 90
Principios 90 JAVA James Gosling y su equipo comienzan a desarrollar JAVA
1993 Visual C Se desarrolla el lenguaje Visual C
1994 DELPHI Aparece la primera versión
1995 JAVA Se lanza al mercado JAVA
1999 DELPHI Aparece Delphi 5.0 para windows 98 NT/2000
43Lenguaje de Programación C
- C ( después de B )
- Creado en 1972 por Dennis Ritchie, que junto con
Ken Thompson habían diseñado anteriormente el
sistema operativo UNIX, y su intención al
desarrollar el lenguaje C fue conseguir un
lenguaje idóneo para la programación de sistemas
que fuese independiente de la máquina para
utilizarlo en la implementación del sistema
operativo UNIX . - Se creó para superar las limitaciones del
lenguaje B, utilizado por Ken Thompson para
producir la versión original de UNIX en 1970.
44Lenguaje de Programación C
- El C es un lenguaje moderno de propósito general
que combina las características de un lenguaje de
alto nivel (programación estructurada, tipos y
registros de datos, recursividad, etc.) con una
serie de características más propias de lenguajes
de mas bajo nivel - Su definición apareció en 1978 en el libro
- "The C programming Language"
- Brian W. Kernighan y Dennis M. Ritchie
- (Ed. Prentice-Hall)
45Lenguaje de Programación C
- En 1983 se establece un comité para resolver las
discrepancias de varias versiones de C, el cual
empezó a trabajar en un estándar ANSI C, la cual
fue completada en 1988. Este estándar incluye una
enorme biblioteca de funciones para
entrada/salida, tratamiento de textos, funciones
matemáticas, etc - Documentada en
- 1988. "The C Programming Language-Reference
Manual - Dennis M. Ritchie (Lab.Bell)
- ANSI ( American National Standard Institute)
46Lenguaje de Programación C
- CARACTERISTICAS
- Programación estructurada
- Economía de las expresiones
- Abundancia de operadores y tipos de datos
- Codificación en alto nivel y bajo nivel.
- No esta orientado a ningún área en especial
- Producción de código objeto altamente optimizado