Razonamiento en el que las ideas se manifiestan o desarrollan de forma coherente y sin que haya contradicciones entre ellas.
- Análisis (entradas, proceso, salidas).
- Diseño de un algoritmo.
- Transformación del algoritmo en código.
- Ejecución y validación.
- Pruebas de aceptación.
Requerimientos funcionales Son aquellos requerimientos que tienen que ver con la solucion del usuario.
Requerimientos no funcionales Son caracteristicas que un sistema necesita para funcionar adecuadamente pero que no aportan valor operativo al usuario.
Un algoritmo es un conjunto de acciones que especifican la secuencia de operaciones realizar, en orden, para resolver un problema.
- Entrada.
- Proceso.
- Salida.
- Exacto.
- Definido.
- Completo.
- Finito.
- Instrucciones entendibles.
- General
- Lenguaje natural.
- Diagrama de flujo.
- Pseudocódigo.
- Código.
- Pruebas de escritorio.
Rrepresentación gráfica de un algorito utlizada para diseñar algoritmos, documentar funcionalidades (flujos) y comunicar procesos complejos en una representación clara y sencilla.
- Inicio.
- Entrada / Lectura.
- Proceso.
- Descisión.
- Documento / Impresión.
- FIn.
- Conectores.
- Flechas.
Forma de expresar los pasos de un programa combinando paralabras entendibles para los humanos pero que son "comunes" en programación.
- "INICIO".
- “Leer”.
- “Si… entonces…”
- “Si no … entonces…”
- “Mientras…”
- “Si y sólo si --- entonces”
- “Imprimir”
- “FIN”
Es el estándar que la empresa del mismo nombre definió para JavaScript en el año 2015 (ES6) y encarga de regir como debe ser interpretado y cómo debe funcionar el lenguaje JavaScript.
- Let y const.
- Arrow functionts (short and long form).
- For in/ for of.
- Map.
- Classes
- Promises
- Default parameters.
- Spread / Rest operator.
- Object entries, keys y values.
- JS Modules.
- Literal templates.
- Map y Set (Estructura de datos).
- Exponentiation.
- Async
- Finally (Promises).
- RegExp.
- Métodos de arreglos (push, slice, splice, indexOf, includes, find, findIndex, map, filter, reduce, reverse, forEach).
// Funcion flecha ordinaria (con muchos parametros y cuerpo)
(param1, param2, paramN) => { //cuerpo de la funcion }
// Funcion flecha con 1 solo param (no requiere parentesis en los parametros)
param1 => { //cuerpo de la funcion }
// Funcion flecha con una sola linea como retorno (no tiene cuerpo {})
(param1, param2, paramN) => // result
// Funcion flecha con 1 solo param y una sola linea como retorno (no tiene ni parantesis ni cuerpo)
param1 => //result
- Tablas de verdad y tipos de operadores.
- Valor por defecto de una variable.
- Cortocircuito ?.
- Paso por referencia y valor.
- Diferencia entre map y forEach.
- Tipos de funciones en JS.
Es un paradigma de programación centrado en:
- Plantillas base (clases). => Auto
- Objetos, son elementos concretos de una clase.=> mazda, tsuru
- Atributos/Propiedades: Son las caracteristicas de los objetos. => color, dimensiones, modelo
- Métodos/Funciones: Son las acciones puede realizar un objeto. => arranca(), frena().
const pikachu = {
name: 'pikachu',
height: 90
camina: function() {
console.log('C-A-M-I-N-A-R');
}
}
const pikachu = new Object();
pikachu.name: 'pikachu',
pikachu.height: 90
function createPokemon(name, height) {
const auto = {
name: name,
height: height,
}
return auto;
}
const pikachu = createPokemon('pikachu', 90);
function createPokemon(name, height) {
this.name: name,
this.height: height,
}
const pikachu = new createPokemon('pikachu', 90);
function Pokemon(name, height) {
const auto = {
name: name,
height: height,
}
return auto;
}
const pikachu = createPokemon('pikachu', 90);function Pokemon(name, height) {
this.name = name;
this.height = height;
}
const pikachu = new Pokemon('pikachu', 90);
console.log(pikachu.height);
Pokemon.prototype.camina = function() {
console.log('C-A-M-I-N-A-R')
};
pikachu.camina();
class Poke {
constructor(name, type, power) {
this.name = name;
this.type = type;
this.power = power;
}
attack(bonus) {
console.log(`${this.power}`, bonus);
}
alive(points) {
if (points > 1) {
return true;
}
return false;
}
}
class FlightPoke extends Poke {
constructor(name, type, power, alas) {
super(name, type, power);
this.alas = alas;
}
flight() {
console.log('yo vuelo');
}
}
class WaterPoke extends Poke {
constructor(name, type, power, aletas) {
super(name, type, power);
this.aletas = aletas;
}
swim() {
console.log('yo nado');
}
}
const squirtle = new WaterPoke('Squirtle', 'Water', 'pulse water', 'tengo 4 aletas');
const pidgey = new FlightPoke('Pidgey', 'Flight', 'aerial ace', 'tengo 2 alas');
console.log(squirtle)
squirtle.attack(99);
squirtle.swim();
pidgey.attack(10);
pidgey.flight();
// squirtle.flight();
// La linea anterior produce un error porque squirtle no tiene ese metodo
Nota: Recuerde la exitencia de Object.create y { ...props } para generar nuevos objetos a partir de otros sin mantener la referencia.
GIT con SSH (más info aquí)
- Generar una llave ssh ssh-keygen
- Obtener y copiar la llave que genere cat ~/.ssh/id_rsa.pub
- Agregar la llave copiada en github
git add .
git commit -m "tipoCommit: mi mensaje"git push origin develop
git push/pull aliasOrigen ramaNombre
# Ejemplo
git push origin main
git pull origin develop
Es un lenguaje de marcado ligero creado por John Gruber y Aaron Swartz que trata de conseguir la máxima legibilidad y facilidad de publicación tanto en su forma de entrada como de salida, se inspira en convenciones existentes para marcar mensajes de correo electrónico usando texto plano.
Ingenieria de software => Diagramas UML, Metodologías ágiles, estándares de software.
Introducción a la lógica de programación => Lenguaje natural, diagramas de flujo, pseudocodigo, pruebas de escritorio, etc.
Matemáticas discretas y algebra boleana => Condiciones y tablas de verdad.