Muchos lenguajes de programación necesitan que se declaren variables y definan constantes antes de usarlas.
En nuestro pseudocódigo vamos a declarar las variables de la siguiente forma:
var tipoDato nombreVariable
Ejemplos:
var entero nota
var caracter letra
var real costo
Hay que definir las constantes también:
definir nombre valor
Ejemplos:
definir PI 3.14
definir RADIO 3
definir JUGADORES 5
¿Por qué las variables y constantes deben ser declaradas y siempre al inicio ?
Para ilustrarlo mejor voy a poner un ejemplo sencillo: si nos contratan para construir una pared, el cliente SIEMPRE pregunta – ¿Y que necesita para construirla? -, en ese momento como buenos obreros debemos pensar en los recursos que usaremos para realizar nuestro tabajo (bloques, cemento, arena, herramientas, etc); no sería bueno que mientras construimos nuestra pared pidamos al cliente que compre más material porque no lo habíamos incluido en nuestra lista (el cliente se enfadaría y con mucha razón), y tampoco usamos cosas que no tenemos. Antes de desarrollar nuestro algoritmo, debemos calcular las cosas que necesitamos y entre ellas están las variables y constantes que usaremos.
Ejemplos:
1.- Nos piden que desarrollemos un programa que dado el radio calcule el perímetro de un círculo.
Solución:
El perímetro de un círculo es igual a 2*PI *radio, y como todos conocemos el valor de PI es 3.14
El algoritmo a usar será el siguiente:
inicio
// Definiendo las Constantes
definir PI 3.14
// Declarando las Variables
var real radio
var real perimetro
escribir(«Ingrese el radio del círculo«) //Solicitando el ingreso de el radio
leer(radio) //leyendo datos desde el teclado
perimetro = 2*PI*radio //Calculando el perímetro
escribir(«El perímetro es: «) //Mostrando un mensaje indicando que se mostrará el resultado
escribir(perimetro) //Mostrando el resultado
fin
2.- Nos piden que desarrollemos un programa que proporcionándole el la longitud de un lado calcule el volúmen de un cubo.
Solución:
El volúmen de un cubo es igual al lado al cubo lo que es equivalente a lado*lado*lado.
El algoritmo a usar será el siguiente:
inicio
// Declarando las Variables
var real lado
var real volumen
escribir(«Ingrese la longitud del lado del cubo«) //Solicitando el ingreso de datos
leer(lado) //leyendo datos desde el teclado
volumen = lado*lado*lado //Calculando el volúmen
escribir(«El volúmen es: «) //Mostrando un mensaje indicando que se mostrará el resultado
escribir(volumen) //Mostrando el resultado
fin
Los comentarios son áreas del código que el desarrollador inserta para hacerlo más inteligible pero que el compilador no tomará en cuenta al momento de generar código de máquina, dando la libertad al desarrollador de escribir lo que quiera en las áreas del código establecidas como comentarios.
Usaremos el símbolo “//” (doble slash) para establecer áreas de comentarios, todo lo que se escriba después de este símbolo en la línea no será tomado en cuenta al momento de compilar nuestro código fuente. También podemos escribir comentarios entre los símbolos “/*” y “*/” con el fin de usar varias líneas para los mismos.
Ejemplos:
/* Este algoritmo pide un número y muestra en pantalla la mitad
Autor: Leo
Fecha de creación: 8/01/2009 */
inicio
escribir(“Ingrese un número”) //solicitando ingreso por teclado
leer(A) //leyendo datos ingresados por teclado
escribir(A/2) //mostrando la mitad del número ingresado
fin
Los comentarios son muy útiles para los desarrolladores ya que en a veces hay que revisar código escrito por otras personas y generalmente es dificultoso entender lo que pensó aquella persona al momento de escribir la instrucción, además se puede especificar datos importantes como autor, fecha de creación, licencia y términos de uso, etc.
Los operadores son símbolos que nos permiten realizar diferentes operaciones en un programa tales como suma, resta, división, etc.
Operadores aritméticos
En una división de enteros siempre obtenemos un cociente entero y un residuo entero, el operador resto realiza la división y devuelve el residuo de la misma. Si el resultado de a%b es igual a cero, entonces a es múltiplo de b.
Ejemplos:
28 % 6 -> el resto de 28 dividido para 6 es 4
23 % 10 -> el resto de 23 dividido para 10 es 3
30 % 3 -> el resto de 30 dividido para 3 es cero
Operadores de asignación
Un operador de asignación es aquel que modifica el valor de una variable.
Igualdad =
Este operador asigna el valor de una expresión a una variable, es decir, reemplaza el valor almacenado en la variable por otro.
Ejemplos:
S = 19 -> Cambia el valor de S a 19
A = 30 + 15 -> Realiza la operación “30+15” y asigna el resultado a “A”
Q = S + A -> Realiza la operación “S + A” y asigna el resultado a “Q”
A = A + 1 -> Realiza la operación “A+1” y asigna el resultado a “A”
Operadores incrementales
Aumenta en uno el valor de una variable.
Ejemplos:
S++ -> Le suma uno al valor de S
Disminuye en uno el valor de una variable.
Ejemplos:
S— -> Le resta uno al valor de S
Operadores Relacionales
Son aquellos operadores binarios que relacionan una expresión a un valor lógico verdadero o falso.
Ejemplos:
A == 10
B >= 15
D%10 != 0
Operadores lógicos
Son aquellos operadores binarios que permiten combinar resultados de otras expresiones relacionales.
Ejemplos:
A<2&&X!=0 si A es menor que 2 y X es diferente que 0, entonces la expresión es verdadera
B>3||Q>0 si B es mayor que 3 o Q es mayor que 0, entonces la expresión es veradera
!(C>X) si C es mayor que X, entonces la expresión es falsa ya que el operador NOT invierte el valor de la expresión.
En el mundo de la programación se usan valores que no deben variar durante la ejecución de un programa. A estos valores se les conoce como constantes. También existen valores que deben cambiar a lo largo de la ejecución del programa; estos valores son conocidos como variables.
Constantes
Una constante es una partida de datos que permanecen sin cambios en el programa (durante el desarrollo y ejecución).
Ejemplos:
3.1416 (valor de pi, este valor no debe variar)
2000 (año en que según Nostradamus se acabaría el mundo XD)
‘a’ (primera letra del alfabeto)
“ESPOL” (nombre de mi querida universidad)
Variables
Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el desarrollo y ejecución).
Los diferentes tipos de variables dependen del lenguaje de programación, por lo general estas suelen ser enteras, reales, carácter, lógicas y de cadena.
Tanto las variables como las constantes tienen un nombre o identificador generalmente conformado por caracteres alfanuméricos (ciertos lenguajes de programación admiten el carácter de subrayado ‘_’ como válido en los identificadores), y el primero de éstos debe ser una letra.
Ejemplos:
variable1
numerador
primer_jugador
Por estética y comodidad durante el desarrollo del algoritmo se suele usar palabras en MAYUSCULAS para las constantes y en minúsculas para las variables. Si se desea usar varias palabras como nombre para una variable, éstas deben estar unidas, la primera palabra en minúsculas y el primer carácter de la segunda en mayúscula (así se ve más bonito XD).
Ejemplos:
miVariable
MICONSTANTE
primerJugador
El propósito general de toda computadora es manejar datos. Un dato es una colección de resultados compuesta por caracteres, números y símbolos almacenados en el procesador de manera que puedan ser procesados.
Los tipos de datos simples son:
El tipo de dato numérico es el conjunto de los valores numéricos.
Se pueden representar de dos formas:
Enteros (números completos que no tienen componentes fraccionarios)
Ejemplos: 16 3868 -1256 0
Reales (consta de una parte entera y una parte decimal)
Ejemplos: -123.0 0.1 4.9827 -0.002
En aplicaciones científicas el se requiere una representación especial para los números muy grandes como 9846000000000000000 o muy pequeños como 0,000000000023. Un computador sólo puede representar un número fijo de dígitos, el cual varía de computador a otro, siendo ocho dígitos un número típico. Este límite provocaría muchos problemas para representar y almacenar números muy grandes o muy pequeños.
Para evitar estos inconvenientes se usa notación científica que consiste en expresar un número muy grande o muy pequeño en forma de potencias de 10.
Por ejemplo:
El número 9846000000000000000 es equivalente a 9,846 x 1018, y el número 0,000000000023 es equivalente a 2,3 x 10-11.
La representación en coma flotante es una generalización de notación científica. En estas expresiones se considera la mantisa (parte decimal) y el exponente (parte potencial) el de la potencia de diez.
Ejemplo:
2,3 x 10-11
2,3 (mantisa) -11 (exponente)
Lógicos (sólo puede tomar uno de dos valores)
Verdadero (true) Falso (false)
Carácter (conjunto finito y ordenado de caracteres que la computadora reconoce)
Los caracteres reconocidos por los diferentes computadores por lo general no son estándar, pero la mayoría reconoce los tipos los siguientes tipos de caracteres:
Caracteres Alfabéticos: {A, B, C, … , Z} {a, b, c, … , z}
Caracteres Numéricos: {0, 1, 2, … , 9}
Caracteres Especiales: {+, -, *, /, ^, ., ;, <, >, $, …}
Ejemplos: ‘a’ ‘A’ ‘0’ ‘_’
Cadenas de caracteres (sucesión de caracteres o conjunto ordenado de caracteres)
Por lo general se encuentran delimitados por comillas dobles “” (algunos lenguajes de programación usan comillas simples ‘’), la longitud de una cadena de caracteres es el número de los mismos comprendidos entre los separadores.
Ejemplos: “Hola, ¿que tal?” “Me gusta mucho programar :- )”
Pseudocódigo
El pseudocódigo es una herramienta de programación en que las palabras se escriben de manera similar en un idioma local (generalmente en inglés) que facilitan tanto la escritura como la lectura de programas.
En este curso vamos a usar un pseudocódigo que nos permita familiarizarnos con otros lenguajes de programación, además manejaremos instrucciones en español y de tipos de control secuencial, de selección y de repetición.
Instrucciones a utilizar:
inicio –> Indica el inicio de un algoritmo.
fin –> Indica el final de un algoritmo.
Estructuras secuenciales:
Son aquellas en las que una instrucción sigue a otra en secuencia hasta el final del proceso.
Estructuras selectivas
Las estructuras selectivas evalúan una condición y de acuerdo al resultado de la misma efectúa una acción u otra.
Estructuras repetitivas
Las estructuras repetitivas realizan acciones un número de veces determinado por condiciones o asignado por el desarrollador.
En el capítulo anterior analizamos lo que es un programa y las fases que requiere el desarrollo del mismo. Ahora nos centraremos en el diseño de algoritmos, previamente vimos un par de ejemplos, ahora profundizaremos en este tema.
¿Qué es un algoritmo?
Un algoritmo se puede definir como el camino que hay que seguir para llegar a la solución del problema planteado. El diseño de este camino o procedimiento debe ser siempre previo a la realización de del programa que lo ejecute.
El método algorítmico se basa en descomponer el programa en sucesivas secuencias de forma que al ir recogiéndolas nos permite llegar a la solución final.
Aquí algunos ejemplos:
1. Una máquina está construida para suelos necesita ser programada para delimitar un terreno de 20 metros de largo y 15 de ancho. Escriba un algoritmo que realice esta tarea.
La máquina acepta las siguientes instrucciones:
Subir brocha Sube la brocha para que ésta no pinte el suelo.
Bajar brocha. Baja la brocha para que ésta pinte el suelo.
Avanzar <número de metros> Mueve la máquina la cantidad de metros indicada.
Girar <ángulo> Gira la dirección de la máquina.
La máquina se encuentra inicialmente con la brocha subida y se encuentra en una de las esquinas del terreno a marcar.
Solución:
INICIO
Bajar brocha
Avanzar 15
Girar 90
Avanzar 20
Girar 90
Avanzar 15
Girar 90
Avanzar 20
Girar 90
FIN
Existe un programa llamado KTurtle para Linux (LOGO para Windows) y sirve para practicar con instrucciones sencillas como las que vimos en este ejercicio, es una herramienta muy útil para practicar con algoritmos. Si te animas a hacer estas figuras en KTurtle deja el algoritmo como comentario.
2. Una pareja de esposos con 2 hijas y 2 hijos, un policía y un ladrón necesitan cruzar el río y para ello tienen una balsa, escriba el algoritmo necesario para que todos puedan cruzar el río.
Las reglas son las siguientes:
• 1. Solo hasta 2 personas en la balsa pueden cruzar al mismo tiempo
• 2. El Padre no puede estar con ninguna de las hijas si la Madre no esta presente
• 3. La Madre no puede estar con ninguno de los hijos si el Padre no esta presente
• 4. El Ladrón no puede estar con ningún miembro de familia sin la presencia del Policía
• 5. Solo el Padre, la Madre y el Policía saben como funciona la balsa
Si quieren probar aquí les dejo un pps con el juego XD
Solución:
INICIO
El policía y el ladrón cruzan el río
El policía regresa
El policía y un niño cruzan el río
El policía y el ladrón regresan
El padre y el otro niño cruzan el río
El padre regresa
El padre y la madre cruzan el río
La madre regresa
El policía y el ladrón cruzan el río
La madre y una niña cruzan el río
El policía y el ladrón regresan
El policía y la niña cruzan el río
El policía regresa
El policía y el ladrón cruzan el río
FIN
Un programa de computadora es un conjunto de instrucciones –órdenes dadas a la máquina- que producirán la ejecución de una determinada tarea. En pocas palabras, un programa es un medio para conseguir un fin. El proceso de programación es básicamente un proceso de solución de problemas.
El desarrollo de un programa requiere las siguientes fases:
Definición y análisis del problema
Diseño de algoritmos
Codificación del programa
Depuración y verificación del programa
Documentación
Mantenimiento
El programador debe establecer el conjunto de especificaciones que debe contener el programa: entrada, salida y algoritmos de resolución, donde estos últimos incluirán las técnicas para obtener las salidas a partir de las entradas.
Para ilustrarlo mejor:
Problema: Tengo mucha sed y decido ir a comprar usa cerveza a una barra. Una vez estando en la barra me propongo comprarla y surgen las interrogantes: ¿Qué necesito? ¿Qué pasos debo seguir para llevar a cabo mi objetivo? ¿Qué voy a recibir?
Objetivo: Obtener una cerveza comprándola en una barra.
Entradas: Para comprar una cerveza necesito dinero, y un vendedor.
Salidas: Cerveza.
Solución del problema:
INICIO
Me acerco al vendedor
Le solicito al vendedor una cerveza
El vendedor me solicita dinero
Le entrego el dinero al vendedor
El vendedor me entrega la cerveza
FIN
Ahora quiero beberme la cerveza
Objetivo: calmar mi sed bebiendo una cerveza.
Entradas: una cerveza (asumamos que es una botella con cerveza), una boca y una mano.
Salida: ninguna
Solución del problema:
INICIO
Tomo la cerveza con la mano
Acerco la cerveza a la boca
Abro la boca
Inclino la botella dejando que el líquido entre en la boca
FIN
Aunque parezca tonto, la programación es así, se necesita tener en cuenta hasta el más mínimo detalle.
Procesador
Es un dispositivo que ejecuta las instrucciones del programa, dirige y controla el proceso de información realizado por la computadora.
El procesador consta de dos componentes: unidad de control (UC) y la unidad aritmético-lógica (UAL).
La unidad de control (UC) coordina las actividades de los computadores y determina que operaciones se deben realizar y en qué orden.
La unidad aritmético-lógica realiza operaciones aritméticas y lógicas, tales como la suma, resta, multiplicación, división y comparaciones. Los datos en la memoria central se pueden leer o escribir por el procesador.
La Memoria
La memoria almacena la información en un formato consistente. Generalmente tanto las instrucciones como los datos se almacenan en la memoria en áreas distintas y separadas.
Dirección de memoria
Una dirección de memoria es un conjunto de coordenadas físicas para identificar un dato contenido en la memoria. Toda la información alojada en la memoria principal del ordenador recibe una dirección, la cual debe ser conocida por el usuario para poder tener acceso a la información.
Para ilustrarlo mejor
Podemos realizar una analogía de la memoria con un gabinete de cajones o casilleros enumerados, para poder almacenar objetos en este gabinete necesitamos reservar uno o más casilleros de acuerdo al volumen de lo que necesitemos almacenar; y para poder acceder a estos casilleros necesitamos conocer su ubicación (por lo general un número único por casillero en el gabinete) la cual se le entrega al usuario al momento de la reserva.