Apuntes, resúmenes, trabajos, exámenes y ejercicios de Informática de Universidad

Algoritmos de Búsqueda y Ordenación en Java: Binaria, Selección, Inserción y Fusión

Informática2,53 KB

Algoritmos de búsqueda y ordenación en Java

Búsqueda binaria (O(log n))

public static int buscar(int[] vector, int x) {
int inicio = 0;
int fin = vector.length - 1;
while (inicio <= fin) {
int medio = (inicio + fin) / 2;
if (vector[medio] < x)
inicio = medio + 1; // Examinar mitad derecha
else if (vector[medio] > x)
fin = medio - 1; // Examinar mitad izquierda
else // Encontrado
return medio;
}
return -1; // No está
}

Ordenación por selección (O(n²))

public static void ordenarSelección(int[] vector) {
for (int i = 0; i < vector.length - 1; i++) {
// Buscar posición del menor elemento entre i y el final
int posMenor = i;
for (int j = i + 1; j < vector.length; j++) {
if (vector[j] < vector[posMenor])
posMenor = j;
}
// Intercambiar elementos...

Continuar leyendo "Algoritmos de Búsqueda y Ordenación en Java: Binaria, Selección, Inserción y Fusión" »

Capas del Modelo OSI y Funcionamiento de los Puentes de Red

Informática6,19 KB

Nivel de Enlace de Datos

La misión de la capa de enlace es establecer una comunicación libre de errores que pueda ser utilizada por la capa inmediatamente superior (capa de red). Como el nivel físico opera en bits sin detenerse a averiguar su significado, la capa de enlace debe fraccionar el mensaje en tramas.

Por lo tanto, el nivel de enlace se encarga de establecer y mantener el flujo de datos que va y viene entre los usuarios. Además, se ocupa del tratamiento de los errores que se produzcan en la recepción de las tramas: eliminar tramas erróneas, solicitar retransmisiones y descartar tramas duplicadas, además de ocuparse del control de flujo de datos entre emisores rápidos y receptores lentos, etc. En este nivel se incluye el formato...

Continuar leyendo "Capas del Modelo OSI y Funcionamiento de los Puentes de Red" »

Ejercicios Resueltos en Java: Arrays, Búsqueda, Eliminación e Inserción Ordenada

Informática3,12 KB

Ejercicio 1: Gestión de Pesos de Personas en Java

A continuación se presenta un programa en Java que permite ingresar personas con sus respectivos pesos, buscarlas, eliminarlas y verificar si han dejado de perder peso.

Código fuente

import java.io.*;
import disc.*;
class EjercicioP2 {
    public static void main (String args[]) throws IOException {
        String consulta;
        String[] nombres = new String[100];
        int[][] pesos = new int[100][30];
        int[] cont = new int[100];
        int n=0, op;
        int pos=0;
        do {
            PantallaSalida.println("1) Ingresar");
            PantallaSalida.println("2) Buscar");
            PantallaSalida.println("3) Eliminar");
            PantallaSalida.println("4) Verificar"
...
Continuar leyendo "Ejercicios Resueltos en Java: Arrays, Búsqueda, Eliminación e Inserción Ordenada" »

Consultas SQL básicas con SELECT, WHERE y funciones de agregado en SQL Server

Informática5,58 KB

Creación de tablas e inserción de datos

A continuación se presentan las instrucciones para crear las tablas Clientes y Productos, junto con la inserción de registros de ejemplo.

/*
CREATE TABLE Clientes (
ClienteID INT PRIMARY KEY,
Nombre NVARCHAR(100) NOT NULL,
Email NVARCHAR(100) NOT NULL,
Telefono NVARCHAR(20) NOT NULL,
Ciudad NVARCHAR(50) NOT NULL
);
CREATE TABLE Productos (
ProductoID INT PRIMARY KEY,
Nombre NVARCHAR(100) NOT NULL,
Categoria NVARCHAR(50) NOT NULL,
Precio DECIMAL(10,2) NOT NULL,
Stock INT NOT NULL
);
INSERT INTO Clientes VALUES (1, 'Juan Pérez', '[email protected]', '555-1001', 'Guatemala');
INSERT INTO Clientes VALUES (2, 'María López', '[email protected]', '555-1002', 'Antigua');
INSERT INTO Clientes VALUES (3, 'Carlos Ramírez'...

Continuar leyendo "Consultas SQL básicas con SELECT, WHERE y funciones de agregado en SQL Server" »

Algoritmos de grafos en C++: Dijkstra, Kruskal, DFS, BFS y ordenamiento topológico

Informática5,13 KB

Algoritmos de grafos en C++

A continuación se presentan implementaciones en C++ de algoritmos clásicos sobre grafos: el algoritmo de Dijkstra, el algoritmo de Kruskal, los recorridos DFS y BFS, y el ordenamiento topológico.

1. Algoritmo de Dijkstra

Calcula las distancias mínimas desde un vértice inicial a todos los demás vértices de un grafo con pesos no negativos, utilizando una cola de prioridad.

void dijkstra(vector<vector<pair<int, int>>> &grafo, vector<int> &dist, int inicio)
{
    dist[inicio] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> colaprio;
    colaprio.push(make_pair(0, inicio));
    while (!colaprio.empty())
...
Continuar leyendo "Algoritmos de grafos en C++: Dijkstra, Kruskal, DFS, BFS y ordenamiento topológico" »

Protocolos de Coherencia de Caché MESI y Dragon: Funcionamiento y Estados

Informática5,89 KB

Protocolo MESI (MSI con Estado Exclusivo)

El protocolo MESI añade el estado E (Exclusivo) al esquema tradicional MSI. Su objetivo principal es evitar transacciones innecesarias en el bus cuando la copia local es la única existente. Además, cabe destacar que el número de bits de codificación para las líneas de memoria es el mismo que en MSI, ya que tanto para almacenar tres estados como para almacenar cuatro estados se requieren exactamente 2 bits.

Transiciones y Dinámica de Estados en MESI

  • Entrada inicial: Entramos en el estado Compartido mediante una operación de lectura si existen copias previas; si no hay más copias, se entraría directamente en Exclusivo. Con una operación de escritura local se entra en Modificado, ya que la única
...
Continuar leyendo "Protocolos de Coherencia de Caché MESI y Dragon: Funcionamiento y Estados" »

Especificación e implementación de pilas en Pascal: TAD Pila con ejemplos

Informática1,78 KB

Especificación de Pilas

Parámetros genéricos

Tipos

TipoElemento

Fin parámetros genéricos

Tipos

TipoPila

Operaciones

Constructoras generadoras

CrearPilaVacia : → TipoPila

Apilar : TipoElemento × TipoPila → TipoPila

Observadoras selectoras

parcial Cima : TipoPila → TipoElemento

Observadoras no selectoras

EsPilaVacia : TipoPila → booleano

IgualPila : TipoPila × TipoPila → booleano

Constructoras no generadoras

parcial Desapilar : TipoPila → TipoPila

CopiarPila : TipoPila → TipoPila

Variables

pila, pila2, pila3 : TipoPila;
elemento, elem : TipoElemento;

Ecuaciones de definitud

Def(Cima(Apilar(elemento, pila)))
Def(Desapilar(Apilar(elemento, pila)))

Ecuaciones

EsPilaVacia(CrearPilaVacia) = CIERTO
EsPilaVacia(Apilar(elemento, pila)) = FALSO
Cima(Apilar(elemento,...

Continuar leyendo "Especificación e implementación de pilas en Pascal: TAD Pila con ejemplos" »

Cursores en PL/SQL: ejemplos prácticos de declaración, FETCH y control de filas

Informática5,17 KB

Ejemplos de cursores en PL/SQL

A continuación se presentan varios ejemplos de cursores explícitos en PL/SQL, con el uso de atributos como %NOTFOUND, %ROWCOUNT y %ROWTYPE.

Ejemplo 35: Recorrer estudiantes de la carrera de Historia

En este bloque se declara un cursor que recupera el identificador, nombre y apellido de los estudiantes de la carrera de Historia.

DECLARE
  v_idestudiante estudiantes.idestudiante%TYPE;
  v_nombre estudiantes.nombre%TYPE;
  v_apellido estudiantes.apellido%TYPE;
  v_carrera estudiantes.carrera%TYPE := 'Historia';
  CURSOR c_estudiantes IS
    SELECT idestudiante, nombre, apellido
    FROM estudiantes
    WHERE carrera = v_carrera;
BEGIN
  /* Identificar las filas en el conjunto activo y preparar para el procesamiento
...
Continuar leyendo "Cursores en PL/SQL: ejemplos prácticos de declaración, FETCH y control de filas" »

Comunicación Digital y Ética Publicitaria: Criterios, Desinformación y Marca Personal

Informática5,94 KB

Comunicación Digital, Ética y Desinformación

CRITERIO PERIODÍSTICO: generar periodismo de análisis, con un examen y una exposición profunda desde perspectivas diversas, a partir de información y reflexión CARÁCTER analítico profundo, fundamentada, accesible, con estilo propio, propuesta e información AUTOCRÍTICA: examinar nuestros pensamientos y acciones, decidir para dar un nombre a los errores, identificar las áreas de mejora, fortalezas y debilidades, reflexionar y objetivar los objetivos de crecimiento personal, equilibrar la implicación con la reconciliación de errores y aciertos.

OBJETIVIDAD: capacidad de basarse en hechos reales y comprobables, sin dejarse influir por opiniones.

IMPARCIALIDAD: no favorecer a nadie y comunicar...

Continuar leyendo "Comunicación Digital y Ética Publicitaria: Criterios, Desinformación y Marca Personal" »

Colección de Métodos en C# para la Manipulación de Vectores y Arreglos

Informática7,23 KB

Introducción a la Manipulación de Vectores en C#

A continuación se presenta un conjunto de métodos en C# diseñados para realizar diversas operaciones sobre vectores y arreglos numéricos. Estas funciones permiten gestionar datos de manera eficiente mediante el uso de estructuras de control y algoritmos fundamentales.

Métodos de Modificación y Carga

Inversión y Carga de Elementos

Estos métodos permiten modificar la estructura del vector, ya sea cargando valores aleatorios, invirtiendo su orden o alterando posiciones específicas.

public void INVERTIR(int Pos)
{
    int J = 0;
    for (int i = 0; i < dimencion; i++)
    {
        if( i==Pos)
            for (int v = i + 1; v < dimencion ; v++)
            {
                vector[i
...
Continuar leyendo "Colección de Métodos en C# para la Manipulación de Vectores y Arreglos" »