programación procedural
DESCRIPTION
Programación Procedural. M.C. Juan Carlos Olivares Rojas. Este material se distribuye bajo una licencia Creative Commons Reconocimiento 2.5 México. Usted es libre de: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas Bajo las condiciones siguientes: - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/1.jpg)
Programación Procedural
M.C. Juan Carlos Olivares Rojas
![Page 2: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/2.jpg)
• Este material se distribuye bajo una licencia Creative Commons Reconocimiento 2.5 México. Usted es libre de:
copiar, distribuir y comunicar públicamente la obra
hacer obras derivadas
• Bajo las condiciones siguientes:
Reconocimiento. Debe reconocer y dar crédito al autor original (Juan Carlos Olivares Rojas)
![Page 3: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/3.jpg)
Agenda
2.1 Características principales de los lenguajes procedurales
2.2 Lenguajes representativos: FORTRAN, C.
![Page 4: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/4.jpg)
Introducción
• Este tipo de programación se basa en la Este tipo de programación se basa en la modularidad de los programasmodularidad de los programas. Esto quiere . Esto quiere decir que los programas se dividen en decir que los programas se dividen en módulos más pequeños, y cada uno realiza módulos más pequeños, y cada uno realiza una tarea específica. Así, la complejidad de un una tarea específica. Así, la complejidad de un problema determinado también se ve problema determinado también se ve reducida al dividir las tareas, que, en su reducida al dividir las tareas, que, en su conjunto, permiten la resolución de éste.conjunto, permiten la resolución de éste.
![Page 5: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/5.jpg)
Introducción
• En el pasado la programación no estaba estructurada por lo que se tenía el código GO TO que hacía al código verse como espagueti.
• La programación modular permite reutilizar código y hacer los programas más fáciles de elaborar.
![Page 6: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/6.jpg)
Pasos para resolver un problema:
1. Definición del problema2. Diseño del algoritmo para resolverlo3. Transformación del algoritmo en un programa4. Ejecución y validación del programa
ProblemaProblema Diseño del Diseño del algoritmoalgoritmo
Programa Programa de de
computadoracomputadora
Ejecución Ejecución y y
validaciónvalidación
![Page 7: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/7.jpg)
¿Que es un algoritmo?• Un algoritmo es la secuencia ordenada de pasos
que conducen a la solución de un problema dado, y puede ser expresado en lenguaje natural, por ejemplo el castellano
![Page 8: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/8.jpg)
Características de un algoritmo
• Preciso. Indicar el orden de realización de cada paso
• Definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
• Finito. Debe terminar el algún momento
![Page 9: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/9.jpg)
Algoritmo para hacer una taza de té
InicioTomar la teteraLlenarla de aguaEncender el fuegoMientras no hierva el agua
Esperar
Introducir una bolsa de té en la teteraVaciar el té en la taza
fin
![Page 10: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/10.jpg)
10
Ejemplo• Construya un algoritmo para preparar “Pechugas de pollo en salsa de
elote y chile poblano”:
– Ingredientes (para 6 personas)– 3 Pechugas deshuesadas, sin piel y partidas a la mitad.– 1 diente de ajo– 4 gramos de pimienta negra. Sal.– 6 cucharadas de aceite– 5 chiles poblanos asados y limpios.– ½ Taza de leche.– ¼ Taza de crema ligera.– 1 lata de crema de elote.
![Page 11: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/11.jpg)
11
Ejemplo• Algoritmo (Preparación):
– Muela el ajo, la pimienta y un poco de sal y únteselo a las pechugas.
– Caliente el aceite y dore las pechugas.– Licue los chiles con la leche y la crema, y mézclelos con la
crema de elote.– En una fuente coloque las pechugas y báñelas con la
mezcla anterior.– Cubra el platón con papel aluminio y hornee a 200 °C,
durante 15 minutos.
![Page 12: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/12.jpg)
Otros ejemplos de algoritmos• Las instrucciones o serie de pasos que sigues para grabar un
número telefónico en tu celular.• Las instrucciones que te dan para resolver un examen.• Los pasos que sigues para prender el carbón para una carne asada• El procedimiento que sigues para inscribirte • EL procedimiento para obtener tu pasaporte • La receta que sigues para preparar un pastel• Los pasos para invitar a alguien al cine
![Page 13: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/13.jpg)
Introducción
• Existen varias formas de representar soluciones a problemas, como son algoritmos, lenguaje estructurado, seudocódigo, diagramas de flujo, etc.
• Estas herramientas no son lenguajes de programación y por lo tanto una computadora no tiene capacidad para procesarlos, su propósito es proporcionar una manera de documentar sus ideas para el diseño de programas.
![Page 14: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/14.jpg)
Introducción• Es un sistema de notación para algoritmos que se
han descrito como una mezcla de lenguaje común y su lenguaje de programación favorito.
• El pseudocódigo está menos formalizado que el lenguaje estructurado de modo que la estructura y la redacción dependen del usuario.
![Page 15: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/15.jpg)
Introducción• Cuando se escribe pseudocódigo, se permite
incorporar palabras de comandos y sintaxis del lenguaje computacional que se pretende usar para el programa actual.
• Otras formas de representación son los diagramas de flujo, los cuales muestran de manera gráfica como resolver problemas.
![Page 16: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/16.jpg)
Diagrama de Flujos
![Page 17: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/17.jpg)
17
Símbolos del diagrama de Flujo
![Page 18: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/18.jpg)
18
Símbolos del diagrama de Flujo
![Page 19: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/19.jpg)
19
Símbolos del diagrama de Flujo
![Page 20: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/20.jpg)
20
Símbolos del diagrama de Flujo
![Page 21: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/21.jpg)
21
Símbolos del diagrama de Flujo
![Page 22: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/22.jpg)
22
Símbolos del diagrama de Flujo
![Page 23: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/23.jpg)
23
Diagramas Nassi-Scneiderman• Conocidos como Diagramas N-S o Diagramas de Chapin. Las
acciones se escriben dentro de cajas sucesivas.
![Page 24: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/24.jpg)
24
Ejercicio• Realizar el siguiente algoritmo
REGISTRO DE VENDEDORES.• Una tienda emplea un cierto número de vendedores. La mayoría de estos
empleados obtienen sus ingresos de comisiones sobre los artículos que venden, pero existen algunos empleados que obtienen su salario fijo, sin importar el tipo o cantidad de artículos que venden, más una comisión por sobre ciertos artículos.
• La tienda ofrece distintos tipos de mercancías, algunas de las cuales se clasifican como artículos estándar por que son de uso común y no requieren de técnicas creativas de venta; además, hay artículos que son altamente remunerados pero difíciles de vender.
![Page 25: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/25.jpg)
25
Ejercicio• Los compradores también se clasifican. Algunos
se conocen como compradores regulares, pues hacen transacciones tan a menudo que no se requiere de hacerles venta creativa. Sin embargo, la mayoría de los clientes hacen pocas transacciones dentro de la tienda, y es probable que entren, compren algo y no vuelvan a ser vistos.
![Page 26: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/26.jpg)
26
Ejercicio
• Si un empleado vende cualquier tipo de artículo a un cliente regular, no se da comisión alguna.
• Si un empleado asalariado vende un artículo extra, recibe una comisión del 10% a menos que el artículo tenga un precio mayor de $10,000, en cuyo caso recibe una comisión del 15%.
![Page 27: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/27.jpg)
27
Ejercicio• Si un empleado no asalariado vende un artículo extra a
alguien que no sea un comprador regular, recibe un 15% de comisión a menos que el artículo tenga un precio mayor a $10,000 en cuyo caso recibe una comisión del 20%. Si un empleado asalariado vende un artículo estándar recibe un 3% de comisión, en caso de ser un empleado no asalariado recibe un 7%.
![Page 28: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/28.jpg)
28
Pseudocódigo
![Page 29: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/29.jpg)
29
Diagrama de Flujo“Cálculo de comisión”
![Page 30: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/30.jpg)
30
Ejercicio resuelto
![Page 31: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/31.jpg)
31
Ejercicio resuelto
![Page 32: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/32.jpg)
Características
• Los primeros programas modulares y que contribuyeron al desarrollo del paradigma procedimental fueron los macroensambladores que permitieron reutilizar código fuente
• A continuación se muestran las principales características que presentan los lenguajes con paradigma procedimental.
![Page 33: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/33.jpg)
33
SENTENCIAS DE CONTROL
![Page 34: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/34.jpg)
34
Estructura Selectiva
Diagrama de Flujo
Diagrama N-S
Pseudocódigo
si <condición> entonces acción 1fin_si
![Page 35: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/35.jpg)
35
Estructura Selectiva Doble
Diagrama de Flujo
Diagrama N-S
Pseudocódigo
si <condición> entonces acción 1si_no acción 2fin_si
![Page 36: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/36.jpg)
36
Estructura Selectiva Múltiple
Diagrama de Flujo
Diagrama N-S
![Page 37: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/37.jpg)
37
Estructura Selectiva Múltiple
Estructura Selectiva Múltiple
Pseudocódigo
según_sea <expresión> hacer <lista 1> : acción 1 <lista 2> : acción 2 . . . [si_no acción n]fin_según
![Page 38: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/38.jpg)
38
Estructura Repetitiva
Diagrama de Flujo Diagrama N-S
Pseudocódigo mientras <expresión lógica> hacer acción fin_mientras
![Page 39: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/39.jpg)
39
Estructura Repetitiva
Diagrama de Flujo Diagrama N-S
Pseudocódigo repetir acción hasta_que <expresión lógica>
![Page 40: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/40.jpg)
40
Estructura Anidada
• Tanto las estructuras selectivas como las repetitivas pueden ser anidadas, e introducidas unas en el interior de las otras.
Pseudocódigo
si <condición1> entonces <acciónes1>si_no si <condición2> entonces <acciones2> si_no si <condición3> entonces <acciones3> si_no <accionesX> fin_si fin_sifin_si
![Page 41: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/41.jpg)
Fortran
• Es el lenguaje de programación de computadoras más antiguo. Se originó en 1957 por IBM.
• El nombre viene de Formula Translator, el cual se orientó a cálculos científicos.
• Existen varios compiladores de Fortran, en este curso se utilizarán el GNU Fortran.
![Page 42: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/42.jpg)
Fortran
• Existen varios dialectos de FORTRAN siendo los más representativos, Fortran IV, Fortran 77, Fortran 95 y Fortran 2003.
• La versión manejada en este curso es el compilador g95 que también incluye aspectos de la versión 2003.
![Page 43: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/43.jpg)
Fortran
• Una vez instalado el compilador, los programas se editan utilizando un editor de texto plano y compilando desde línea de comandos.
• Los archivos de código fuente deben de tener la extensión .f o .for; existen algunos compiladores que reconocen otras extensiones.
![Page 44: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/44.jpg)
Fortran
• El proceso de compilación se realiza identificando la carpeta bin y se ejecuta el comando:
• >_ g95 archivo.f –o ejecutable
• Donde con la opción –o se renombra el ejecutable en caso contrario el archivo ejecutable pasará a llamarse a.exe
![Page 45: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/45.jpg)
Fortran
• La estructura de un programa es la siguiente:
• C Estructura de un programa en Fortran• Program nombre• Bloque de instrucciones• End
• !Declaraciones de funciones y rutinas
![Page 46: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/46.jpg)
Fortran
• Nótese que el programa en sus palabras clave pueden ir en mayúsculas y minúsculas. Se acostumbra que todas las palabras clave se hagan en mayúsculas.
• También es ampliamente recomendable poner comentarios, los cuales inician con la letra C al inicio de renglón o bien con ! En cualquier parte del código.
![Page 47: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/47.jpg)
Fortran
• Es de suma importancia dejar el programa de forma tabular, ya que los primeros 6 caracteres están reservados para etiquetas que generalmente son números. Si no se deja dicho espacio el programa no compilará bien.
• En Fortran es posible no realizar programación estructurada por lo que se debe evitar la instrucción GO TO
![Page 48: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/48.jpg)
Fortran
• El nombre del programa debe de ser un identificador válido (comenzar con al menos una letra)
• El sistema no es fuertemente tipeado por lo que se pueden utilizar variables sin declararlas.
• Se debe de terminar el programa principal con la instrucción end.
![Page 49: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/49.jpg)
Fortran
• C Programa hola mundo• PROGRAM hola• WRITE(*,*) ‘Hola mundo’ !Pantalla• END
• Se recomienda sangrar el código. La salida estándar es el monitor y se utiliza la instrucción WRITE.
![Page 50: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/50.jpg)
Fortran
• La instrucción WRITE tiene dos argumentos, el primero de ellos indica el dispositivo de salida y el segundo formato. Si se utiliza el operador * o bien se omiten los parámetros de la instrucción, se utiliza
![Page 51: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/51.jpg)
Fortran
• Actividad: realizar la lectura de dos números y mostrar el resultado de las 4 operaciones básicas.
• ¿Qué estructuras de programa necesito?
![Page 52: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/52.jpg)
Fortran
• Se ocupa de una instrucción para leer datos que es READ(*, *).
• Una vez asignado se necesitan hacer los cálculos para ello se necesitan conocer los operadores aritméticos: +, -, *, / y ** que sirve de exponenciación.
• También se puede utilizar el comando PRINT para imprimir datos en pantalla de forma básica.
![Page 53: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/53.jpg)
Fortran
• Actividad: Desarrollar un programa para calcular el área de un triángulo conociendo solamente la longitud de sus tres lados.
• ¿Qué se necesita? Entender el problema. La fórmula es:
• S = (A + B + C)/2
![Page 54: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/54.jpg)
Fortran• Donde A, B y C son los lados del triangulo. Después
se aplica la fórmula:
• Para ello se necesita el operador SQRT para poder sacar la raíz cuadrada.
• ¿Cómo se garantiza que los lados introducidos sean válidos?
))()(( CSBSASSÁrea
![Page 55: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/55.jpg)
Fortran
• Los datos 1,2 y 3 como longitudes de los lados de un triangulo no forman realmente un triangulo, en cambio los datos 3,4 y 5 si ya que forman un triangulo rectángulo con área de 6 unidades cuadradas.
• La evidencia obvia es garantizar que cada dato no sea 0 o negativo.
![Page 56: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/56.jpg)
Fortran
• La otra no tan evidente es validar el resultado de las áreas, ya que está no puede ser ni 0 ni negativa.
• Para poder realizar estas acciones se necesita de la instrucción de decisión IF, el cual tiene la siguiente sintaxis IF (expresión) XX, XX, XX
![Page 57: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/57.jpg)
Fortran
• Esta es la vieja sintaxis, la cual salta a la primera etiqueta si el resultado es menor que 0, a la segunda si es igual a 0 y salta a la tercera línea cuando sea mayor a 0.
• La instrucción STOP permite parar un programa.
![Page 58: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/58.jpg)
Fortran
• Las etiquetas generalmente son números y deben ir en la primera columna.
• Actividad: modificar el programa anterior para que permita la introducción de un lado hasta que este sea positivo.
• ¿Qué se necesita un ciclo? Que se puede obtener con un GO TO y una condicional.
![Page 59: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/59.jpg)
Fortran
• La otra forma de hacer una decisión es con el IF lógico, el cual tiene la sintaxis: IF (expresión) GO TO etiqueta.
• Para ello se necesita conocer los operadores relacionales los cuales son: .GT., .LT., .EQ., .NE., .GE., .LE. Para >,<, =, <>, >= y <= respectivamente.
![Page 60: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/60.jpg)
Fortran
• Algunos compiladores permiten hacer uso de dichos operadores de manera normal.
• Actividad: realizar el factorial de un número. Tomando en cuenta que Fortran no permite recursividad en la gran mayoría de sus versiones.
![Page 61: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/61.jpg)
Fortran
• El operador + o $ al inicio de una línea de código (6ta columna) indica que la línea continúa de la línea anterior.
• Algunos compiladores limitan la extensión de las sentencias hasta 72 caracteres, dado que las tarjetas perforadas eran de hasta 80 líneas.
![Page 62: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/62.jpg)
Fortran• El operador de asignación es =.
• Los operadores lógicos son: .NOT., .AND., .OR., .EQUIV. Y .NEQUIV. Para la negación, conjunción, disyunción, equivalencia y no equivalencia.
• Otras funciones aritméticas son: ABS, MOD, DIV, MAX, MIN, SIN, COS, TAN. Utilizadas en casi todos los lenguajes.
![Page 63: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/63.jpg)
Fortran• Los tipos de datos básicos en Fortran son:
• INTEGER: enteros• REAL: decimales • DOBLE PRECISION: decimales largos• LOGICAL: lógicos, .TRUE. Y .FALSE.• CHARACTER: caracateres• COMPLEX: Complejos como (1,2) CMPLX(-0.5,1.E-
3).
![Page 64: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/64.jpg)
Fortran
• Ejemplo de Declaración de Variables:
• INTEGER A• REAL B, C• LOGICAL D
• La instrucción PARAMETER sirve para declarar constantes. PARAMETER (PI=3.14159)
![Page 65: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/65.jpg)
Fortran
• La instrucción FORMAT recibe la siguiente secuencia de caracteres para especificar el formato de los datos:
• A Cadenas• I Enteros• F Decimales• E Notació Científica
![Page 66: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/66.jpg)
Fortran• D Doble Precisión• X Espacio en blanco• / Salto de renglón
• Ejemplos:
• A20: Cadena de 20 caracteres• 5I3: 5 enteros de 3 dígitos cada uno• F3.2 Un decimal con tres dígitos enteros y 2 dígitos
fraccionarios
![Page 67: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/67.jpg)
Fortran• 3X: tres espacios en blanco• /// Tres líneas en blanco
• Se pueden utilizar sentencias de decisión doble del tipo: IF (condición) THEN sentencias ELSE sentencias ENDIF.
• Actividad: Realizar un programa para calcular las raíces de una ecuación cuadrada, indicando si son reales o imaginarias las raíces.
![Page 68: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/68.jpg)
Fortran• Las subrutinas se llaman con la instrucción CALL desde el
programa principal y se declaran de la siguiente manera:
• SUBROUTINE nombre(parametros)• !Declaraciones• RETURN• END
• Modificar el programa de las raíces utilizando subrutinas
![Page 69: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/69.jpg)
Fortran• Las funciones permiten regresar un valor a
diferencia de las subrutinas. Se declaran de la siguiente forma:
• Tipo FUNCTION nombre(parametros)• !Declaraciones• nombre = valor• RETURN• END
![Page 70: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/70.jpg)
Fortran• Reescribir el programa Factorial utilizando una
función.
• Realizar un programa que permita jugar “Craps”. Dicho juego consiste en lanzar dos dados (simulación realizada a través de una función que se invoque dos veces) y sumar la puntuación. Si la suma de los dados da 2,3 o 12 el usuario pierde inmediatamente.
![Page 71: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/71.jpg)
Fortran• Si la suma da 7 u 11 el usuario gana. Si da cualquier
otra combinación 4,5,6,8,9 o 10, el usuario tiene otra segunda oportunidad.
• El programa debe de pedir al usuario la cantidad de dinero con la que cuenta el usuario. Por cada juego se debe pedir la apuesta. Se debe sumar o restar dependiendo de si ganó o perdió el juego. El juego termina hasta tener 0 pesos o bien que el usuario decida salir.
![Page 72: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/72.jpg)
Fortran• Para generar números aleatorio se utiliza la función
RAND(TIME()) que genera un número aleatorio entre 0 y 1 por lo que necesita ser convertido a enteros con INT.
• Los ciclos se pueden realizar de manera estructura con la instrucción:
• DO inicialización, límite, incremento• sentencias• ENDO
![Page 73: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/73.jpg)
Fortran• Actividad: realizar un programa que permita
simular una partida de póker. El usuario deberá tener 5 cartas. La simulación consiste en repartir aleatoriamente cartas. Del 1 al 10 las cartas de corazones (donde el 1 representa el as), del 11 al 20 los diamantes (por ejemplo el 13) indica que se sacó el tres de diamantes, del 21 al 30 el trebol, y del 31 al 40 las picas. Los jotos están representados del 41 al 44, donde el 41 representa el joto de corazones y así sucesivamente.
![Page 74: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/74.jpg)
Fortran
• Las reinas están representadas del 51 al 54 (por ejemplo el 52 representa la reina de diamantes), y los reyes están del 61 al 64 (donde el 64 es el rey de picas).
• No se deberán repartir cartas. Se debe indicar si se hizo alguna jugada válida del póker (par, dos pares, tercia, full (tercia, par), póker (4 figuras igual), flor y flor imperial).
![Page 75: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/75.jpg)
Fortran
• Los arreglos se declaran poniendo al final de la declaración de variables, las dimensiones y el tamaño de éstas. Por ejemplo:
• INTEGER A(30) !Arreglo de 30 enteros• CHARACTER*40 N(30) !Arreglo de 30 cadenas
de tamaño 40 cada una• REAL T(3,4) !Matriz de 3 filas por 4 columnas de
números decimales.
![Page 76: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/76.jpg)
Fortran• Los arreglos inician a partir del subíndice 1.
• Se pueden especificar el rango de los arreglos. Por ejemplo: REAL A(-5:5) !10 elementos.
• La instrucción DATA permite inicializar un arreglo: DATA A/.1,.2,.3/
• Se puede utilizar la instrucción CYCLE para continuar la siguiente iteración de un ciclo y EXIT para salir.
![Page 77: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/77.jpg)
Fortran
• Se puede acceder a subcadenas definiendo su rango. Sea la cadena X=‘Morelia’, la instrucción Y=X(1:4) seria equivalente ‘More’.
• El operador // sirve para concatenar cadenas. Otras operaciones son LEN(cad) para determinar el tamaño de una cadena, CHAR(num) regresa el carácter representado por el código ASCII dado. ICHARC(c) regresa el valor númerico ASCII del código.
![Page 78: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/78.jpg)
Fortran
• La función INDEX(cad1, cad2) regresa la posición en donde se encuentra la subcadena 2 en la subcadena 1.
• Actividad. Realizar un programa que dado los siguientes datos: nombre, apellido paterno, apellido materno y fecha (en formato dd/mm/aaaa) pueda calcular el RFC de dicho usuario.
![Page 79: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/79.jpg)
Fortran
• El RFC se calcula con la primera letra del apellido paterno, la primera vocal del apellido paterno, la primera letra del apellido materno, la primera letra del nombre, los dos últimos dígitos del año de nacimiento, los dos dígitos que representan el mes, los dos dígitos del día.
![Page 80: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/80.jpg)
Fortran
• También existen archivos en Fortan. A continuación se muestra un ejemplo.
• PROGRAM ARCHI• PARAMETER(MAXP=20)• CHARACTER*48 PAL(MAXP)•
OPEN(UNIT=9,FILE='PALABRAS.TXT',STATUS='OLD',ERR=99)
![Page 81: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/81.jpg)
Fortran
• READ(9,*,ERR=99) (PAL(I), I=1,MAXP)• CLOSE(9)• DO I=1,MAXP• PRINT *, I,') ',PAL(I)• ENDDO• STOP• 99 PRINT *, 'ERROR'• END
![Page 82: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/82.jpg)
Fortran
• El programa inicia definiendo una constante para indicar un máximo de 20 palabras de tamaño máximo de 48 caracteres.
• La instrucción OPEN abre un archivo, el primer argumento es el identificador de archivo, el segundo es el nombre, el tercero es el estado. Dicho estado puede ser OLD (debe de existir el archivo), NEW (se crea) y REPLACE (reeplza el archivo si existe).
![Page 83: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/83.jpg)
Fortran
• El último argumento ERR define la etiqueta a la cual se salta si ocurre algún error.
• Se utiliza READ para leer desde el archivo, indicando el ID, el formato y el código de error. Se lee cada palabra desde 1 hasta 20. Posteriormente se imprime cada una de las palabras.
![Page 84: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/84.jpg)
Fortran
• Actividad: desarrollar un programa en forma que permita obtener el valor de verdad de cualquier operador lógico. Por ejemplo si las entradas son A=.TRUE. B=.FALSE. C=.FALSE. El programa debe devolver que A .AND. B .AND. C = FALSE, y así con los demás operadores .OR., .NOT., .EQUIV. Y .NEQUIV.
• La salida se deberá guardar en archivos. Se sugiere utilizar evaluación de expresiones por corto circuito.
![Page 85: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/85.jpg)
Fortran
• Actividad: realizar un programa que permita calcular la exponencial de un número dado.
!...
!2!11
2
nxxx
en
x
![Page 86: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/86.jpg)
Fortran
• Actividad: Desarrollar un programa que dado n como entrada permita desarrollar el teorema binomial, dada la siguiente fórmula:
!)1)...(1(
...!2)1(
!11)1( 2
rrnnn
xnn
xn
x n
![Page 87: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/87.jpg)
Fortran• Desarrollar un programa que permita convertir
cualquier número en cualquier base a cualquier otra.
• El algoritmo consiste en convertir el número original a base a diez y después cambiarlo a la nueva base.
• Para convertir a base diez se debe multiplicar el número por su peso en cada uno de sus dígitos.
![Page 88: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/88.jpg)
Fortran• Para convertir de decimal a cualquier base, se
debe dividir el número por la base dejando los residuos almacenados en una parte y la parte entera pasa a ser el siguiente número. El proceso se realiza hasta que el cociente quede a 0. El resultado se obtiene invirtiendo cada uno de los dígitos de residuo obtenidos con la división, para ello se necesita manejar un arreglo.
![Page 89: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/89.jpg)
Fortran
• Actividad: Resolver un sistema de ecuaciones de tamaño n con n incógnitas por la Regla de Cramer y el Método Gauss-Jordan.
• Determinantes.
![Page 90: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/90.jpg)
Tarea• Realizar un manual con los fundamentos básicos
de programación en Python.
• El manual será realizado por 4 personas, y deberá ser realizado en una presentación en PowerPoint en donde se muestre la instalación, ejecución de programas de prueba y se sugiera ejercicios complementarios.
• Entrega: miércoles 27 de agosto 2008.
![Page 91: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/91.jpg)
Lenguajes Interpretados• Un lenguaje interpretado es aquel que permite
ejecutarse línea por línea. Generalmente se hace a través de un software que permita realizar múltiples acciones.
• Ejemplos de lenguajes interpretados son HTML, Visual Basic ScriptHost, las macros de Office, los lenguajes de configuración, los archivos por lotes entre muchas aplicaciones.
![Page 92: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/92.jpg)
Procesos por Lotes• D.O.S. permite simplificar procesos agrupando
comandos en un archivo con extensión .bat (BATch Files).
• Un ejemplo de un archivo de proceso por lotes puede ser el siguiente:
CLSDIR
![Page 93: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/93.jpg)
Procesos por Lotes• Se pueden agregar cualquier comando de D.O.S. o
programa ejecutable, más las siguientes instrucciones:– REM para comentarios– CALL para mandar llamar otros procesos por lotes– SHIFT para desplazar los argumentos de entrada– IF para instrucciones condicionales– FOR para ciclos– GOTO para cambiar el flujo de programa
![Page 94: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/94.jpg)
Procesos por Lotes• Los archivos .bat no utilizan programación
estructurada, en su lugar utilizan saltos incondicionales con goto, las etiquetas se crean anteponiéndole :y un nombre de etiqueta. Ejemplo, :etiqueta1
• Existen variables especiales en D.O.S. para representar los argumentos que se piden en línea de comando: %1, %2 dependiendo del número de argumentos. %0 indica el nombre del programa.
![Page 95: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/95.jpg)
Procesos por lotes• Un proceso por lotes útil consiste en mover un
archivo de una ubicación a otra, dicho comando no existe en D.O.S. de forma nativa pero puede implementarse como sigue:
• COPY %1 %2• DEL %1
• El cual primero copia un archivo de un lugar a otro y luego borra el original.
![Page 96: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/96.jpg)
Procesos por lotes• El comando si se llamara mover.bat desde el
prompt de sistema se ejecutaría así: mover archivo1.txt rutanuevaarchivo
• Este script la desventaja que presenta es que si los argumentos se dan en forma incorrecta podría borrar el archivo original sin copiarlo en el nuevo destino. Para evitar este problema se ocupa validar los argumentos.
![Page 97: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/97.jpg)
Procesos por lotes• La instrucción IF nos permite validar un conjunto
de datos, tiene tres diferentes modos:
• IF “%1” == “A” comprueba que dos cadenas sean iguales
• IF [NOT] EXISTS comprueba que exista un archivo
• IF [NOT] ERRORLEVEL comprueba que no se haya producido algún error.
![Page 98: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/98.jpg)
Procesos por lotes• Si se modifica el archivo por lotes anterior para
que valide argumentos quedaría así:
REM programa para mover un archivoIF NOT EXIST %1 GOTO errorIF NOT EXIST %2 GOTO errorCOPY %1 %2DEL %1ECHO Archivo movido con éxito
![Page 99: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/99.jpg)
Procesos por Lotes• GOTO fin• :error• ECHO. Alguno de los argumentos no existe• ECHO. No se pudo mover el archivo• :fin
• La instrucción ECHO. Permite omitir la visualización del comando al ejecutarse.
![Page 100: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/100.jpg)
Procesos por Lotes• La instrucción IF no tiene opción de ELSE por lo
que la siguiente instrucción siempre se ejecuta a menos que se haga un salto.
• Tampoco existen ciclos como tal, se deben realizar a través de un salto al inicio de las acciones que se quieran repetir. Por ejemplo, si se desea saber cuantos argumentos introdujo el usuario se tendría que hacer un .bat como el siguiente:
![Page 101: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/101.jpg)
Procesos por Lotes
@echo offREM Programa para contar el número de
argumentos:cicloIF “%1” == “” GOTO salirECHO. %1SHIFTGOTO ciclo:salir
![Page 102: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/102.jpg)
Procesos por Lotes• Para poder utilizar variables de tipo numérico se
puede utilizar el parámetro /a para evaluar una expresión.
• Para poder visualizar la cantidad de argumentos introducidos desde línea de comandos se puede aplicar: SET /A cont=0 y SET /A cont+=1
• El comando HELP o el argumento /? permite conocer más información sobre un comando determinado.
![Page 103: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/103.jpg)
Procesos por Lotes• Una mejor forma de validación en D.O.S es ver si
algún programa generó un error. Esto lo comprobamos con IF y la variable %ERROR_LEVEL%. El programa mover validando errores quedaría así:
@ECHO OFFCOPY %1 %2IF ERRORLEVEL 1 GOTO error1DEL %1
![Page 104: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/104.jpg)
Procesos por Lotes
IF ERRORLEVEL 1 GOTO error2ECHO. Archivo movido con éxitoGOTO fin:error1ECHO. No se pudo copiar el archivoGOTO fin:error2ECHO. No se pudo borrar el archivo fuente:fin
![Page 105: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/105.jpg)
Procesos por Lotes con Windows• Estos pueden realizarse a través de Visual Basic, y
sirven para automatizar una gran variedad de procesos en Windows. Lo importante es conocer cada uno de los objetos.
• La programación de macros también utiliza visual Basic como lenguaje interpretado y permite mejorar la funcional de las aplicaciones de office, como por ejemplo crear nuevas funciones en Excel.
![Page 106: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/106.jpg)
Visual Basic Script• ‘ Hola mundo• MsgBox("Hola UVAQ!")
• REM Programa nombre• nombre = InputBox("Dame tu nombre")• MsgBox("Tu nombre es:" & nombre)
![Page 107: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/107.jpg)
Visual Basic Script• La estructura de decisión tiene la sintaxis:• IF condicion THEN• Acciones verdaderas• ELSE• Acciones falsas• END IF
• Actividad: realizar un programa que en VBScript Host permita determinar si una persona es mayor o menor de edad.
![Page 108: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/108.jpg)
Visual Basic Script• 'Ejemplo de número de argumentos• Dim Args, ArgList• Set Args = WScript.Arguments• For i =0 to Args.Count - 1• ArgList = ArgList &i &":"&Args(i) & chr(13)• Next
• MsgBox "Número de argumentos: " & Args.Count & chr(13) & ArgList
![Page 109: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/109.jpg)
Visual Basic Script• Para ejecutar el programa anterior se debe hacer
a través de línea de comandos, con el comando cscript.
• ¿Qué hace el siguiente programa?
• Dim Dict 'necesario para crear objetos• Set Dict = CreateObject("Scripting.Dictionary")
![Page 110: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/110.jpg)
Visual Basic• Dict.Add "a", "Athenas" 'Agregar elementos• Dict.Add "b", "Belgrado"• Dict.Add "c", "Cairo"• Dict.Add "d", "Durango"• Dict.Add "e", "Europa"
• key = InputBox("Introduce una letra entre a - e")• MsgBox “Elemento seleccionado: " &
Dict.Item(key)
![Page 111: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/111.jpg)
Visual Basic Script• '¿Que hace el siguiente archivo?• Dim MSWord, WSHShell• Set WSHShell =
WScript.CreateObject("WScript.Shell")• Set MSWord = WScript.CreateObject("Word.Basic")
• MSWord.FileNew("Normal")• MSWord.Insert("Lenguajes de Programación
UVAQ" & Chr(13))
![Page 112: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/112.jpg)
Visual Basic• MSWord.Insert("Profesor: M.C. Juan Carlos
Olivaes Rojas")
• MSWord.FileSaveAs(WSHShell.SpecialFolders(12) & "\lp.doc")
• MSWord.FileClose
![Page 113: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/113.jpg)
Macros• Las macros son programas que pueden realizar
actividades repetitivas para ejecutarlas después como si fuera una unidad a través de una tecla rápida o un botón.
• Actividad: abrir una hoja de Excel, poner una tabla con las materias y las posibles calificaciones a obtener este parcial. Activar la grabadora de macros y aplicar formatos a la tabla de bordes, color de la tabla, cambiar el formato de las letras, etc. Al final se debe de parar la grabadora de macros.
![Page 114: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/114.jpg)
Macros• Al momento que se dio activar la grabadora de
macro se pudo asignar una tecla rápida o un botón para ejecutar; o bien, desde el administrador de macros se puede invocar.
• Se deberá realizar otra tabla idéntica en contenido cambiando las posibles calificaciones para el siguiente parcial. Ejecutar la macro y ver lo que pasa.
![Page 115: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/115.jpg)
Macros• Presionar la combinación de teclas Alt+F11 con
esto se abrirá el Editor de Visual Basic for Applications. Dicho editor es una versión reducida de Visual Basic.
• Los macros son pequeños programas realizados en Visual Basic.
• En Excel se pueden utilizar para definir nuestras propias fórmulas.
![Page 116: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/116.jpg)
Macros• Generar en Excel una macro para obtener el área
de un triángulo.
• Realizar primero el formato de la hoja de cálculo, indicando la base, la altura y el área, siendo en este último campo calculado a través de la macro.
• La macro se graba en el editor de Visual Basic y se invoca como si fuera una fórmula, =areaTriangulo(b2,c3)
![Page 117: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/117.jpg)
Macros• Function areaTriangulo(altura As Integer, base As
Integer)• areaTriangulo = base * altura / 2• End Function
• Realizar una macro llamada implicación () que permita obtener los valores de verdad para cualquier expresión lógica que utilice dicho operador, ya que Excel no tiene esa fórmula lógica.
![Page 118: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/118.jpg)
Macros• El operador de implicación () tiene la siguiente
tabla de verdad.
p q pq
V V V
V F F
F V V
F F V
![Page 119: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/119.jpg)
Macros• También se puede realizar aplicaciones visuales
(cuadros de diálogo) o bien formularios (ventanas).
• Realizar un formulario como el siguiente:
![Page 120: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/120.jpg)
Macros• Programar el botón (dar doble click) el código
debe quedar algo parecido a:
• Private Sub CommandButton1_Click()• MsgBox "Tu nombre es:" & TextBox1.Text• End Sub
• Se puede probar el funcionamiento del formulario desde el editor visual.
![Page 121: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/121.jpg)
Macros• Para ejecutarlo desde la hoja de cálculo se creará
una figura como un rectángulo, se le dará asignar macro (se creará una función llamada formulario) que contendrá el siguiente código:
• Sub formulario()• Set f = UserForm1• f.Show• End Sub
![Page 122: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/122.jpg)
Macros• Con estas instrucciones, se puede ejecutar ya el
formulario.
• Actividad: realizar un formulario que permita obtener las raíces de una ecuación cuadrática. Deberá como entradas cajas de texto para leer las variables A, B y C, y cajas para mostrar los resultados X1 y X2 indicando si son reales o no. Deberá existir un botón para realizar el cálculo.
![Page 123: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/123.jpg)
Archivos *.ini• Son archivos utilizados por versiones antiguas de
Windows para la configuración de aplicaciones. A partir de Windows 95 se utiliza el registro para centralizar dicho proceso.
• El archivo más conocido es autorun.ini cuya sintaxis puede ser la siguiente:
• [autorun] • open=autorun.exe • icon=autorun.ico
![Page 124: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/124.jpg)
Archivos *.ini• También se puede utilizar para personalizar una
carpeta si se llama desktop.ini cuyo contenido puede ser:
• [.ShellClassInfo]• LocalizedResourceName=@%SystemRoot%\system32\
shell32.dll,-21770• IconResource=%SystemRoot%\system32\imageres.dll,-112• IconFile=%SystemRoot%\system32\shell32.dll• IconIndex=-235
![Page 125: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/125.jpg)
Python
• Lenguaje creado a principios de la década de 1990 por Guido van Rossum. Actualmente es un proyecto de Software Libre.
• Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos (en realidad es multiparadigma ya que permite programación estructurada y funcional).
![Page 126: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/126.jpg)
Python• Es un lenguaje muy similar a Perl y a otros
lenguajes de script disponibles en los sistemas Unix tales como AWK, PHP, etc.
• La versión que se utilizará para este curso es la 2.5.2 del proyecto GNU para Windows, aunque existen otras como ActivePython. Cada implementación de Python tiene sus características propias como iPython para desplegar una shell más útil.
![Page 127: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/127.jpg)
Python• Existen varias implementaciones del lenguaje
como Jpython, IronPython y Cpython, siendo esta última la más robusta e implementada por que está hecha en C.
• Al ejecutar Python se muestra un shell (>>>) que nos permite interpretar comandos del lenguaje o correr aplicaciones.
![Page 128: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/128.jpg)
Python• En la shell se pueden ejecutar expresiones
simples como expresiones aritméticas. Ejemplo:
• >>> 1+1• 2
• Se puede salir del shell a través de la función exit() o bien la combinación de teclas Ctrl + D
![Page 129: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/129.jpg)
Python• La shell permite trabajar de manera interactiva.
• Python genera código muy legible por lo que no se utilizan conceptos como llaves o caracteres raro como || ó &&, en su lugar se utilizan palabras en inglés más claras como or ó and.
• Se recomienda utilizar IDEs como PyDEV que es un plugin para Eclipse.
![Page 130: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/130.jpg)
Python• El primer programa en cualquier lenguaje de
programación es el “hola mundo”, aquí se seguirá la tradicción:
• >>> print “Hola Mundo”• Hola mundo
• Si se desea ejecutar este programa sin el shell, se deberá ejecutar la instrucción: python hola.py Para esto se asume que se escribió el código en un editor de texto plano.
![Page 131: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/131.jpg)
Python• El programa se ejecutará muy rápido para
detenerlo hasta que se presione una tecla, se deberá añadir la siguiente línea:
• raw_input()
• Si se estuviera en un Unix se puede agregar la línea #!/usr/bin/python al inicio de cualquier programa para “firmarlo” y así permitir que este sea autoejecutable.
![Page 132: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/132.jpg)
Python• Los tipos de datos básicos son:
• Numéricos: 7 (enteros), 12.5 (flotantes) 5+3j (complejos)
• Cadenas de Texto como “UVAQ”
• Lógicos: true y false
![Page 133: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/133.jpg)
Python• Aunque no es necesario declarar variables se puede
utilizar el operador type(var) para saber el tipo de datos de una variable.
• Los tipos de datos enteros pueden ser int y long. Como internamente Python se maneja en C, la longitud de los tipos de datos es la misma que en las implementaciones de C. Por lo que se utilizan las mismas convenciones (prefijo L al final de un número para indicar que es long, iniciar con un 0 indica que es octal, si inicia con 0x es hexadecimal)
![Page 134: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/134.jpg)
Python• Los operadores aritméticos son los clásicos de todo
lenguaje, incluyendo: ** para potencia, // para división entera, % para módulo.
• También existen operadores a nivel de bits como el & (and), | (or), ~ (not), ^ (xor), << y >> para corrimientos a la izquierda y a la derecha.
• Actividad: realizar un programa que dado dos números permita saber si un número es par o impar, hacerlo a través de operadores de bits.
![Page 135: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/135.jpg)
Python• Actividad: Realizar otro programa que permita
determinar la multiplicación y la división de un número entero por dos. Se debe de hacer con operadores de bits.
• Actividad: realizar un programa que permita determinar si un número tiene paridad par o impar, considerar todos los bits menos el más significativo, el cual deberá contener un 0 si es paridad par o un 1 si es paridad impar.
![Page 136: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/136.jpg)
Python• Los comentarios se ponen a través del carácter #
• Las cadenas puede utilizar comillas dobles “” o comillas simples ‘’
• Se pueden utilizar caracteres especiales como \n, \t, entre otros, que son comunes a C.
• Se puede utilizar el operador + para concatenar cadenas.
![Page 137: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/137.jpg)
Python• Tarea: traer una computadora con Linux (unix) en
cualquiera de sus variantes: LiveCD (usb distro), máquina virtual, instalación física, emulador de Linux, etc. Que permita la realización de scripts y tenga instalado el compilador gcc y python.
• Es necesario el manejo de este entorno para los problemas de esta clase y tareas.
![Page 138: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/138.jpg)
Python• Los valores de tipo lógicos o bool, se llaman true y
false.
• Los operadores lógicos son and, or y not. El operador de comparación es ==. Los otros operadores relacionales son !=, <, >, <= y >=.
• Una de las características fundamentales de Python es su manejo avanzado de tipos de datos, entre ellos se encuentran las listas.
![Page 139: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/139.jpg)
Python• Las listas (colecciones) pueden manejar elementos
de cualquier tipo. Un ejemplo es:
• L = [1, 2.5, “UVAQ”, true]• print l[1]
• Una propiedad importante es el particionamiento (slicing) el cual permite acceder a un rango de elementos o crear una sublista del tipo:
• Inicio:fin:incremento
![Page 140: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/140.jpg)
Python• Las tuplas son similares a las lista salvo que tienen
menos opciones y consumen menos memoria. Se declaran separando los elementos por comas:
• t = 1, 2.3, “hola”• type(t)
• Los diccionarios son útiles para almacenar pares de indice-contenido. Por ejemplo peliculas = {“odisea espacial”:”kubrick”, “jurasic park”: “Spilberg”}
![Page 141: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/141.jpg)
Python• peliculas[“jurasik park”] devolvería “Spilberg”
• La estrustura condicional if tiene la siguiente sintaxis:
• if (condicionAEvaluar):• acciones cuando es verdadero• else:• acciones cuando es falos
![Page 142: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/142.jpg)
Python• Se puede utilizar la palabra clave elif (condicion):
para anidar else.
• También existe la condicional de una sóla línea: A if B else C
• V = “par” if (n%2==0) else v=“impar”
• Existe el ciclo precondicional: • while (condicion):
![Page 143: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/143.jpg)
Python• Las funciones se definen de la siguiente forma
• def nombre(param1, param2):• acciones
• Existe el concepto de datos inmutables que no pueden cambiar después de la ejecución de la función (similar al concepto de variable local y global, o bien parámetros por valor y por referencia).
![Page 144: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/144.jpg)
Python• La función int(), convierte una cadena a número y
la función str() convierte un número a cadena.
• La función raw_input(cad) nos permite introducir datos desde consola y color el prompt con la cadena cad.
• Los ciclos for … in ..:, permiten acceder a los elementos de una colección.
![Page 145: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/145.jpg)
Python• #Imprime todos los elementos de la lista l • for e in l• print e
![Page 146: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/146.jpg)
Python• Trabajos:
• Calcular el tiempo de vuelo entre dos horarios suponiendo que no tarda más de 24 horas. El tiempo se dará en el formato de hh:mm:tt, donde hh va de 0 a 12, m de 0 a 59, y tt puede ser am o pm. Se deben validar los dos horarios
![Page 147: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/147.jpg)
Python• Dadas dos listas A y B, dejar en la lista A los
valores impares y en la B los valores pares. Pedir los valores de la lista al usuario.
• Leer N números y calcular los siguientes estadísticos: media, moda, mediana y desviación estándar.
![Page 148: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/148.jpg)
Python• Realizar un programa quedado un número de bits
determine el número de KB (Kilo Bytes), MB y GB. Un byte son 8 bits. Un KB son 1024 bytes, un MB son 1024 KB, un GB son 1024 MB.
• Por ejemplo si el usuario introduce la cantidad: 12,896,521 bits el programa debe devolver:– 1,612,065 (1612065.18) bytes– 1574.28 KB– 1 1.53 MB– 0.0015 GB
![Page 149: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/149.jpg)
Programación en C en UNIX• Por default el sistema operativo Unix y variantes
está hecho en C.
• Los programas se compilan con la opción gcc archivo.c –o nombre.
• Se deberá asegurar que se tengan permisos de ejecución. Sino aplicar chmod +a nombre
![Page 150: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/150.jpg)
Programación en C en UNIX• Aplica exactamente el mismo lenguaje ANSI C por
lo que la portabilidad está garantizada a otras plataformas.
• Los tipos de datos varían de acuerdo a la arquitectura de computadoras utilizada. Se puede conocer a través del comando sizeof().
• Se utiliza mucho la línea de argumentos para pasar valores.
![Page 151: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/151.jpg)
Actividad• Realizar un programa en C que pida desde la línea
de argumentos como valores de entrada una serie de mensajes y las devuelve en orden inverso al que se introdujeron. Por ejemplo:
• ./Reversa este es mi vida!
• Debe devolver como resultado:• !adiv im se etse
![Page 152: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/152.jpg)
Programación del Shell en Unix• Este es un ejemplo de lenguaje interpretado, en
el cual se pueden utilizar todos los comandos del sistema y llamar a una aplicación.
• Se pueden meter más de un comando en la shell en la misma línea si se separan por medio de “;”. Por ejemplo: $ cls; ls
• Borrará y listará el directorio actual.
![Page 153: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/153.jpg)
Programación del Shell en Unix• Los programas del shell se escriben en editores de
texto plano como vi y emacs.
• Se ejecutan con el comando sh (bash o como se llame el shell utilizado), seguido del nombre del archivo del script. O bien, se pueden ejecutar firmándolos con la instrucción:
• #!/bin/sh
![Page 154: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/154.jpg)
Programación del Shell en Unix• Los comentarios inician con el carácter #
• Los scripts de la shell se utilizan para arrancar demonios, inicializar servicios, administrar aplicaciones, etc.
• Se utilizan algunas variables especiales en el sistema como:
• $1 - $9 parámetros
![Page 155: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/155.jpg)
Programación del Shell• $0 nombre del comando actual • $# número de parámetros
$? status del último comando ejecutado dado como un string decimal.
$$ el número de proceso de este shell
$! el pid del último comando ejecutado en background.
![Page 156: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/156.jpg)
Programación del Shell en Unix• $- las opciones actuales suministradas para esta
invocación del shell. • $* $@@ un string que contiene todos los
argumentos del shell comenzando por el $1.
• Para imprimir variables y mensajes se utiliza echo
• El operador test [] sirve para evaluar expresiones lógicas, las cuales utilizan los caracteres: &&, ||, para la and y or respectivamente.
![Page 157: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/157.jpg)
Programación del Shell en Linux• En la shell se utilizan algunos caracteres
especiales como:– ‘’ Literal simple– `` Sustituir valor de la variable– “” Sustituir por lo que haya en las comillas
• Se utilizan otras instrucciones como Shift para avanzar parámetros.
• Para leer datos se utiliza la instrucción read.
![Page 158: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/158.jpg)
Programación del Shell en Linux• El operador test tiene los siguientes argumentos
• -d directorio • -e archivo sin importar el tipo • -f archivo normal • -r leer archivo • -s tamaño mayor que 0 • -w escribir archivo• -x archivo ejecutable • -eq iguales • -ne no son iguales
![Page 159: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/159.jpg)
Programación del Shell en Linux• -gt mayor • -ge mayor o igual • -lt menor • -le menor o igual • = cadenas idénticas • != cadenas no son idénticas • < menor • > mayor • -n longitud de la cadena de texto es distinta de
cero
![Page 160: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/160.jpg)
Programación del Shell en Linux• ! Negación• -a and• -o or
• Se puede declarar funciones de la forma:
• _nombre_funcion_ () { _lista_de_ordenes_ }
![Page 161: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/161.jpg)
Programación del Shell en Linux• La estructura de decisión tiene el siguiente
formato:
• if ....; • then .... • elif ....; • then .... • else .... • fi
![Page 162: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/162.jpg)
Programación del Shell en Linux• [ -f "/etc/shadow" ] && echo "Este ordenador usa
shadow passwors"
• Estas líneas de código revisan si existe el archivo /etc/shadow y si existe muestran un mensaje de confirmación.
• Nótese que los paréntesis van separados por un espacio en blanco. El lenguaje es muy sensible a ciertos caracteres.
![Page 163: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/163.jpg)
Programación del Shell en Linux• La estructuras de decisión múltiple pueden ser de
la forma:
case ... in ...)
hacer algo aquí;; esac
• Generalmente las variables tienen asociados el símbolo de $.
![Page 164: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/164.jpg)
Programación del Shell en Linux• Las estructuras de repetición tienen los siguientes
formatos:
while ...; do .... done
for var in ....; do .... done
![Page 165: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/165.jpg)
Programación del Shell en Linux• El operador ; se utiliza en algunas instrucciones
para indicar que su uso aun continua en la siguiente línea.
• A continuación se presentan algunos ejemplos de programas hechos en la shell.
![Page 166: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/166.jpg)
Programación del Shell en Linux
#!/bin/sh #Programa que verifica el tipo de shellif [ "$SHELL" = "/bin/bash” ]; then
echo "tu shell es el bash (bourne again shell)“else
echo "tu shell no es bash sino $SHELL" fi
![Page 167: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/167.jpg)
Programación del Shell en Linux#!/bin/shtest -x /home/www/bin/httpd || exit 0
case "$1" in #cuál fue el parámetro de invocación
start)echo -n "Iniciando servidor http"start-stop-daemon --start --quiet --pidfile /var/run/httpd.pid \--exec /home/www/bin/httpdecho "."
;;stop)
echo -n "Deteniendo servidor httpd"start-stop-daemon --stop --quiet --pidfile /var/run/httpd.pidecho "."
;;
![Page 168: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/168.jpg)
Programación del Shell en Linuxrestart)
/etc/init.d/httpd stopsleep 2/etc/init.d/httpd startecho "."
;;*)
echo "Uso: /etc/init.d/httpd {start|stop|restart}"exit 1
esacexit 0
![Page 169: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/169.jpg)
Programación del Shell en Linux#!/bin/sh#Shell que crea un usuario pasando el nombre como parámetro asi
como su directorio public html
if [ $# -eq 1 ]then #creamos el nuevo usuario
useradd $1mkdir /home/$1cd /home/$1mkdir public_html
elseecho "!Sintaxis incorrecta!. Uso correcto: $0 nombre_usuario"
fi
![Page 170: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/170.jpg)
Programación del Shell de Linux• Realizar un script que permita determinar
cuantos compiladores existen en el sistema e indicarle al usuario que tan geek es en computación. Por ejemplo se definen lenguajes como c, python, perl, pascal, ada y se buscan dichos archivos en el sistema. Se contabiliza el total, se saca una proporción, si se tienen 5 de 7 elementos por ejemplo: indicar que se es buen programador, 1/7 novato, etc.
![Page 171: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/171.jpg)
Programación del Shell en Linux• Uno de los ataques más comunes consiste en
suplantar los comandos y programas más utilizados de la ruta de path de tal forma que se ejecuten antes de tiempo. Realizar un programa que permita buscar archivos replicados en el sistema operativo e indicar su ruta.
• Si el usuario introduce algo como $buscar python debe encontrar todos los archivos que se llamen python en el sistema.
![Page 172: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/172.jpg)
Referencias• Vickers, D., Fortran IV Un Enfoque Moderno,
Editorial Diana, México, 1973.
• Pacheco, A., “Curso de Programación en Fortran”, Instituto Tecnológico de Chihuahua, Consultado en agosto en 2008, disponible en: http://expo.itchihuahua.edu.mx/
• McCracken, D. y Dorn, W., “Métodos Numéricos y Programación FORTRAN”, Limusa, México, 1979.
![Page 173: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/173.jpg)
Referencias• Balfour, A. y Beveridge, W., “Análisis Numérico
Básico con Fortran”, C.E.C.S.A., México, 1978.
• Microsoft MS-DOS 5.0. Guía del Usuario (1991). Microsoft Corporation.
• Harvey, Greg, Yarborough. Kary. PC/MS-DOS. Referencia Instantánea (1989). Macrobit, México.
![Page 174: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/174.jpg)
Referencias• González, R., Python para Todos, última consulta:
septiembre 2008.
![Page 175: Programación Procedural](https://reader033.vdocuments.co/reader033/viewer/2022061512/56812bfc550346895d906d51/html5/thumbnails/175.jpg)
¿Preguntas, dudas y comentarios?