Tema1 - Lenguaje C

52
PROGRAMACIÓN BÁSICA 1 INTRODUCCIÓN A LA COMPUTACIÓN INSTITUTO TECNOLÓGICO SUPERIOR DE COATZACOALCOS José María Córdoba Lagunes

description

programacion

Transcript of Tema1 - Lenguaje C

Page 1: Tema1 - Lenguaje C

PROGRAMACIÓN BÁSICA1 INTRODUCCIÓN A LA COMPUTACIÓN

INSTITUTO TECNOLÓGICO SUPERIOR DE COATZACOALCOS

José María Córdoba Lagunes

Page 2: Tema1 - Lenguaje C

Definiciones

Lenguaje de computación: Conjunto de signos y reglas que permite la comunicación con un ordenador.

Consiste en un conjunto de reglas sintácticas (definen las secuencias correctas de los elementos de un lenguaje de programación) y semánticas (define el significado de los signos lingüísticos y de sus combinaciones) que definen su estructura y el significado de sus elementos, respectivamente

Page 3: Tema1 - Lenguaje C

Jerarquía entre los lenguajes de programación

Page 4: Tema1 - Lenguaje C

Lenguaje Máquina

Conjunto de instrucciones codificadas (binario) que una computadora puede interpretar y ejecutar directamente.

Características: Único lenguaje que entiende el

ordenador. Difícil de entender para los

humanos. Permite aprovechar al máximo

los recursos. Instrucciones codificadas en

binario. Particular de cada procesador.

Page 5: Tema1 - Lenguaje C

Lenguaje ensamblador

Lenguaje muy similar al de máquina, con pequeñas modificaciones “mnemotécnicas” que facilitan su uso. Es de un nivel inmediatamente superior al de máquina.

Características: Representación mnemotécnica del código maquina. Particular de cada procesador. Cada instrucción en ensamblador equivale a una instrucción

en lenguaje maquina. Símbolos para representar las instrucciones y para las

direcciones de memoria. Se requiere un programa traductor. (llamado también

ensamblador)

Page 6: Tema1 - Lenguaje C

Ejemplo lenguaje ensamblador

Page 7: Tema1 - Lenguaje C

Ejemplos de los Mnemónicos del lenguaje emsamblador para microcontrolador PIC16f84

Page 8: Tema1 - Lenguaje C

Lenguajes de alto nivel

Lenguaje que facilita la comunicación con un computador mediante signos convencionales más cercanos a los de un lenguaje natural.

Características: Independientes de la estructura concreta del ordenador. Se aproxima mas al lenguaje natural. Utiliza variables y estructuras de datos para representar la

información. Utiliza estructuras de control: condicionales y bucles. Se han de traducir a lenguaje maquina. Una instrucción del LA se traduce a varias instrucciones en lenguaje maquina (LB).

Page 9: Tema1 - Lenguaje C

Lenguajes de programación

Page 10: Tema1 - Lenguaje C

Algoritmos

Algoritmo: es una secuencia finita de instrucciones, reglas o pasos que describen de modo preciso las operaciones que una computadora debe realizar para ejecutar una tarea determinada en un tiempo finito [Knuth 68]. Las dos herramientas más comúnmente utilizadas para diseñar algoritmos son: diagramas de flujo y pseudocódigos.

Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido a un lenguaje de programación, de modo que un ordenador es capaz de ejecutarlo.

Page 11: Tema1 - Lenguaje C

En la práctica, un algoritmo es un método para resolver problemas mediante los pasos o etapas siguientes:

1. Diseño del algoritmo que describe la secuencia ordenada de pasos —sin ambigüedades— conduncentes a la solución de un problema dado (Análisis del problema y desarrollo del algoritmo).

2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación – Escritura de código fuente).

3. Ejecución y validación del programa por la computadora.

Page 12: Tema1 - Lenguaje C

Programación: La elaboración de un programa debe ser de manera:

Correcta - Un programa será correcto si hace lo que debe hacer, de modo que se deben especificar de manera muy clara cuáles son los datos sobre los que se trabajarán y lo que se debe hacer con ellos. Todo debe ser documentado y probado antes de desarrollarlo.

Eficiente - Debe consumir la menor cantidad de recursos (tiempo y/o memoria) posible.

Clara - Es muy importante la claridad y legibilidad de todo programa, ya que facilitará al máximo la tarea de mantenimiento posterior del software.

Modular - Los programas suelen subdividirse en subprogramas (módulos), para reducir la complejidad de aquella parte que se está implementando y facilitar la reutilización de código.

Page 13: Tema1 - Lenguaje C

Pseudocódigo

Pseudocódigo. Lenguaje de especificación de algoritmos, mediante palabras similares al inglés o español.

Page 14: Tema1 - Lenguaje C

Diagrama de flujo

• Diagrama de flujo (flowchart). Representación gráfica de un algoritmo

Page 15: Tema1 - Lenguaje C

Código fuente

Se le da el nombre de código fuente a los programas escritos en un determinado lenguaje de programación y que está compuesto por instrucciones escritas por el usuario. El código fuente no constituye software propiamente dicho pero es una instancia mediante la cual se logra el software.

Page 16: Tema1 - Lenguaje C

Programas traductores

Los traductores son programas que traducen el código fuente, escritos en lenguajes de alto nivel, a programas escritos en lenguaje máquina.

Los traductores pueden ser: Compiladores Interpretes Máquinas virtuales.

Page 17: Tema1 - Lenguaje C

Compilador

Un compilador es un programa que lee el código escrito en un lenguaje de programación específico (código fuente), y lo traduce en un programa equivalente escrito en otro lenguaje (código objeto). En este paso el compilador hace notar al usuario la presencia de errores en el código fuente. Luego el compilador invoca al “linker” que convierte al archivo objeto en un ejecutable con extensión exe; este último archivo está en formato binario (ceros y unos) y puede funcionar por sí sólo.

Page 18: Tema1 - Lenguaje C

Características de los compiladores

Traducen completamente un programa fuente, generando el programa objeto equivalente en lenguaje maquina.

El programa objeto se guarda en un fichero y se puede ejecutar sin necesidad del compilador.

Ejemplos de lenguajes compilados: C, C++, Pascal, Fortran…

Page 19: Tema1 - Lenguaje C

Intérpretes

Un intérprete lee el código fuente de un programa línea a línea y las traduce online para que la CPU las pueda interpretar, pero no genera ningún programa objeto.

Intérpretes Traduce y ejecuta instrucción a instrucción

en el interprete. No se guarda ningun fichero de programa

objeto: Menos eficiente: mas lento. Mas interactivo. Ejemplo de lenguajes interpretados: Java (no

del todo), Javascript, Matlab, Basic, PHP…

Page 20: Tema1 - Lenguaje C

Máquinas Virtuales

Características: Es el enfoque más actual de traducción de código fuente. Es un software que simula una computadora ó sistema operativo. Traduce un código fuente a un lenguaje máquina que no tiene hardware: código

intermedio. Para la ejecución del programa se necesita un “traductor” (Máquina virtual)

apropiado para cada tipo de sistema operativo.

Se agrega gran complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo "anfitrión" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta pérdida de eficiencia.

Page 22: Tema1 - Lenguaje C

ARQUITECTURA DE COMPUTADORAS

Page 23: Tema1 - Lenguaje C

Arquitectura de computadoras

Page 24: Tema1 - Lenguaje C

Sistemas numéricos

Debido a que los sistemas digitales manejan 2 niveles de voltaje lógicos (0–5 volts ó 0-12 volts), se utiliza el sistema binario para representar este par de valores. Sin embargo, muchas veces un número binario es demasiado largo para representarlo en pantalla. Para “simplificar” la escritura se utiliza el sistema hexadecimal.

Page 25: Tema1 - Lenguaje C

Arquitectura Von Neumann

La mayoría de las computadoras personales actuales siguen al pie de la letra la arquitectura propuesta por Von Newmann en el diseño del EDVAC. Esta arquitectura se caracteriza porque tanto el programa como los datos están almacenado internamente en la misma memoria. La arquitectura de Von Newmann define los siguientes elementos:

Unidad Central de Proceso (CPU - Central Processing Unit) Memoria principal (memoria única donde se guardan

instrucciones y datos) Controlador de entrada salida Buses del sistema

Bus de datos Bus de direcciones Bus de control

Page 26: Tema1 - Lenguaje C

Arquitectura Von Neuman

Page 27: Tema1 - Lenguaje C

Arquitectura Harvard

La diferencia principal en la arquitectura Harvard es que la memoria de instrucciones y la memoria de datos son independientes, es decir cada una cuenta con su propio bus de acceso, permitiendo paralelismo y mayor velocidad de ejecución, su desventaja principal es que vuelve compleja ña arquitectura y por lo tanto su construcción y control.

Page 28: Tema1 - Lenguaje C

Generación de computadoras

Page 29: Tema1 - Lenguaje C
Page 30: Tema1 - Lenguaje C
Page 31: Tema1 - Lenguaje C
Page 32: Tema1 - Lenguaje C
Page 33: Tema1 - Lenguaje C

Sistemas operativos

Page 34: Tema1 - Lenguaje C

Sistemas operativos

Definición: Un sistema operativo (OS) es un grupo de programas de computadora que administra los recursos de hardware y software de una computadora para mantenerlos operativos. El OS optimiza las tareas básicas como controlar y manejar el uso de la memoria, dar prioridades a las instrucciones de los procesos, controlar los dispositivos de entrada y salida, facilitar la conectividad de las redes y administrar archivos.

Page 35: Tema1 - Lenguaje C
Page 37: Tema1 - Lenguaje C

Sistemas operativos mas utilizados

Windows ( windows; 3.1, 3.1, NT, 95, 98, 00, XP) : programa informático más conocido del mundo, utiliza los ordenadores personales llamados “compatibles” y que ha reemplazado al MS-DOS( primer sistema operativo para microordenadores).Unix: es el más extendido entre los grandes sistemas y ordenadores llamados” Estaciones de trabajo”. En los últimos años, se ha extendido un tipo especial de Unix, llamado; LinuxMac-Os: se utiliza en ordenadores personales, pero en los ordenadores de Apple llamados: Macintosh

Page 38: Tema1 - Lenguaje C

Unix y sus variantes (linux)

Page 39: Tema1 - Lenguaje C

Windows

Page 40: Tema1 - Lenguaje C

Programación estructurada

Este paradigma de programación utiliza solo 3 instrucciones de control básicas y sus variantes, a saber:

Secuencia: el bloque secuencial de instrucciones, instrucciones ejecutadas sucesivamente, una detrás de otra.

Selección: la instrucción condicional con doble alternativa, de la forma "if condición then instrucción-1 else instrucción-2".

Iteración: el bucle condicional "while condición do instrucción", que ejecuta la instrucción repetidamente mientras la condición se cumpla.

Las principales ventajas de la programación estructurada son: Los programas son mas fáciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados internamente.

Page 41: Tema1 - Lenguaje C

Programación orientada a objetos

POO: Se trata de una técnica ó estilo de programación que utiliza objetos como bloque esencial de construcción. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Ventajas de la POO: Fomenta la reutilización y extensión del código. Permite crear sistemas más complejos. Relacionar el sistema al mundo real. Facilita la creación de programas visuales. Construcción de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software

Page 42: Tema1 - Lenguaje C

Programación de descripción de hardware sistemas numéricos

VHDL – Lenguaje de descripción de Hardware VHSIC (Very High Speed Integrated Circuit.). Es un lenguaje que sirve para describir el comportamiento del hardware. La forma de comportarse es independiente del hardware donde se imnplementará.

El VHDL es un estándar llamado IEEE 1076-1993. Ventajas: Una disponibilidad pública Independencia de dispositivos y fabricantes Reutilización Diseño jerárquico

Page 43: Tema1 - Lenguaje C

Ejemplo de programación VHDL

Page 44: Tema1 - Lenguaje C

Breve cronología de los Lenguajes de programación

1957 FORTRAN1958 ALGOL 1960 Lisp 1960 COBOL 1962 APL 1962 SIMULA 1964 BASIC 1964 PL/I 1970 Prolog 1972 C 1975 Pascal 1975 Scheme 1975 Modula

1983 Smalltalk-80 1983 Objective-C 1983 Ada 1986 C++ 1986 Eiffel 1987 Perl 1988 Tcl/Tk 1990 Haskell 1991 Python 1993 Ruby 1995 Java 1995 PHP 2000 C#

Page 45: Tema1 - Lenguaje C
Page 46: Tema1 - Lenguaje C

Ejemplos de lenguaje estructurado y orientados a objetos

Page 47: Tema1 - Lenguaje C

Lenguaje C

Autores: Kernighan & Dennis Ritchie (1972)

Lenguaje de alto nivel estructurado: Con funciones Objetivo inicial: Utilización para la programación

de sistemas operativos .. Windows, Unix. Se busco deliberadamente una proximidad con

lenguajes de nivel mas bajo: ensamblador, maquina.

Por que sigue siendo útil C? Simple, versátil.

Page 48: Tema1 - Lenguaje C

Java

Java es un lenguaje de programación moderno y orientado a objetos desarrollado por Sun Microsystems a principio de los años 90´s.

Características: Sintaxis similar a C y C++, pero sin punteros (la gestión de

la memoria dinámica es automática). Interpretado: un programa escrito en código Java (.java) se

compila a código bytecode (.class) y dicho código lo interpreta una máquina virtual de Java.

Multiplataforma: el programador compila una única vez el programa Java, y el fichero de bytecode que obtiene se ejecuta igual en la máquina virtual de Java de cualquier plataforma.

Seguro: la máquina virtual Java sobre la que se ejecuta el programa controla que dicho programa no intente ejecutar operaciones no permitidas sobre los recursos del sistema.

Page 49: Tema1 - Lenguaje C

Algunas fechas y acontecimientos importantes

1822 Charles Babagge: Diseñó una máquina de propósito específico que se podía usar para calcular valores de funciones polinómicas mediante el método de las diferencias. Por su discernimiento, a Charles se conoce como el "Padre de las Computadoras Modernas".

1934 - Colossus, Alan Touring, Flowers y Newman, primer dispositivo calculador totalmente electrónico. Utilizados para decifrar mensajes en la guerra nazi.

1843 Lady Ada Augusta Lovelace sugirió la idea de que las tarjetas perforadas se adaptaran de manera que causaran que el motor de Babbage repitiera ciertas operaciones. Debido a esta sugerencia algunos consideran a Lady Lovelace la primera programadora.

1946 Se construye en la Universidad de Pennsylvania bajo la tutela de John Von Neumann la EDVAC (Electronic discrete variable automatic calculator). La revelancia de esta computadora es que por primera vez su arquitectura permitía almacenamiento en memoria de los programas (Arquitectura de Von Neumann)

1946 Se construye en la Universidad de Pennsylvania la ENIAC (Electronic Numerical Integrator And Calculator), que fue la primera computadora electrónica de propósito general.

1951 Se construye la primera computadora comercial fabricada en Estados Unidos, entregada a la oficina de CENSOS, la UNIVAC, creada por el mismo equipo de la ENIAC.

Page 50: Tema1 - Lenguaje C

1958 Se considera oficialmente el inicio de la era de la computadora en México al adquirirse una computadora IBM-650 por parte de la UNAM, sus principales tareas eran resolver problemas de astronomía, física e ingeniería química. Seguirían otras instituciones como UANL, el IPN, el ITESM e instituciones de gobierno como el IMSS, CFE y PEMEX.

1966 Creación de la red ARPANET por el Departamento de Defensa de los EEUU. Predecesora de Internet.

Page 51: Tema1 - Lenguaje C

1969 Se desarrolla en los laboratorios Bell el lenguaje de programación B y el sistema operativo UNIX cuyos aportes fueron mayoritariamente de Ken Thompson y Dennis Ritchie.

1971 - Primer microprocesaror comercial (4004), 4 bits, Intel 1972 Ken Thompson y Dennis M. Ritchie crean el lenguaje de

programación C en los Laboratorios Bell. 1975 – Lanzamiento del primer microcomputador personal Altair 8800. 1975 – Es fundada la empresa Microsoft por Bill Gates y Paul Allen 1976 - Se funda la empresa Apple por Steve Jobs y Steve Wozniak. 1982 Es diseñada la computadora AHR (Heterárquica de

procesamiento paralelo) construida en la UNAM por el Ing. Adolfo Guzmán Arenas.

1983 ARPANET se separa de la red militar que la originó, de modo que, ya sin fines militares, se considera este año como el nacimiento de Internet.

1983 Apple Computer presenta su Macintosh 128K con el sistema operativo Mac OS, el cual introduce la interfaz gráfica ideada en Xerox.

Page 52: Tema1 - Lenguaje C

1984 - 1986 Se desarrolla las computadoras personales CP-UAP y la Turing-850 dirigido por Luis Medina Vaillard (BUAP). Se construye la computadora Almita II (IPN), diseñado por el Doctor Miguel Lindín Bos.

1985 – Se diseña el microprocesador ILA 9200 por científicos e ingenieros de México (BUAP), Argentina, Brasil, Colombia y España.

1991 Linus Torvalds comienza a desarrollar el S.O. Linux (UNIX).

1992 – Gran año para la robótica en México, se construye el Robot pianista llamado “Cuco el guapo” que estaba basado en el microprocesador ILA 9200.

1995 Se desarrolla el lenguaje de programación Java por la compañía Sun Microsystems.

1997 – Los mexicanos Miguel de Icaza y Federico Mena anuncian el proyecto GNOME. (Interfáz gráfica LINUX)

1998 Larry Page y Sergey Brin fundan Google Inc. 2008 Google, lanza el G1 con su nuevo sistema Android para

móviles.