Cosas Elementales sobre Programación


#1

Abro este hilo para quienes tienen cero conocimiento de programación, digamos que una primera toma de contacto muy superficial

Existen varios tipos de lenguajes de programación los voy a clasificar en dos grandes grupos Bajo Nivel y Alto Nivel

Lenguajes Bajo Nivel

Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas.

Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo

El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Cnsiste en la combinación de 0’s y 1’s para formar las ordenes entendibles por el hardware de la maquina.

La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible

El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.

Las asignaturas mas difíciles en la carrera suelen ser las de la rama de Computadores donde se ve ese bendito ensamblador el cual yo odio a muerte :smiley:

Lenguajes Bajo Nivel

Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina.

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema.

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la maquina.

Lenguaje interpretado

Este tipo de lenguajes de programación, no requieren un código a ser compilado, ya que consisten en scripts que son interpretados en tiempo real por un intérprete, lo cual permite maximizar la eficiencia de los programas, en la mayoría de los casos. Entre los principales programas de este tipo que podemos encontrar, tenemos: Java, Perl, Python, Ruby, ASP, Bash, entre otros.

Por lo general, los lenguajes interpretados son de alto nivel y están orientados a objetos y eventos, lo que facilita la programación web y la programación cliente/servidor, por lo cual, actualmente son lenguajes con mucho auge en el ámbito informático.

Léxico Básico

Variables

Las variables en los lenguajes de programación siguen una lógica similar a las variables utilizadas en otros ámbitos como las matemáticas. Una variable es un elemento que se emplea para almacenar y hacer referencia a otro valor. Gracias a las variables es posible crear “programas genéricos”, es decir, programas que funcionan siempre igual independientemente de los valores concretos utilizados.

Integer: Para representar números enteros

//Javascript
var iva = 16;

//C C++
int numero;
int numero = 16; // crear e inicializar

//Java
int numero;
int numero = 16;
Integer numero = new Integer(13); // clase envoltorio Integer util cuando se utilizan colecciones como LinkedList u otras
private integer saldo; // atributo de clase privado (para acceder a el es necesario dos métodos uno de acceso get // otro para modificar set no entro en mas detalle esto es un poco avanzado para la finalidad del post)

Float: Para representar números con coma flotante ej 3.14

//javascript
var total = 234.65;

//C C++
float numero;
float numero = 16.5; // crear e inicializar

Chars Caracteres sirven para guardar caracteres
//javascript
var letraSeleccionada = ‘c’;

//c c++ son un array de caracteres creo que si pongo una imagen se ve mejor
char foo [20];

char myword[] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ };

/0 indica fin de secuencia

//Java
char[] charArray ={ ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ };
Char letra;

//String (secuencia de caracteres)

//javascript
var texto1 = “Una frase con ‘comillas simples’ dentro”;

//C++
#include
#include
using namespace std;

main()
{
string mensaje;
mensaje = “Hola”;
cout << mensaje;
}

Estos digamos que son los tipos de variables mas básicos, aunque existen mas como los boleanos,(verdadero o falso)

Estructuras de Control

IF (SI)

La estructura más utilizada en la mayoría de lenguajes de programación es la estructura if. Se emplea para tomar decisiones en función de una condición. Su definición formal es:

if(condicion) {

}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones que se encuentran dentro de {…}. Si la condición no se cumple (es decir, si su valor es false) no se ejecuta ninguna instrucción contenida en {…} y el programa continúa ejecutando el resto de instrucciones

IF-ELSE

En ocasiones, las decisiones que se deben realizar no son del tipo “si se cumple la condición, hazlo; si no se cumple, no hagas nada”. Normalmente las condiciones suelen ser del tipo “si se cumple esta condición, hazlo; si no se cumple, haz esto otro”.

Para este segundo tipo de decisiones, existe una variante de la estructura if llamada if…else. Su definición formal es la siguiente:

if(condicion) {

}
else {

}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones que se encuentran dentro del if(). Si la condición no se cumple (es decir, si su valor es false) se ejecutan todas las instrucciones contenidas en else { }.

Estructura for

Las estructuras if y if…else no son muy eficientes cuando se desea ejecutar de forma repetitiva una instrucción

La estructura for permite realizar este tipo de repeticiones (también llamadas bucles) de una forma muy sencilla. No obstante, su definición formal no es tan sencilla como la de if():

for(inicializacion; condicion; actualizacion) {

}
La idea del funcionamiento de un bucle for es la siguiente: “mientras la condición indicada se siga cumpliendo, repite la ejecución de las instrucciones definidas dentro del for. Además, después de cada repetición, actualiza el valor de las variables que se utilizan en la condición”.

La “inicialización” es la zona en la que se establece los valores iniciales de las variables que controlan la repetición.
La “condición” es el único elemento que decide si continua o se detiene la repetición.
La “actualización” es el nuevo valor que se asigna después de cada repetición a las variables que controlan la repetición.
var mensaje = “Hola, estoy dentro de un bucle”;

for(var i = 0; i < 5; i++) {
alert(mensaje);
}
La parte de la inicialización del bucle consiste en:

var i = 0;
Por tanto, en primer lugar se crea la variable i y se le asigna el valor de 0. Esta zona de inicialización solamente se tiene en consideración justo antes de comenzar a ejecutar el bucle. Las siguientes repeticiones no tienen en cuenta esta parte de inicialización.

La zona de condición del bucle es:

i < 5
Los bucles se siguen ejecutando mientras se cumplan las condiciones y se dejan de ejecutar justo después de comprobar que la condición no se cumple. En este caso, mientras la variable i valga menos de 5 el bucle se ejecuta indefinidamente.

Como la variable i se ha inicializado a un valor de 0 y la condición para salir del bucle es que i sea menor que 5, si no se modifica el valor de i de alguna forma, el bucle se repetiría indefinidamente.

Por ese motivo, es imprescindible indicar la zona de actualización, en la que se modifica el valor de las variables que controlan el bucle:

i++
En este caso, el valor de la variable i se incrementa en una unidad después de cada repetición. La zona de actualización se ejecuta después de la ejecución de las instrucciones que incluye el for.

Así, durante la ejecución de la quinta repetición el valor de i será 4. Después de la quinta ejecución, se actualiza el valor de i, que ahora valdrá 5. Como la condición es que i sea menor que 5, la condición ya no se cumple y las instrucciones del for no se ejecutan una sexta vez.

Normalmente, la variable que controla los bucles for se llama i, ya que recuerda a la palabra índice y su nombre tan corto ahorra mucho tiempo y espacio.

Estructura while

La estructura while permite crear bucles que se ejecutan ninguna o más veces, dependiendo de la condición indicada. Su definición formal es:

while(condicion) {

}

while

El funcionamiento del bucle while se resume en: “mientras se cumpla la condición indicada, repite indefinidamente las instrucciones incluidas dentro del bucle”.

Si la condición no se cumple ni siquiera la primera vez, el bucle no se ejecuta. Si la condición se cumple, se ejecutan las instrucciones una vez y se vuelve a comprobar la condición. Si se sigue cumpliendo la condición, se vuelve a ejecutar el bucle y así se continúa hasta que la condición no se cumpla.

Evidentemente, las variables que controlan la condición deben modificarse dentro del propio bucle, ya que de otra forma, la condición se cumpliría siempre y el bucle while se repetiría indefinidamente.

Estructura do…while

El bucle de tipo do…while es muy similar al bucle while, salvo que en este caso siempre se ejecutan las instrucciones del bucle al menos la primera vez. Su definición formal es:

do {

} while(condicion);
De esta forma, como la condición se comprueba después de cada repetición, la primera vez siempre se ejecutan las instrucciones del bucle. Es importante no olvidar que después del while() se debe añadir el carácter ; (al contrario de lo que sucede con el bucle while simple).

Estructura switch

La estructura if…else se puede utilizar para realizar comprobaciones múltiples y tomar decisiones complejas. Sin embargo, si todas las condiciones dependen siempre de la misma variable, el código JavaScript resultante es demasiado redundante:

if(numero == 5) {

}
else if(numero == 8) {

}
else if(numero == 20) {

}
else {

}
En estos casos, la estructura switch es la más eficiente, ya que está especialmente diseñada para manejar de forma sencilla múltiples condiciones sobre la misma variable. Su definición formal puede parecer compleja, aunque su uso es muy sencillo:

switch(variable) {
case valor_1:

break;
case valor_2:

break;

case valor_n:

break;
default:

break;
}

//En construcción