Sunteți pe pagina 1din 37

Tres ingenieros de Linux y tres de Microsoft se disponían a viajar en tren para asistir a un congreso. En la estación, los de Microsoft compraron sus pasajes y vieron que los de Linux sólo compraban uno… "¿Cómo van a viajar tres personas con un solo pasaje?", les preguntó uno de los empleados de Microsoft. "¡Ahora verás!”, le respondió uno de Linux. Subieron todos al tren y los empleados de Microsoft vieron como los tres

ingenieros de Linux se metían juntos en el baño. A poco de arrancar el tren, llegó el revisor pidiendo los pasajes, tocó la puerta del baño y dijo:

la puerta se abrió lo suficiente como para que saliese

un brazo con el pasaje en la mano, el revisor lo marcó y siguió su camino.

"Ticket por favor"

Al ver esto, los empleados de Microsoft acordaron que era una idea genial y que copiarían el truco a la vuelta del congreso, para ahorrar unas pesetillas. De regreso, en la estación, los empleados de Microsoft compraron un solo pasaje, y se quedaron atónitos al ver que los

ingenieros de Linux no sacaban ninguno

"¿Cómo van a viajar sin

pasaje?" preguntó perplejo uno de los empleados de Microsoft. "¡Ahora vas a ver!", respondió uno de los linuxeros. Al subir al tren, los tres empleados de Microsoft se metieron en un baño y los tres ingenieros de

Linux en otro

Arrancó el tren, y rápidamente uno de los linuxeros salió

del baño, se dirigió al de los empleados de Microsoft, tocó la puerta y dijo : "Ticket por favor"

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Computadora: Maquina o aparato electrónico capaz de ejecutar operaciones repetitivas a muy alta velocidad.

de ejecutar operaciones repetitivas a muy alta velocidad. COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION

COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION

COMPONENTES DE UN SISTEMA DE PROCESAMIENTO DE INFORMACION Entrada = Datos PROCESADOR Salida = Información

Entrada = Datos

UN SISTEMA DE PROCESAMIENTO DE INFORMACION Entrada = Datos PROCESADOR Salida = Información Representación de algún

PROCESADOR

DE PROCESAMIENTO DE INFORMACION Entrada = Datos PROCESADOR Salida = Información Representación de algún hecho,
DE PROCESAMIENTO DE INFORMACION Entrada = Datos PROCESADOR Salida = Información Representación de algún hecho,

Salida = Información

Entrada = Datos PROCESADOR Salida = Información Representación de algún hecho, concepto o entidad real

Representación de algún hecho, concepto o entidad real (los datos pueden tomar diferentes formas; por ejemplo palabras escritas o habladas, números y dibujos).

Datos procesados y organizados.

SISTEMAS DE PROCESAMIENTO DE INFORMACION

HARDWARE: Conjunto de componentes físicos de la computadora (equipo físico)

de componentes físicos de la computadora (equipo físico) SOFTWARE : Conjunto de programas que controlan el

SOFTWARE: Conjunto de programas que controlan el funcionamiento de una computadora (equipo lógico).

Dispositivos de Almacenamiento entrada/salida secundario E/s (memoria (Periféricos) auxiliar)
Dispositivos de
Almacenamiento
entrada/salida
secundario
E/s
(memoria
(Periféricos)
auxiliar)

Computadoras

En todas partes y con muchas formas

Computadoras • En todas partes y con muchas formas

¿Por qué aprender a Programar?

¿ Por qué aprender a Programar?

Programación de computadoras

Programar

Indicar a la computadora qué es lo que tiene que hacer

Programa

Secuencia de instrucciones

Instrucciones que entiende la computadora

Y que persiguen un objetivo: ¡resolver un problema!

Programadores

Parque Jurásico
Parque Jurásico

Trabajo en equipo Múltiples roles

Gestores

Analistas

Diseñadores

Programadores

Probadores

Administradores de sistemas

Programa informático

¿Qué es programar?

Decirle a la computadora muy rápido exactamente lo que tiene que hacer Especificar la estructura y el comportamiento de un programa, así como probar que el programa realiza su tarea adecuadamente y con un rendimiento aceptable

Programa: Transforma entrada en salida

Entrada

Programa

Salida

: Transforma entrada en salida Entrada Programa Salida Algoritmo : Secuencia de pasos y operaciones que
: Transforma entrada en salida Entrada Programa Salida Algoritmo : Secuencia de pasos y operaciones que

Algoritmo: Secuencia de pasos y operaciones que debe realizar el programa para resolver el problema El programa implementa el algoritmo en un lenguaje concreto

La Ingeniería del Software

La programación es sólo una etapa del proceso de desarrollo

Modelo de desarrollo “en cascada”:

Planificación

• Modelo de desarrollo “en cascada”: Planificación Recursos necesarios, presupuesto, plan, …

Recursos necesarios, presupuesto, plan, …

AnálisisAnálisis ¿Qué? DiseñoDiseño ProgramaciónProgramación
AnálisisAnálisis
¿Qué?
DiseñoDiseño
ProgramaciónProgramación
¿Qué? DiseñoDiseño ProgramaciónProgramación ¿Cómo? Implementación PruebaPrueba yy

¿Cómo?

¿Qué? DiseñoDiseño ProgramaciónProgramación ¿Cómo? Implementación PruebaPrueba yy depuracióndepuración
¿Qué? DiseñoDiseño ProgramaciónProgramación ¿Cómo? Implementación PruebaPrueba yy depuracióndepuración

Implementación

PruebaPrueba yy depuracióndepuración

ProgramaciónProgramación ¿Cómo? Implementación PruebaPrueba yy depuracióndepuración MantenimientoMantenimiento

MantenimientoMantenimiento

«Me maravillaba la posibilidad de poder decirle a una computadora qué hacer, línea por línea, y que ella me responda.»

«En la escuela […] algunos proyectos eran mejores que otros, pero todos nos sirvieron para
«En la escuela […] algunos proyectos
eran mejores que otros, pero todos
nos sirvieron para entender el
lenguaje propio de las computadoras»
«Aquellos conocimientos de programación aun hoy me servían para resolver ciertos tipos de problemas o
«Aquellos conocimientos de
programación aun hoy me servían
para resolver ciertos tipos de
problemas o para elaborar estrategias
de comunicación»

«Aprender Programación me había enseñado a pensar analíticamente.»

o para elaborar estrategias de comunicación» «Aprender Programación me había enseñado a pensar analíticamente.»
Las computadoras se están haciendo presentes en casi todo aspecto de las actividades del ser
Las computadoras se están
haciendo presentes en casi
todo aspecto de las
actividades del ser humano…
Es necesario aprender a comunicarse con las máquinas…

Es necesario aprender a comunicarse con las máquinas…

Las empresas, sin importar su tamaño o rama en la que trabajen, necesitan desarrollar sistemas de información que les permitan crecer en sus mercados…

de información que les permitan crecer en sus mercados… ¡Y para eso, requieren de personas con
de información que les permitan crecer en sus mercados… ¡Y para eso, requieren de personas con

¡Y para eso, requieren de personas con conocimientos en programación!

Se necesitan programadores. Hay puestos de empleos disponibles, pero nuestra fuerza de trabajo no está
Se necesitan programadores. Hay puestos de empleos disponibles, pero nuestra fuerza de trabajo no está

Se necesitan programadores.

Se necesitan programadores. Hay puestos de empleos disponibles, pero nuestra fuerza de trabajo no está capacitada

Hay puestos de empleos disponibles, pero nuestra fuerza de trabajo no está capacitada para realizarlos. Entre los economistas, esto se conoce con el término «desempleo estructural».

La dependencia de la sociedad al uso de la automatización crece cada vez más. La
La dependencia de la sociedad al uso de la automatización crece cada vez más. La
La dependencia de la sociedad al uso de la automatización crece cada vez más. La

La dependencia de la sociedad al uso de la automatización crece cada vez más.

La manera de tomar el control de los sistemas que utilizamos en el día a día es entender cómo funcionan. Y esto se logra…

¡Aprendiendo a programar!

Expande tu mente

Aprender

Programación

Expande tu mente Aprender Programación Te ayuda a pensar en forma algorítmica Te permite mejorar y

Te ayuda a pensar en forma algorítmica

Expande tu mente Aprender Programación Te ayuda a pensar en forma algorítmica Te permite mejorar y

Te permite mejorar y automatizar tareas

Desarrollar lenguajes Hoy en día, el y entornos pensamiento la oferta de de desarrollo analítico…

Desarrollar lenguajes Hoy en día, el y entornos pensamiento la oferta de de desarrollo analítico… que evoluciones es Y muy en la grande. medida en el La lenguaje idea es empezar que elegiste, por desarrollarás cualquier el criterio punto. para ir conociendo otros lenguajes y entornos, comparar y elegir el que más te guste.

punto. para ir conociendo otros lenguajes y entornos, comparar y elegir el que más te guste.

¿Qué es lo importante?

En la mayoría de los campos de la Ingeniería, los estudiantes requieres tener acceso a toda una serie de herramientas para crear algo básico.

Pero…

En Programación ¡Los estudiantes son los creadores! Con tan solo un ordenador, los programadores pueden

En Programación

¡Los estudiantes son los creadores!

Con tan solo un ordenador, los programadores pueden imaginar…

…UN MUNDO PROPIO

SISTEMAS DE PROCESAMIENTO DE INFORMACION

Ejemplos:

Arturito Nosotros mismos.

INFORMACION Ejemplos : • Arturito • Nosotros mismos. ¿Cómo el procesador transforma esos información

¿Cómo el procesador transforma

esos

información procesada?

entrada en

datos

de

Algoritmo: Conjunto de instrucciones que especifica la secuencia de operaciones a realizar, en orden, para
Algoritmo: Conjunto de instrucciones que
especifica la secuencia de operaciones a
realizar, en orden, para resolver un problema
especifico, en otras palabras un algoritmo es
una formula para la resolución de un
problema.

GENERALIDADES SOBRE LOS ALGORITMOS

Metodología de programación: Consiste en la metodología aplicada para la resolución de problemas mediante programas.

Diseño del Problema algoritmo Programa de computador
Diseño del
Problema
algoritmo
Programa de
computador

Tarea

resolver.

que

se

desea

Descripción ordenada de la secuencia de

pasos

ambigüedades) que

conducen a la solución de problema

(Análisis del

dado

(sin

problema y desarrollo del algoritmo).

Expresar el algoritmo como un programa en el lenguaje de programación adecuado.

Ejecución

y

validación

del

programa

de

computadora.

y validación del programa de computadora. La definición de un algoritmo debe describir tres partes:

La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida. Ejemplo: La receta de un sancocho.

GENERALIDADES SOBRE LOS ALGORITMOS

Describir los pasos para cruzar la calle.

ALGORITMOS • Describir los pasos para cruzar la calle. • Describa los pasos para llevar a

Describa los pasos para llevar a una amiga a cine.

• Describa los pasos para llevar a una amiga a cine. • Describa los pasos para
• Describa los pasos para llevar a una amiga a cine. • Describa los pasos para

Describa los pasos para cambiar un bombillo quemado.

• Describa los pasos para cambiar un bombillo quemado. • Describa los pasos para cambiar la

Describa los pasos para cambiar la llanta pinchada de una cicla.

Describa los pasos para cambiar un bombillo quemado. • Describa los pasos para cambiar la llanta

GENERALIDADES SOBRE ALGORITMOS

GENERALIDADES SOBRE ALGORITMOS
GENERALIDADES SOBRE ALGORITMOS
GENERALIDADES SOBRE ALGORITMOS

LENGUAJES DE PROGRAMACION

Cuando el procesador es una computadora el

algoritmo ha de expresarse en una forma que recibe el nombre de programa. Un programa se escribe en un lenguaje de programación.

Programación: Actividad

que consiste en expresar un algoritmo en forma de programa.

Instrucción: Es cada uno de

los pasos que se ejecutan en el programa.

Computadora mata a Flanders ???????
Computadora
mata a
Flanders
???????

Principales lenguajes utilizados en la actualidad:

Lenguaje de maquina.

Lenguaje de bajo nivel.

Lenguaje de alto nivel

LENGUAJES DE PROGRAMACION

LENGUAJE DE MAQUINA Están escritos en un lenguaje directamente inteligible por la maquina. Las instrucciones consisten en cadenas binarias que especifican una operación, y las posiciones (dirección) de memoria implicadas en la operación. Dependen del hardware de la computadora (PC diferente de Macintosh)

00001011011100001010

en la operación. • Dependen del hardware de la computadora (PC diferente de Macintosh) 00001011011100001010

LENGUAJES DE PROGRAMACION

LENGUAJE DE BAJO NIVEL

Es un lenguaje mas fácil de usar que el lenguaje de maquina.

son

conocidas como nemotécnicos (ADD, SUB, DIV, etc.).

Las

instrucciones

del

lenguaje

ensamblador

ADD N,M,P = 0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador no

puede ser ejecutado directamente por la computadora por lo que requiere de una fase de traducción a lenguaje de maquina.

Ensamblador.

ADD N,M,P

por lo que requiere de una fase de traducción a lenguaje de maquina. • Ensamblador .

0110 1001 1010 1011

por lo que requiere de una fase de traducción a lenguaje de maquina. • Ensamblador .
por lo que requiere de una fase de traducción a lenguaje de maquina. • Ensamblador .

LENGUAJES DE PROGRAMACION

LENGUAJE DE ALTO NIVEL

Diseñados para que las personas entiendan y escriban los programas de un modo mas fácil que usando lenguajes de maquina y ensamblador. Es independiente de la maquina pues las instrucciones no dependen del hardware o maquina en particular. Los programas escritos en lenguaje de alto nivel son portables o transportables, es decir que pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de maquinas.

con poca o ninguna modificación en diferentes tipos de maquinas . C, C++, COBOL, FORTRAN, Pascal,
C, C++, COBOL, FORTRAN, Pascal, Java, Phyton.
C, C++, COBOL,
FORTRAN, Pascal,
Java, Phyton.

LENGUAJES DE PROGRAMACION

{Lenguaje Pascal} program suma;

var x,s,r:integer; {declaración de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 números enteros');{imprime el texto} readln(x,s); {lee 2 números y los coloca en las variables x y s} r:= x + s; {suma los 2 números y coloca el resultado en r} writeln('La suma es ',r); {imprime el resultado} readln; end.{termina el programa principal}

Alto Nivel

Bajo Nivel

Maquina

;Lenguaje ensamblador, sintaxis Intel para procesadores x86 mov eax,1 ;mueve a al registro eax el valor 1 xor ebx, ebx ;pone en 0 el registro ebx int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)

valor 1 xor ebx , ebx ;pone en 0 el registro ebx int 80h ; llama

TRADUCTORES DE LENGUAJE

Traductores de lenguaje

Son los programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código de maquina.

Clasificación:

Compiladores: Lenguaje de alto nivel --> Lenguaje de maquina.

Interprete: Un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta.

Lenguaje de maquina. – Interprete: Un traductor que toma un programa fuente, lo traduce y a

Lenguajes de programación de alto nivel

Traducción

Compiladores:

Compilan y enlazan programas completos

Intérpretes:

Compilan, enlazan

y ejecutan instrucción

a instrucción

Código fuente

y ejecutan instrucción a instrucción Código fuente Compilador #include <iostream> using namespace std;

Compilador

instrucción a instrucción Código fuente Compilador #include <iostream> using namespace std; int main()

#include <iostream> using namespace std;

int main()

{

cout << "Hola Mundo!" << endl; return 0;

}

Código objeto

0100010100111010011100…

ó d i g o o b j e t o 0100010100111010011100… Enlazador Código objeto de

Enlazador

g o o b j e t o 0100010100111010011100… Enlazador Código objeto de biblioteca Programa ejecutable
g o o b j e t o 0100010100111010011100… Enlazador Código objeto de biblioteca Programa ejecutable

Código objeto de biblioteca

Programa

ejecutable

Para una arquitectura concreta y un sistema operativo

Los lenguajes de programación de alto nivel

Genealogía de lenguajes

Versiones / Estándares

Prolog Prolog 1970 1970 Java Java Java COBOL COBOL PL/I PL/I PL/I C++ C++ C++
Prolog
Prolog
1970 1970
Java
Java
Java
COBOL
COBOL
PL/I
PL/I
PL/I
C++
C++
C++
1995
1995
1995
1959 1959
1964
1964
1964
1983
1983
1983
FORTRAN
FORTRAN
C#
C#
C#
C
C C
1954 1954
CPL
CPL
CPL
2000
2000
2000
1971
1971
1971
1963
1963
1963
Python
Python
Python
ALGOL
ALGOL
ALGOL
Pascal
Pascal
Pascal
Modula
Modula
Modula
1991
1991
1991
1958
1958
1958
1970
1970
1970
1975
1975
1975
BASIC
BASIC
BASIC
1964
1964
1964
Ada
Ada
Ada
Eiffel
Eiffel
Eiffel
1979
1979
1979
1986
1986
1986
Simula
Simula
Simula
1964
1964
1964
Smalltalk
Smalltalk
Smalltalk
Ruby
Ruby
Ruby
1971
1971
1971
1993
1993
1993
Haskell
Haskell
Lisp
Lisp
Scheme
Scheme
Scheme
1987 1987
1958 1958
1975
1975
1975
Logo
Logo
Logo
1968
1968
1968

TERMINOLOGIA BASICA VI

• •

Compilación: Proceso de traducción de programas. El resultado del proceso de compilación es un archivo objeto.

Enlazado: Proceso realizado por el linker o enlazador, básicamente este programa es el encargado de juntar todos los ficheros de codigo objeto, la información de todos los recursos necesarios (bibliotecas) , eliminar todos los recursos que no se necesitan y enlazar el código objeto con sus bibliotecas. El resultado final de este procedimiento es un ejecutable o una biblioteca.

enlazar el código objeto con sus bibliotecas. El resultado final de este procedimiento es un ejecutable