Fundamentos de Computación en C

18/06/2023

Introducción

Ha tiempo ya que el célebre lenguaje de programación C llamó mi atención. Finalmente decidí atreverme a darle una oportunidad, y qué mejor forma de adentrarme en el aprendizaje de este, que aprovechar de repasar los conceptos básicos de computación que conservo guardando polvo en algún rincón de mi cabeza.

En concreto planeo hacerme en la presente página un resumen de conceptos básicos de arquitectura, subrutinas, arrays, estructuras de datos, algoritmos clásicos, grafos, optimización combinatorial… Adjuntando ejemplos de su respectiva implementación en C.

Principios de Arquitectura

Máquinas de Turing

Unidad Lógico Aritmética

La historia de la computación digital comienza necesariamente con un gate o compuerta. Si bien un prerrequisito obvio de toda la electrónica es la electricidad, la tecnología que permitió el inicio de la era digital es una compuerta que permita el control del flujo de carga mediante una carga.
El primer sistema en la historia que cumplió este rol fue el relay, seguido del triodo, para finalmente dar pie al todopoderoso transistor, posibilitador de toda la computación y por extensión del mundo moderno.

Buffer

NOT Gate

AND Gate

OR Gate

XOR Gate

Compuerta lógica que permite modelar la suma sin reserva.

Half Adder

Para obtener una suma con reserva, necesitamos dar 2 outputs con un AND gate conectado al segundo. Es así como obtenemos un half adder.

Full Adder

El H-A nos deja con una reserva, y para poder sumar números binarios de varios dígitos, tendremos que considerar 3 inputs, los dos sumandos y la reserva, teniendo que realizar en cada columna de la suma una suma de 3 binarios y entregar un resultado y una reserva.

Modelo RAM

Conceptos previos

Disposición de Memoria de un programa en C

Tipos

Funciones o Subrutinas

Estructuras de Datos

Array

Listas Enlazadas

Heap

Árboles Binarios

HashMaps

Algoritmos de Sorting

Grafos

Concepto

Representación de Grafos en C

Algoritmos y Resultados de Optimización Combinatorial

Métodos numéricos de optimización e Integración

Método de Euler

Método de la secante

Método de Newton

BFGS

SQP

Redes Neuronales

Clustering