Resumen, Lectura 2
Resumen, Lectura 2
Resumen, Lectura 2
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.
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.
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:
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.
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
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.
Implementación
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
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.
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.
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.
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.
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
La combinación else-if.
Int num1;
Int num2;
cin>> num1;
cin>>num2;
if (num1 == num2)
prinf(“Numeros iguales”);
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.
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.
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
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 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.
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
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.
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.