Anda di halaman 1dari 47

Fundamentos de Programacin

MCA Gustavo Alejandro Galindo Rosales Igusi_soft@hotmail.com


1

Forma de Trabajo
2 Exmenes 40% Tareas y trabajos 10% Proyecto Final 50% Total 100% Condicin para pasar el curso 80% asistencias.
2

Unidad 1
Conceptos Bsicos
3

1.1 Clasificacin del software


El Software es la parte lgica de computadora, que permite el manejo de los recursos y la realizacin de tareas especificas, tambin denominados programas.

Clasificacin del Software


1. Software de Sistemas:

El software de sistema, denominado tambin software de base, consiste en programas informticos que sirven para controlar e interactuar con el sistema operativo, proporcionando control sobre el hardware y dando soporte a otros programas; en contraposicin del llamado software de aplicacin. Estos programas realizan diversas tareas, como la transferencia de datos entre la memoria RAM y los dispositivos de almacenamiento (disco rgido, unidades de discos pticos, etc.) entre otros.
7

Clasificacin del Software


Clases de software de sistema son: Cargadores de programas: Es la parte de un sistema operativo que es responsable de cargar programas en memoria desde los ejecutables. Sistemas operativos y sus componentes: Es un software que acta de interfaz entre los dispositivos de hardware y los programas usados por el usuario para utilizar un computador. Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y acta como estacin para las aplicaciones que se ejecutan en la mquina.
8

Clasificacin del Software


Controladores de dispositivos: Es un programa informtico que permite al sistema operativo interactuar con un perifrico, haciendo una abstraccin del hardware y proporcionando una interfaz posiblemente estandarizada- para usarlo. Herramientas de programacin: compiladores, ensambladores, enlazadores, etc. Programas utilitarios: Son aquellos que realizan tareas de mantenimiento, dan soporte para la construccin y ejecucin de programas y realizan las tareas en general.
9

10

Lenguaje de Programacin
Es un lenguaje artificial que puede ser usado para controlar el comportamiento de una mquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintcticas y semnticas que permiten expresar instrucciones que luego sern interpretadas.

11

Programa
Un programa es un conjunto de instrucciones escritas en algn lenguaje de programacin. El programa debe ser compilado o interpretado para poder ser ejecutado y as cumplir su objetivo.

12

Paradigmas de Programacin
Paradigma Un paradigma es un patrn o modelo que es compartido con los integrantes de un colectivo. Son como una serie de reglas que describen una realidad y que as mismo son aceptadas por las dems personas. Paradigma de Programacin Es una coleccin de modelos conceptuales que juntos modelan el proceso y determinan, al final, la estructura de un programa.

13

Paradigmas de Programacin
Esa estructura de modelos est pensada de forma que esos modelos determinan la forma correcta de los programas y controlan el modo en que pensamos y formulamos soluciones, y al llegar a la solucin, sta se debe expresar mediante un lenguaje de programacin. Para que este proceso sea efectivo, las caractersticas del lenguaje deben reflejar adecuadamente los modelos conceptuales de ese paradigma. Cuando un lenguaje refleja bien un paradigma particular, se dice que soporta el paradigma, y en la prctica un lenguaje que soporta correctamente un paradigma, es difcil distinguirlo del propio paradigma, por lo que se identifica con l.
14

Paradigmas de Programacin
Hay 3 tipos de paradigmas:
A) Los que soportan tcnicas de programacin de bajo nivel (ej: copia de ficheros frente estructuras de datos compartidos). B) Los que soportan mtodos de diseo de algoritmos (ej: divide y vencers, programacin dinmica, etc.) C) Los que soportan soluciones de programacin de alto nivel, como los descritos en el punto anterior.

15

Editores de texto
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor.

16

Compiladores e intrprete
Compilador
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin.

Intrprete
Es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los primeros (los intrpretes) slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por instruccin y normalmente no guardan el resultado de dicha traduccin.
17

Ejecutables
EXE (de la abreviacin en ingls executable, que se traduce en ejecutable) Archivo que tiene la capacidad de poder ser ejecutado de forma independiente, o en otras palabras, que no necesita ser ejecutado por una aplicacin externa. Estos archivos son ejecutados y controlados por el sistema operativo. Un archivo ejecutable contiene un programa, y generalmente necesitan de otros archivos para funcionar (aunque no es necesario).
18

Consola de lnea de comandos


Por su acrnimo en ingls de Command Line Interface (CLI), es un mtodo que permite a las personas dar instrucciones a algn programa informtico por medio de una lnea de texto simple.

19

Unidad 2
Algoritmos
20

Algoritmo
Es cualquier procedimiento computacional bien definido que toma algn valor o conjunto de valores como una entrada y produce algn valor o conjuntos de valores como salida Es una secuencia de pasos computacionales que transforman una entrada en una salida Es como una herramienta que permite resolver un problema computacional especfico

21

Algoritmo
Es una secuencia de instrucciones claras para resolver un problema.

22

Algoritmo
Puntos importantes a considerar:

Los requerimientos para un algoritmo deben de ser claros y no causar confusin El rango de salidas para cada algoritmo tiene que ser cuidadosamente especificados El mismo algoritmo puede representarse de diferentes formas Muchos algoritmos pueden resolver el mismo problema Los algoritmos para el mismo problema pueden estar basados en diferentes ideas y pueden resolver el problema en tiempos distintos
23

Algoritmo
Caractersticas: Preciso. Indica el orden de realizacin de cada paso Definido. Si se sigue un algoritmo dos veces se debe obtener el mismo resultado Finito. Se debe terminar en algn momento Eficiente. Debe de ser capaz de resolver un problema
Prcticamente la aplicacin de algoritmos es ubicua, regularmente estn especificados en ingles.
24

Algoritmo
Queremos obtener el mximo comn diviso de dos nmero m y n que no sean negativos, donde ambos no sean cero, y que sean nmeros enteros. Tip: utilizar el algoritmo de Euclides mcd(m,n)=mcd(n, m mod n) donde m mod n es el resultado de la divisin de m entre n, hasta que m mod n sea igual a 0; entonces mcd(m,0)=m (por qu?), por que el ultimo valor de m es tambin el mximo comn divisor de los nmeros iniciales m y n. Por ejemplo: mcd(60,24)=mcd(24,12)=mcd(12,0)=12

25

Algoritmo
Algoritmo en Pseudocdigo
//Entradas: dos nmero no negativos, ambos nmeros deben de ser enteros, ambos nmeros no deben de ser cero //Salida: mximo comn divisor de m y n

while n != 0 do r=m mod n m=n n=r return m


Desarrollo del algoritmo de Euclides: Paso 1. Si n=0, retorna el valor de m como respuesta y detente; de otra manera ve al Paso 2 Paso 2. Divide m entre n y asigna el valor resultante a r Paso 3. Asigna el valor de n a m y el valor de r a n. Regresa al Paso 1

26

Algoritmo y Pruebas de Escritorio


Es una ejecucin a mano del algoritmo, donde se lleva el registro de cada una de las variables con los valores que va tomando durante la ejecucin del programa. Retomando el problema del mcd(60,24) con el algoritmo de Euclides mcd(n, m mod n), tenemos:

27

Realizar el Siguiente Algoritmo


Algoritmo en Pseudocdigo (Numero primo)
//Entradas: nmero mayor que 0, nmero entero //Salida: imprimir en caso verdadero este nmero es primo, de lo contrario este nmero no es primo

contador = 0, i=2, num = 5 while i < num do si num mod i == 0 entonces contador = contador + 1 i=i+1 end while si contador == 0 entonces imprime este nmero es primo si no imprime este nmero no es primo

28

Realizar el Siguiente Algoritmo

29

Diseo de Algoritmos aplicados a problemas


Para llegar a la realizacin de un programa es necesario el diseo previo de algoritmo, de modo que sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo.
30

Tcnicas de diseos de Algoritmos


Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios. Algoritmos determinsticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene nicamente un paso sucesor y otro antecesor. Algoritmos no determinsticos: el comportamiento del algoritmo tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas se ejecutan simultneamente.
31

Tcnicas de diseos de Algoritmos


Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo. Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones.
32

Pasos para la resolucin de un problema


Entender el problema Determinar las capacidades de un dispositivo de computo Elegir entre una solucin exacta o aproximada Decidir una estructura de datos apropiada (ej. tipos de datos) Algoritmo + Estructura de Datos = Programa Tcnicas de diseo de algoritmos (ej. Orientado a Objetos) Mtodos para especificar un algoritmo (ej. Pseudocdigo, diagramas de flujo) Proveer correcciones al algoritmo Analizar el algoritmo Codificar el algoritmo
33

Pasos para la resolucin de un problema

34

Tipos de Problemas
Qu clases de problemas puede resolver un algoritmo? El proyecto genoma humano tiene el objetivo de identificar todos los 100,00 genes del ADN humano, lo que implica determinar la secuencia de 3 billones de pares en la cadena del ADN, esta es una gran informacin para una base de datos y se requieren herramientas de anlisis de datos. Intervienen puntos importantes como: el tiempo, dinero, esfuerzo humano y capacidad de hardware. La Internet crece rpidamente, requiriendo accesos y recuperacin de informacin. Los algoritmos son necesarios para manipular grandes volmenes de datos, ej. Buena bsqueda de rutas en el cual los datos puedan viajar, bsqueda de pginas con informacin particular, etc.
35

Tipos de Problemas
El Comercio electrnico permite la negociacin de servicios y transferencias electrnicas (tarjetas de crdito, nmeros confidenciales, contraseas, estados de cuenta, etc.), por lo que es esencial mantener un nivel de seguridad y privacidad que nos brinde confianza, para ello se crean sistemas criptogrficos (llave publica, firmas digitales, etc.) que hacen uso algoritmos numricos y la teora de nmeros.
En la manufactura y otro tipos de servicios comerciales, es importante permitir el acceso a fuentes que permitan maximizar nuestros procesos, ahorrando dinero, tiempo y esfuerzo; por ejemplo en la toma de decisiones, administracin gubernamental, calendarizaciones, etc.

36

Diagramas de Flujo

37

Diagramas de Flujo

38

Diagramas de Flujo
Reglas para la construccin de Diagramas de Flujo Deben de tener un principio y un fin Las lneas de conexin deben de ser claras y rectas Todas las lneas deben de estar conectadas El flujo preferentemente debe de ser de arriba abajo, o de izquierda a derecha Evitar la utilizacin de terminologa de un lenguaje de programacin en particular En las operaciones lgicas recurrir preferentemente a la lgica positiva
39

Ejemplo Diagrama de Flujo

40

Ejercicio: Hacer el diagrama de flujo

41

Diseo de algortmico de funciones


Nosotros podemos realizar cualquier algoritmo y representarlo en cualquiera de las formas anteriormente dichas pero a si vez dividindolos en mdulos, funciones, procedimientos, subalgoritmos etc. Por ejemplo Se tienen dos valores enteros, positivos mayores que cero de los cuales debemos saber quien de los dos es el mayor en caso contrario que nos imprima que son numero iguales

42

Diseo de algortmico de funciones


Normalmente as quedara el Pseudocdigo: Inicio Leer a1,a2 Si a1>0 y a2>0 entonces Si a1 > a2 entonces Imprimir el mayor es a1 Si no Si a1<a2 entonces Imprimir el mayor es a2 Si no Imprimir los nmeros son iguales Fin si Fin si Fin si Fin
43

Diseo de algortmico de funciones

44

Diseo de algortmico de funciones

45

Tarea: Realiza el diagrama flujo

46

Tarea: A partir del Algoritmo construye el pseudocdigo y las pruebas de escritorio


Calcular el factorial del nmero 10, el algoritmo: ENTORNO num, i, factorial : numrico entero ALGORITMO Escribir PROGRAMA QUE HALLA EL FACTORIAL DE UN NMERO Escribir Introduzca el nmero: Leer NUMERO Mientras NUMERO<>0 hacer Para i de numero a 2 paso 1 FACT=FACT*i; Escribir Resultado =, FACT FINPROGRAMA.
47

Anda mungkin juga menyukai