Estructura de un programa
Computación es cálculo y presentación
Veamos la estructura básica de un programa que calcula el área de un rectángulo:
// Calculate the area of a rectangle
base = 20
height = 10
area = base * height
console.log('Area', area)
Definiciones, Cálculos, Condiciones y Resultados
Ahora profundicemos en sus componentes universales:
// Definitions
const salary = 2000
const extraHours = 0
const extraRate = 25
const bonus = 100
const taxes = 200
const insurance = 150
var extraPay = 0
// Conditions
if(extraHours > 0){
extraPay = extraHours * extraRate
}
// Calculations
const additions = extraPay + bonus
const deductions = taxes + insurance
const netpay = salary + additions - deductions
// Results
console.log('Salary', salary)
console.log('Additions', additions)
console.log('Deductions', deductions)
console.log('Net Pay', netpay)
Estructuras de datos y ciclos repetitivos:
Datos mas complejos son representados en listas (Arrays) y objetos (JSON: JavaScript Object Notation). Estas listas pueden ser procesadas a través de un ciclo de repetición (loop):
// Data
const list = [
{
name: 'John Doe',
salary: 2000,
extraHours: 0,
extraRate: 25,
bonus: 100,
taxes: 200,
insurance: 150
},
{
name: 'Jane Doe',
salary: 1725,
extraHours: 3,
extraRate: 25,
bonus: 0,
taxes: 170,
insurance: 120
}
]
// Loops
for(item of employees){
let extraPay = 0
// Conditions
if(item.extraHours>0){
extraPay = item.extraHours * item.extraRate
}
const additions = extraPay + item.bonus
const deductions = item.taxes + item.insurance
const netpay = item.salary + additions - deductions
// Results
console.log('- Employee', item.name)
console.log('Salary', item.salary)
console.log('Additions', additions)
console.log('Deductions', deductions)
console.log('Net Pay', netpay)
console.log() // Empty line
}
Funciones
La mas importante pieza del rompecabezas para simplificación y reuso:
// Data
const employees = [
{
name: 'John Doe',
salary: 2000,
extraHours: 0,
extraRate: 25,
bonus: 100,
taxes: 200,
insurance: 150
},
{
name: 'Jane Doe',
salary: 1725,
extraHours: 3,
extraRate: 25,
bonus: 0,
taxes: 170,
insurance: 120
}
]
// Loops
for(item of employees){
const result = calculateNetPay(item)
console.log(item.name, result)
}
// Functions
function calculateNetPay(item){
let extraPay = 0
// Conditions
if(item.extraHours>0){
extraPay = item.extraHours * item.extraRate
}
const additions = extraPay + item.bonus
const deductions = item.taxes + item.insurance
const netpay = item.salary + additions - deductions
return { additions, deductions, netpay }
}
Simplicidad
Una vez entendido los conceptos básicos, empieza el proceso de simplificación:
const db = require('database') // Database module
const payroll = require('payroll') // Payroll module
const employees = db.getEmployees() // Query the database
// Process the data
for(item of employees){
const result = payroll.calculateNetPay(item)
console.log(item.name, result)
}