Fundamentos de la Programación: Metodologías, Ciclo de Vida y Lenguajes Esenciales

Metodología para la Solución de Problemas

¿Qué es?

La metodología para la solución de problemas la podemos definir como la secuencia estructurada de pasos para abordar y resolver dichos problemas de manera eficiente.

Pasos Fundamentales

  1. Identificación del Problema: Distinguir y recopilar los datos relevantes.
  2. Planteamiento de Alternativas: Generar diversas opciones de solución.
  3. Elección de una Alternativa: Seleccionar la opción más viable y eficiente.
  4. Desarrollo de la Solución: Implementar la alternativa elegida para solucionar el problema.
  5. Evaluación de la Solución: Realizar un control de calidad para verificar la efectividad de la solución.

Herramientas

  • Software: Soporte lógico (programas, aplicaciones).
  • Hardware: Elementos físicos de la computadora (PC).

Etapas del Ciclo de Vida de un Programa (SDLC)

El Ciclo de Vida del Desarrollo de Software (SDLC) es un marco de trabajo que define las tareas realizadas en cada fase del desarrollo de un producto de software.

1. Planteamiento del Problema

En esta fase se identifica si existe o no la necesidad de un nuevo software para lograr los objetivos estratégicos de la organización.

2. Diseño y Especificación

En esta fase se comienza a visualizar la solución con la ayuda de las fases anteriores. Se realiza un diseño lógico y otro físico, y se crean artefactos como metadatos, diagramas o pseudocódigos.

3. Desarrollo (Codificación)

En esta fase comienza el trabajo real de implementación. Es el momento en que se contrata a un programador para que realice el trabajo principal de codificación en el proyecto.

4. Pruebas

Esta etapa busca detectar los fallos cometidos en las etapas anteriores para corregirlos. Se considera que una prueba fue un éxito si se detectó algún error, ya que esto permite mejorar la calidad del producto.

5. Mantenimiento

El mantenimiento es crucial para la longevidad del software. Existen cuatro tipos principales, realizados por diferentes razones y propósitos:

Tipos de Mantenimiento de Software

  • Mantenimiento Correctivo: Se utiliza cuando algo sale mal en alguna pieza de software, incluyendo fallos y errores que deben ser reparados.
  • Mantenimiento Preventivo: Incluye cambios y actualizaciones que abordan problemas pequeños que, de no corregirse, podrían convertirse en problemas mayores en el futuro.
  • Mantenimiento Perfectivo: Se enfoca en satisfacer nuevas necesidades o requisitos que los usuarios solicitan o les gustaría ver implementados en el software (mejoras funcionales).
  • Mantenimiento Adaptativo: Se realiza para adaptar el software a tecnologías cambiantes, nuevos sistemas operativos o entornos de ejecución.

Expresiones y Operadores

Operadores Aritméticos

A continuación, se presenta una referencia visual de los operadores aritméticos:

Prioridad entre operadores (orden de prelación). Exponenciación, mod, div,  lógicos, etc. (CU00133A)

Operadores Lógicos y Relacionales

Estos operadores se utilizan para establecer condiciones y comparaciones:

  • >: Mayor que.
  • >=: Mayor o igual que.
  • =: Igual que (Nota: En muchos lenguajes de programación, la igualdad se representa como ==).
  • And: Operador lógico “Y” (conjunción).
  • Not: Operador lógico “NO” (negación).

Nota sobre el uso de “And”: Cuando se escribe una condición compuesta que lleva el operador “Y” (And), es común estructurar la expresión de la siguiente manera: (Primera Condición) AND (Segunda Condición).

Algoritmo, Diagrama de Flujo y Pseudocódigo

¿Qué es un Algoritmo?

Es un conjunto de reglas definidas, ordenadas y finitas que permiten solucionar un problema o realizar una tarea específica.

Ventajas y Desventajas de los Algoritmos

Ventajas

  • Permiten el ordenamiento secuencial de los procesos.
  • Disminuyen el rango posible de errores.
  • Ayudan a resolver los problemas planteados de forma más rápida y sencilla.
  • Son precisos y permiten ceñirse a una especificación definida.

Desventajas

Suelen requerir de conocimiento previo y, sobre todo, técnico, ya que a menudo los algoritmos se expresan en un lenguaje adaptado al caso en cuestión.

Aplicaciones de Algoritmos

  1. Aplicación en Matemáticas: Determinar y generar si el número N es par o impar.
  2. Aplicación en Programación de Computadoras: Dibujar un diagrama de flujo para calcular el factorial N (N!).
  3. Aplicación en la Vida Diaria: (Ejemplo: Receta de cocina o instrucciones de montaje).

¿Qué es un Diagrama de Flujo?

Es la representación gráfica de un algoritmo o proceso. Se utiliza ampliamente en la fase de diseño para la programación.

¿Qué es un Pseudocódigo?

Es una descripción de alto nivel, compacta e informal, del principio operativo de un programa informático o de otro algoritmo. Utiliza convenciones estructurales de un lenguaje de programación normal, pero está diseñado para la lectura humana.

Lenguajes de Programación

¿Qué es un Lenguaje de Programación?

Es un lenguaje formal con reglas bien definidas (sintaxis y semántica) que le da la capacidad a un programador de escribir ciertas instrucciones en forma de algoritmos para controlar el comportamiento de una máquina.

Clasificación por Nivel de Abstracción

Lenguajes de Bajo Nivel

Un lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados a la estructura física de la computadora (ej. Lenguaje Ensamblador).

Lenguajes Intermedios

Un lenguaje intermedio se puede definir como una manera de representar procedimientos y estructuras de datos que sirve como entrada para un ordenador en alguna parte de su jerarquía, combinando características de alto y bajo nivel (ej. C).

Lenguajes de Alto Nivel

Un lenguaje de alto nivel es un lenguaje caracterizado por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, utilizando sintaxis cercana al lenguaje natural, en lugar de la capacidad con que los ejecutan las máquinas.

Lenguajes de Programación Populares y sus Características

JavaScript

Características clave:

  • Es Distribuido.
  • Es Robusto.
  • Es de Arquitectura Neutral.
  • Es Portable.
  • Es Dinámico.
  • Es Multithreaded (Multihilo).

Python

Características clave:

  • Es un lenguaje Interpretado.
  • Es un lenguaje Fácil de Utilizar.
  • Es un lenguaje Tipado Dinámicamente.
  • Es un lenguaje de Alto Nivel.
  • Es un lenguaje Orientado a Objetos (OOP).

C++

Características clave:

  • Compatibilidad con Bibliotecas (librerías).
  • Orientado a Objetos.
  • Rapidez en la ejecución.
  • Requiere Compilación.
  • Uso de Punteros.
  • Es Didáctico (útil para aprender conceptos de bajo nivel).

Lenguaje de Programación Java

Características clave:

  • Independiente de Plataforma: Posibilita que un mismo código fuente pueda ser ejecutado en múltiples plataformas gracias a la Máquina Virtual de Java (JVM).
  • Sencillo: Es un lenguaje fácil de aprender, especialmente si ya se conocen los conceptos básicos de la programación orientada a objetos.
  • Seguro: Tiene una validación sobre los bytecodes para comprobar que no hay fragmentos de código ilegal o malicioso.
  • Arquitectura Neutral: Independientemente de que se ejecute en una arquitectura de 32 bits o de 64 bits, en Java los tipos de datos siempre ocupan el mismo espacio.
  • Alto Rendimiento: Java ofrece compiladores Just-In-Time (JIT) que permiten tener un alto rendimiento en la ejecución.