Want to make creations as awesome as this one?

Transcript

<FUNDAMENTOS DE PROGRAMACIÓN>

EMPEZAR >

>

>

<1. INTRODUCCIÓN A LA COMPUTACIÓN>

>

>

1.1 reseña de la computación

1.2 Impacto de las computadoras en la sociedad

1.4 Descripción de tipos de programación

1.5 Lenguajes de programación

1.3 Definiciones

EMPEZAR >

1.1 Breve reseña de la computación

Las primeras máquinas de cálculo fueron desarrolladas con sistemas mecánicos y electromecánicos comenzando con un simple ábaco. Charles Babbage introduce en 1822 su primera máquina computadora mecánica llamada “máquina diferencial”. Usaba el método de las diferencias finitas para el cálculo de polinomios de 2° grado y estaba compuesta de más de 20.000 partes.

1.1 Breve reseña de la computación

>

>

Entre 1939 y 1944 se construyó la Mark-I, proyecto realizado entre la IBM y la universidad de Harvard. Era mecánica y eléctrica y poseía más de 700.000 engranajes o ruedas. Su concepto estaba basado en la máquina analítica de Babbage. Tardaba hasta 10 segundos en realizar una cuenta decimal y se la podía programar mediante cintas de papel perforado.

1.1 Breve reseña de la computación

>

>

En 1946 se construye el primer computador digital de propósito general después de la Z1 alemana. El ENIAC (Electronic Numerical Integrator And Computer). Se la podía programar conectando y desconectando cables en tableros. Fue construida para calcular las trayectorias de proyectiles llamadas tablas de tiro para la artillería del ejército de los Estados Unidos de Norteamérica.

1.1 Breve reseña de la computación

>

>

>

>

En 1971 se inventó el microprocesador, el desarrollo del microprocesador por parte de los ingenieros de Intel provocó cambios radicales e inmediatos en el aspecto, potencia y disponibilidad de las computadoras. La revolución de las microcomputadoras comenzó a fines de los 70 cuando compañías como Apple, Commodore y Tandy presentaron computadores de bajo coste y del tamaño de una máquina de escribir. Los PC son en la actualidad elementos comunes en oficinas, empresas, domicilios, escuelas, etc.

1.1 Breve reseña de la computación

1.2 Impacto de las computadoras en la sociedad

EMPEZAR >

>

>

Las computadoras han tenido un gran impacto para nuestra sociedad desde su aparición. Anteriormente una computadora tenía un tamaño enorme y su manejo o acceso era sumamente complicado y su costo era muy elevado, siendo inaccesible para la mayoría de las personas. Con el paso del tiempo esto fue cambiando con demasiada rapidez y cada uno de los componentes de ésta se han ido modificando y evolucionando para lograr una mayor y mejor organización y perfeccionamiento en sus funciones y facilitando su uso al público en general.

1.2 Impacto de las computadoras en la sociedad

>

>

Al reducirse su tamaño fue posible contar con una computadora personal, las cuales se han introducido prácticamente en todos los países, tanto en los países desarrollados como en los países en vías de desarrollo y en todas las áreas de la sociedad, llegando a ocupar un lugar importante en una gran cantidad de hogares.El precio de las computadoras también ha ido disminuyendo, siendo más accesibles para un gran número de personas, aunque todavía no llega a ser posible adquirir una para las personas de escasos recursos para uso personal.Una opción para estas personas pueden ser los servicios de internet público o incluso pueden ingresar a través de su teléfono celular a un costo relativamenteaccesible.

1.2 Impacto de las computadoras en la sociedad

1.3 Definiciones

EMPEZAR >

>

>

1.3.1 Lenguaje

Alto Nivel

Bajo Nivel

Maquina

Ensamblador

>

>

1.3.2 Compilador

¿Como funciona?

Un compilador es un tipo especial de software que traduce el código fuente escrito en un lenguaje de programación (el lenguaje fuente) a otro (el lenguaje de destino). El propósito más común de compilar código fuente es crear un programa ejecutable, y la sofisticación de un compilador puede influir muchísimo en la eficacia y velocidad del programa ejecutable final. Entender cómo funcionan los compiladores es fundamental para el desarrollo de software porque tiende un puente entre el código de alto nivel legible por el ser humano y las instrucciones de bajo nivel comprensibles por la máquina. El proceso consta de varias fases, cada una con su propio conjunto de tareas y objetivos: preprocesamiento, análisis léxico, análisis sintáctico, análisis semántico, generación de código y optimización del código.

>

>

1.3.3 Traductor

Un traductor en programación es un programa que transforma instrucciones de programación escritas en un lenguaje comprensible para los humanos en códigos de lenguaje de máquina que las computadoras pueden procesar. Los traductores engloban a los compiladores y a los intérpretes. Los intérpretes ejecutan el programa directamente, traduciendo cada sentencia en una secuencia de subrutinas ya compiladas en código máquina. La traducción informática es una disciplina que requiere conocimientos técnicos y lingüísticos específicos para que los usuarios de diferentes países puedan acceder a la información de manera efectiva y precisa.

>

>

1.3.4 Sistemas Numéricos

Hexadecimal

Decimal

Un sistema numérico tiene como objetivo el permitir el conteo de los elementos de un conjunto. El sistema se conforma por N unidades en orden sucesivo que aumentan de N en N. De acuerdo a N se define el número de unidades que se necesitan para pasar de un orden a otro. Una de las condiciones para utilizar algún sistema numérico es el que permita realizar operaciones básicas sobre el conjunto N de una forma sencilla.

Octal

Binario

>

>

1.3.5 Arquitectura de computadoras

La arquitectura de computadoras es la organización lógica del hardware de los ordenadores. Se trata de un conjunto de principios que describen cómo se pueden describir las características del hardware del ordenador y cómo interactúan entre sí. La arquitectura de los ordenadores también se denomina arquitectura de la CPU o arquitectura del ordenador. La arquitectura de un ordenador determina su rendimiento, sus capacidades y sus límites. La arquitectura tiene diferentes significados en distintos campos. Cuando se habla de arquitectura de ordenadores, suele referirse a la lógica de un dispositivo informático. Suele referirse a los principios fundamentales que guían el diseño de los procesadores o chips informáticos, sus unidades y métodos de funcionamiento.

>

>

1.3.6 Sistemas operativos

• Sistemas operativos de mainframe • Sistemas operativos de servidor • Sistemas operativos multiprocesador • Sistemas operativos de ordenador personal • Sistemas operativos en tiempo real • Sistemas operativos integrados • Sistemas operativos de tarjeta inteligente

Estas máquinas se caracterizan por su capacidad de E/S, sin resultar raros sistemas con 1000 discos y miles de gigabytes. Los mainframes también están renaciendo un poco como servidores Web avanzados, servidores para sitios de comercio electrónico a gran escala y servidores para transacciones de negocio a negocio. Los sistemas operativos para mainframe están claramente orientados al procesamiento de varios trabajos a la vez, casi todos los cuales necesitan cantidades enormes de E/S. Los servicios que ofrecen suelen ser de tres tipos:

  • Por lotes: Un sistema por lotes procesa trabajos rutinarios sin que haya un usuario interactivo presente. Por ejemplo, el procesamiento de reclamaciones en una compañía de seguros o los informes de ventas de una cadena de tiendas por lo regular se hacen por lotes.
  • Procesamiento de transacciones: Los sistemas procesadores de transacciones manejan numerosas solicitudes pequeñas, como procesamiento de cheques en un banco o reservaciones de pasajes aéreos. Cada unidad de trabajo es pequeña, pero el sistema debe manejar cientos o miles de ellas por segundo.
  • Tiempo compartido: Los sistemas de tiempo compartido permiten a múltiples usuarios remotos ejecutar trabajos en la computadora de forma simultánea, como las consultas de una base de datos grande.

Sistemas operativos de servidor. Éstos se ejecutan en servidores, que son computadoras personales muy grandes, estaciones de trabajo o incluso mainframes, y dan servicio a múltiples usuarios a través de una red, permitiéndoles compartir recursos de hardware y software. Los servidores pueden prestar servicios de impresión, de archivo o de Web. Los proveedores de Internet operan muchas máquinas servidoras para atender a sus clientes, y los sitios Web emplean servidores para almacenar las páginas Web y manejar las solicitudes que llegan. Entre los sistemas operativos de servidor típicos están UNIX y Windows 2000 y 2003 en sus versiones server y advanced server. Linux también está ganando terreno en los servidores.

Una forma cada vez más común de obtener potencia de computación a gran escala es dotar de varias CPUs a los sistemas. Se necesitan sistemas operativos especiales, pero con frecuencia éstos son variaciones de los sistemas operativos de servidor, con funciones especiales para comunicación y conectividad.

Sistema operativo de computadora personal. Su misión consiste en presentar una buena interfaz a un solo usuario. Se les usa en forma amplia para procesamiento de texto, hojas de cálculo y acceso a Internet. Ejemplos comunes son las distintas versiones personales de Windows, el sistema operativo Macintosh y Linux

Sistema de tiempo real. Se caracteriza porque debe garantizar unos tiempos de respuesta suficiente exactos ante estímulos externos. Por ejemplo, en los sistemas de control de procesos industriales, computadoras de tiempo real tienen que capturar datos acerca del proceso de producción y utilizarlos para controlar las máquinas de la fábrica. Con frecuencia deben cumplirse plazos estrictos. Por ejemplo, si un automóvil avanza en una línea de ensamble, deben efectuarse ciertas acciones en ciertos instantes. Si un robot soldador lo hace demasiado pronto o demasiado tarde, el automóvil quedará arruinado. VxWorks y QNX Neutrino son sistemas operativos de tiempo real.

Pasando a sistemas cada vez más pequeños, llegamos a las computadoras de bolsillo (palm-top) y sistemas integrados (también conocidos como empotrados). Una computadora de bolsillo o Asistente Personal Digital (PDA= Personal Digital Assistant) es una computadora pequeña que cabe en el bolsillo de la camisa y realiza unas cuantas funciones como libreta de direcciones electrónica y bloc de notas. Los sistemas integrados operan en las computadoras que controlan dispositivos que por lo general no se consideran computadoras, como televisores, hornos de microondas y teléfonos móviles. Estos sistemas suelen tener algunas características de los sistemas de tiempo real pero también tienen limitaciones de tamaño, memoria y sobre todo consumo de electricidad que los hacen especiales. Algunos ejemplos de tales sistemas operativos son PalmOS y Windows CE (Consumer Electronics)

Los sistemas operativos más pequeños se ejecutan en tarjetas inteligentes, que son dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU. Sus limitaciones en cuanto a potencia de procesamiento y memoria son muy severas. Algunos de ellos sólo pueden desempeñar una función, digamos pagos electrónicos, pero otros pueden realizar varias funciones en la misma tarjeta. Muchos de éstos son sistemas patentados. Algunas tarjetas inteligentes están orientadas hacia Java. Esto implica que la ROM de la tarjeta inteligente contiene un intérprete de la Máquina Virtual de Java. Los applets (pequeños programas) de Java se descargan a la tarjeta y el intérprete de la misma los procesa. Algunas de estas tarjetas pueden manejar varios applets al mismo tiempo, lo que da pie a multiprogramación y a la necesidad de planificación. La administración y protección de recursos también adquieren importancia cuando dos o más applets están presentes al mismo tiempo.

EMPEZAR >

1.4 Descripción de tipos de programación

>

>

Un lenguaje de programación es un conjunto de reglas gramaticales (tanto sintácticas como semánticas) que instruyen a que un ordenador o dispositivo se comporte de una cierta manera. Cada lenguaje de programación tiene un vocabulario, un conjunto único de palabras clave que sigue a una sintaxis especial para formar y organizar instrucciones del ordenador.

¿Qué es un lenguaje de programación?

>

>

Scripting

Funcionales

Back-end

Front-end

Tipos de lenguajes de programación

Lógicos

Procedurales o procedimentales

Orientada a objetos

>

>

1.4.1 Programación estructurada

La visión clásica de la programación estructurada se refiere al control de ejecución. El control de su ejecución es una de las cuestiones más importantes que hay que tener en cuenta al construir un programa en un lenguaje de alto nivel. La regla general es que las instrucciones se ejecuten sucesivamente una tras otra, pero diversas partes del programa se ejecutan o no dependiendo de que se cumpla alguna condición. Además, hay instrucciones (los bucles) que deben ejecutarse varias veces, ya sea en número fijo o hasta que se cumpla una condición determinada.

>

>

Secuencia

Selección

1.4.1 Programación estructurada

Sin embargo, algunos lenguajes de programación más antiguos (como Fortran) se apoyaban en una sola instrucción para modificar la secuencia de ejecución de las instrucciones mediante una transferencia incondicional de su control (con la instrucción goto, del inglés "go to", que significa "ir a"). Pero estas transferencias arbitrarias del control de ejecución hacen los programas muy poco legibles y difíciles de comprender. A finales de los años sesenta, surgió una nueva forma de programar que reduce a la mínima expresión el uso de la instrucción goto y la sustituye por otras más comprensibles. Esta forma de programar se basa en un famoso teorema, desarrollado por Edsger Dijkstra, que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras básicas de control siguientes:

Iteración

>

>

1.4.2 Programación orientada a objetos

La programación orientada a objetos se basa en el concepto de crear un modelo del problema de destino en sus programas. La programación orientada a objetos disminuye los errores y promociona la reutilización del código. Python es un lenguaje orientado a objetos. Los objetos definidos en Python tienen las características siguientes: -Identidad: Cada objeto debe ser distinguido y ello debe poder demostrarse mediante pruebas. Las pruebas is e is not existen para este fin. -Estado: Cada objeto debe ser capaz de almacenar el estado. Para este fin, existen atributos, tales como variables de instancias y campos. -Comportamiento. Cada objeto debe ser capaz de manipular su estado. Para este fin existen métodos.

>

>

1.4.3 Programación de descripción de Hardware.

Un lenguaje de descripción de hardware es un lenguaje de programación que se utiliza para definir la estructura, diseño y operación de circuitos electrónicos digitales. Los lenguajes de descripción de hardware hacen posible una descripción formal de un circuito digital posibilitando su análisis y su simulación. Los HDL pueden ser usados para describir especificaciones de hardware, es decir, un programa escrito en un HDL hace posible que el diseñador de hardware pueda modelar y simular un componente electrónico antes de que este sea construido físicamente. Es esta caracteristica lo que hace que a veces los HDL se vean como lenguajes de programación convencionales, cuando en realidad se deberían clasificar más precisamente como lenguajes de modelado. Desde el punto de vista práctico una gran ventaja de los HDLs está en que es posible inferir el conjunto de operaciones lógicas y el circuito equivalente necesarios para realizar la función del programa. Esto permite saltar desde el ámbito de la simulación de software al de la implementación real del hardware sobre circuitos lógicos tales como los ASIC o las FPGA.

>

>

1.5 Lenguajes de programación

/

Gracias!!!!

Estos lenguajes son interpretados no compilados, como se detallará posteriormente en este post, y esto hace que la codificación con ellos sea independiente de la plataforma donde se utilicen, lo cual los hace muy útiles principalmente para la automatización de tareas. Algunos lenguajes de scripting son:PHP Ruby Python Bash Perl js

Scripting

Se utilizan para el desarrollo de todo lo necesario para el funcionamiento de la aplicación del lado del servidor. Se utilizan para la arquitectura de datos de la aplicación, la comunicación entre esta y las bases de datos, etc. Las personas con experiencia en matemáticas o ingeniería pueden estar más interesadas en el desarrollo back-end. Algunos ejemplos de lenguajes de programación back-end son: JavaScript PHP Java Python Ruby C#

Back-end

Estos en lugar de centrarse en la ejecución de instrucciones, se centran en la utilización de funciones. Una función es un conjunto de instrucciones reutilizable que realiza un trabajo específico y funciona de manera independiente, a la que se le pasan unos parámetros o valores de entrada, se ejecutan las instrucciones de la función con esos valores y devuelve un resultado. Algunos lenguajes de programación funcionales populares incluyen: Scala Erlang Haskell Elixir F#

Funcionales

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

• Secuencia:

Un lenguaje de programación de bajo nivel proporciona poca o ninguna abstracción de la arquitectura del sistema del ordenador, es decir, se escribe código que es estructuralmente parecido a las instrucciones del procesador. Mayormente, con este término se refiere al código máquina y/o al lenguaje ensamblador. Es por su poca abstracción (de ahí que se le denomine “de bajo nivel”) entre el lenguaje humano y el lenguaje máquina, que a los lenguajes de bajo nivel se les considera "cercanos al hardware". Por esta razón, los programas escritos en lenguajes de bajo nivel tienden a ser programas no portables, necesitando instalarse en el ordenador para configurarse y guardarse en los archivos.

Lenguajes de bajo nivel

Aes una manera conveniente de representar valores binarios. Así como el sistema de numeración decimal es un sistema de base diez y el binario es un sistema de base dos, el sistema hexadecimal es un sistema de base dieciséis. El sistema de numeración de base 16 utiliza los números del 0 al 9 y las letras de la A a la F. En la figura 1, se muestran los valores hexadecimales, binarios y decimales equivalentes. Existen 16 combinaciones únicas de cuatro bits, de 0000 a 1111. El sistema hexadecimal de16 dígitos es el sistema de numeración perfecto para utilizar, debido a que cuatro bits cualesquiera se pueden representar con un único valor hexadecimal.

Sistema Hexadecimal

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

• Iteración:

Un lenguaje de programación de alto nivel (HLL) es un lenguaje muy abstracto diseñado para simplificar la programación informática. El nivel de abstracción es tal que oculta los detalles del sistema informático, como la gestión de la memoria y el direccionamiento del hardware, lo que facilita la escritura y comprensión del código.La funcionalidad de un lenguaje de programación de alto nivel es fascinante. Funciona proporcionando una capa de abstracción que protege al programador de las complejidades del hardware del sistema. Seguidamente, este lenguaje se interpreta o compila en código máquina para que el ordenador lo entienda y ejecute. Un intérprete o compilador actúa como traductor entre el código de alto nivel de fácil comprensión para el ser humano y el código de bajo nivel de fácil comprensión para la máquina.

Lenguaje de programación de alto nivel

En este tipo de programación, el desarrollador en vez de codificar lo que tiene que hacer el programa, lo codifica para que sea capaz de tomar decisiones basándose en los fundamentos de la lógica matemática. Esto vuelve a este tipo de lenguajes muy útiles para propósitos de inteligencia artificial. Algunos ejemplos de lenguajes lógicos son: Prolog Absys Datalog Alma-0

Lógicos

En este sistema, que también se conoce como base 10, existen 10 elementos en el conjunto de unidades. Además el orden sucesivo de unidades aumenta de diez en diez. El sistema decimal es el más utilizado alrededor del mundo.Los elementos del conjunto están representados por los siguientes símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Sistema Decimal

El lenguaje máquina es el lenguaje de programación más básico que usan las computadoras y que se compone de una serie de unos y ceros (datos binarios). Es el código que las computadoras entienden y ejecutan directamente, y que se almacena en la memoria del sistema como una secuencia de señales eléctricas. El lenguaje máquina es específico de cada máquina o arquitectura, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. El lenguaje ensamblador es un lenguaje que utiliza símbolos y mnemotécnicos para representar datos y operaciones, lo que lo hace más legible para los humanos. Dependiendo de la máquina, es posible que sea necesario transformar el lenguaje ensamblador al lenguaje máquina para que funcione correctamente.

El lenguaje maquina

Actúa como un intermediario entre el código máquina y los lenguajes de alto nivel, ofreciendo una comunicación más directa con el hardware. Cada familia de procesadores posee su propio lenguaje ensamblador, vinculado estrechamente a su arquitectura específica.Un programa ensamblador convierte las instrucciones de lenguaje ensamblador a código máquina, facilitado por herramientas conocidas como ensambladores. Esta labor de traducción es necesaria para que se ejecuten componentes esenciales de un dispositivo, como los sistemas operativos y los controladores de dispositivo.

El lenguaje ensamblador

Estos consisten en una secuencia de instrucciones cuyo fin es lograr un resultado. Cada conjunto de instrucciones es un procedimiento y un programa codificado en uno de estos lenguajes consistirá en uno o más procedimientos. Ejemplos comunes de lenguajes de este tipo son:C y C++ Java Pascal BASIC

Procedurales o procedimentales

1.- Iniciación al análisis léxico: el código se descompone en unidades mínimas de significado, denominadas tokens o lexemas.2.- Progresión al análisis sintáctico: se comprueba si los tokens se ajustan a las reglas sintácticas del lenguaje de programación, lo que lleva a la construcción de un árbol de análisis sintáctico. 3.- Transición al análisis semántico: en esta fase se garantiza que los componentes utilizados en el código se ajustan a sus definiciones y son compatibles entre sí. 4.- Paso a la generación de código intermedio: se produce la transformación del código fuente en una representación intermedia, más comprensible para la máquina. 5.- Avance hacia la optimización: se produce la modificación del código intermedio para hacerlo más eficiente, sin alterar su funcionalidad original. 6.- Etapa final, la generación de código: se produce la conversión del código intermedio optimizado al lenguaje de destino, normalmente código máquina. A lo largo de estas etapas, se observa el uso de tablas de símbolos para realizar un seguimiento de identificadores como nombres de variables, nombres de funciones, etc., junto con la notificación de cualquier problema encontrado durante la compilación mediante gestores de errores. Todo este proceso garantiza la transformación del código fuente de alto nivel en código máquina de bajo nivel que pueda ejecutar un ordenador.

El sistema octal es un sistema de numeración posicional de base ocho (8); es decir, que consta de ocho dígitos, que son: 0, 1, 2, 3, 4, 5, 6 y 7. Por lo tanto, cada dígito de un número octal puede tener cualquier valor de 0 a 7. Los números octales son formados a partir de los números binarios.Esto es así porque su base es una potencia exacta de dos (2). Es decir, los números que pertenecen al sistema octal se forman cuando estos son agrupados en tres dígitos consecutivos, ordenados de derecha a izquierda, obteniendo de esa forma su valor decimal.

Sistema octal

Los programas codificados con estos lenguajes se basan en la utilización de objetos. Los objetos son entidades reutilizables que simulan algo de la vida real y que constan de datos y tareas a realizar con ellos, conocidos como atributos y métodos. Los objetos se pueden reutilizar dentro del mismo programa y en otros programas, lo que les confiere a este tipo de lenguajes una gran utilidad para el desarrollo de software complejo. Los principales lenguajes de programación orientados a objetos son:Java Python PHP C++ Ruby

Orientada a objetos

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

• Selección:

Se utilizan para el desarrollo de la interfaz de usuario de las aplicaciones web, es decir, de las pantallas de iteración del usuario con la aplicación. Es la parte de desarrollo que se encarga de la experiencia del usuario en la aplicación (texto, color, botones, imágenes y navegación). Son lenguajes que resultarán más fáciles de manejar por personas con experiencia en diseño gráfico. Los principales lenguajes de este tipo son: HTML CSS JavaScript React

Front-end

popularmente conocido porque es el sistema que utilizan los ordenadores y el resto de dispositivos electrónicos, es un sistema de base 2. Eso significa que es un sistema que solo utiliza dos cifras para representar todos sus números y en el caso del código binario estas dos cifras son el 0 y el 1. Los ordenadores utilizan el sistema binario porque solo trabajan con dos niveles de voltaje: apagado o sin presencia de carga eléctrica (0) y encendido o con presencia de carga eléctrica (1).

sistema binario