PRE-LABORATORIO 1 ESTRUCTURA SECUENCIAL La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: En Turbo Pascal: PROGRAM identificador; USES crt; CONST g=9.8; VAR i, n:integer x: real; BEGIN instrucción1; instrucción2; … readkey END. {cabecera del programa} {unidades de trabajo} {definiciones de constantes} {declaración de variables} {inicio del programa principal} {instrucciones del programa} {Detiene el programa hasta que se pulse una tecla} {fin del programa} 1.1.- ASIGNACIÓN DE VALORES A LAS VARIABLES. La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constate a una variable. En Turbo Pascal la asignación de un valor a una variable se realiza mediante el símbolo := por ejemplo: a:=20; Nombre:= 'Juan Pérez'; {La variable a toma el valor de 20} {Nombre guardará la cadena "Juan Pérez"} Contador: Consiste en usar la variable como un verificador del número de veces que se realiza un proceso, observe que el incremento es de uno en uno. En Turbo Pascal, el incremento de la variable contador se realiza así: a:=a+1; DM / AA 1 Acumulador: Consiste en usar la variable como un sumador en un proceso, observe que el incremento es variable. En Turbo Pascal, la acumulación de un valor en una variable se realiza como sigue: s := s + b; {la variable “s” acumula los valores de b} De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables, por ejemplo: En Turbo Pascal, para almacenar el resultado de una operación matemática en una variable se realiza asi: a:= c+b*2/4; area:= (base*altura)/2; {La variable area almacena el resultado de la expresión que está a la derecha} 1.2.- LECTURA DE VALORES POR TECLADO. En Turbo Pascal, los datos que se pueden leer son: enteros, reales, caracteres o cadenas. No se puede leer un boolean o un elemento de tipo enumerado. Los datos estructurados, arreglos (arrays), registros o conjuntos, no se pueden leer globalmente y se suele recurrir a diseñar procedimientos específicos. Los procedimientos de lectura son Read y ReadLn, y tienen el siguiente formato: READ (var1, var2, ...); READLN (var2, var2, ...); Donde var1, var2,… son las variables que recibirán el valor por teclado. En READ, después de pulsar la tecla ENTER, el cursor permanece inmediatamente después del último caracter introducido. En READLN, el cursor se envía al principio de la siguiente línea, tras pulsar la tecla ENTER. Otra diferencia importante surge del siguiente análisis: supongamos que se quieren leer desde teclado una serie de números enteros y reales, mediante las sentencias: readln(int1, re1); readln(int2); donde int1 es una variable tipo entero (integer), y re1 es una variable tipo real (real). Y suponga que el usuario ingresa los siguientes datos: 73 98.45 62 ENTER 45 ENTER DM / AA 2 Cuando la computadora lee 73, lo coloca en la variable int1, luego lee el 98.45 (todo en la misma línea, separados por un espacio) y lo coloca en re1. Pero como se trata de un readln (read line) ignora todo el resto que esté en la misma línea (en este caso ignora al 62), y hace un avance de carro (es decir, pasa a la línea siguiente). Al leer la línea siguiente coloca al 45 en int2. El resultado es: int1 = 73 re1 = 98.45 int2 = 45 Ahora suponga que se tiene los mismos datos de entrada, pero con las siguientes sentencias: read(int1, re1); readln(int2); En este caso lee el 73 y lo coloca en int1, luego lee el 98.45 y lo coloca en re1. Como se trata de un read, no hace avance de línea, y pasa a ejecutar la sentencia siguiente (o sea el readln). Al ejecutar el readln siguiente carga en int2 al número 62, porque el read anterior no había hecho avance de línea, y por consiguiente el número 45 no se almacena en ninguna variable. El resultado es: int1 = 73 re1 = 98.45 int2 = 62 1.3.- ESCRITURA DE VALORES POR PANTALLA. Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en lenguaje Turbo Pascal como sigue: WRITE(“El resultado es:”, r); o también WRITELN(“El resultado es:”, r); Donde “El resultado es:” es un mensaje que se desea aparezca literalmente en pantalla y r es una variable que contiene un valor. La diferencia consiste en que WRITE, muestra lo que esta entre paréntesis en la pantalla y el cursor se queda en la misma línea; en tanto que WRITELN, muestra lo que esta entre paréntesis y hace que el cursor pase a la siguiente línea. 1.4.- OPERADORES ARITMÉTICOS. Los ejercicios de estructura secuencial, proporcionan una introducción a la lógica de programación sin la necesidad de utilizar estructuras condicionales ni ciclos; sí el lector ya conoce el manejo de dichas estructuras, se recomienda no implementarlas en los ejercicios de DM / AA 3 este tema. Estos ejercicios están orientados a estudiantes de nivel universitario por lo que se asume que la base matemática para el cálculo debe ser de dominio del lector. Los operadores aritméticos a utilizar para las operaciones matemáticas, se indican en la tabla 1.1. Tabla 1.1 Operadores Aritméticos en Turbo Pascal. Operador * / MOD DIV + - Significado Multiplicación División Residuo de la División División entera Suma Resta Ejemplo 2*5 5/2 5 MOD 2 5 DIV 2 7+3 10 – 6 Resultado 10 2.5 1 2 10 4 1.5.- FUNCIONES MATEMÁTICAS. También se pueden invocar funciones matemáticas de uso común, como se observa en la tabla 1.2. Tabla 1.2 Funciones Matemáticas en Turbo Pascal. Abs(x) Real o Integer ArcTan(x) Chr(x) Real o Integer Integer Valor devuelto igual que x Real Char Cos(x) Exp(x) Frac(x) Int(x) Ln(x) Odd(x) Ord(x) Pred(x) Round(x) Succ(x) Sin(x) Sqr(x) Sqrt(x) Trunc(x) Real o Integer Real o Integer Real o Integer Real o Integer Real o Integer Integer Integer o char Integer o char Real Integer o char Real o Integer Real o Integer Real o Integer Real Real Real Real Integer Real Integer Integer Integer Integer Integer Real Real Real Integer Instrucción x Función Proporciona el valor absoluto de una variable numerica x. El arco cuya tangente es x. Devuelve el carácter ASCII de un entero entre 0 y 255. Proporciona el valor del coseno de x. La exponencial de x(eX). Parte decimal de x. Parte entera de x. Logaritmo neperiano de x. True si x es impar, y false si es par. Ordinal de una variable tipo ordinal x. Ordinal anterior a la variable ordinal x. Entero más próximo al valor x. Ordinal siguiente a la variable ordinal x. Seno de x. Cuadrado de x. Raiz cuadrada de x, para x>=O. Parte entera de x. DM / AA 4 EJEMPLO TIPO SECUENCIAL. 1.- Escribir un programa en Pascal que sume dos números: Por ejemplo, si a = 4 y b = 3 entonces el resultado de sumar 4 + 3 será 7, este valor es almacenado en la variable c. PROGRAM suma;{programa que escribe la suma de 2 numeros en pantalla} USES crt; {permite utilizar la función el borrado de la pantalla: clrscr} VAR a,b,c: integer; BEGIN clrscr: {limpia la pantalla} a:=4; {se asigna un valor cualquiera a las variables "a" y "b"} b:=3; c:=a+b; WRITE (c); {muestra en pantalla el valor de la suma} readkey {espera que se pulse una tecla para salir del programa} END. A continuación se resuelve el mismo problema anterior, pero haciendo la lectura por teclado de los valores de las variables a y b. PROGRAM suma; USES crt; VAR a,b,c:integer; BEGIN clrscr; WRITELN ('Este programa suma dos numeros:'); WRITELN (' '); WRITE ('Introduzca un numero: '); READLN (a); WRITE ('Introduzca otro numero: ' ); READLN (b); WRITELN (' '); c:=a+b; WRITE ('EL RESULTADO ES: '); WRITE (c); readkey END. EJERCICIO PROPUESTO TIPO SECUENCIAL. 1.- Dados tres números determinar el promedio. DM / AA 5 LABORATORIO 1 ESTRUCTURA SECUENCIAL 1.1.- OBJETIVO. Al finalizar el laboratorio, el alumno estará en la capacidad de resolver problemas con diferentes tipos de datos, relizar operaciones aritméticas y lógicas, asi como establecer prioridades inherentes con dichas operaciones usando el Lenguaje de Programación Turbo Pascal. 1.2.- EJERCICIOS. 1.- Dadas la base y la altura de un triángulo rectángulo, determine el área y el perímetro del triángulo. 2.- Escribir un programa en Pascal que calcule el volumen de una esfera: radio = 3, volumen de la esfera = 4/3 * PI * radio3 3.- Una temperatura Celsius (grado centígrado) C puede ser convertida a una temperatura equivalente Fahrenheit F de acuerdo a la siguiente fórmula: F = (9/5) * C + 32 DM / AA 6