550 likes | 933 Views
INTRODUCCIÓN A LA PROGRAMACIÓN. CONCEPTOS BÁSICOS EN LA SOLUCIÓN DE PROBLEMAS. Elaboración de un algoritmo. obtener una solución aceptable al problema propuesto. AL-KHOWÂRIZMÎ Y EUCLIDES –EL GRAN MATEMÁTICO GRIEGO DEL SIGLO IV ANTES DE CRISTO.
E N D
INTRODUCCIÓN A LA PROGRAMACIÓN
CONCEPTOS BÁSICOS EN LA SOLUCIÓN DE PROBLEMAS Elaboración de un algoritmo obtener una solución aceptable al problema propuesto
AL-KHOWÂRIZMÎ Y EUCLIDES –EL GRAN MATEMÁTICO GRIEGO DEL SIGLO IV ANTES DE CRISTO • MOHAMMED AL-KHOWÂRIZMÎ, MATEMÁTICO PERSA QUE VIVIÓ EN EL SIGLO IX
FORMAS DE ESCRIBIR UN ALGORITMO Ventajas • Fácil hacer cambios si nos equivocamos en la lógica del programa. • Es independiente del lenguaje de programación que vaya a usarse. • Fácilmente traducible a muchos lenguajes de programación. Palabras “clave”, que usan reglas muy sencillas que describen el algoritmo Representación gráfica de un algoritmo
TIPOS DE ALGORITMO ALGORITMO
EJEMPLO DE UN ANALISIS DE ALGORITMO CUANTITATIVO Libras = (cantidad de kilos) x 2.2
EJEMPLO. Suponga que un familiar suyo estuvo de viaje, visitó Japón, y le trajo de presente un robot, que solamente atiende dos tipos de ordenes: avanzar X centímetros, girar X grados. Una secuencia de ellas es posible dárselas al robot, para que recorra un camino determinado. Si queremos indicarle al robot (la carita feliz de color turquesa) se desplace hasta donde está el objetivo debemos de algún modo ”decirle” lo que debe hacer, si suponemos que cada rectángulo de la cuadricula tiene diez centímetros de lado, las ordenes le daríamos a nuestro alegre amigo para alcanzar el objetivo podrían ser algo como:
1 avanzar 70cm. 2 girar 90 grados a la izquierda. 3 avanzar 250cm. 4 girar 90 grados a la izquierda. 5 avanzar 80 cm.
TIPOS DE DATOS Un dato es la expresión general que describe los objetos con los cuales opera un computador • Simples (sin estructura) y • compuestos (estructurados).
TIPOS DE DATO CARACTER El tipo de dato caracter representa un conjunto finito de caracteres que la computadora reconoce gracias a que cada elemento del conjunto tiene una equivalencia en código ASCII desde el 0 hasta el 255. • Los dígitos del 0 al 9 • Los caracteres alfabéticos de la a-A a la z-Z. • Gran variedad de caracteres especiales como +, * , /, $, @, &. La cadena de caracteres o String, es una sucesión ordenada de datos de tipo de caracter delimitados por una comilla simple o apóstrofe tanto al inicio como al final de la sucesión. Para conocer cual es la longitud de una cadena de caracteres, basta con contar el número de caracteres existentes entre los limitadores. • Algunos ejemplos de cadenas de caracteres son: ´Hola Mundo´, ´09558348´, ´17 de agosto de 1973´. (American Standard CodeforInformationInterchange) es un código internacional de 8 bits que permite que el computador interprete letras, dígitos, signos de puntuación u otros símbolos que se le proporcionen. Puede definir hasta 256 símbolos.
TIPOS DE DATOS LOGICO El tipo de dato lógico, también conocido como tipo de dato booleano representa el conjunto formado por dos posibles valores: Verdadero o Falso. • El tipo de dato lógico es muy útil cuando se evalúan condiciones dentro de un algoritmo o dentro de un programa. (3>2)= 1 = verdadero (7>9)= 0 = falso Por proceder de la lógica booleana o aristotélica.
TIPOS DE DATOS APUNTADOR El tipo de dato apuntador consiste en una representación abstracta de lo que se conoce como direcciones de memoria de un computador. Es importante señalar que no es realmente una dirección física de memoria, sino que al contrario simplemente señala o apunta hacia una dirección en la memoria del computador. El tipo de dato apuntador es muy útil en la creación y procesamiento con estructuras de datos de tipo dinámico. px = &x; //Al apuntador px se le asignó la dirección de la variable x pc = &c; //Al apuntador pc se le asignó la dirección de la variable c Se le denomina así a las estructuras de datos que van asignándose memoria de manera automática conforme lo necesitan en el transcurso de la ejecución de un programa.
VARIABLE Variable es un objeto cuyo valor puede o no cambiar durante el desarrollo de un algoritmo, o ejecución de un programa. Toda variable declarada en un programa de computador ocupará para sus posibles valores una porción de memoria que deberá ser asignada de manera explícita el momento de su definición. Luego de realizada la asignación de memoria el programador puede estar seguro de que ninguna otra variable ocupará el mismo, ya sea que pertenezca o no al mismo programa.
COMPONENTES DE UNA VARIABLE Toda variable utilizada en un algoritmo o en un programa de computación se compone de tres partes esenciales: • Nombre • Tipo • Valor
NOMBRE DE UNA VARIABLE El nombre de una variable, también conocido como identificador, es el conjunto de caracteres permitidos, letras y números, con los cuales se denomina a una variable dentro de un algoritmo o de un programa. debe cumplir con las siguientes reglas: • Debe comenzar con una letra • Puede contener letras, números o el caracter subrayado ( _ ) • No debe coincidir con el nombre de alguna palabra clave del lenguaje de programación utilizado. • La máxima longitud de un nombre depende del compilador[1] que utilice la herramienta de programación que esté siendo utilizada, por ejemplo en algunas versiones de PASCAL el límite es de 80 caracteres, en C no tiene un número máximo sin embargo solo son significativos para ciertas versiones de compiladores los primeros 31 caracteres, etc. • Es preferible utilizar nombres más descriptivos, con el fin de que el lector del programa o del pseudocódigo identifique claramente el propósito de una variable.
EJEMPLOS DE VARIABLE Nombres correctos de variables son: contador,prueba23, BALANCE_TOTAL, num2, cosas_del_tiempo. nombres incorrectos de variables son: 1contador, Prueba23$, BALANCE...TOTAL, personal de escuela, 234, J/85.
EL TIPO DE UNA VARIABLE El tipo de una variable permite describir el uso que se le dará a la misma dentro de un algoritmo o de un programa. Dependiendo del lenguaje de programación en el cual se implementará el algoritmo, existen diferentes tipos de variables tales como enteras, flotantes o reales, de caracter, lógicas o booleanas, de cadena. Es importante anotar que tanto en los lenguajes de programación como en el pseudocódigo se deben considerar las siguientes reglas sobre el tipo de una variable: • Si se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de tipo. • Cuando las variables son utilizadas en expresiones deben ser todas del mismo tipo[1] A manera de ayuda en el cumplimiento de esta regla se pueden combinar variables de distintos tipos siempre y cuando se incluya una operación de “casting” o conversión entre tipos. Esta operación se tratará con detalle más adelante.
EL VALOR DE UNA VARIABLE • El valor de una variable es el contenido que tiene asociado en un determinado momento de la ejecución de un programa o desarrollo de un algoritmo. • El valor de una variable depende del tipo de la misma, así por ejemplo una variable de un tipo entero podrá almacenar solo valores enteros mientras que una variable de tipo booleano podrá almacenar los valores VERDADERO o FALSO.
DECLARACIONES DE VARIABLES • Las variables se suelen declarar al principio del programa, y esta será la norma que vamos a usar; toda variable utilizada, debe haber sido previamente declarada. Para ello, escribiremos algo como esto: • i,j,k; ENTERO; • x,y,z: REAL; • a,b,c: CARACTER; • Esto querrá decir que las variables i, j, k serán enteras (con signo), que las variables x, y, z serán reales (con signo) y que las variables a, b, c serán caracteres. • Al escribir la declaración de variables de esta forma, si alguna se nos ha olvidado, es muy fácil incluirla.
¿COMO PONGO VALORES A LAS VARIABLES Una variable, en el momento que la declaramos, está vacía, hueca, sin vida, sentido ni VALOR. Y hasta que dicha variable no tenga valor, lo mejor será no hacer cosas con ella. Entonces, aquí viene la pregunta: ¿y cómo asigno en mi variable un 7? ¿Puedo asignar un 23? Para poder asignar cosas en las variables, lo que hacemos es asignarles un valor, es decir, "Pepe es una variable de tipo entero. Si a Pepe le asigno 14, a partir de ahora, poner Pepe es tanto como poner 14". Para ello, nosotros vamos a usar un símbolo, una flechita hacia la izquierda. Cuando queramos hacer asignaciones, haremos esto: Pepe 14 (asignamos un entero) Carolina -9.65 (asignamos un real) Juan 'a' (asignamos un caracter)
CONSTANTE Se denomina constante a todo valor que no debe cambiar durante el desarrollo de un algoritmo o durante la ejecución de un programa. Al igual que las variables, las constantes también poseen una estructura, la misma que está compuesta por un identificador (nombre de la constante) y un valor (contenido de la constante). En lo que se refiere al tipo de dato que maneja una constante se debe decir que es implícito y tiene correspondencia directa con el valor que se le asigna el momento de la declaración. Respecto a las reglas que se aplican a los identificadores de las variables, tienen la misma validez para el caso de las constantes.
EXPRESIONES ARITMÉTICAS Una expresión aritmética es una agrupación válida de operandos (variables y/o constantes) que se encuentran relacionados entre sí por medio de operadores aritméticos. Cada operador aritmético tiene correspondencia directa con una operación aritmética, así por ejemplo operadores de suma, resta, exponenciación. Las variables y constantes que constituyen los operandos de una expresión, deben ser del mismo tipo de dato, o por lo menos de tipos de datos compatibles entre los cuales puede haber una conversión de tipos. El valor que toma una expresión se suele denominar resultado de la expresión y su tipo de dato depende del tipo que tengan los operandos. A continuación se listan los operadores aritméticos disponibles así como los tipos de datos de sus operandos resultado. También llamada “casting”, es la conversión de enteros a reales y de reales a enteros, esta operación depende de la versión del compilador con el que se trabaje.
PRECEDENCIA DE OPERADORES • Si la expresión aritmética contiene más de un operador, el computador debe identificar que operación debe realizar primero. Las reglas que permiten realizar esta identificación se denominan reglas de precedencia y son las siguientes: • Las operaciones que están encerradas entre paréntesis se evaluarán primero. Si existen paréntesis anidados estos se resolverán de adentro hacia fuera. • Ante la ausencia de paréntesis el orden en el que deberán ejecutarse las operaciones es el siguiente: • Exponenciaciones • Multiplicaciones y Divisiones, Divisiones enteras (div) y Resto (mod) • Sumas y Restas • Si existen operadores con la misma prioridad, estos deben evaluarse de izquierda a derecha
EJEMPLO DE EXPRESIONES ARITMÉTICAS Y SU EVALUACION 3 + 6 * 14 Primero se ejecuta la multiplicación entre 6 y 14, obteniéndose la expresión 3 + 84 que se suman resultando 87. – 4 * 7 + 2 ^ 3 / 4 – 5 + 2 Primero se efectúa la exponenciación entre 2 y 3, obteniéndose la expresión: – 4 * 7 + 8 / 4 – 5 + 2. Luego se realiza la multiplicación entre – 4 y 7, obteniéndose la expresión: – 28 + 8 / 4 – 5 + 2 Luego se realiza la división entre 8 y 4, obteniéndose la expresión: – 28 + 2 – 5 + 2 Luego se efectúa la suma entre – 28 y 2, obteniéndose la expresión: -26 – 5 + 2 Luego se realiza la resta entre – 26 y -5, obteniéndose la expresión: – 31 + 2 Finalmente se realiza la suma entre – 31 y 2, obteniéndose –29
EXPRESIONES RELACIONALES (LÓGICAS O BOOLEANAS) Una expresión relacional es una agrupación válida de variables lógicas y/o constantes lógicas que se encuentran relacionados entre si por medio de operadores lógicos y operadores relacionales. Una expresión lógica siempre será evaluada a Verdadera o Falsa. • OPERADORES LÓGICOS Los operadores lógicos básicos se resumen en el siguiente cuadro: Las definiciones de las operaciones lógicas y sus respectivos operadores se resumen en una tabla de valores denominadas tablas de verdad.
OPERADORES RELACIONALES Los operadores relacionales son aquellos que permiten representar las condiciones a considerar dentro del desarrollo de un algoritmo o en la ejecución de un programa. Entre ellos se tiene a los siguientes: Todos los operadores relacionales tienen la misma prioridad, así que se los evalúa siempre de izquierda a derecha, excepto cuando se agrupan con paréntesis, en cuyo caso se resolverían primero las expresiones internas antes que las externas.
OPERADORES RELACIONALES • (1>0) and (3=3) • Primero se evalúa la expresión 1 > 0, obteniéndose la expresión Verdadero and (3=3) • Luego se evalúa la expresión 3=3, obteniéndose la expresión Verdadero and Verdadero • Finalmente se evalúa la expresión Verdadero and Verdadero, obteniéndose como resultado Verdadero.
ESTRUCTURA DE ASIGNACIÓN Son estructuras a través de las cuales se le asigna un valor (constante o variable) o el resultado de una operación (expresión) a una variable. En pseudocódigo la asignación se suele representar con el símbolo u operador . La operación de asignación dentro de los lenguajes de programación es conocida como “instrucción o sentencia de asignación”. Las estructuras o enunciados de asignación son de gran utilidad cuando se desea definir el valor que tomará una constante o cuando deseamos establecer el valor de una variable. La estructura de asignación tiene el siguiente formato: Variable de destino expresión Esto significa que a la variable se le puede asignar valores provenientes de la evaluación de una expresión.
EJEMPLO • dias_semana 7 • respuesta temp_fahrenheit • kilos 2.2* libras • temp_fahrenheit (9/5) * temp_celcius + 32 • Como se observa, la expresión puede tener solo números (expresiones matemáticas) , o solo variables, o una combinación de todo.
ASIGNACIÓN ARITMÉTICA • Se trata de una asignación aritmética cuando la variable de destino de la parte izquierda de la estructura es de tipo numérico y se cumple con una de las siguientes tres condiciones: • La expresión de la parte derecha de la asignación tiene un resultado de tipo numérico. • La variable origen de la parte derecha de la asignación es tipo numérico. • La constante de la parte derecha de la asignación es de tipo numérico.
ASIGNACIÓN LÓGICA • Se trata de una asignación lógica cuando la variable de destino de la parte izquierda de la estructura es de tipo lógico y se cumple con una de las siguientes tres condiciones: • La expresión de la parte derecha de la asignación tiene un resultado de tipo lógico. • La variable origen de la parte derecha de la asignación es de tipo lógica. • La constante de la parte derecha de la asignación es de tipo lógica.
ASIGNACIÓN DE CARACTER • Se trata de una asignación de caracteres cuando la variable de destino de la parte izquierda de la estructura es de tipo caracter y se cumple con una de las siguientes tres condiciones: • La expresión de la parte derecha de la asignación tiene un resultado de tipo caracter. • La variable origen de la parte derecha de la asignación es de tipo carácter. • La constante de la parte derecha de la asignación es de tipo caracter.
FUNCIONES INTERNAS, INCORPORADAS O ESTÁNDAR Los operadores que se utilizan para efectuar operaciones de tipo complejo tales como: raíz cuadrada, valor absoluto, redondeo, etc., se denominan funciones internas, estándar o incorporadas y pueden recibir como argumentos expresiones, variables o constantes de tipo real o entero. Se denomina argumento al valor que se le pasa a una función con el fin de que dicha función pueda cumplir con su objetivo.
ESTRUCTURA DE UN PROGRAMA PSEUDOCÓDIGO • Un programa de computación es un conjunto de instrucciones que le indica al computador como llevar a cabo una determinada tarea. Sin importar qué lenguaje de programación se esté utilizando, un programa tiene ciertas secciones o partes. • Un programa en Pseudocódigo posee las siguientes partes: • 2. Sección de Cabecera o Encabezado, donde se puede colocar un comentario opcional sobre el propósito del algoritmo. • 3. Sección Declarativa, donde se declaran las variables y constantes que intervendrán en el algoritmo. • Sección Ejecutable, donde se expresa la lógica del algoritmo por medio de sentencias que serán ejecutadas de acuerdo a las estructuras de control propias del pseudocódigo.
DECLARACIÓN DE VARIABLES EN PSEUDOCÓDIGO • Si un algoritmo utiliza dentro de su desarrollo algunas variables, estas deben ser declaradas antes de poder ser referenciadas. • La declaración de variables en un bloque de pseudocódigo, comienza con la palabra reservada var a continuación de la cual se coloca la lista de variables a utilizarse en el algoritmo con el siguiente formato: uno o más identificadores de variables, un espacio en blanco (opcional), el signo de dos puntos (:), el tipo de dato de la variable o variables, un espacio en blanco y el signo de punto y coma (;) que indica el fin de una línea; así por ejemplo: • . Programa SUMA; var contador, numero, sumatoria: Entero; raiz : real; carácter : Char;
DECLARACIÓN DE CONSTANTES EN PSEUDOCÓDIGO Para que un algoritmo pueda utilizar una constante dentro de su desarrollo, ésta debe ser definida con anterioridad en la sección de declaraciones del pseudocódigo. La declaración de constantes en un bloque de pseudocódigo comienza con la palabra reservada const a continuación de la cual se coloca la lista de constantes a ser referenciadas en el algoritmo con el siguiente formato: el identificador de la constante, un espacio en blanco (opcional), el signo igual (=), un espacio en blanco (opcional), el valor de la constante y el signo de punto y coma (;) que indica el fin de una línea, así por ejemplo: const dias_semana =7; horas_dia = 24; msg_inicial = ‘Hola Mundo’;
DECLARACIÓN DE VARIABLES EN PSEUDOCÓDIGO Para que un algoritmo pueda utilizar una constante dentro de su desarrollo, ésta debe ser definida con anterioridad en la sección de declaraciones del pseudocódigo. La declaración de constantes en un bloque de pseudocódigo comienza con la palabra reservada const a continuación de la cual se coloca la lista de constantes a ser referenciadas en el algoritmo con el siguiente formato: el identificador de la constante, un espacio en blanco (opcional), el signo igual (=), un espacio en blanco (opcional), el valor de la constante y el signo de punto y coma (;) que indica el fin de una línea, así por ejemplo: const dias_semana =7; horas_dia = 24; msg_inicial = ‘Hola Mundo’;
COMENTARIOS EN PSEUDOCÓDIGO En todo lenguaje de programación es importante contar con alguna regla para poder insertar líneas de comentario dentro del código fuente de un programa. Poner comentarios de lo que vamos haciendo es muy útil, sobre todo cuando llega la hora de revisar el algoritmo, si no, más de una vez nos encontraremos diciendo "uumm... ¿qué cosa hacía esto?" No cuesta nada documentar el código y nos ahorrará dolores de cabeza. Los comentarios permiten aclarar el propósito de la utilización de una instrucción determinada, así como también pueden servir para aclarar la lógica de solución que se siguió en la confección del programa. Todo esto es importante para hacer que nuestros programas sean más entendibles y sobre todo para poder dar mantenimiento a un programa sin tener que preocuparse por recordar o no la lógica del mismo. La convención que seguiremos será poner los comentarios entre llaves. Así, por ejemplo {esto será un comentario}
ESTRUCTURA DE LECTURA DE DATOS En la mayoría de las ocasiones, los programas necesitan para su ejecución, de valores que deben ser proporcionados por el usuario a través del teclado. Por lo tanto, considerando que un programa tiene su origen en un algoritmo debe existir una estructura en pseudocódigo que permita representar esa introducción de datos por medio del teclado. Dicha estructura se denomina estructura de lectura y permite representar el ingreso por teclado de los valores requeridos por el algoritmo, asignándolos inmediatamente a variables de entrada. La estructura de lectura de datos tiene el siguiente formato: Leer (variables de entrada) Variables de Entrada
Algunos lineamientos para la construcción de estructuras de lectura de datos son: • Se puede utilizar una estructura de lectura para representar el ingreso de valores para más de una variable de entrada, siempre y cuando sean del mismo tipo. De todas maneras se aconseja utilizar una estructura de lectura por cada variable de entrada con el fin de dar mayor claridad al código. • Si se va a utilizar una sola estructura de lectura para más de una variable de entrada, los identificadores de las mismas se separarán por comas. • Todas las variables de entrada que sean referenciadas por una estructura de lectura deberán hacer sido declaradas con anticipación. • Considerando las siguientes declaraciones: var a, b, c: Entero; x, y : Real Inicio Leer (a); Leer (b); Leer (c); Leer (x, y); Fin
ESTRUCTURA DE LECTURA DE DATOS El objetivo fundamental de un programa, y por ende de un algoritmo, es el de entregar al usuario la solución a un programa planteado. Dicha solución en la mayoría de los casos está formada por una serie de información que debe ser desplegada en la pantalla del computador. De esta manera similar a las operaciones de lectura de datos, las operaciones de salida de resultados también poseen una estructura en pseudocódigo que permite representar el despliegue en la pantalla de la información que se obtendrá en el desarrollo de un algoritmo, dicha estructura se denomina estructura de salida de resultados y tiene el siguiente formato: Escribir (variables y/o constantes de salida); EscribirySaltar((variables y/o constantes de salida); El diagrama de flujo de la estructura de salida es: Variables y/o Constantes de salida