Semana 3
Semana 3
Semana 3
Curso 2023-2024
*Fundamentos de programación*
Programación es la serie de habilidades y herramientas que permiten crear programas que exhiban un
comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en
varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica
formal. Programar es el proceso de crear un conjunto de instrucciones para decirle a una computadora
cómo realizar una tarea. Se puede programar utilizando una variedad de lenguajes de programación de
computadora, como JavaScript, Python, C+, F#, C#, Java, Javascript, PHP y C++.
Siendo entonces que La programación informática es todo proceso que involucra el diseño, codificación,
mantenimiento, y protección de cualquier fuente de programas. El objetivo principal de la programación
informática es la creación de softwares, con el fin de ser ejecutados a través de computadoras,
programas o plataformas. Para realizar además está programación se utilizarán tres tipos de lenguajes
El objetivo final de la programación es la de crear software, el cual después será ejecutado de manera
directa por el hardware de la computadora, o a través de otro programa, para desempeñar diversas
labores para las cuales fue diseñado.
Principiantes: Para los lenguajes más fáciles de aprender, se recomienda que empiece con HTML/CSS,
Go, Ruby, PHP o Python. Desarrolladores web: HTML, CSS y JavaScript son necesarios para los
desarrolladores de frontend. Los desarrolladores de backend deberían estudiar Ruby, Python, PHP y Go.
Aclaración de dudas
Ejercicio Explique que es la programación y mencioné al menos dos lenguajes utilizados en esta.
*Definición de algoritmo*
En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Pero en
informática, se llaman algoritmos el conjunto de instrucciones sistemáticas y previamente definidas que
se utilizan para realizar una determinada tarea. Estas instrucciones están ordenadas y acotadas a
manera de pasos a seguir para alcanzar un objetivo. Los algoritmos son una serie de instrucciones que
permiten hacer y resolver diferentes operaciones. Aunque están ampliamente asociados al ámbito de la
tecnología, la construcción de una secuencia de pasos para realizar una tarea, no es ajena.
La diferencia entre un algoritmo y un programa, es que si bien ambos hacen referencia una serie de
instrucciones, los algoritmos pueden estar escritos en código o en lenguaje natural, mientras que los
programas sólo pueden estar escritos en lenguaje de programación.
Un algoritmo se hace con tres bloques básicos de construcción: secuenciación, selección e iteración.
Secuenciación: un algoritmo es un proceso paso a paso, y el orden de esos pasos es crucial para asegurar
que el algoritmo sea correcto. Todo algoritmo tiene una entrada, conocida como inputy una salida,
conocida como output,y entre medias, están las instrucciones o secuencia de pasos a seguir. Estos pasos
deben estar ordenados y, sobre todo, deben ser una serie finita de operaciones que permitan conseguir
una determinada solución.
En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda
describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un
límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia
definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo
el Métodos de Newton y la eliminación Gauss - Jordan funcionan, al menos en principio, con números de
precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no
por ello dejan de ser algoritmos.
*tipos de algoritmos*
Existen principalmente 4 tipos de algoritmos: Computacionales: este tipo de algoritmo permite resolver
cálculos matemáticos complejos como ecuaciones u operaciones numéricas complejas. No
computacionales: necesitan de intervención humana para ser resueltos, utilizando, por ejemplo, la
entrada de datos.
Algoritmos no computacionales. Son aquellos algoritmos que no pueden ser resueltos por una
computadora y necesitan de la intervención humana para ello.
Algoritmos cualitativos. En este tipo de algoritmo no se realizan cálculos numéricos para su resolución,
sino secuencias lógicas o formales.
Algoritmos cuantitativos. Este tipo de algoritmo depende de un cálculo numérico para poder mostrar el
output.
Aun con esta clasificación puede realizarse una clasificación diferente según su sistema de signos, es
decir, cómo se describen los pasos a seguir, los algoritmos pueden ser:
Según su función y estrategia, es decir, qué hacen y cómo lo hacen, existen cinco tipos de algoritmos:
Algoritmos de búsqueda: aquellos que encuentran uno o varios elementos que presenten un conjunto
de propiedades dentro de una determinada estructura de datos. Las búsquedas pueden ser:
Secuenciales: comparan el elemento a buscar con cada elemento del conjunto, hasta encontrarlo.
Binarias: comparan el elemento de búsqueda con un elemento ubicado en el medio de una serie
ordenada para determinar si son iguales.
Algoritmo de ordenamiento: son los que se utilizan para reorganizar elementos de un listado, siguiendo
unas pautas de orden numérico o alfanumérico. Pueden ser:
Por selección: ordenan a partir del elemento más pequeño de forma consecutiva.
Rápido: eligen un elemento del conjunto y reubican el resto en torno a este en función de si son
menores o mayores respecto a él.
Programación dinámica: este tipo de algoritmo está asociado al método con el que se procesa el
resultado. La solución de un elemento depende de la solución de una serie de problemas más pequeños,
por lo que conforme se van solucionando subproblemas, se van almacenando las soluciones para que no
sea necesario calcularlas nuevamente. Con la programación dinámica se reduce el tiempo de ejecución
del algoritmo.
Algoritmos probabilísticos: este tipo de algoritmosbasa sus resultados en el azar, de manera que, en
líneas generales, se pueda obtener una buena solución para cualquier distribución aleatoria de inputs de
entrada. El azar representa una optimización de tiempo respecto a si se determinara la mejor alternativa
para cada caso individual. Se obtiene, en consecuencia, una buena solución a un problema para
cualquier distribución de datos de entrada.
Independientemente del uso que se le dé a los algoritmos, todos guardan en común las siguientes
características:
Inicio y fin: parten de un estado inicial desde el cual ejecutan una serie de instrucciones para llegar a un
estado final de salida o finalización.
Exactitud: deben indicar un orden claro, específico y lógico de instrucciones para la ejecución de cada
paso, sin que exista espacio para la ambigüedad.
Secuencia: deben seguir una serie de pasos ordenados, entendibles y previamente establecidos.
Completos: deben tener en cuenta todas las posibilidades y presentaciones del problema para ejecutar
la solución exacta.
Finitos: el número de pasos para ejecutar la tarea debe ser finito para darla por concluida.
En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre esos
valores. Casi todos los lenguajes de programación explícitamente incluyen la notación del tipo de datos,
aunque lenguajes diferentes pueden usar terminologías diferentes. La mayor parte de los lenguajes de
programación permiten al programador definir tipos de datos adicionales, normalmente combinando
múltiples elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un
programador puede crear un nuevo tipo de dato llamado "Persona", contemplando que el dato
interpretado como "Persona" incluya un nombre y una fecha de nacimiento.
Un tipo de dato puede ser también visto como una limitación impuesta en la interpretación de los datos
en un sistema de tipificación, describiendo la representación, la interpretación y la estructura de los
valores u objetos almacenados en la memoria del ordenador. El sistema de tipificación usa información
de los tipos de datos para comprobar la verificación de los programas que acceden o manipulan los
datos. Los tipos de datos hacen referencia al tipo de información que se trabaja, donde la unidad
mínima de almacenamiento es el dato, también se puede considerar como el rango de valores que
puede tomar una variable durante la ejecución del programa.
Ejercicio: En ciencias de la computación un tipo de dato informático es un atributo de los datos que
indica sobre la clase de datos que se va a manejar. Argumente.
Una variable es la asignación de un tipo de dato a una palabra con el objetivo de almacenarla dentro de
la memoria, además de gestionar la información que decidas incorporar en el código. Estas palabras
claves se pueden expresar mediante números, textos, objetos o, incluso, datos abstractos. También hay
que mencionar que los nombres de las variables también son conocidos como identificadores, ya que
indican el tipo e incluso cuánto espacio de memoria tomará dicha variable.
Antes de comenzar hay que definir los tipos de variables, hay que mencionar los lenguajes de
programación tanto fuertemente tipados como los débilmente:
El tipado débil te permite trabajar en menos tiempo y comprobar cuáles son los resultados del programa
en tiempo real. Para la fase de ideación del proyecto esta opción es ideal. Se adapta muy bien a
programas de menor capacidad.
El tipado fuerte admite realizar operaciones con distintos tipos de variable. La consecuencia directa es
que no vas a cometer tantos errores como con el lenguaje del punto anterior. Ahora bien, necesitas
escribir más código. Este lenguaje es ideal para proyectos de mayor alcance y con un número mayor de
especificaciones.
Gracias a las diferencias entre los tipados, podremos clasificar las variables. Los tipos de variables se
determinan por el propio significado de las mismas, es decir, qué tipo de dato es y a dónde va dirigido
cada dato al almacenarse.
Esta clasificación se utiliza por el lenguaje fuertemente tipado Java mientras que las variables de
lenguajes tipados débilmente se clasifican en:
Variable numérica: Permiten almacenar caracteres numéricos solo si son positivos y enteros. Los
lenguajes de programación fuertemente tipados los clasifican como int.
Variable de texto: Aquellas variables que se encargan de almacenar palabras, así como una cadena de
texto. En los lenguajes fuertemente tipados, se utiliza el código String.
Variable de punto flotante: Esta variable se encarga de almacenar todos aquellos datos que sean
numéricos con muchos caracteres numéricos. En los lenguajes fuertemente tipados se llaman Long.
Variable de lógica: Permiten almacenar uno de los dos estados lógicos (verdadero o falso) y también se
las conoce como Boolean (en aquellos casos en el que el lenguaje sea fuertemente tipado).
Para definir una variable, hay que tener en cuenta estas reglas:
No utilizar espacios.
Si quieres poner en el nombre de la variable números, hay que ponerlos a partir de la primera letra.
Para declarar la variable, mostraremos un ejemplo básico basado en el lenguaje de programación Java:
Ejercicio mencione tres tipos de variables de tipado fuerte y tres de tipado débil, explique una de cada
tipo.
Estructuras de control
el término estructuras de control, en este contexto simplemente hace referencia a cómo se ejecuta un
programa. Básicamente existen dos tipos: Condicionales: Son instrucciones que bifurcan el flujo del
programa en función de si se cumple o no una condición. Bucles: Son instrucciones que repiten un
bloque de código un numero determinado de veces o hasta que se cumple una condición.
Las estructuras de control son el conjunto de reglas que permiten controlar el flujo de ejecución de las
instrucciones de un algoritmo o de un programa. La mayoría de los lenguajes de programación actuales
soportan o utilizan las mismas estructuras de control o, al menos, son muy parecidas. Lo que varía entre
uno y otro es la sintaxis con la que se escriben y, por lo tanto, con la que los compiladores o intérpretes
lo traducen a lenguaje de máquina. Las estructuras de control nos dan el poder de alterar, controlar o
modificar el orden o el flujo en el que se ejecutan las instrucciones de un software a voluntad. Gracias a
las estructuras de control podemos abstraer algoritmos o secuencias de instrucciones en un software
para lograr su objetivo.
Una estructura condicional permite decidir por cuál alternativa seguirá el flujo del programa
dependiendo del resultado de la evaluación de una condición. Para establecer condiciones complejas se
utilizan los operadores relacionales y lógicos, utilizando únicamente tres estructuras: secuencia,
selección e iteración.
Las estructuras de bucle de Visual Basic permiten ejecutar una o varias líneas de código de forma
repetitiva. Puede repetir las instrucciones de una estructura de bucle hasta que una condición sea True ,
hasta que una condición sea False , un número especificado de veces o una vez para cada elemento de
una colección. Hay dos tipos principales de bucles: los bucles «while» y los bucles «for».
De acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-Then-Else) Condicional
De acuerdo con el valor de una variable, ejecutar un grupo u otro de sentencias (Switch-Case)
Condicional
Ejecutar un grupo de sentencias solo cuando se cumpla una condición (Do-While) Bucle
Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until) Condicional
Resolución de problemas
Este proceso exige los siguientes pasos conocidos como el método de resolución de problemas:
Identificar las causas reales mediante: mediciones, hechos, análisis, opiniones de expertos, etc.
Obtener autorización
Implantar soluciones
Evaluar resultados
Preguntarse ¿en dónde más se me puede presentar este problema o uno similar? Preparar
contramedidas para evitar el problema
Presentar un ejemplo de como es que un problema desde el punto de vista informático El problema esté
bien definido con el máximo detalle y que las especificaciones de las entradas y salidas del problema,
deben ser descritas también en detalle debido a que aunque se podrá el conocimiento informático no
necesariamente se es experto en la resolución del problema basado en el tipo de programa que se
necesita corregir.
Tarea