Fundamentos de Programación 1

29
FUNDAMENTOS DE PROGRAMACIÓN Componentes del Computador Hardware El termino hardware se usa para los elementos del computador que son tangibles, es decir, es el conjunto de componentes físicos de un computador. Unidad Central de Proceso Subsistema de Entrada / Salida Subsistema de Memoria

description

programacion

Transcript of Fundamentos de Programación 1

Page 1: Fundamentos de Programación 1

FUNDAMENTOS DE PROGRAMACIÓNComponentes del Computador• Hardware

El termino hardware se usa para los elementos delcomputador que son tangibles, es decir, es el conjunto decomponentes físicos de un computador.

– Unidad Central de Proceso– Subsistema de Entrada / Salida– Subsistema de Memoria

Page 2: Fundamentos de Programación 1

• Software

Se denomina software a todos los componentesintangibles de un computador, es decir, al conjunto deprogramas y procedimientos necesarios para hacerposible la realización de una tarea específica.

o Software de Sistema

o Software de Programación

o Software de Aplicación

Page 3: Fundamentos de Programación 1

Sistema Operativo

• Componentes:– Llamadas al Sistema.– Intérprete de Comandos.– Núcleo (o Kernel). – Programas del Sistema.– Programas de Aplicación

• Clasificación:–Monousuario / Multiusuario–Monotarea / Multitarea

Un sistema operativo (SO) es un conjunto de programasdestinados a permitir la comunicación del usuario con elcomputador y gestionar sus recursos de manera eficiente.

Page 4: Fundamentos de Programación 1

4

Lenguajes de Programación• Un lenguaje de programación es una técnica estándar de

comunicación que permite expresar las instrucciones quedeben ser ejecutadas en un computador.

• Consiste en un conjunto de reglas sintácticas y semánticasque definen un lenguaje informático.

A grandes rasgos los podemos clasificar en:

Lenguaje de MáquinaEl lenguaje máquina es el único que entiende directamente la computadora, utiliza elalfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviaturainglesa de dígitos binarios).

Lenguajes de Bajo NivelUn lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen uncontrol directo sobre el hardware y están condicionados por la estructura física de lacomputadora que lo soporta.

Lenguajes de Alto NivelSon aquellos que permiten una máxima flexibilidad al programador a la hora de abstraerse ode ser literal. Permiten un camino bidireccional entre el lenguaje máquina y una expresióncasi oral entre la escritura del programa y su posterior compilación. Estos lenguajes estánorientados a objetos. Los objetos se componen de propiedades cuya naturaleza emerge deprocedimientos.

Page 5: Fundamentos de Programación 1

ALGORITMOS• Los computadores hacen lo que se les indica que hagan

• No debe existir ambigüedades en las instrucciones que se lesproporcione.

• No debe haber la posibilidad de otras interpretaciones

• Hay que tener cuidado de que exista una sola alternativa

Un algoritmo es una secuencian ordenada de pasos libre deambigüedades, que lleva a la solución de un problema dado en untiempo finito.

Page 6: Fundamentos de Programación 1

Problemas y Soluciones

• Un problema es una abstracción de la realidad para la cual nos interesa conocer una solución.

• Una solución es un procedimiento o método para establecer el mecanismo de transformación del mundo que nos lleve a satisfacer ciertos requerimientos.

Page 7: Fundamentos de Programación 1

Resolución De Problemas

• Resolver un problemas muchas veces no es trivial, ya que esnecesario comprender qué se quiere resolver, encontrar lasherramientas adecuadas para resolver el problema, y luegoimplementar la solución con las herramientas disponibles.

Problema Solución ProblemaResuelto+ =

Page 8: Fundamentos de Programación 1

¿Qué Es Un Modelo?

• Se entenderá por modelo a todaestructura que se utiliza paraabstraer de la realidad a un conjuntode acciones o fenómenos queguardan entre sí ciertas relaciones.

• El diseño e implementación de unmodelo es fundamental enbúsqueda de la solución deproblemas computacionales.

Page 9: Fundamentos de Programación 1

¿Qué Es Un Algoritmo?

• Un algoritmo es un procedimientodetallado y preciso para resolver unproblema en pasos (o etapas), cada unode los cuales toma un tiempo finito.

• Se puede definir también a un algoritmocomo un conjunto ordenado y finito deoperaciones que permite hallar lasolución de un problema.

Page 10: Fundamentos de Programación 1

¿Cómo Escribir Un Algoritmo?

• Al describir un algoritmo es necesario ser lo más preciso posible, de modo que sea sencillo implementar el procedimiento especificado.

• Es necesario entonces:

• Definir una serie de operaciones básicas con las cuales se hará la especificación.

• A partir de las operaciones definidas, se debe proceder a enumerar los pasos que componen el algoritmo.

• En esta etapa se debe tener en consideración el control de flujo del mismo:

– Secuencia– Decisión – Iteración

Page 11: Fundamentos de Programación 1

Características de los algoritmos

El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:

• Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".

• 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".

Page 12: Fundamentos de Programación 1

• 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 corre. Estas entradas son tomadas de conjuntos específicos de objetos".

• Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".

Page 13: Fundamentos de Programación 1

• 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".

Page 14: Fundamentos de Programación 1

LA RESOLUCIÓN DE PROBLEMAS

Page 15: Fundamentos de Programación 1

La principal razón para que las personas aprendan a programar en general y los lenguajes de programación en particular es utilizar la computadora como una herramienta para la resolución de problemas. Ayudado por una computadora, la resolución de un problema se puede dividir en tres fases importantes:

1.-Análisis del problema.2.-Diseño o desarrollo del algoritmo.3.-Resolución del algoritmo en la computadora.

Page 16: Fundamentos de Programación 1

ANÁLISIS DEL PROBLEMA

El propósito del análisis de un problema, es ayudar al programador para llegar a una cierta comprensión de la naturaleza del problema. El problema debe estar bien definido si ase desea llegar a una solución satisfactoria.Para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definición del problema, junto con unadescripción detallada de las especificaciones de entrada y salida, son los requisitos más importantes para llegar a una solución eficaz.El análisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita.

Page 17: Fundamentos de Programación 1

La segunda lectura deberá servir para resolver a las preguntas:

• ¿Qué información debe proporcionar la resolución del problema?

• ¿Qué datos se necesitan para resolver el problema?

La respuesta a la primera pregunta indicará los resultados deseados a las salidas del problema.

La respuesta a la segunda pregunta indicará que datos se proporcionan a las entradas del problema.

Page 18: Fundamentos de Programación 1

Ejemplo:Leer el radio de un circulo y calcular e imprimir su superficie y la longitud de la circunferencia.

Page 19: Fundamentos de Programación 1

ANALISIS.Las entradas de datos en este problema se concentran en el radio del circulo. Dado que el radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de datosradio debe ser real.Las salidas serán dos variables: superficie y circunferencia, que también serán de tipo real.

Entradas: radio del circulo(variable RADIO).Salidas: superficie del circulo(variable Area).Circunferencia del circulo(variable Circunferencia).Variables: Radio, Área y circunferencia (tipo real).

Page 20: Fundamentos de Programación 1

DISEÑO DEL ALGORITMO.• Una computadora no tiene capacidad para solucionar

problemas mas que cuando se le proporcionan lossucesivos pasos a realizar. Estos pasos sucesivos queindican las instrucciones a ejecutar por la maquina,constituyen, como ya conocemos, el algoritmo.

• La información proporcionada al algoritmo, constituye suentrada y la información producida por el algoritmoconstituye su salida.

• Los problemas complejos se pueden resolver maseficazmente con la computadora, cuando se rompen en subproblemas que sean más fáciles de solucionar que eloriginal. Este método se suele denominar divide y vencerás(divide and conquer) que consiste en dividir un problemacomplejo en otros más simples

Page 21: Fundamentos de Programación 1

• Así el problema de encontrar la superficie y longitud de uncirculo se puede dividir en tres problemas más simples osubproblemas

• La descomposición del problema original en subproblemasmás simples y a continuación dividir estos subproblemas enotros más simples que pueden ser implementados para susolución en la computadora se denomina diseñodescendente (top-down design).

• Normalmente los pasos diseñados en el primer esbozo delalgoritmo son incompletos e indicaran solo unos pocospasos.

• Tras esta primera descripción, estos se amplían en unadescripción mas detallada con más pasos específicos.

• Para problemas complejos se necesitan con frecuenciadiferentes niveles de refinamiento antes de que se puedaobtener un algoritmo claro, preciso y completo.

Page 22: Fundamentos de Programación 1
Page 23: Fundamentos de Programación 1

Escritura inicial del algoritmo.• Como ya se ha comentado anteriormente, el sistema para

describir (“escribir”) un algoritmo consiste en realizar una descripción paso a paso con un lenguaje natural del citado algoritmo.

• Recordemos que un algoritmo es un método o un conjunto de reglas para solucionar un problema.

• En cálculos elementales estas reglas tienen las siguientes propiedades:• deben de estar seguidas de algunas secuencias definidas

de pasos hasta que se obtenga un resultado coherente• Sólo puede ejecutarse una operación a la vez.

Page 24: Fundamentos de Programación 1

PSEUDOCÓDIGO

• El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil.

• El pseudocódigo nació como un lenguaje similar al ingles y era un medio de representar básicamente las estructuras de control de programación estructurada.

• Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación.

Page 25: Fundamentos de Programación 1

PSEUDOCÓDIGO

• El pseudocódigo no puede ser ejecutado por una computadora.

• La ventaja del pseudocódigo es que en su uso, en laplanificación de un programa, el programador se puedeconcentrar en la lógica y en las estructuras de control y nopreocuparse de las reglas de un lenguaje especifico.

• Es también fácil modificar el pseudocódigo si se descubrenerrores o anomalías en la lógica del programa, mientras que enmuchas ocasiones suele ser difícil el cambio en la lógica, una vezque esta codificado en un lenguaje de programación.

• Otra ventaja del pseudocódigo es que puede ser traducidofácilmente a lenguajes estructurados

Page 26: Fundamentos de Programación 1

SINTAXIS DEL PSEUDOCÓDIGO

• Todo nombre de programa, procedimiento, función, proceso,constante o variable, es una secuencia de caracteres que seinicia siempre con una letra, acompañada de otras letras, dígitosy el carácter de subrayado(_)

• No pueden haber espacios en blanco o guiones en los nombresy deben escribirse siempre con Mayúscula.

• Todo algoritmo empieza con la palabra Programa seguida delnombre del programa.

• Un proceso está constituido por un conjunto de instruccionesque cumplen un objetivo determinado.

• Al final de cada instrucción o sentencia del programa se pondráun punto y coma (;), con el fin de separar cada instrucción,excepto en la última instrucción del proceso.

Page 27: Fundamentos de Programación 1

SINTAXIS DEL PSEUDOCÓDIGO

• El conjunto de instrucciones del programa, de unprocedimiento, de una función y de un proceso, debe ir entredelimitadores para indicar su inicio y su final.

• Las instrucciones de un proceso se escribirán con sangríarespecto a sus delimitadores para resaltar dicho proceso.

• En cualquier instrucción se puede incluir comentarios, estos noafectan al programa, sirven como aclaración. Los comentarios seinician con * y terminan con *

• Las asignaciones o transferencias de valores se indican con elsímbolo <--

• Todo programa termina con un punto (.) y todo procedimiento ofunción con un punto y coma (;).

Page 28: Fundamentos de Programación 1

ESTRUCTURA DE UN PROGRAMA

Programa NOMBREConst

Var

Inicia

Fin Programa NOMBRE.

CONSTANTES

VARIABLES

INSTRUCCIONES

Page 29: Fundamentos de Programación 1

Ejemplo: Diseñar un algoritmo para cambiar una llanta pinchada de un auto.

Programa CAMBIO_RUEDA;Utiliza:AUTO; (* Automóvil que se va a cambiar la llanta *)PINCHADA; (*llanta pinchada*)REPUESTO; (* Llanta de repuesto *)GATO; SERVICIO; (* Estación de servicio *)TORNILLOS; (*Tornillos de sujeción de las llantas*)

Inicia CAMBIO_RUEDASi GATO esta averiado Entonces

Llamar a SERVICIOCaso Contrario

Levantar el AUTOMOVIL con el GATORepetir

Aflojar y sacar TORNILLOSHasta que TORNILLOS estén flojos y quitados;quitar PINCHADA;poner REPUESTO;Repetir

Poner TORNILLOS y apretarlosHasta que TORNILLOS estén puestos;Bajar el GATO

Fin Programa CAMBIO_RUEDA.