Está en la página 1de 12

Módulo 2.

Conceptos básicos de programación


Unidad 1. Representación gráfica de procesos

La ingeniería del software se encarga del estudio de todo el proceso que envuelve la realización de
las aplicaciones informáticas. Dentro de ese proceso, se encuentra la programación.

La programación es una de las etapas más importantes del ciclo de vida de un proyecto y requiere
un método de trabajo. Es el instrumento que permite la ingesta de datos o la ejecución de las
tareas automatizadas de un sistema informático. Las herramientas utilizadas para programar son
los lenguajes de programación, a través de los cuales se codifican los programas o aplicaciones.

Metodología de la programación: conjunto de normas, métodos y anotaciones que nos indican la


forma de programar. Es el enfoque teórico-práctico que hace posible encontrar soluciones a
problemas complejos, partiendo del análisis y apoyándose en la planificación. Este planteamiento
hace posible maximizar la eficiencia del desarrollo del software al ganar en visibilidad y control.

Lenguaje de programación: conjunto de reglas semánticas y sintácticas que se usan para la


codificación de instrucciones de un programa o algoritmo de programación.

Entorno de programación o entorno de desarrollo: Existen aplicaciones informáticas que facilitan


a los programadores el desarrollo de software, son denominadas “entornos de desarrollo
integrado” (IDE, por sus siglas en inglés). Consisten en editores de código fuente, herramientas de
construcción automáticas y depuradores de código.

Tema 1. Origen y características


Inicialmente, el proceso de programación se realizaba en lenguajes de más bajo nivel. Los datos
estaban codificados en código binario y no era necesaria la traducción. Entre las características del
lenguaje máquina, cabe destacar las siguientes:

 Es dependiente de los recursos de la computadora.


 El programador se encara de verificar que no existan errores sintácticos, pues no existe un
compilador que los detecte.
 El programador trabaja directamente con direcciones de memora.

El lenguaje ensamblador surgió como evolución natural, donde a cada secuencia de ceros y unos
se le asocia un nombre nemotécnico. Estos nombres necesitan traducción, que se realiza mediante
un programa que se llama como el lenguaje: ensamblador. Aunque fue un gran avance, todavía es
necesario conocer cómo está constituida y qué recursos tiene la computadora.

Más tarde, se fueron asociando nombres a conjuntos de instrucciones que realizaban una tarea
compleja determinada y programaban de manera independiente la computadora donde se iba a
ejecutar el código. Nacen los lenguajes de alto nivel y se encuentran más cercanos a la forma de
pensar de los humanos que al lenguaje que entiende la máquina.
La programación fue evolucionando gracias a cuatro causas o motores que la impulsan:

Abstracción: es el proceso mental por el que el ser humano extrae las características esenciales de
algo e ignora los detalles superfluos. En programación, el término se refiere a que el énfasis está
puesto en “¿Qué se hace=”, más que en “¿Cómo se hace?”. Esto es esencial para modelar el
mundo real. Al principio, las personas hacían programas pensando como una computadora sobre
la cual corrían. En la actualidad se solucionan los problemas sin conocer la máquina donde va a ser
ejecutado el programa.

Encapsulación: es el principio sobre el cual enmascaramos funcionalidad en programación; es


esencial para reutilizar un código. Se ocultan los detalles de cómo está hecho un programa, pero se
conoce el modo de funcionamiento, cuáles son sus entradas y qué salida produce, de forma tal que
se pueda reutilizar en cualquier otro programa.

Modularidad: es el proceso de descomposición de un sistema en un conjunto de elementos poco


acoplados (independiente) y cohesivos (con significado propio). Es esencial para abordar la
resolución de problemas extensos o complicados de un modo más simple y organizado.

Jerarquía: es el proceso de estructuración por el que se organiza un conjunto de elementos en


distintos niveles, atendiendo a determinados criterios (responsabilidad, composición, etc.) Es decir,
la jerarquización implica organizar programas de acuerdo con rasgos, clases o categorías.

A medida que se fueron añadiendo nuevas características al proceso y a las herramientas, fueron
surgiendo múltiples estilos de programación.

Características de la programación:

Es importante tener en cuenta algunas consideraciones para que la programación sea de buena
calidad y los resultados sean o se acerquen lo más posible a los esperados en tiempo y forma. Para
esto, se pueden enunciar las siguientes características que se deben tener en cuenta durante la
programación de aplicaciones:

 Eficacia: el programa ejecuta correctamente las tareas definidas por su especificación y


satisface los objetivos de los usuarios. Un programa eficaz regresa el resultado correcto del
cálculo que hace o lleva a cabo la tarea requerida de la forma esperada.
 Eficiencia: el programa hace un uso adecuado y no malgasta los recursos de la
computadora, como la memoria y el tiempo de procesamiento. Un programa eficiente,
además de eficaz, completará la tarea con mayor rapidez respecto a otro programa que no
lo es.
 Integridad o completitud: un programa es completo solo si ejecuta todas las operaciones
que se codifican en los algoritmos al procesar un conjunto de datos. Es decir, la capacidad
del sistema para realizar todas las operaciones que el usuario podría requerir.
 Claridad: es muy importante que el programa sea lo más claro y legible posible, para
facilitar tanto su desarrollo como su posterior mantenimiento. Al elaborar un programa, se
debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo de
programación. De esta forma, se ve facilitado el trabajo del programador, tanto en la fase
de creación como en las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc.
 Portabilidad: un programa es portable cuando tiene la capacidad de poder ejecutarse en
una plataforma diferente a aquella en la que se desarrolló. Es una característica muy
deseable para un programa, ya que permite, por ejemplo, que un programa que se ha
elaborado para el sistema GNU/Linux pueda ejecutarse también en la familia de sistemas
operativos Windows.

Tema 2. Conceptos fundamentales

La generación de un programa o un software en particular necesita un conjunto de reglas,


actividades y procedimientos para lograr realizar algoritmos y cumplir su objetivo. Esta
metodología, llamada ciclo de desarrollo del software, consta de una serie de pasos lógicos
secuenciales, denominados fases.

1. Definición de necesidades o identificación del problema e investigación preliminar.


2. Análisis, interpretación del problema y determinación de requerimientos.
3. Diseño de la solución y diseño del sistema.
4. Codificación y desarrollo del sistema.
5. Prueba, depuración y documentación.
6. Implementación, validación e implantación.
7. Mantenimiento y evolución

Definición de las necesidades o identificación del problema

Conocer el problema e identificar las necesidades es la primera consideración. Para ello, debemos
saber quién es el usuario final, cómo opera con el sistema, qué resultados espera, etc. Una vez
identificadas las necesidades, se deberá evaluar la factibilidad de cumplimentarlas.

Análisis e interpretación del problema.

Es la comprensión completa del problema con sus detalles. En este punto empezamos a definir el
alcance de la solución, es decir, qué se va a desarrollar y qué no. Nos involucramos con el problema
y buscamos todas las fuentes de información necesarias para solucionarlo. Como resultado de este
análisis exhaustivo, debemos realizar la determinación de las entradas y salidas del proceso de
software. Además, debemos delimitar cómo funcionará el programa, qué datos se necesitan y qué
salida se deberá generar. En definitiva, los requisitos para lograr una solución eficaz y eficiente.

Diseño de la solución

Es momento de comenzar a diseñar y modelar los algoritmos. Estos indican las instrucciones para
que la máquina ejecute. La información dada al algoritmo constituye su entrada, y la información
producida por el algoritmo constituye su salida.

Los problemas complejos se pueden resolver más eficazmente cuando se dividen en subproblemas
más fáciles de solucionar que el original.

Existen muchas formas de plasmar la solución analizada. Dos formas comunes de diagramar la
solución a un problema son dibujar un diagrama de flujo y escribir un pseudocódigo. En algunos
casos, para entendimiento de la persona que solicita la resolución del problema, es necesario
emplear ambas metodologías.

Codificación

Este paso consiste en empezar a escribir el código del programa, es decir, expresar la solución en
un lenguaje de programación; traducir la lógica del resultado de la fase anterior a un lenguaje de
programación.

Prueba y depuración

La depuración significa detectar, localizar y corregir errores, generalmente ejecutando el programa.


En muchas ocasiones, esta fase se realiza de manera reiterada hasta que no se encuentren errores
en el código programado. La prueba se puede realizar de forma manual o automática. Para poder
probar los programas, utilizamos datos y flujos de prueba diseñados previamente (Casos de
prueba). Estos casos de prueba se diseñan conociendo el problema que se tiene que solucionar, se
planifican los datos y los flujos cuidadosamente para asegurarse de que se chequea cada parte del
programa.

Documentación

Es un proceso continuo y necesario. Es una descripción detallada por escrito del ciclo de
programación y hechos específicos sobre el programa. Los materiales típicos de documentación del
programa incluyen el origen y la naturaleza del problema, una breve descripción narrativa del
programa, herramientas lógicas – como diagramas de flujo y pseudocódigos-, descripciones de
registros de datos, listas de programas y resultados de pruebas.

Los comentarios en el programa en sí también se consideran una parte esencial en la


documentación.

Se necesita documentación para complementar la memoria humana y para ayudarla a organizar la


planificación del programa. Además, la documentación es importante para comunicarse con otras
personas interesadas en el programa, especialmente, otros programadores que pueden ser parte
de un equipo de programación.

Implementación

El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un


alto grado de confianza para resolver los problemas que dieron origen a su creación. Los
programas codificados se implantan en un ambiente productivo para su uso masivo; en muchos
casos esta etapa se conoce como la liberación del producto.

Mantenimiento

Es la fase de mayor duración, permite adaptar el desarrollo a cambio de necesidades del negocio o
tecnologías. Siempre es preferible realizar un mantenimiento preventivo, por lo cual se debe estar
atento a los cambios de necesidades.
Fases de un proyecto de software.

Definición del
Implementación Mantenimiento
problema

Análisis del Prueba y


problema depuración

Diseño de la
Codificación
solución

Algunas características que deben cumplir los programas con respecto a la manera que están
programados son las siguientes:

 Usabilidad: el programa es fácil de usar si las personas a las que está destinado pueden
comprender su manejo de manera intuitiva, realizar sus tareas de forma cómoda y sin
esfuerzos innecesarios.
 Mantenibilidad: el código fuente del programa permite localizar y corregir defectos
rápidamente, así como también permite hacer cambios que resultan más fáciles para
adaptarlo a las necesidades cambiantes de los usuarios.
 Fiabilidad: un programa es fiable si realiza sus tareas cuando es necesario, con la precisión
requerida y nos brinda la salida esperada.

Tema 3. Diagrama de flujos y pseudocódigo


El diagrama de flujos es un lenguaje de símbolos creado para poder representar gráficamente los
procesos, en nuestro caso, algoritmos.

Otra manera de representar estos algoritmos o procesos es mediante el pseudocódigo, que es un


conjunto de sentencias que no corresponden a ningún lenguaje de programación específico, pero
que denotan la lógica que dicho algoritmo debe seguir.

Diagrama de flujo (o flujograma)

Un diagrama de flujo expresa, de manera gráfica, los pasos que seguir y las decisiones que tomar
de un algoritmo o proceso específico.

Los diagramas de flujo utilizan símbolos con significados definidos que modelan los pasos del
algoritmo y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y
de fin del proceso.

Elementos de un diagrama de flujo

1. Flechas o líneas de curso: las flechas indican la dirección por la cual avanza el flujo.
2. Círculos u óvalos: los círculos especifican el inicio o el final del diagrama de flujo. Siempre
se tendrá un solo elemento de inicio, pero se puede tener uno o más elementos finales.

Los círculos se suelen utilizar también como conectores entre diferentes diagramas de flujo.
Cuando estos se vuelven complejos, es conveniente que se dividan en diagramas más pequeños y,
por lo tanto, más legibles.

3. Rombos: indican una pregunta, la cual puede tener como respuesta <<Si>> o <<No>>, o
<<Verdadero>> o <<Falso>>. Un rombo siempre tiene un camino para cada respuesta. Se
utiliza cuando se debe tomar una decisión.
4. Rectángulos o procesos: los rectángulos, también denominados procesos, especifican una
actividad o un conjunto de actividades. Pueden, también, verse como una acción que se
lleva a cabo. Deben indicar un verbo o frase verbal.

Pseudocódigo

Es una representación en lenguaje natural con el objetivo de ser más explicativo y fácil de leer que
el código de los lenguajes de programación.

No se compilan ni interpretan por ninguna computadora; su propósito es representar un algoritmo


o un proceso mediante una sintaxis similar a la presente en los lenguajes de programación.

Es muy fácil de leer y no se necesitan conocimientos de programación.

Los pseudocódigos pueden tener diferentes estilos y parecerse a ciertos lenguajes. Si bien
mantienen su característica principal de estar expresados en lenguaje natural, pueden acercarse un
poco a lenguajes en los cuales, seguramente, sean codificados.

El pseudocódigo es una herramienta muy útil no solo para enseñar, sino también para compartir
un algoritmo y hacerlo más fácil de entender. En conjunto con los diagramas de flujo, ayuda mucho
a la comunicación de cómo debe ejecutarse la lógica de determinados procesos.

En resumen, las ventajas de los diagramas de flujo y pseudocódigos son:

 Brindan una representación natural, visual y gráfica


 El algoritmo o proceso se entiende más fácilmente que leyendo un texto
 Ayudan a mejorar el algoritmo o proceso antes de desarrollarlo
 Facilitan el diseño de nuevos procesos o algoritmos.
Tema 4. Uso de variables y tipos de datos

Las variables son un elemento fundamental de la programación, dado que siempre vamos a
necesitar almacenar información en la memoria de la computadora. Esta información es temporal.
Se debe tener en cuenta que cuando el programa finaliza, también lo hace la existencia de la
variable.

Casi todos los datos que se manejan en nuestro programa se almacenan en variables. Se debe
concebir “variable” como un contenedor de información.

Las variables siempre tienen un tipo de dato asociado, que establece cómo el lenguaje tiene que
tratar el dato contenido dentro de esa variable.

Tipos de datos

 Integer: este tipo de dato se utiliza cuando queremos almacenar un número entero.
 Float: el tipo float permie la manipulación de números decimales.
 Double: permite manipular números decimales, al igual que el float, pero con el doble de
precisión. El double tiene 15 digitos decimales de precisión, mientras que el float tiene 7.
 Character: representa un único carácter.
 String: representa cadenas de carácteres.
 Boolean: solamente puede ser true(verdadero) o false(falso).

Según el tipo de dato, las variables serán manejadas y procesadas dentro del programa de
diferentes modos.

Constantes

Algunos datos necesarios tendrán información almacenada que no cambiará a lo largo del
programa. En estos casos, es conveniente declarar ese dato como una constante en lugar de una
variable.

Una constante es un valor que no puede ser alterado o modificado durante la ejecución del
programa, únicamente puede ser leído.
Unidad 2. Estructuras de control
Para crear un programa necesitamos ser capaces de controlar las acciones del programa que
estamos creando y codificar esas instrucciones o evaluaciones en nuestro programa.

Tema 1. Condicionales

Los condicionales son instrucciones que evalúan la veracidad de una sentencia. Evalúan una
expresión booleana y, según su valor, deciden si ejecutan o no una determinada sección de código.
A estas secciones se las llama bloques de código.

La sentencia IF

Establece la evaluación de una variable u operación, cuyo valor o resultado es de tipo booleano, es
decir, verdadero o falso. En el caso de que sea verdadero, ejecuta una sección de código. Si, por el
contrario, es falso, no lo ejecuta y pasa a la siguiente sección de código.

La sentencia Else

Puede considerarse una extensión de la sentencia if y significa “de lo contrario”. Permite la


ejecución de un conjunto de sentencias en caso de que la expresión booleana del if sea falsa, esta
sección se llama bloque else.

Solo puede utilizarse si una sentencia if ha sido declarada anteriormente.

La combinación else-if.

Se utiliza para evaluar más de dos condiciones. EJEEEEMPLO

Int num1;

Int num2;

printf(“ingrese num1: “);

cin>> num1;

printf(“ingrese num2: “);

cin>>num2;

if (num1 == num2)

prinf(“Numeros iguales”);

else if(nu1 > num2)

printf(“Numero 1 mayor que numero2”);

else
printf(“Numero 2 mayor a numero 1”);

return 0;

Anidamiento de sentencias

El anidamiento es la práctica de incorporar bloques de código dentro de otros. Cada lenguaje tiene
su sintaxis para identificar un bloque. En C y C++ se identifican encerrando las sentencias que
conforman el bloque entre llaves.

Dentro de un bloque if o else, podemos anidar otros bloques if o else.

La sentencia Switch

Con switch, podemos evaluar el valor de una variable o el resultado de una expresión de cualquier
tipo y, de acuerdo con este, ejecutar cierta sección del código. Es similar a else-if, ya que es útil
cuando queremos comparar el valor de una variable o resultado con más de una opción.

Switch y else-if cumplen la misma función. Siempre es recomendado utilizar switch cuando
tenemos opciones múltiples en vez de else-if, debido a su simplicidad.

Su principal característica es que permite establecer en forma clara muchas opciones para el
flujo de ejecución a diferencia de la sentencia if, en donde solo hay dos opciones.

Tema 2- Ciclos y bucles.

Un ciclo o bucle es una sección de código que se repite de acuerdo con una condición. Son
similares al if, pero tienen la capacidad de ejecutar varias veces el mismo bloque de código.
Dependiendo de la condición de corte, existen tres tipos de bucles diferentes.

El bucle While

Permite la repetición de la ejecución de un bloque de código determinado mientras (while) se


cumpla una condición determinada. Dicha condición es una expresión booleana.

Una característica de la sentencia while es que, si en la primera evaluación de la expresión


booleana el resultado es falso, el bloque no se ejecuta ninguna vez.

El bucle Do-While

La única diferencia con el bucle while, es que en el do while la expresión booleana se evalúa al final
de cada repetición (iteración).

Es muy similar a while, pero con la palabra clave <<do>> y luego el código que se repite. La
condición de la repetición se indica al final.
El bucle For

Este bucle también permite la repetición de una sección de código de acuerdo con el valor de una
variable o expresión booleana, pero teniendo control y conocimiento sobre la cantidad de
iteraciones. En el caso de que la expresión sea verdadera, el código se repite.

Con un for, es necesario tener un valor inicial o un valor final de referencia y una expresión que
indique cómo será el paso de una iteración a la siguiente.

Para ello, una sentencia for está compuesta por tres partes:

 Inicialización de una variable que utilizaremos en la condición:


Incondicionalmente, se ejecuta solo una vez al principio del ciclo.
 Indicación de la condición por la cuál finalizará el bucle: se evalúa esta expresión al
comienzo de cada iteración.
 Modificación de la variable: se ejecuta al final de cada iteración.

Inicialización
de variable

Modificación
Indicación de
de la variable.
condición
El bucle For-Each

For-each es mucho más simple que un for, debido a que no necesitamos establecer la condición de
repetición. Se evaluará la variable <<arr>>, y , a medida que se va recorriendo la lista, la variable
<<x>> va tomando el valor de cada uno de los ítems de dicha lista.

Tema 3. Funciones y funciones anónimas.


Hay muchas formas de codificar un programa. No existe una única forma de construirlo. Pero sí hay
lineamientos y guías para que ese desarrollo pueda ser reutilizado (ahorrando costos, ya que no
tenemos que gastar tiempo haciendo las cosas de nuevo) y extensible, que quiere decir que tiene
la capacidad de agregar funcionalidad de manera fácil.

Uno de esos lineamientos es crear funciones. Las funciones son secciones de código que podemos
reutilizar de forma tal que no tengamos que codificar varias veces el mismo código y lo podemos
utilizar.

Comentario

Los lenguajes de programación permiten agregar comentarios al código. El objetivo es documentar


o explicar ciertas secciones del código para hacerlo más entendible.

En caso de tener que calcular el área de 2 triángulos, tendríamos que escribir el código de la
fórmula dos veces. En caso de querer calcular el área de 4 triángulos, tendríamos que repetirlo 4
veces. Mientras más crezca el desarrollo, el código se irá acumulando. Para estos casos existen las
funciones, que resuelven un problema específico y la podemos invocar cada vez que lo
necesitemos.

En los lenguajes de programación tenemos ciertas restricciones a la hora de nombrar variables:

 Se pueden usar letras, números y guiones bajos.


 Se puede empezar con una letra o guion bajo.
 El código identifica mayúsculas y minúsculas.
 No están permitidos los espacios o caracteres especiales.
 Las palabras reservadas del lenguaje no pueden usarse como nombres de variables.

Funciones anónimas (Funciones lambda).

Las funciones de tipo anónimas se caracterizan por no poseer un nombre. Estas funciones se
utilizan sólo en el lugar donde son definidas ya que no pueden ser llamadas. El propósito de estas
funciones es darle flexibilidad al programador. Sin embargo, como regla general, no deberíamos
usarlas, salvo que sea estrictamente necesario, ya que complejiza el código.

Las funciones lambda, a menudo, son enviadas como parámetros de entrada a funciones
nombradas para que estas las apliquen a otros datos que procesan. Si la función se da una vez, o
un número limitado de veces, una expresión lambda puede ser sintácticamente más simple que
una función con nombre.
Tema 4. Recursividad
Existen algunas situaciones en las que necesitamos otro tipo de iteración del código que no se
podría hacer con bucles o que sería muy complicado hacerlo. Una de las opciones ante esos casos
es la recursividad.

Podemos definir un algoritmo recursivo como aquel que se utiliza dentro de sí mismo. Una función
recursiva es la codificación de dicho algoritmo, y se caracteriza por llamarse a sí misma dentro de la
propia función.

La recursividad se debe usar cuando sea absolutamente necesaria, es decir, cuando no existe una
solución iterativa simple.

También podría gustarte