1) La programación es darle instrucciones a una computadora para que resuelva problemas de forma automática. Existen diferentes tipos de lenguajes de programación como los de alto nivel, bajos nivel y orientados a objetos o procedimientos.
2) Los algoritmos son estrategias para crear soluciones a problemas reales mediante pasos como definir el problema, diseñar el algoritmo, transformarlo en un programa y validarlo.
3) Aprender programación requiere desarrollar lógica para resolver problemas de forma algorítmica antes que con un len
2. 2
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Introducción a la asignatura.
La programación está en todas partes. desde los motores de búsqueda que nos ayudan a encontrar
información pasando por las cajas registradoras de los supermercados, hasta llegar a los software qu
se usan en el diseño de estructuras y mucho más; vivimos en un mundo construido con los resultados
de la programación de computadores.
Pero si la computadora pudiera leer nuestra mente y realizar de forma automática las acciones que
queremos que haga, el mundo sería otro (y no existirían los programadores.)
Afortunadamente esto sólo ocurre en la ciencia ficción. En la vida real las cosas suceden de una forma
más primitiva, la computadora sólo hace aquello que el programador le indica hacer; si el programador
es bueno, la computadora es útil; si no, la computadora es un gasto inútil.
Verdaderamente es importante que el programador sepa darle instrucciones a la computadora. El fin
último para aprender a programar es la programación, es decir darle órdenes a una herramienta llamada
computadora. Internamente estas manejan los datos en formato binario (0 y 1) y desconocen si lo
almacenado es importante o no, incluso desconocen el significado de lo que almacenan.
La finalidad básica de la programación es solucionar problemas mediante el ordenador. Al igual que
cualquier disciplina debe ser progresivo su aprendizaje, Primero hay que aprender a resolver problemas
sencillos y más adelante intentar resolver problemas complejos que requieran más herramientas.
Por ello es importante comprender los conceptos paso por paso Y luego seguir adelante emprendiendo
el desarrollo de programas para convertirse en un excelente profesional, porque la programación se
considera una disciplina que se fundamenta en una teoría y una propuesta metodológica y en un
conjunto de técnicas de diseño; las cuales han surgido de la investigación y experiencia a lo largo de
los años para que la programación sea una tarea eficaz (que brinde los resultados esperados) y
eficiente (en un tiempo de desarrollo razonable).
Evidentemente en el campo laboral, la eficacia y eficiencia son valores muy apreciados en las empresas
y por este motivo es necesario aprender a programar con cierto grado de destreza, construyendo
programas correctos en un tiempo razonable. Para conseguirlo necesitaremos practicar mucho.
3. 3
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Unidad 1. Conceptos básicos de la
programación.
Tema 1. Introducción a la programación.
Los lenguajes de los humanos y los lenguajes de la máquina son muy diferentes,
ya que las característica de las personas y de las máquinas son muy diferentes.
Una computadora es una máquina y como cualquiera debe encenderse y luego
conducirse o controlarse para hacer la tarea que se pretende realizar. En un
automóvil el control es proporcionado por el conductor quien se sienta en su
interior y lo dirige. En una computadora, el conductor es un conjunto de
instrucciones llamado programa de computadora que opera la computadora con
el fin de producir un resultado específico.
Los lenguajes de programación sirven para escribir programas que permiten la
comunicación entre el usuario y la máquina, los programadores escriben
instrucciones en diversos lenguajes de programación, algunos de estos
lenguajes los comprende directamente la computadora, mientras que otros
requieren pasos intermedios de traducción. en la actualidad se utilizan cientos de
lenguajes de computación, los cuales pueden dividirse en:
1. Lenguajes de máquina.
2. Lenguajes ensambladores.
3. Lenguajes de alto nivel.
En su nivel más fundamental los únicos programas que pueden usarse en
realidad para operar una computadora, son los programas en lenguaje de
máquina, los cuales también se conocen como programas ejecutables o
ejecutables que consisten en una secuencia de instrucciones compuestas por
números binarios:
4. 4
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
● 11000000 00000000001 000000000010
● 11110000 00000000010 000000000011
Los lenguajes máquina están escritos en lenguaje directamente inteligibles por la
computadora ya que sus instrucciones son cadenas binarias (Cadenas por series
de caracteres - dígitos - 0 y 1 buenos días) que especifican una operación y las
posición (dirección) de memoria implicada en la operación. El código máquina es
el conocido código binario.
Los bits son los ceros y unos manejados internamente por la computadora. Son
la unidad básica de almacenamiento y comunicación de información dentro de la
computadora, y son procesados con suma eficiencia por el procesador de la
computadora. Una operación tan simple como una suma o una comparación
puede consumir grandes recursos de procesamiento, de ahí que los
procesadores actuales deben realizar millones de operaciones por segundo.
Las instrucciones en lenguaje máquina, constan de dos partes una instrucción y
una dirección. La instrucción, - opcode, código de operación -, Es el conjunto de
bits en el extremo izquierdo de la instrucción e indica a la computadora la
operación a realizar, tal como sumar, restar, multiplicar, etc. mientras que los bits
en el extremo derecho especifican la dirección de memoria de los datos que se
usarán.
Pero como cada clase de computadora como IBM, Apple, Hewlet Packard tenían
su propio lenguaje de máquina particular era muy tedioso y tardado escribir
programas en lenguaje máquina.
La programación en lenguaje máquina era demasiado lenta y tediosa para la
mayoría de los programadores. en lugar de utilizar cadenas de números, los
programadores comenzaron a utilizar abreviaturas del inglés para representar
operaciones básicas de la computadora y formaron las bases de los lenguajes
ensambladores. estos programas traductores se desarrollaron para convertir
programas del lenguaje ensamblador al lenguaje máquina.
5. 5
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Así fue como surgieron los lenguajes de programación ensambladores que
usaban símbolos en forma de palabras en vez de códigos binarios y etiquetas
para direcciones de memoria; pero luego estos programas en lenguaje
ensamblador deben traducirse a un programa de lenguaje de máquina antes de
poderse ejecutar en las computadoras. El lenguaje de bajo nivel por excelencia
es el ensamblador (assembly language)
Tanto los lenguajes de máquina como los ensambladores se clasifican como
lenguajes de bajo nivel, y están limitados por qué sólo pueden usarse con un
tipo de computadora específica para la cual fueron escritos. Por contraste surgen
los lenguajes de alto nivel y cuyas instrucciones parecen lenguajes escritos como
Inglés y pueden ejecutarse en una variedad de tipos de computadoras. Visual
Basic, C, C++, Java, etc. son ejemplos de lenguajes de alto nivel y sus
instrucciones son parecidas a:
● resultado = (primero + segundo) * tercero;
Los lenguajes de alto nivel son los más utilizados por los programadores. Están
diseñados para que las personas escriban y entiendan los programas de un modo
mucho más fácil que los lenguajes máquina y ensambladores. Otra razón es que
un programa escrito en lenguaje de alto nivel es independiente de la máquina es
decir las instrucciones del programa de la computadora no dependen del
hardware o de la computadora en particular. Por tanto, los programas escritos en
lenguaje de alto nivel son portables o transportables lo que significa poder
ejecutarse con poca o ninguna modificación en diferentes tipos de computadora.
Ventajas de los lenguajes de alto nivel.
1. La formación de los programadores es relativamente más corta en tiempo.
2. La escrituras de los programas se basa en reglas sintácticas similares a los
lenguajes humanos.
3. Las modificaciones y puesta a punto son más fáciles.
4. Se reduce el costo de los programas.
5. Facilidad en la transportación.
6. 6
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Inconvenientes de los lenguajes de alto nivel:
1. Mayor tiempo de puesta a punto al necesitarse diferentes traducciones del
programa fuente para conseguir el programa definitivo.
2. No se aprovechan los recursos internos de la máquina, que se explotan
mejor en los lenguajes máquina y ensambladores.
3. Aumento del uso de memoria.
4. El tiempo de ejecución de los programas es mucho mayor.
Los programas escritos en un lenguaje de computadora de alto o bajo nivel se
conocen como programas fuentes y código fuente. Una vez escrito un programa
en lenguaje de alto nivel también debe traducirse como un programa
ensamblador de bajo nivel a lenguaje máquina de la computadora en que se
ejecuta esta traducción puede lograrse de forma interpretada o de forma
compilada.
Cada declaración en un programa fuente de alto nivel es traducida de manera
individual y ejecutada inmediatamente después de la traducción del lenguaje de
programación usado, esto se llama lenguaje interpretado y el programa que hace
la traducción se llama intérprete.
Intérprete es un traductor que toma un programa fuente, lo traduce y a
continuación lo ejecuta. Cuando todas las instrucciones en un programa fuente
de alto nivel son producidas como una unidad completa antes que cualquier
declaración sea ejecutada, el lenguaje de programación usado se llama
compilado. En este caso el programa que hace la traducción se llama compilador.
Pueden existir tanto versiones compiladas como interpretadas de un lenguaje,
aunque predomina una. C++ es predominantemente compilado.
El programa fuente debe ser introducido usando un programa editor, el cual es
un procesador de palabras que forma parte del ambiente de desarrollo
proporcionado por el compilador. La introducción del código sólo puede
comenzar después que una aplicación se ha analizado y comprendido en forma
minuciosa y el diseño del programa ha sido planeado con cuidado.
7. 7
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Pasar un programa fuente a un programa en lenguaje máquina comienza con el
compilador, la salida producida por el compilador se llama programa objeto, el
cual es una versión en lenguaje máquina del código fuente. En casi todos los
casos su código fuente usará código preprogramado existente con códigos que
ha escrito con anterioridad o código proporcionado por el compilador, éste podría
incluir código matemático para encontrar una raíz cuadrada o código que se está
utilizando de otra aplicación.
Fases de la compilación:
1. Escritura del programa fuente con un editor (programa que permite a una
computadora actuar de modo similar a una máquina de escribir) y guardarlo
en un dispositivo de almacenamiento.
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador del lenguaje.
4. Verificar y corregir errores de compilación.
5. Obtener el programa objeto.
6. Obtener el programa ejecutable.
7. Ejecutar el programa y, si no existen errores, obtener la salida del
programa.
Además de clasificar los lenguajes de programación como de alto nivel y bajo
nivel, también se clasifican por su orientación a procedimientos u objetos. En un
lenguaje orientado procedimientos, las instrucciones disponible se usan para
crear unidades independientes, conocidas como procedimientos. El propósito de
un procedimiento es aceptar datos como entrada y transformarlos de alguna
manera para producir resultados específicos como una salida. Hasta la década
de los años noventa, la mayor parte de los lenguajes de programación de alto
nivel eran orientados a procedimientos.
En un lenguaje de procedimientos un programa se construye a partir de conjuntos
de instrucciones, con cada conjunto nombrado como un procedimiento. Cada
procedimiento mueve los datos un paso más cerca de la salida final deseada.
8. 8
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Los programas estructurados se crean usando un conjunto de estructura bien
definidas, organizadas en secciones de programación individuales, Cada una de
las cuales ejecuta una tarea específica que puede probarse y modificarse sin
perturbar otras secciones del programa.
Otro enfoque es la orientación a objetos, la motivación para los lenguajes
orientados a objetos fue el desarrollo de pantallas gráficas y soporte para
interfaces gráficas de usuario (GUI), Capaces de desplegar múltiples ventanas
conteniendo formato gráfico y texto. En tal ambiente cada ventana en la pantalla
puede considerarse un objeto con características asociadas como color posición
y tamaño. Usando enfoque orientado a objetos, un programa debe definir
primero los objetos que manipulara incluyendo una descripción de las
características generales de los objetos y unidades específicas para manipularlos
cómo cambiar el tamaño y la posición y transferir los datos entre objetos.
Los lenguajes orientados a objetos también deben soportar la reutilización de
código existente, lo cual elimina la necesidad de rivalidad y reexaminar código
nuevo o modificado.
Actividades:
1. Define los siguientes términos:
1.1. Programa de computadora.
1.2. Programación.
1.3. Lenguaje de programación.
1.4. Lenguaje de alto nivel.
1.5. Lenguaje de bajo nivel.
1.6. Lenguaje máquina.
1.7. Lenguaje ensamblador.
1.8. Lenguaje orientado a
procedimientos.
1.9. Lenguaje orientado a
objetos.
1.10. Programa fuente.
1.11. Compilador.
1.12. Intérprete.
2. Explique:
2.1. La diferencia entre lenguaje
de alto y bajo nivel.
2.2. La diferencia entre lenguaje
orientado a objetos y a
procedimientos.
2.3. Semejanzas y diferencias
entre ensambladores,
intérpretes y compiladores.
9. 1
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Algoritmos.
También, en esta asignatura se pretenden desarrollar las estrategias para crear algoritmos que se
aplicarán en la resolución de problemas reales presentes a menudo en
aplicaciones para computadora. Casi todos los algoritmos son de utilidad práctica
y tienen un buen comportamiento y desempeño según su análisis por medio del
cual se hayan desarrollado.
Lo fundamental al iniciar el aprendizaje de la programación de computadoras, es
desarrollar la lógica necesaria para solucionar problemas en forma algorítmica,
independientemente de algún lenguaje de programación; esto es, aprender a
diseñar algoritmos usando un pseudolenguaje, y no hacerlo directamente con un
lenguaje.
Hoy día las personas sienten la necesidad de hacer uso de computadoras para
la solución de problemas y, debido a ésto, aprenden lenguajes y técnicas de
programación. Por eso para llegar a la solución de un problema se deben dar los
siguientes pasos:
1. Definición o análisis del problema.
2. Diseño del algoritmo.
3. Transformación del algoritmo en un programa.
4. Ejecución y validación del programa.
Lo que se pretende es lograr un diálogo permanente entre el usuario y la
máquina. Algoritmo viene de
Mohammed al-kowarizmi, un matemático persa que introdujo este término al
mundo, su apellido fue traducido al latín como algorismus, el que posteriormente
se conoció como algoritmo.
Un algoritmo es un método para resolver un problema. Debe presentarse como
una secuencia ordenada de instrucciones que siempre se ejecutan en tiempo
finito y con una cantidad de esfuerzo también finito. Los algoritmos tienen un
inicio y un final, son únicos y deben ser fácilmente identificables.
10. 2
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Decir que un problema puede resolverse algorítmicamente implica, que es
posible escribir un programa de computadora que producirá la respuesta correcta
para cualquier entrada si se ejecuta durante un tiempo suficiente y se le da el
espacio de almacenamiento necesario.
Antiguamente se definía la Computadora como: “Una máquina provista de
dispositivos electrónicos, los que eran capaces de ejecutar operaciones
repetitivas de gran complejidad y a grandes velocidades”. Hoy, la idea ha
cambiado y se define como: “procesador de datos y sistemas de procesamiento
de la información”
La definición general de sistema se da como “conjunto de componentes
conectados e interactivos, con un propósito o fin único”, mientras que sistemas
de procesamiento de información son sistemas que transforman datos brutos en
información ordenada, con un significado lógico y útil.
Por la década de 1930 antes de la llegada de las computadoras, los matemático
trabajaban para Romanizar y estudiar el concepto de algoritmo como un conjunto
especificado de instrucciones sencillas a resolver para calcular una función. se
idearon e investigaron varios modelos de cómputos formales en este campo
llamado teoría de la computabilidad, describiendo y caracterizando los problemas
que podían resolverse algorítmicamente y los que no podían resolverse de esta
manera.
Aunque según la teoría de la computabilidad obviamente puede conocerse si los
problemas se resuelven con computadora no basta para decirnos si resulta
práctico hacerlo o no. Por ejemplo en un programa para jugar ajedrez las formas
de acomodar las piezas en el tablero son finitas y bajo ciertas reglas que una
partida debe terminar después de un número finito de movimientos. Entonces
dado que la computadora conocer resultado final de cada movimiento podrá
escoger la mejor opción según estimaciones y números de acomodo distintos de
las piezas en el tablero a medida que se va desarrollando el juego examinando
todas y cada una de las posibles combinaciones a ejecutar.
11. 3
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Al describir un algoritmo para diversos problemas veremos que hay varias
técnicas de diseño que a menudo resultan útiles.
Antes que se escriba un programa, el programador debe comprender con
claridad qué datos se usarán, el resultado deseado y el procedimiento a utilizar
para producir este resultado. El procedimiento de solución se conoce como
algoritmo, el cual se define como una secuencia de paso a paso de instrucciones
que deben realizarse y describe cómo se procesarán los datos para producir las
salidas desearás. Un algoritmo responde la pregunta ¿qué método se usará para
resolver este problema?
Sólo después de comprender con claridad los datos que se usarán y seleccionar
los pasos específicos requeridos para producir el resultado deseado, podremos
codificar el programa. Es decir la programación es la traducción de un algoritmo
seleccionado a un lenguaje que pueda usar la computadora.
Los diferentes pasos o acciones de un algoritmo se expresan en los programas
como instrucciones, sentencias o proposiciones (normalmente, el término
instrucción se suele referir a los lenguajes de máquina y bajo nivel, reservando
la sentencia o proposición para los lenguajes de alto nivel.) La elaboración de un
programa requerirá conocer el juego o repertorio de instrucciones del lenguaje,
adelantaremos los tipos fundamentales de instrucciones que una computadora
es capaz de manipular y ejecutar. Las instrucciones básicas y comunes a todos
los lenguajes de programación se pueden resumir en cuatro grupos:
1. Instrucciones de entrada o salida. instrucciones de transferencia de información y datos
entre dispositivos periféricos ( teclado, impresora, unidad de disco, entre otros) y la
memoria central.
2. Instrucciones aritmético-lógica. instrucciones que ejecutan operaciones aritméticas
(suma, resta, multiplicación, división, potencia) o lógica (operaciones and, or, not, entre
otras.)
3. Instrucciones selectivas. Instrucciones que permiten la selección de tareas alternativas
en función de los resultados de diferentes expresiones condicionales.
4. Instrucciones repetitivas. instrucciones que permiten la repetición de secuencias de
instrucciones un número determinado de veces.
12. 4
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Pasos a seguir para la solución de problemas:
1. Diseño del algoritmo que describe la secuencia ordenada de pasos que
conducen a la solución de un problema dado (Análisis del problema y
desarrollo del programa.)
2. Expresar el algoritmo como un programa en un lenguaje de programación
adecuado (fase de codificación.)
3. Ejecución y validación del programa por la computadora.
Sin algoritmo no podrá existir un programa, por eso es necesario diseñar el
algoritmo previamente, para su realización. En cada problema el algoritmo se
puede expresar como un lenguaje diferente de programación y ejecutarse en una
computadora distinta; sin embargo el algoritmo será siempre el mismo.
Los algoritmos son muy importantes, ya que de éstos va a depender el buen
funcionamiento de un programa. Los lenguajes de programación sólo expresan
lo que un algoritmo quiere decir y las computadoras llevan a cabo la ejecución.
Características de los algoritmos:
1. Debe ser preciso indicando la realización de cada paso ordenadamente.
2. Debe estar bien definido. Si se sigue un algoritmo más de una vez, los
resultados deben ser los mismos.
3. Debe tener un fin; es decir deberá ser finito. Si se sigue un algoritmo, éste
debe terminar en algún momento, o sea debe tener un número determinado
de pasos.
13. 5
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Técnicas para representar un algoritmo.
Las más conocidas para el desarrollo de un algoritmo son:
1. Pseudocódigo.
2. Diagrama de flujo o flujograma.
● Pseudocódigo: Es la representación de un algorítmo en una secuencia
lógica de actividades, a que llevarán en conjunto a la solución de un
problema.
● Diagrama de flujo: Son símbolos gráficos que representan a un algoritmo.
Estos símbolos están estandarizados, teniendo cada uno un significado
universal.
● Diagrama N-S (Nassi Schneiderman.)
Los lenguajes de programación.
Para la realización de un proceso, el procesador deberá recibir el algoritmo
adecuado, siendo éste capaz de interpretarlo.
1. Entender las instrucciones que cada paso expresa.
2. Ejecutar las operaciones correspondientes.
El algoritmo se expresará por medio de un formato que se denomina programa.
El programa se desarrolla en un lenguaje de programación y las operaciones que
llevarán a expresar un algoritmo en forma de programa se llama programación.
Existen importantes razones para el estudio de las Técnicas de Programación, y
éstas son:
1. El desarrollo de algoritmos eficientes es una habilidad que se trata de mejorar siempre.
2. Se busca la mejora en el uso del lenguaje de programación disponible.
3. Enriquecer el vocabulario con construcciones útiles sobre programación.
4. Tener la capacidad para elegir el mejor lenguaje de programación.
5. Facilitar el aprendizaje de cualquier otro lenguaje.
6. Facilitar el diseño de un lenguaje nuevo.
14. 6
INTRODUCCIÓN A LA PROGRAMACIÓN: - AECT
Como ya se mencionó, actualmente existen tres tipos de lenguaje utilizados:
1. Lenguaje de máquina.
2. Lenguaje de bajo nivel.
3. Lenguaje de alto nivel.
Variables y tipos de datos primitivos.
El motivo principal de la computadora es, primordialmente, el manejo de los datos
o de la información ingresada para luego de procesarla arrojar los resultados. La
computadora opera con objetos, los cuales son descritos por expresiones
denominados datos. Son varios los tipos de datos con los que la computadora
puede trabajar.
Existen dos grupos de tipos de datos: Los que no tienen estructura, llamados
Simples, y los que son estructurados, llamados Compuestos. La variedad con
respecto a los tipos de datos son representados de distintas formas en la
computadora. A nivel de máquina un dato es una secuencia o conjunto de bits
(dígitos 0 ó 1).
Dato: Cuando se habla de dato, o se da la expresión general de dato, el cual
describe los objetos con los que opera una computadora. Los algoritmos y
programas correspondientes operan sobre datos. Los datos de entrada se
transforman gracias al programa y se traducen a lenguaje máquina, los mismos
que son ejecutados por la computadora. Los tipos de datos que existen son dos:
Simples y Compuestos.
1. Datos numéricos.
1.1. Tipo de dato numérico entero (integer.)
1.2. Tipo de dato numérico real (real.)
2. Datos lógicos.
3. Datos de tipo carácter.
4. Datos de tipo cadena.
5. Constantes y variables.
6. Expresiones.