Unidad 1 Introducción a la programación

Programación Estructurada Codificada Unidad 1 Introducción a la programación I Componentes de programación Algoritmo Un algoritmo se puede ver como c
Author:  Eva Segura Redondo

0 downloads 75 Views 938KB Size

Recommend Stories


Unidad 1 Introducción a la psicología
Unidad  1   Introducción  a  la  psicología    ¿Qué  es  psicología?.                 La  ciencia  de  la  psicología.     Objeto  y  métodos.

UNIDAD 1: INTRODUCCIÓN A LA PSICOLOGÍA POLÍTICA
22/04/2009 UNIDAD 1: INTRODUCCIÓN A LA PSICOLOGÍA POLÍTICA Seminario de Psicología Política Facultad de Psicología - 2009 Unidad 1: Introducción a l

Unidad 1: Llamamiento a la Unidad de la Iglesia Estudio 1: Llamamiento a la Unidad (1 Corintios 1.1 a 2.16) 2 de enero de 2013
Unidad 1: Llamamiento a la Unidad de la Iglesia Estudio 1: Llamamiento a la Unidad (1 Corintios 1.1 a 2.16) 2 de enero de 2013 La Biblia Libro por Lib

UNIDAD 1: La comunicación
Pruebas de Acceso a Ciclos Formativos de Grado Superior Lengua castellana y Literatura SOLUCIONARIO UNIDAD 1: La comunicación PARA COMENZAR…-PÁG. 6

UNIDAD 1: LA POBLACIÓN
UNIDAD DIDÁCTICA ADAPTADA CIENCIAS SOCIALES. GEOGRAFÍA E HISTORIA 2º DE ESO UNIDAD 1: LA POBLACIÓN  Lee atentamente 1. EL ESTUDIO DE LA POBLACIÓN

Story Transcript

Programación Estructurada Codificada

Unidad 1 Introducción a la programación I Componentes de programación Algoritmo Un algoritmo se puede ver como cualquier procedimiento computacional bien definido el cual toma uno o varios valores de entrada y produce uno o varios valores de salida. o

Propiedades a) Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos". b) Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". c) Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo se ejecuta. Estas entradas son tomadas de conjuntos específicos de objetos". d) Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas". e) Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

o Historia En 1834 Charles Babbage concibió de forma mecánica el concepto de un algoritmo mediante su “Máquina Analítica”, esta máquina sería programable mediante tarjetas perforadas, cada tarjeta representaría un paso en la solución de un problema, de tal manera que el conjunto de tarjetas para resolver dicho problema representaría un algoritmo computacional. El concepto matemático formal de algoritmo, fue formulado hasta 1930, antes de la llegada de las computadoras. La mayor influencia sobre el desarrollo de las teorías algorítmicas vino del matemático inglés Alan Turing, quien describió un modelo llamado la Máquina de Turing, en el cual estableció el mecanismo mediante el cual las computadoras podrían resolver problemas matemáticos. Además de esto, también describió de forma teórica el paradigma de los programas almacenados, el cual representa la base para las computadoras de propósito general de hoy en día, sin embargo, John von Neumann fue quien demostró formalmente la practicidad de introducir las instrucciones y los datos que estas procesan en la memoria de una computadora. o

¿Para qué y por qué? Los problemas alguna vez imposibles hoy se pueden resolver mediante el uso de los algoritmos correctos, ejemplo de esto son la robótica y la inteligencia artificial que implica, el cómputo gráfico, la solución a grandes problemas mediante sistemas computacionales, incluso la comunicación mediante redes implica el uso de los algoritmos correctos. Se requiere saber analizar los problemas para poder identificar el algoritmo correcto en cada situación, ya que la mayoría de las veces podremos resolver el problema de más de una forma; si podemos analizar estos algoritmos, podremos mejorarlos y en el mejor de los casos elegir el que resuelva nuestro problema. o Ejemplo 1: Un virus informático llamado “AcertijoMath” se adueñaba de las computadoras de una empresa mostrando un molesto mensaje en pantalla que decía: 1

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

“Tu computadora será formateada…, tienes 7 minutos para evitarlo deberás teclear la clave que detiene el virus, la clave es un número al cual si le sumo la misma cantidad, mas la mitad, mas la cuarta parte mas 1 suma 100”… Iniciando cuenta regresiva… Llamaron al analista de sistemas de la empresa y le pidieron que desarrolle un algoritmo que resuelva el problema para evitar que la información se pierda. El analista revisó el problema y tras pensar un poco llegó a la siguiente conclusión: Suponiendo que X=clave numérica, podemos establecer una ecuación algebraica para representar el caso y plantear una solución. x + x (La clave es un número al cual si le sumamos la misma cantidad…)

= 100

1/2x (… mas la mitad) 1/4x (… mas la cuarta parte) 1 (… mas 1)

(Toda esta suma es igual a 100)

Entonces la ecuación nos queda x + x + 1/2x + 1/4x + 1 = 100

x + x + 1/2x + 1/4x = 100 – 1 2x + 1/2x + 1/4x = 99 2x + 3/4x = 99 11/4x = 99 11x = 99 x 4 11x = 396 x = 396 / 11 x = 36 La clave para evitar que el disco duro se formatee es 36. El principal error de la mayoría de los programadores es pensar que todo esté en su mente resuelto y empezar a programar sin diseñar algoritmos que plateen soluciones confiables, pensando que los algoritmos son pérdida de tiempo y no valen la pena…, tarde o temprano se encuentran situaciones que no se esperaban y por lo mismo no saben como resolverlas dando a pie a programas poco confiables o que no resuelven los problemas. Existen dos tipos de algoritmos principalmente utilizados en la programación, el primero es el diagrama de flujo en el cual mediante el uso de símbolos se muestra la secuencia de pasos para solucionar un problema, y el segundo es el seudocódigo que es lo más cercano a los lenguajes de programación. Diagrama de flujo El Diagrama de Flujo es una representación gráfica de la secuencia de pasos que se realizan para llegar a resultado, este puede ser un producto, un servicio, o bien una combinación de ambos. 2

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

o

Características principales a) Capacidad de comunicación: Permite la puesta en común de conocimientos individuales sobre un proceso, y facilita la mejor comprensión global del mismo. b) Claridad Proporciona información sobre los procesos de forma clara, ordenada y concisa.

o

Símbolología Imágenes o figuras con la que se representa los procesos. Algunos de los símbolos son:

Terminal: Marca el inicio y final de un diagrama. Proceso: Realiza alguna actividad. Definición: Realiza alguna actividad predefinida. Decisión: Análisis de situación y toma de decisiones. Documentación Archivo Conector entre partes de un diagrama. Flujo

Seudocódigo Es una secuencia de instrucciones parecidas el lenguaje humano y aplicable a cualquier lenguaje de programación en la que se plantean soluciones a determinadas situaciones programables. Ejemplo 2: Se necesita una rutina que muestre como se obtiene la potencia de un número. Inicio entero residuo, x, y, i; Leer y Leer x si (x == 0) Escribir "La potencia es 1" De lo contrario residuo y for i = desde 0 hasta x residuo residuo * y fin for Escribir "La potencia es " residuo Fin si Fin

Entero residuo, x,y

y

x no

i desde 1 hasta x

residuo

La potencia es 1

residuo * y

Los diagramas de flujo pueden ser traducidos a seudocódigo y viceversa, sin embargo lo más recomendables es que al tener planteada una solución confiable con cualquier algoritmo, este sea traducido directamente a un lenguaje de programación.

3

si X=0

La potencia es residuo

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

Ejercicios 1: Realiza para cada problema (del A al C) su diagrama de flujo y su seudocódigo correspondiente que plantee una solución a los problemas: A) Se necesita saber el promedio de un alumno en una materia en la que se califican tres cosas: Examen escrito. Entrega de proyecto. Participación en clase. Se debe pedir el valor correspondiente a cada calificación y dar como salida el promedio de estas calificaciones. B) En un casa de apuestas los jugadores tienen bonos los cuales pueden apostar, cada bono se cotiza en $10,000, en una jornada participan 5 jugadores, cada uno de ellos puede apostar una determinada cantidad de bonos, al finalizar la jornada se debe saber quien de ellos apostó mas y quien apostó menos. Como dato de entrada se pide el número de bonos que apuesta cada jugador. C) Los usuarios de una página web, al momento de registrarse, se les pide registrar también una clave numérica para poder ingresar posteriormente a la página. La clave de acceso debe tener exactamente tres cifras. Hacer un programa que valide que la clave que teclea el usuario realmente tenga tres cifras, si el número tecleado no es de tres cifras marcar el error y volver a pedirlo hasta que tenga tres cifras.

D) ¿Encuentra el número debe reemplazar al signo de interrogación y explica porque crees que es ese número?

6, 9, 19, 73 9, 6, 13, 67 7, 8, ?, 71 E) ¿Cuál es la respuesta si, de los números de abajo, multiplicas por cinco el número de números pares que tienen un número impar junto a su derecha?

4785319784478923

4

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

II Introducción a C++ C++ es un lenguaje de programación orientado a objetos inventado a principios de los años 80 por Bjarne Stroustrup en los laboratorios de AT&T en Nueva Jersey (EE.UU.), famosos por ser donde trabajaban los inventores del lenguaje C y del sistema operativo UNIX, Dennis Ritchie y Brian Kernighan. La idea original de Stroustrup era desarrollar un lenguaje para uso interno en el laboratorio, que fuera una mejora al C, una especie de “C con clases”. Debido a ello, C++ incorporó características de diversos lenguajes como Ada, Simula67 o Algol68. Sin embargo, el lenguaje no se redujo a estas incorporaciones, y además de conservar la versatilidad y potencia de C, ha crecido con las necesidades de sus usuarios hasta convertirse en uno de los lenguajes de programación más utilizados en la actualidad. En general, podemos decir que C++ es un lenguaje de programación de propósito general con cierta desviación hacia la programación de sistemas. La herencia de C es vista por muchos puristas como una debilidad del lenguaje. Sin embargo, el hecho de que C++ conserve una compatibilidad total con C, le dota de una potencia que no tienen otros lenguajes orientados a objetos como Java o Smalltalk, y además no fuerza ningún estilo de programación. Código fuente. Los programas en C++ se escriben con la ayuda de un editor de textos del mismo modo que cualquier texto corriente, los archivos que contiene programas en C++ en forma de texto se conocen como archivos fuente y tienen la extensión “.cpp”, el texto del programa que contiene se conoce como código fuente.

Figura 2.1 El programador escribe un archivo de texto llamado archivo fuente con código entendible para las personas y que tiene la extensión .cpp

Código objeto y compilación Los archivos fuente no pueden ejecutarse porque es texto pensados para que los comprendan los seres humanos, pero incomprensibles para las computadoras, esto genera la necesidad de traducirlo a un lenguaje que sea reconocido por la computadora. A esta traducción le llamaremos compilación, consiste en obtener un archivo equivalente a nuestro archivo fuente comprensible para la computadora, este archivo se conoce como fichero objeto, y su contenido como código objeto.

Figura 2.2 El código fuente no es entendido por la computadora, asi que se debe traducir a un lenguaje binario que pueda ser leído por la computadora

5

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

El código objeto no tiene ningún significado para los seres humanos, al menos no directamente, además es diferente para cada computadora y para cada sistema operativo, por lo tanto existen diferentes compiladores para diferentes sistemas operativos y para cada tipo de procesador.

Figura 2.3 La compilación del archivo fuente genera un archivo objeto el cual es reconocido por la computadora

Archivos ejecutables y enlazadores Cuando obtenemos el archivo objeto, aún no hemos terminado el proceso, el archivo objeto, a pesar de ser comprensible para el ordenador, no puede ser ejecutado. Nuestros programas usaran, en general, funciones que estarán incluidas en archivos externos de manera que se deben combinar todos estos archivos, aparte el procesador debe cargar en memoria el programa y los datos así que falta organizar la memoria de modo que se disponga de una pila de tamaño adecuado. Existe un programa que hace todas estas cosas, se trata del "link", o enlazador el cual se encarga de rellenar todos los huecos que aún pudieran existir de la traducción. Una vez terminada la fase de enlazado, ya podremos ejecutar nuestro programa.

Figura 2.4 El Linker hace el trabajo final para poder obtener un programa ejecutable

Errores Somos humanos y nos equivocamos, en la etapa para obtener un programa ejecutable detectan los errores los cuales pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten. o Errores de sintaxis: Son errores en el archivo fuente, pueden deberse a palabras mal escritas, expresiones erróneas o incompletas, variables que no existen, etc. Se detectan en la fase de compilación, si el compilador detecta errores de sintaxis nos dará una lista de ellos, si hay errores no es posible generar el código objeto. o Avisos: Además de errores, el compilador puede dar también avisos (warnings), los avisos son errores, pero no lo suficientemente graves como para impedir la generación del código objeto. No obstante, es importante corregirlos ya que el compilador tiene que decidir entre varias opciones, y sus decisiones no tienen por qué coincidir con lo que nosotros pretendemos, se basan en las directivas que los creadores del compilador decidieron durante su creación. o Errores de enlazado: El programa enlazador también puede encontrar errores, normalmente se refieren a funciones que no están definidas en ninguno de las archivos objetos ni en las librerías. Puede que hayamos 6

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

olvidado incluir alguna librería, o algún archivo objeto, o puede que hayamos olvidado definir alguna función o variable, o lo hayamos hecho mal. o Errores de ejecución: Incluso después de obtener un archivo ejecutable, es posible que se produzcan errores. En el caso de los errores de ejecución normalmente no obtendremos mensajes de error, sino que simplemente el programa terminará bruscamente, estos errores son más difíciles de detectar y corregir, existen programas auxiliares para buscar estos errores, son los llamados depuradores (debuggers), estos programas permiten detener la ejecución de nuestros programas, inspeccionar variables y ejecutar nuestro programa paso a paso, esto resulta útil para detectar excepciones, errores sutiles, y fallos que se presentan dependiendo de circunstancias distintas. o Errores de diseño o de lógica: Finalmente los errores más difíciles de corregir y prevenir. Si nos hemos equivocado al diseñar nuestro algoritmo, no habrá ningún programa que nos pueda ayudar a corregir los nuestros. Contra estos errores sólo cabe practicar y pensar.

Ejercicios 2: Contesta las siguientes preguntas: A) ¿Cuál crees que se la diferencia entre un programa y un algoritmo? B) ¿Qué es un lenguaje de programación? C) ¿Qué lenguaje reconoce la computadora? D) ¿Cuál es la diferencia entre un archivo fuente, un archivo objeto y uno ejecutable? E) ¿Cuál es la diferencia entre un compilador y un intérprete? F) ¿C++ es compilado o interpretado? G) Si en un proceso hago la siguiente instrucción para calcular el área de un triangulo: A = b * h/2 ¿Qué tipo de error es?

7

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

II Programación en C++ Desde los tiempos en que Kernighan y Ritchie publicaron su famoso “The C Programming Language”, es tradicional que todos los libros y cursos de programación comiencen con su versión del programa “Hola Mundo”, pero antes de adentrarnos en esos detalles, vamos a mencionar la principal y más reciente incorporación de C++. La Biblioteca Estándar de C++ STL, (Standard Template Library) La biblioteca o librería estándar de C++, conocida como STL (Standard Template Library) es una adición relativamente reciente al C++ (Data de su último proceso de estandarización en 1998). Tras la introducción de la STL, C++ ha alcanzado una gran madurez, ya que facilita al programador un conjunto de tipos de datos y algoritmos de gran potencia. o Codificación Con este programa mostramos la estructura mínima que debe tener un programa. Tenemos en el siguiente ejemplo un programa básico que solamente tiene la declaración de bibliotecas y el cuerpo principal del programa. Bibliotecas o archivos de cabecera

.

Cuerpo principal del programa

El editor que se muestra en la figura es Dev C++, es un editor que incluye un compilador y lo mejor de todo es que es Freeware o sea que se puede conseguir gratis desde internet gratuitamente, nos permite programar aplicaciones de consola o Windows. Consta de un sistema de menús y barras de herramientas, para poder compilar y ejecutar un programa podemos utilizar combinaciones de teclas o las herramientas que están en la parte superior, son unos íconos como estos:

8

Aurelio López Ovando

http://aureliux.wordpress.com

Programación Estructurada Codificada

Compilar Ejecutar Compilar y ejecutar

Busca errores, o bien presiona ctrl. + f9 Ejecuta el programa si no tiene errores, puedes presionar ctrl. + f10 Primero compila y luego ejecuta el programa, puedes presionar f9

o Visión general del lenguaje  Cada programa ejecutable de C++ debe tener una función main, el programa comienza ejecutando esta función, el valor entero (int) devuelto por main es capturado por el sistema operativo, si no se devuelve ningún valor o se devuelve 0, el sistema interpreta que el programa se ha ejecutado con éxito.  Las llaves { ... } indican agrupamiento de segmentos de código, cada llave abierta debe tener su correspondiente llave cerrada.  La línea #include indica al compilador que incluya la biblioteca, denominados también archivos de encabezado (bibliotecas), que incluyen las declaraciones de funciones predefinidas, en C++ la biblioteca estándar no suele incluir extensión en los nombres de los archivos, aunque es tradicional que los archivos creados por el usuario sí la lleven, el nombre de la biblioteca está rodeado de los signos .  Cada sentencia es terminada por un punto y coma ";"  Se hace distinción entre mayúsculas y minúsculas, así que si tenemos una variable que se llame “Alumno” no es lo mismo que “alumno”.  El primer carácter de una variable no puede ser un número y el resto sólo acepta letras, números y guión bajo, no se acepta la “ñ” ni caracteres especiales como vocales con acentos, @, #,/ etc.  Es importante documentar el código fuente, // indican un comentario hasta el final de la línea; los comentarios multi-línea se marcan con /* .... */. 1. Programa que muestre en pantalla un saludo de bienvenida el curso de programación #include using namespace std; int main() { cout

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.