# haciendo espacio para futuros conceptos

# haciendo espacio para futuros conceptos

programación de computadoras (no confundir con ingeniería de software / desarrollo de software)*
programador / code monkey (no confundir con ingeniero de software / desarrollador de software)*
--------------------------------------------------------------------------------------------
lenguaje de programación*
tipos de lenguajes por profundidad y generación
lenguaje de bajo nivel
-lenguaje máquina / código máquina / código en lenguaje máquina / lenguaje de primera generación
-lenguaje ensamblador / lenguaje de ensamble/código ensamblador / lenguaje de segunda generación*
lenguaje de alto nivel
-lenguaje de tercera generación*
-lenguaje de cuarta generación
-lenguaje de quinta generación
tipos de lenguajes por modo de ejecución:
-compilados*
-interpretados / script
-precompilados-interpretados / maquina virtual de procesos
tipos de lenguajes por tipado
-tipado dinamico
-tipado estatico*
tipos de lenguajes por propósito
-algebra por computadora
-aprendizaje de programación
-bases de datos
-graficos por computadora
-inteligencia artificial
-juegos
-macros en aplicaciones
-extensiones de aplicaciones
-multi-proposito / proposito general*
-de un solo propósito / dominio especifico*
-aplicaciones web
tipos de lenguajes por paradigmas de programación
-programación declarativa*
--programación funcional
--programación lógica
-programación imperativa*
--programación modular*
---programación orientada a objetos
----por clases
----por prototipos
---programación orientada a procedimientos*
-------------------------------------------------------------------------------------------------------
traductor de lenguajes
-compilador*
-descompilador
--
algoritmo*
sintaxis*
-comentarios
-palabras clave / palabras reservadas / clausulas
-operadores
-asociatividad / orden de evaluación de operadores
-precedencia / prioridad de operadores
convenciones de código / estilo de código
-convenciones de nombres
-tabulación
-regla de fuera
pseudocódigo*
diagrama de flujo
-diagrama Nassi-Schneiderman / Chapin
-diagrama de flujo con flechas y figuras geometricas*
--ovalo (inicio y fin)
--circulo (conector)
--romboide (entrada y salida estandar, declaración)
--rombo (iterador o seleccion)
--rectangulo (asignación)
--flecha (secuencia, flujo)
control de flujo*
-estructuras secuenciales
-estructuras de bifurcación
--estructuras selectivas o de decisión
--estructuras de decisión múltiple o selección múltiple
-estructuras repetitivas
-estructura de salto
--llamadas a funciones
instrucción / sentencia / orden*
-palabra clave / palabra reservadas / clausula
-sentencia compuesta / bloque
expresión*
-identificador
-valor / literal
-operador
--operadores aritmeticos
--operadores de asignación compuesta
--operadores de comparación / operadores relacionales
--operadores boleanos / operadores logicos
--operadores de manipulación de bits
---operadores de asignación de manipulación de bits
---operadores lógicos de manipulación de bits
dato variable
dato constante
declaración
inicialización
asignación
definición
tipos de datos
-dato primitivo*
-dato abstracto*
--dato compuesto / objeto compuesto / estructura de datos*
lista de datos abstractos
-cola
-pila
-lista
-vector
-matriz
-grafo / red
-arbol
-conjunto
-mapeo
---------------------------------------------------------------------------------------------------------------------
lenguaje C*
sintaxis del lenguaje C
---------------------------------------------------------------------------------------------------------------------
código fuente*
código objeto / archivo objeto*
ejecutable / archivo ejecutable*
preprocesador
compilación
enlazador
relocalización
cargador
[URL=http://en.wikipedia

.org/wiki/Execution_(computers)]ejecución[/URL]
tiempo de compilación
tiempo de enlazamiento
tiempo de carga
tiempo de ejecución
---------------------------------------------------------------------------------------------------------------------
código reutilizable
-archivos de cabecera
-librería / biblioteca / API
--librería dinámica
--librerías estaticas
-frameworks
-patrones de diseño de software
librería para poder ejecutar
librería estandar
librería estandar de C / libc
librería C de POSIX
Colisión de nombres
---------------------------------------------------------------------------------------------------------------------
tipos de datos primitivos de C*
entero (int) # en C los caracteres son enteros, los booleanos son enteros *
-caracter (char)
-booleano (_Bool)
punto flotante (float)*
punto flotante de doble precision (double)*
puntero a X tipo*
tipos de datos compuestos de C
struct
union
tipos de datos enumerables
enum
---------------------------------------------------------------------------------------------------------------------
subrutina / función
-declaración de función / función prototipo
-definición de la función / cuerpo de la función
-parametro
argumento
paso de argumentos por valor
paso de argumentos por referencia
efectos laterales
recursividad
---------------------------------------------------------------------------------------------------------------------
ambito / alcance
función principal / función main()
---------------------------------------------------------------------------------------------------------------------
operadores en C
-coma ,
-parentesis ()
-operador de conversión de tipo
-operador condicional
-operador de tamaño de tipo
-operador de identificación de tipo
-operadores aritmeticos
-operadores relacionales
-operadores logicos
-operadores de manipulación de bits
-operadores de asignación compuesta
-operadores de punteros y miembros de tipos compuestos
--operador de referencia &
--operador de derefencia *
--arreglo []
--referencia de miembro .
--dereferencia de miembro ->
asociatividad y orden de precedencia de operadores en C
sentencias en C
-sentencias de iteración
--while
--do while
--for
-sentencia de decisión/selección
--if else
--switch
-sentencia de salto
--return
--break
--continue
--goto
-sentencia de etiqueta
-sentencia nula
-sentencia de declaración
-sentencia de asignación
--asignación condicional
-sentencia de incremento
-sentencia de asignación multiple
-sentencia de llamada a función
--------------------------------------------------------------------------------------------------------------------
apilamiento (una tras otra)*
anidamiento (una dentro de otra)*
--------------------------------------------------------------------------------------------------------------------
iteración / ciclo*
-iteración controlada por contador*
--acumulador / totalizador
-iteración controlada por centinela*
--------------------------------------------------------------------------------------------------------------------
directivas de preprocesador
directivas del preprocesador de C
macros
macros en C
-macros predefinidas
---------------------------------------------------------------------------------------------------------------------
error / bug*
-error de síntaxis / error en tiempo de compilación*
--colisión de nombres
-error lógico / error de lógica / error en tiempo de ejecución*
--error no fatal
---iteración extra o faltante
---ciclo infinito
---cantidades no precisas
--error fatal
---segmentation fault
---división entre zero
---instrucción de CPU ilegal
depuración de errores
-programación defensiva
---------------------------------------------------------------------------------------------------------------------
reservación de memoria
reservación de memoria en C (malloc)
punteros en C*
-puntero a tipo*
-puntero generico*
-puntero a función*
-puntero a puntero a tipo*
aritmetica de punteros
arreglos en C #en C los arreglos son punteros a bloques contiguos de memoria que se guardan en el stack
-cadena de caracteres / arreglo tipo char / puntero a bloque contiguo tipo char
#en C hay dos formas de reservar bloques contiguos de memoria
#1

. por malloc (reserva en el heap)
#2. por arreglo (reserva en el stack)
---------------------------------------------------------------------------------------------------------------------
cadenas de caracteres en C*
manipulación de cadenas de caracteres*
---------------------------------------------------------------------------------------------------------------------
manipulación de archivos / edición de archivos en C
flujos estandar
clasificación de caracteres
---------------------------------------------------------------------------------------------------------------------
manipulación de bits
---------------------------------------------------------------------------------------------------------------------
interfaces de usuario
-interfaz grafica de usuario*
-interfaz de consola / terminal
--interfaz de linea de comandos*
--interfaz de texto / modo texto
-interfaz de voz / dictado
-interfaz de gestos
---------------------------------------------------------------------------------------------------------------------
series tutoriales en YouTube:
Programming Languages - 1 of 12 - YouTube
A first programming language (part 1/2) - YouTube
Introduction to Computer Science I | Harvard Video Course
Lec 1 | MIT 6.00 Introduction to Computer Science and Programming, Fall 2008 - YouTube
Lecture 1 | Programming Methodology (Stanford) - YouTube
Lecture 1 | Programming Abstractions (Stanford) - YouTube
Lecture 1 | Programming Paradigms (Stanford) - YouTube

haciendo espacio para futuros concepotos