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)
}