RESUMEN DE CLASES – PROGRAMACIÓN I
UTN – T.U.P. PARCIAL 2 ESCRITO.
CLASE 4 – ESTRUCTURAS ITERATIVAS Y ESTRATEGIAS DE
REPETICIÓN
1. Introducción a las estructuras iterativas
Las estructuras iterativas permiten ejecutar una misma secuencia de instrucciones
múltiples veces. Su uso es fundamental cuando se deben procesar datos
repetidamente, ya sea una cantidad fija o variable de veces.
2. Tipos de estructuras de repetición
a. Estructura “Para” (for):
Se utiliza cuando la cantidad de repeticiones es conocida previamente. Es ideal para
situaciones donde se debe recorrer una cantidad fija de elementos.
Ejemplo: calcular el promedio de 4 valores.
b. Estructura “Mientras” (while):
Se usa cuando no se conoce la cantidad exacta de repeticiones y depende de una
condición. Es común en casos donde se utiliza un valor centinela o una bandera para
detener la repetición.
Ejemplo: ingresar valores hasta que el usuario ingrese 0.
c. Estructura “Repetir…Hasta que” (do-while):
Garantiza que el bloque de instrucciones se ejecuta al menos una vez, ya que la
condición se evalúa al final del ciclo.
Ejemplo: validar el ingreso de un número positivo.
3. Ejercicios y análisis
Determinar el mayor y menor de una lista de números positivos.
Se usa Mientras, finalizando con la entrada del valor 0.
Calcular la nota promedio de un grupo de alumnos.
Finaliza con -1 como valor centinela. No se debe considerar -1 en el
promedio.
Calcular el jornal de 20 operarios.
Se emplea Para con condicionales para considerar horas extras
pagadas con un incremento del 50%.
Determinar si un número es primo.
Uso de bandera lógica para identificar si tiene exactamente dos
divisores.
4. Recomendaciones de uso de estructuras
Estructura Aplicación recomendada
Mientras Cantidad de repeticiones desconocida; uso de centinelas o banderas
Para Cantidad de repeticiones conocida
Repetir Se necesita ejecutar el bloque al menos una vez
CLASE 5 – PARADIGMAS DE PROGRAMACIÓN
1. ¿Qué es un paradigma de programación?
Un paradigma de programación es una forma de concebir la construcción de
programas. Define la estructura, estilo y las herramientas que se utilizan para resolver
problemas mediante código. Cada paradigma representa un enfoque distinto para
organizar y desarrollar software.
2. Principales paradigmas de programación
a. Imperativo:
Basado en instrucciones que modifican el estado del programa. Ejemplos: C, Pascal.
Es el paradigma más próximo al funcionamiento del hardware.
b. Declarativo:
Describe qué se desea obtener sin especificar cómo lograrlo. Los lenguajes basados
en este paradigma se enfocan en el resultado, no en los pasos para conseguirlo.
Incluye:
Paradigma funcional: basado en funciones matemáticas.
Paradigma lógico: basado en lógica y relaciones (ej. Prolog).
c. Estructurado:
Organiza el código mediante estructuras de control como secuencia, selección (if) e
iteración (while, for). Facilita la comprensión y mantenimiento del código.
d. Orientado a objetos:
Modela el software como un conjunto de objetos que interactúan entre sí. Cada objeto
contiene atributos (estado) y métodos (comportamiento). Ejemplos: Java, C++, Python.
e. Funcional:
Utiliza funciones puras, evita el uso de variables mutables, y favorece la recursividad.
Ejemplos: Haskell, Lisp.
f. Lógico:
Define hechos y reglas; el sistema deduce conclusiones. Ejemplo: Prolog.
3. Lenguajes multiparadigma
Algunos lenguajes como Python o C# permiten combinar varios paradigmas, lo que los
hace más versátiles para distintos tipos de problemas.
CLASE 6 – MÉTODOS, ARGUMENTOS Y CLASES ESTÁTICAS EN C#
1. Métodos
Un método es una unidad funcional dentro de una clase. Permite definir una operación
que puede ser invocada múltiples veces. Los métodos pueden:
No devolver ningún valor (void).
Retornar un valor de tipo específico (int, string, double, etc.).
2. Métodos estáticos
Pertenecen a la clase, no requieren la creación de una instancia para ser utilizados.
Ejemplo: [Link](), [Link]().
3. Clase Math
Contiene métodos y constantes para operaciones matemáticas.
Constantes importantes:
[Link]: π
Math.E: base del logaritmo natural
Métodos útiles:
Abs(x), Pow(x, y), Sqrt(x), Floor(x), Ceiling(x), Sin(x), Cos(x), Tan(x)
4. Argumentos de métodos
Argumentos formales: se definen en la declaración del método.
Argumentos actuales: se pasan al invocar el método.
5. Tipos de paso de argumentos
Tipo de paso Descripción
Se copia el valor. Cambios dentro del método no afectan al valor
Por valor
original.
Por referencia (ref, Se pasa la dirección en memoria. Cambios dentro del método
out) afectan al valor original.
CLASE 7 – ARREGLOS, PASO POR REFERENCIA Y MÉTODOS DE
ORDENAMIENTO
1. Arreglos
Un arreglo es una estructura de datos que almacena múltiples elementos del mismo
tipo en una colección ordenada.
Características:
Homogéneos: todos los elementos son del mismo tipo.
Finito: tiene una cantidad definida de elementos.
Indexado: cada elemento se accede por un índice (comienza en 0).
Declaración:
int[] numeros = new int[5];
Inicialización directa:
int[] datos = {3, 6, 9, 12};
2. Acceso y recorrida
Se puede recorrer usando for o foreach.
El foreach permite acceder a cada elemento, pero no modificarlo.
3. Arreglos como argumentos
Los arreglos se pasan por referencia, lo que permite modificar sus elementos desde
dentro de un método. También es posible usar la propiedad .Length para obtener su
tamaño.
4. Paso por referencia vs paso por valor
Por valor:
Los datos primitivos (int, double, etc.) se copian. El método no afecta a la variable
original.
Por referencia:
Estructuras como arreglos se pasan como referencias. Se puede modificar
directamente su contenido.
5. out como argumento de salida
Permite que un método devuelva múltiples resultados mediante argumentos.
public void Calcular(int x, out int resultado)
resultado = x * 2;
6. Búsqueda secuencial
Permite recorrer un arreglo para encontrar un valor.
Retorna la posición si lo encuentra, o -1 si no está presente.
public int Buscar(int[] datos, int valor)
int i = 0, pos = -1;
while (pos == -1 && i < [Link])
if (datos[i] == valor)
pos = i;
i++;
return pos;
7. Ordenamiento – Método de la burbuja
Compara e intercambia elementos adyacentes si están desordenados.
private void Burbuja(int[] valores)
int aux;
for (int i = 0; i < [Link] - 1; i++)
for (int j = i + 1; j < [Link]; j++)
if (valores[i] > valores[j])
aux = valores[i];
valores[i] = valores[j];
valores[j] = aux;