Partes de un algoritmo:
Características de los algoritmos:
Características deseadas de los programas:
Diferencias entre algoritmo y los programa:
Ejemplo de algoritmo:
Cambiar rueda coche: - Aflojar tornillos - Elevar coche - Retirar tornillos - Retirar rueda dañada - Acoplar rueda nueva - Poner tornillos - Bajar coche - Apretar tornillos
Ejemplo programa:
class Hola { public static void main(String[] args) { System.out.println("Hola mundo"); } }
Podemos clasificar los lenguajes de programación atendiendo a diferentes criterios. Por ejemplo, según su nivel de abstracción tenemos los lenguajes de bajo nivel y los lenguajes de alto nivel.
Los lenguajes de bajo nivel son aquellos que están más cerca de la arquitectura hardware. Al depender de la máquina, no son portables, es decir, no se pueden ejecutar en otra máquina distinta a la que se programaron. Por contra, aprovechan al máximo las características del hardware. Dentro de este grupo están:
Ejemplo código máquina:
0010, 0000, 1001, 1001, 10001, 1110
Ejemplo código ensamblador:
ORG 8030H include T05SEG: SETB TR0 JNB uSEG,T05SEG CLR TR0 CPL uSEG MOV R1,DPL INVOKE MOV R2,DPH CJNE R2,#07H,T05SEG CJNE R1,#78H,T05SEG MOV DPTR,#0 RET
Los lenguajes de alto nivel se acercan más al lenguaje natural. Son independientes de la arquitectura del ordenador, por lo que se pueden migrar de una máquina a otra. Existen multitud de lenguajes de este tipo: Java, PHP, Python, Javascript…
Otra forma de clasificar los lenguajes es según como se ejecuten:
Hay una serie de elementos que están presentes en casi todo lenguaje de programación:
Ejercicio 1
Diseña un algoritmo para el lavado y aclarado de una máquina de lavado de coches automático. El funcionamiento de la máquina es el siguiente:
Cuando entra un coche, se encienden los rodillos de arrastre del coche y lo llevan hasta la zona de enjabonado. Allí, se ponen en marcha los rodillos de enjabonado y enjabonan el coche hasta que la máquina detecta que ya está enjabonado (la forma de detectarlo es irrelevante para el problema). A continuación, apaga los rodillos de enjabonado y lleva el coche hasta la zona de aclarado, donde repite la misma operación con el aclarado del coche. Si el cliente ha seleccionado la opción encerado (dato de entrada del algoritmo), realiza la operación de encerado de igual forma que las anteriores. Por último, el coche llega a la zona de secado, donde, una vez termine el proceso, se saca el coche y se apagan los rodillos de arrastre.
Ejercicio 2.a
Diseña un algoritmo para controlar la entrada en una discoteca. El algoritmo recibirá un DNI válido y deberá devolver como respuesta True en caso de poder entrar (la persona es mayor de 18 años) o False en caso contrario. Para saber la edad de una persona según su DNI, utiliza la función ficticia calcula_edad(DNI), la cual devolverá la edad en función del DNI pasado.
Ejercicio 2.b
Modifica el algoritmo anterior para comprobar que el DNI proporcionado es válido. Para validar el DNI seguiremos los siguientes pasos:
Resto | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Letra | T | R | W | A | G | M | Y | F | P | D | X | B | N | J | Z | S | Q | V | H | L | C | K | E |
Para saber la letra real del DNI pasado, usa la función ficticia lee_letra(DNI).
Ejercicio 2.c
Haz que la comprobación anterior sea una función aparte. Nuestro algoritmo original deberá llamar a esa función para hacer la comprobación del dni.