viernes, 30 de enero de 2009

Resumen del capitulo 2

FASES EN LA RESOLUCION DE PROBLEMAS
Las fases de resolución de un problema con computadoras son:
Análisis del problema
Diseño de algoritmo
Codificación
Compilación y ejecución
Verificación
Depuración
Diseño de un Algoritmo
se determina como hace el programa la tarea solicitada. Los métodos mas eficaces para el proceso de diseño se basa en el conocido DIVIDE Y VENCERAS un problema complejo se soluciona dividiendo en problemas y subproblemas y a la vez estos subproblemas en otros de nivel mas bajo hasta que pueda ser implementada una solución en la computadora.
Codificación de un Programa
es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas presedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programacion utilizado para su implementacion, el codigo puede ser escrito con igual facilidad en un lenguaje o en otro.
Compílacion y ejecucion de un programa
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacion se realiza con un programa editor. Posteriormente el programa fuente se convierte en un archivo de programa que se guarda (graba) en disco.
Verificacion y depuracion de un programa
Es el proceso de ejecución del programa con una aplia variedad de datos de entrada, llamados datos de test o prueba. que determinaran si el programa tiene errores (bugs).La depuracion es el proceso de encontrar errores del programa y corregir o eliminar dichos errores.Cuando se ejecuta un programa, se pueden producir tres tipos de errores:
1. Errores de compilacion. se producen normalmente por uso incorrecto de las reglas de lenguaje de programacion y suelen ser errores de sintaxis.
2. Errores de ejecucion. Estos errores se prodecen por instrucciones que las computadoras pueden comprender pero no ejecutar.
3. Errores logicos. Se producen en la logica del programa y fuente del error suele ser el diseño del algoritmo.
Documentacion y mantenimiento
La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de resolución de dicho problema. La importancia de la documentación debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difíciles de leer, mas difíciles de depurar y casi imposibles de mantener y modificar.La documentación de un programa puede ser interna y externa. la documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigo,
Programacion Modular
La programación modular es uno de los métodos de diseño mas flexible y potente para mejorar la productividad de un programa.. Cada uno de estos módulos se analiza, codifica y pone a punto por separado.
Programación Estructurada
Significa escribir un programa de acuerdo a las siguientes reglas:
El programa tiene un diseño modular.
Los módulos son diseñados de modo descendente.
Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección repetición.
Concepto y características del Algoritmo
El objetivo fundamental es enseñar a resolver problemas mediante una computadora.
Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un numero finito de pasos.
Escritura de Algoritmos
El sistema para describir (<>) un algoritmo consiste en realizar una descripción paso a paso con un lenguaje natural del citado algoritmo. Un algoritmo es un método o conjunto de reglas para solucionar un problema. En cálculos elementales estas reglas tienen las siguientes propiedades:
deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente.
solo puede ejecutarse una operación a la vez.
Representación Grafica de Algoritmos
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Para conseguir este objetivo se precisa que el algoritmo sea representado grafica o numéricamente, Los métodos usuales para representar un algoritmo son:1. diagrama de flujo.2. diagrama N-S (Nassi- Schneiderman),3. Lenguaje de especificación de algoritmos: pseudocódigo,4. lenguaje español, ingles...5. Formulas
Pseudocódigo
El pseudocodigo es un lenguaje de especificación (descripcion) de algoritmos. El uso de tal lenguaje hace el paso de codificación final relativamente facil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificacion de algoritmos.
Diagrama de flujo
Un diagrama de flujo (flowchart) es una de las tecnicas de representacion de algoritmos mas antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo, desde la aparicion de lenguajes de programacion estructurados. un diagrama de flujo es un diagrama que utiliza los simbolos (cajas) estandar y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas, denominadas lineas de flujo, que indican la secuencia en que se debe ejecutar.
Diagramas Nessi Schneiderman (Tarea)
diagrama N-S o también conocido como diagrama de Chapin es una técnica de especificación de algoritmos que combina la descripcion textual, propia del pseudocódigo, con la representación gráfica del diagrama de flujo. Es una representación gráfica de un algoritmo para programación estructurada. Desarrollados en 1972 por Isaac Nassi y Ben Shneiderman, estos diagramas también son conocidos como estructogramas debido a que muestran las estructuras de un programa.
Métodos Formales de verificaciones de programas.
Aunque la verificacion formal se sale fuera del ambito, por su importancia se van a tomar dos conceptos clave, asertos (afirmaciones) y precondiciones/postcondiciones invariantes que ayudan a documentar, corregir y clarificar el diseño de modulos y de programas.
Aserciones
Un aserto es una frase sobre una condicion especifica en un cierto punto de un algoritmo o programa.
Precondiciones y postcondiciones
Son afirmaciones sencillas sobre condiciones al principio y al final de los módulos. Una precondicion de un procedimiento es una afirmación lógica sobre sus parámetros de entrada. Una postcondicion de un procedimiento puede ser una afirmación lógica que describe el cambio en el estado del programa producido por la ejecución del procedimiento.

Métodos Formales de verificaciones de programas.

Aunque la verificacion formal se sale fuera del ambito, por su importancia se van a tomar dos conceptos clave, asertos (afirmaciones) y precondiciones/postcondiciones invariantes que ayudan a documentar, corregir y clarificar el diseño de modulos y de programas.

Aserciones
Una parte importante de una verificacion formal es la documentacion de un programa a traves de asertos o afirmaciones-sentencias logicas acerca del programa que se declaran <>-. Un aserto se escribe como un comentario y describe lo que se supone sea verdadero sobre las variables del programa en ese punto.
Un aserto es una frase sobre una condicion especifica en un cierto punto de un algoritmo o programa.

Precondiciones y postcondiciones
Son afirmaciones sencillas sobre condiciones al principio y al final de los modulos. Una precondicion de un procedimiento es una afirmacion logica sobre sus parametros de entrada; se supone que es verdadera cuando se llama al procedimiento. una postcondicion de un procedimiento puede ser una afirmacion logica que describe el cambio en el estado del programa producido por la ejecucion del procedimiento; la postcondicion describe el efecto de llamar al procedimiento. En otras palabras, la postcondicion indica que sera verdadera despues de que se ejecute el procedimiento.

Diagrama de flujo

Un diagrama de flujo (flowchart) es una de las tecnicas de representacion de algoritmos mas antigua y a la vez mas utilizada, aunque su empleo ha disminuido considerablemente, sobre todo, desde la aparicion de lenguajes de programacion estructurados. un diagrama de flujo es un diagrama que utiliza los simbolos (cajas) estandar y que tiene los pasos de algoritmo escritos en esas cajas unidas por flechas, denominadas lineas de flujo, que indican la secuencia en que se debe ejecutar.

Algunos simbolos utilizados en el diagrama; sin embargo, los simbolos mas utilizados representan



  • proceso

  • fin

  • decision

  • entrada/salida

  • conectores

  • direccion del flujo

Pseudocódigo

El pseudocodigo es un lenguaje de especificacion (descripcion) de algoritmos. El uso de tal lenguaje hace el paso de codificacion final relativamente facil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificacion de algoritmos.
El pseudocodigo nacio como un lenguaje similar al ingles y era un medio de representar basicamente las estructuras de control de programacion estructurada. El pseudocodigo tiene que traducirse posteriormente a un lenguaje de programacion y no puede ser ejecutado por una computadora. La ventaja es que en su uso, en la planificacion de un programa, el programador se puede concentrar en la logica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especifico otra ventaja es que puede ser traducido facilmente a lenguajes como Pascal, C, FORTRAN 77/90, C++, Java, C#, etc.
Utiliza para representar las acciones sucesivas palabras reservadas en ingles-similares a sus homonimas en los lenguajes de programacion-, tales como start, end, stop, if then-else, while-end, repeat-until, etc.
ejemplo:
start
//calculo de impuesto y salarios
read nombre, horas, precio_hora
tasas- 0,25 * salario_bruto - tasas
write nombre, salario_bruto, tasas, salario_neto
end

Representación Grafica de Algoritmos

Para representar un algoritmo se debe utilizar algun metodo que permita independizar dicho algoritmo del lenguaje de programacion elegido. Ello permitira que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado grafica o numericamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningun lenguaje de programacion, sino que la descripcion pueda servir facilmente para su transformacion en un programa, es decir, su codificacion.
Los metodos usuales para representar un algoritmo son:

1. diagrama de flujo.
2. diagrama N-S (Nassi- Schneiderman),
3. lenguaje de especificacion de algoritmos: pseudocodigo,
4. lenguaje español, ingles...
5. formulas

Las formulas para la solucion de una ecuacion cuadratica (de segundo grado) son un medio sucinto de expresar el procedimiento algoritmico que se debe ejecutar para obtener las raices de una ecuacion que significa lo siguiente:

1. Elevar al cuadrado b
2. Tomar a; multiplicar por c; multiplicar por 4.
3. Restar el resultado obteniendo de 2 del resultado de 1, etc.

Escritura de Algoritmos

El sistema para describir (<>) un algoritmo consiste en realizar una descripcion paso a paso con un lenguaje natural del citado algoritmo. Un algoritmo es un metodo o conjunto de reglas para solucionar un problema. En calculos elementales estas reglas tienen las siguientes propiedades:
  • deben estar seguidas de alguna secuencia definidade pasos hasta que se obtenga un resultado coherente.
  • solo puede ejecutarse una operacion a la vez.

el flujo de control usual de un algoritmo es secuencial: consideremos el algoritmo general de modo similar a:

ir al cine

comprar una entrada (billete o ticket)

ver la pelicula

regresar a casa

Resumen del capitulo 1

Una computadora es una maquina para procesar información y obtener resultados en función de unos datos de entrada.

Hardware: parte física de una computadora (dispositivos electrónicos).
Software: parte lógica de una computadora (programas)

Las computadoras se componen de:

  • Dispositivos de entrada/salida (E/S)
  • Unidad Central de Proceso (Unidad de Control y Unidad Lógica y Aritmética)
  • Memoria central
  • Dispositivo de almacenamiento masivo de información (memoria auxiliar o externa)

El software del sistema comprende, entre otros, el sistema operativo Windows, Linux, en computadoras personales y los lenguajes de programación. Los lenguajes de programación de alto nivel están diseñados para hacer más fácil la escritura de programas que los lenguajes de bajo nivel. Existen numerosos lenguajes de programación cada uno de los cuales tiene sus propias características y funcionalidades y normalmente son mas fáciles de transportar a maquinas diferentes que los escritos en lenguajes de bajo nivel.

Los programas escritos en lenguajes de alto nivel deben ser traducidos por un compilador antes de que se puedan ejecutar en una maquina especifica. En la mayoría de los lenguajes de programación se requiere un compilador para cada maquina en la que se desea ejecutar a programas escritos en un lenguaje especifico...

Los lenguajes de programación se clasifican en:

  • alto nivel: Pascal, FORTRAN, Visual Basic, C, Ada, Modula-2, C++, Java, Delphi, C#, etc.
  • bajo nivel: Ensamblador.
  • Maquina: Código maquina.
  • diseño de Web: SMGL, HTML, XML, PHP,…

Los programas traductores de lenguaje son:

  • Compiladores
  • Interpretes

C es un lenguaje de programación que contiene excelentes características como lenguaje para aprendizaje de programación y lenguaje profesional de propósito general; básicamente es un entorno de programación con editor y compilador incorporado.

Concepto y características del Algoritmo

El objetivo fundamental es enseñar a resolver problemas mediante una computadora. La metodologia de la programacion es la metodologia necesaria para resolver problemas mediante programas.

Un algoritmos es un metodo para resolver problemas, algoritmo proviene-como se comento anteriormente-de Mohammed al-KhoWarizmi, matematico persa que vivio durante el siglo IX y alcanzo gran reputacion por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir numeros decimales; la traduccion al latin del apellido en la palabra algorismus derivo posteriormente en algoritmo.Los pasos para la resolucion de un problema son:
1. Diseño del algoritmo, que describe la secuencia ordenada de pasos-sin ambiguedades-que conducen a la solucion de un problema dado. (Analisis del problema y desarrollo del algoritmo.)
2. Expresar el algoritmo como un programa en un lenguaje de programacion adecuado. (Fase de codificacion.)
3. Ejecucion y validacion del programa por la computadora.
Caracteristicas de los algoritmos


las caracteristicas fundamentales que debe cumplir todo algoritmo son:

  • Un algoritmo debe ser preciso e indicar el orden de realizacion de cada paso.
  • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algun momento; o sea, debe tener un numero finito de pasos.

La definicion de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendra:

Entrada: ingredientes y utensilios empleados.

Proceso: elaboracion de la receta en la cocina.

Salida: terminacion del plato (por ejemplo, cordero).

jueves, 29 de enero de 2009

Tarea Algoritmos 2.1. y 2.2.

2.1. Diseñar una solución para resolver cada uno de los siguientes problemas y tratar de refinar sus soluciones mediante algoritmos adecuados:

a) Realizar una llamada telefónica desde un teléfono público.
  • Inicio
  • ver donde esta el teléfono
  • ir hacia el teléfono
  • Tomar el teléfono
  • Insertarle monedas o tarjeta
  • Macar el numero deseado
  • Hablar por teléfono
  • Terminar de hablar
  • Colgar el teléfono
  • Soltar teléfono
  • Fin

b) Cocinar una tortilla.

  • Inicio
  • Tomar los cerillos (no hacerlo en caso de estufa eléctrica)
  • Prender el cerrillo (no hacerlo en caso de estufa eléctrica)
  • Prender la estufa (presionar botón y girar perilla del gas si es eléctrica)
  • Poner el comal sobre la estufa
  • Poner tortilla en el comal
  • Calentar la tortilla sobre el comal
  • Voltear la tortilla
  • Dejar calentar la tortilla sobre el comal
  • Sacar la tortilla
  • Fin

c) Arreglar un pinchazo de una bicicleta.

  • Inicio
  • Voltear la bicicleta
  • Tomar una llave o dado con ratch
  • Quitar las tuercas
  • Quitar llanta
  • Quitar el tubo pinchado del rin
  • Parchar el tubo
  • Poner tubo
  • Poner llanta
  • Volver a colocar las tuercas
  • Voltear la bicicleta
  • Fin

d) Freír un huevo.

  • Inicio
  • Tomar los cerillos (no hacerlo en caso de estufa eléctrica)
  • Prender cerillo (no hacerlo en caso de estufa eléctrica)
  • Prender la estufa (presionar botón y girar perilla del gas)
  • Regular a fuego medio
  • Poner el sartén sobre la estufa
  • Agregarle aceite de cocina al sartén
  • Tomar el huevo
  • Quebrar el huevo y poner su contenido dentro del sartén
  • Tirar el cascaron
  • Esperar a que se fríe el huevo
  • Sacarlo
  • Fin


2.2 Escribir un algoritmo para:


a) Sumar dos números enteros.

  • Inicio
  • Leer n1, n2
  • Calcular n= n1 + n2
  • Imprime n
  • Fin

b) Restar dos números enteros.

  • Inicio
  • Leer n1,n2
  • Calcular n=n1 – n2
  • Imprime n
  • Fin

c) Multiplicar dos números enteros.

  • Inicio
  • Leer n1, n2
  • Calcular n= n1 * n2
  • Imprime n
  • Fin

d) Dividir un numero entero por otro.

  • Inicio
  • Leer n1, n2
  • Calcular n=n1 / n2
  • Imprime n
  • Fin

Algoritmos

Algoritmo del area de un circulo:


  • Inicio

  • Leer radio

  • Calcular area= 3.141592653589*r2

  • Imprimir area

  • Fin


Algoritmo de un salario:


  • Inicio

  • Leer Horas, Tarifa, tasa

  • Calcular PagaBruta = Horas * Tarifa

  • Calcular Impuestos = PagaBruta * Tasa

  • Calcular PagaNeta = PagaBruta – Impuestos

  • Imprimir PagaBruta, Impuestos, PagaNeta

  • Fin

Analisis del problema

La primera fase de la resolucion de un progblema con computadora es el analisis del problema. Esta fase requiere una clara definicion, donde se contemple exactamente lo que debe hacer el programa y el resultado o solucion deseada.


Dado que busca una solucion por computadora, se precisan especificaciones detalladas de entrada y salida. la figura muestra los requisietos que se deben definir en el analisis.



Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:

  • ¿Que entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
  • ¿Cual es la salida deseada? (tipo de datos de los resultados y cantidad).
  • ¿Que metodo produce la salida deseada?
  • Requisitos o requerimientos adicionales y restricciones a la solucion.

HERRAMIENTAS DE PROGRAMACION


Diagrama de flujo


Es una representacion grafica de un algoritmo.


Los simbolos del diagrama de flujo son:


Entradas/Salidas:




ejemplo 2.1 Calcular la paga neta de un trabajador conociendo el numero de horas trabajadas, la tarifa y la tasa de impuestos. Algoritmo:



1.- Leer Horas, Tarifa, tasa
2.- Calcular Pagabruta = Horas * Tarifa
3.- Calcular Impuestos = Pagabruta * Tasa
4.- Calcular Paganeta = - Impuestos
5.- Visualizar Pagabruta, Impuestos, Paganeta

miércoles, 28 de enero de 2009

Concepto de Software y sus tipos

El software de una computadora es un conjunto de intrucciones de programa detalladas y coordinan los componentes hardware de una computadora y controlan las operaciones de un sistema informatico.
Un programa de sofware es un conjunto de sentencias o intrucciones al computador. Existen dos tipos importantes de software: software del sistema y software de aplicaciones.
Software del sistema es un conjunto generalizado de programas que gestionalos recursos del computador, tal como procesador central, enlaces de comunicaciones y dispositivos perifericos. Los programadores que escriben software del sistemase llaman programadores de sistemas.
Software de aplicaciones son el conjunto de programas escritos por empresas o usuarios individuales o en equipo y que instruyen a la computadora para que ejecute una tarea especifica. Los programadores que escriben software de aplicaciones se llaman programadores de aplicaciones.

Conceptos básicos de Redes e Internet

Una red es un conjunto de compudores conectados entre si para compartir recursos. Al contrario que un gran computador que es un unico computador compartido por muchos usuarios , una red (network) consta de muchos computadores que comparten recursos.
El uso de multiples computadores enlazados por una red de comunicaciones para distribuir el proceso se denomina proceso dristribuido en contraste con el proceso centralizado en el cual todo el proceso se realiza por un computador central. De esta forma los sistemas de computadoras tambien se clasifican en sistemas distribuidos y sistemas centralizados.
Las redes se pueden clasificar en varias categorias siendo las mas conocidas las redes de area local (LAN, Local Area Network) y las redes area amplia o ancha WAN (Wide Area Network). Una Red de Area Local permite a muchos computadores acceder a recursos compartidos de un computador mas potente denominado servidor. Una WAN es una red que enlaza muchos computadores personales y redes de area local en una zona geogrefica amplia. La red WAN mas conocida y popular en la actualidad es la red Internet qu esta soportada por la World Wide Web.
Las computadoras se conectan en redes LAN y WAN, aunque hoy en dia las redes ma implantadas son las redes que se conectan con tecnologia internet y por tanto conexion a la red internet. Estas redes son intranet y extranet y se conoces como redes corporativas ya que se enlazan computadoras de los empleados de las empresas.

Puertos Serie, Paralelo y firewire

El PC esta equipado con puertos serie y paralelo. El puerto serie (como minimo suele tener dos) es un conectador macho de la parte trasera o lateral del PC con 9 o 25 clavijas, aunque solo suelen utilizarse 3 o 4 para la transmision en serie. El puerto pararelo tambien se denomina puerto de impresora, ya que es donde solia conectarse la impresora hasta que aparecieron los conectores USB. El conectar de la impresora de la parte trasera del PC es un conector hembra de 25 clavijas. Los puertos se llaman tambien COM1, COM2 y LTP conocidos por nombres de dispositivos logicos que el programa de inicio del PC automaticamente asigna a estos dispositivos durante el inicio, poe ejemplo A:, C:, E:, CON, PRN y KBD son nombres logicos.

Firewire

El bus IEEE 1394 es una nueva interfaz SCSI (un bus antiguo pero avanzado utilizado para discos duros, unidades de CD-ROM, escaneres y unidades de cinta). Es un bus serie de alta velocidad con una tasa de transferencia maxima d 400 Mbps patentado por Apple. Los computadores Apple y Sony suelen venir con puertos firewire, y ya comienza a ser usual que los PC incluyan al menos un puerto firewire. Las actuales videocamaras digitales y otros dispositivos de audio e imagen suelen incorporar conectores firewire.

Dispositivos de Almacenamiento de información

Mediante los dispositivos de almacenamiento,proporciona capacidad de almacenamiento fuera de la UCP y del almacenamiento o memoria principal. El almacenamiento es no volatil y mantien los datos y programas, incluso, cuando se apaga la computadora. las unidades (drives, en ingles), peroferios o dispositivos de alamacenamiento secundario son dispositivos perifericos que actuan por medio de soporte para almacenar los datos.
Las tecnologias de alamcenamiento mas importantes son discos magneticos, discos opticos y cintas magneticas. El dispositivo de alamacenamiento mas comun es la unidad de disco o disquetera, que sirve para alojar los discos.

Concepto de Computadora

Una computadora es un dispositivo electronico que procesa informacion y obtiene resultados, es capaz de ejecutar calculos y tomas decisiones a velocidades de millones o cientos de millones mas rapido de las que pueda ser un ser humano.

Programacion Modular y Programación Estructurada

ENERO 28, 2009


La programacion modular es uno de los metodos de diseño mas flexible y potente para mejorar la productividad de un programa. En programacion modular el programa se divide en modulos (partes independientes), cada uno de las cuales ejecuta una unica actividad o tarea y se codifican independientementede otros modulos. Cada uno de estos modulos se analiza, codifica y pone a punto por separado. Cada programa contiene un modulo denominado programa principal que controla todo lo que sucede; se transfiere el control a submodulos (posteriormente se denominaran subprogramas), de modo que ellos puedan ejecutar sus funciones; sin embargo, cada submodulo devuelve el control al modulo principal cuando se haya completado la tarea. El proceso sucesivo de subdivisión de módulos continúa hasta que cada módulo tenga solamente una tarea específica que ejecutar. Esta tarea puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos. Un módulo puede transferir temporalmente (bifurcar) el control a otro módulo; sin embargo, cada modulo debe eventualmente devolver el control al módulo del cual se recibe originalmente el control.



Dado que los modulos son independientes, diferentes programadores pueden trabajar simultáneamente en diferentes partes del mismo programa, de ésta manera se reduce gran tiempo de disñe del algoritmo y la codificación, además una modificación radical dentro de un módulo no afectará a los demás.

2.3 programación Estructurada

significa escribir un programa de acuerdo a las siguientes reglas:

  • El programa tiene un diseño modular.
  • Los módulos son diseñados de modo descendente.
  • Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selecccion repetición.

Si está familiarizado con los lenguajes como BASICy FORTRAN, la progamación estructurada significa también programación sin GOTO.La programación estructurada reduce la complejidad de los programas, los errores; hace los programas más fáciles de escribir, leer,verificar y mantener.

La programacion estructurada es el conjunto de tecnicas que incorporan:

  • Recursos abstractos.
  • Diseños descentes (top-down)
  • Estructuras basicas.

lunes, 26 de enero de 2009

Codificacion de un Programa, Compilación y ejecución de un programa, Verificación y depuración de un programa y Documentación

enero 26, 2009

Codificacion es la escritura en un lenguaje de programacion de la representacion del algorito desarrollada en las etapas presedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programacion utilizado para su implementacion, el codigo puede ser escrito con igual facilidad en un lenguaje o en otro.
Para realizar la conversion del algoritmo en programa se debe sustituir las palabras reservadas en español por sus hononimos en ingles, y las operaciones/instrucciones indicadas en lenguaje natural expresarlas en el lenguaje de programacion correspondiente.

Docuemtancion interna
Como se verra mas tarde, la docmentacion de un programa se clasifica en interna y externa. la documentacion interna es la que se incluye dentro del codigo del programa fuente mediante comentarios que ayudan a la comprension del codigo. Todas las lineas programas que comiencen con un simbolo / * son comentarios. El programa no los necesita y la computadora los ignora. estas lineas de comentarios solo sirven para hacerlos programas mas faciels de comprender. el objetivo del programador debe ser escribir codigos sencillos y limpios.
debido a que las maquinas actuales soportan grandes emorias (512 Mb o 1.024 Mb de memoria central minima en computadoras personales) no es necesario recurrir a tecnicas de ahorro de memoria, por lo que es recomendable que se incluya el mayor numero de comentarios posibles, pero eso si, que sean significativos.

2.1.5 Compílacion y ejecucion de un programa
Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacion se realiza con un programa editor. Posteriormente el programa fuente se convierte en un archivo de programa que se guarda (graba) en disco.
el programa fuente debe ser traducido a lenguaje maquina, este proceso se realiza con el compilador y el sietema que se encarga practicamentede la compilacion.

2.1.6 Verificacion y depuracion de un programa
Es el proceso de ejecucion del programa con una aplia variedad de datos de entrada, llamados datos de test o prueba. que determinaran si el programa tiene errores (bugs).
La depuracion es el proceso de encontrar errores del programa y corregir o eliminar dichos errores.
Cuando se ejecuta un programa, se pueden producir tres tipos de errores:
1. Errores de compilacion. se producen normalmente por uso incorrecto de las reglas de lenguaje de programacion y suelen ser errores de sintaxis.
2. Errores de ejecucion. Estos errores se prodecen por instrucciones que las computadoras pueden comprender pero no ejecutar.
3. Errores logicos. Se producen en la logica del programa y fuente del error suele ser el diseño del algoritmo. Estos errores son los mas dificiles de detectar, ya que el programa puede funcionar y no producir errores de copilacion ni de ejecucion, y solo puede advertirse el error por obtencion de resultados incorrectos.

2.1.7 Documentacion y mantenimiento

La documentacion de un problema consta de las descripciones de los pasos a dar en el proceso de resolucion de dicho problema. La importancia de la documentcion debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son dificiles de leer, mas dificiles de depurar y casi imposibles de mantener y modificar.
La documentacion de un programa puede ser interna y externa. la documentacion interna es la contenida en lineas de comentarios. La documentacion externa incluye analisis, diagramas de flujo y/o pseudocodigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.
La documentacion es vitsl cuando se desea corregir posibles errores futuros o bien cambiar el programa. Tales cambios se denominan mantenimiento del porgrama

viernes, 23 de enero de 2009

Algoritmo de el Area de un Rectangulo dada la Base y Altura

Escribe un algoritmo para obtener el área de un triángulo, tomando en cuenta que el área: (base * altura).

Algoritmo:

Inicio
Declare opcion, base, altura
Leer opcion
Seleccionar opcion
Declare área, altura, base
Leer base, altura
area:(base*altura)
Imprimir area
Si no
Imprimir "ERROR"
Fin selección
Fin

Diseño de un Algoritmo

ENERO 22, 2009


En la etapa del analisis del proceso de programacion se determina que hace el programa. En la etapa de diseñlo se determina como hace el programa la tarea solicitada. Los metodos mas eficacez para el proceso de diseño se basa en el conocido DIVIDE Y VENCERAS un problema complejo se soluciona diviediendo en problemas y subproblemas y a la vez estos subproblemas en otros de nivel mas bajo hasta que pueda ser implementada uns solucion en la computadora.
Este metodo se conoce como diseño desendente (Top-Down) o modular.

miércoles, 21 de enero de 2009

Diagramas Nessi Schneiderman (Tarea)

enero 21, 2009
DEFINICION

diagrama N-S o también conocido como diagrama de Chapin es una técnica de especificación de algoritmos que combina la descripcion textual, propia del pseudocódigo, con la representación gráfica del diagrama de flujo. Es una representación gráfica de un algoritmo para programación estructurada. Desarrollados en 1972 por Isaac Nassi y Ben Shneiderman, estos diagramas también son conocidos como estructogramas debido a que muestran las estructuras de un programa.
diagrama N-S cuenta con un conjunto limitado de símbolos para representar los pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigüedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras reservadas más utilizadas son:

Inicio Fin Leer Escribir
Mientras Repita Hasta Para
Incrementar Decrementar Hacer Función
Entero Real Caracter Cadena
Lógico Retornar

Los símbolos utilizados en el diagrama de Chapin son corresponden a cada tipo de estructura. Dado que se tienen tres tipos de estructuras, se utilizan tres símbolos. Esto hace que los procesos del algoritmo sean más fáciles de representar y de interpretar.
Estructuras secuenciales

Son aquellas que se ejecutan una después de otra. Se tienen tres tipos de instrucciones secuenciales: la declaración de variables, asignación, instrucción Leer e instrucción Escribir.
La mayoría de algoritmos actúan sobre un conjunto de datos suministrados por el usuario y se espera que a partir de dichos valores y desarrollando los procesos programados se genere información de salida o resultados.

Declaración de variables

Teniendo en cuenta la compatibilidad con la mayoría de los lenguajes, se recomienda que desde el diseño del programa se utilice una forma determinada para la declaración de las variables. Esta consiste en escribir el tipo de datos y la lista de identificadores que se tendrán de dicho tipo, separando cada identificador por medio de comas (,). Para mejorar la claridad de la declaración se puede colocar dos puntos (:) para separar el tipo de datos de la lista de identificadores.

Ejemplo:
Entero: edad
Real: estatura, peso, sueldo
Cadena: nombre, dirección

Aunque algunos lenguajes de programación permiten declarar las variables en el momento en que se las necesita, es aconsejable, en favor de los buenos hábitos de programación, siempre declarar las variables antes de utilizarlas y el sitio más adecuado es el inicio del programa o de la función.

Asignación

Asignar un valor a una variable equivale a decir que se guarda dicho valor en la posición de memoria reservado para la variable en mención. Por lo tanto, para poder realizar una asignación es necesario primero haber declarado una variable, con lo cual se reserva un espacio de memoria suficiente para guardar un dato del tipo especificado.

Una expresión de asignación tiene la forma:
Variable = expresión
Donde la expresión puede estar formada por un valor, por un conjunto de valores y operadores o por una función.
Ejemplos:
Edad = 10
Estatura = 1.80
Resultado = 2*3

Ejemplos:
Entero: X, Y
X = 10
Y = X * 2 + 8
En este ejemplo, la variable Y contendrá el valor 28.

Instrucción Leer

La instrucción LEER se utiliza para enviar información desde un dispositivo de entrada de datos hacia la memoria. En la memoria los datos son ubicados mediante el identificador (nombre de variable) utilizado como complemento de la instrucción LEER.
En diagrama N-S la instrucción de entrada se representa así:

Leer

Ejemplo:
Leer a, b
Donde "a" y "b" son las variables que recibirán los valores y que deben haberse declarado previamente.
Instrucción Escribir
Esta instrucción permite enviar datos desde la memoria hacia un dispositivo de salida como la pantalla o la impresora. La información que se envía puede ser constante o también el contenido de variables.
Los símbolos básicos son:

Fases de la Resolución de un problema

ENERO 21, 2009

INTRODUCCION

pasos para la resolucion de un problema:
1.- definicion o analisis del problema
2.- Diseño del algoritmo.
3.- Transformacion del algoritmo en un programa.
4.- Ejecucion y validacion del programa

CONCEPTOS CLAVES
  • Algoritmos
  • Ciclo de vida
  • Diseño descente
  • Diagrama Nassi Schneiderman
  • Diagrama de flujo
  • Diseño
  • Dominio del problema
  • Factores de calidad
  • Invariantes
  • Metodos formales
  • Postcondiciones
  • Precondiciones
  • Programacion modular
  • Programacion estructurada
  • Pruebas
  • Pseudocodigo
  • Verificacion

2.1 FASES EN LA RESOLUCION DE PROBLEMAS

las fases de resolucion de un problema con computadoras son:

  • Analisis del problema
  • Diseño de algoritmo
  • Codificacion
  • Compilacion y ejecucion
  • Verificacion
  • Depuracion

Algoritmo: es un metodo para resolver un problema mediante unsa serie de pasos precisos, definidos y finitos.

caracteristicas de un algoritmo:

  • preciso (si se sigue dos veces, obtiene el mismo resultado cada vez)
  • definido (indica el orden de realizacion en cada paso)
  • finito (tiene fin; un numero determinado de pasos)

un algoritmo debe producir un resultado en un tiempo finito. los metodos que utilizan los algoritmos son metodos algoritmicos, en oposision a los metodos ue implican algun juicio o interpretacion que se denominan metodos heuristicos.

Heurística

Se denomina heurística a la capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines.

lunes, 19 de enero de 2009

Conceptos Basico de Lenguaje C

Enero 19, 2009

1.- Conceptos de Lenguaje de Programacion (4)
2.- Clasificacion de los Lenguajes de Programacion (12)
3.- Paradigmas de Programacion (6)
4.- Historia del Lenguaje C (12)
5.- Los herederos (c++, java, c#) (8)


1.- Se utilizan para escribir programas. Los programas de las computadoras modernas constan de secuencias de dígitos numéricos que podrán entender dichas computadoras. El sistema de codificacion se conoce como Lenguaje maquina. las instrucciones básicas y comunes en casi todos los lenguajes de programacion son: instrucciones de salida/entrada, de calculo y de control.

2.- Lenguajes Maquina:
En la década de los 40 cuando nacían las primeras computadoras digitales el lenguaje que se utilizaba para programar era el lenguaje maquina que traducía directamente el código maquina, los investigadores de la época simplificaron el proceso de programacion desarrollando sistemas de notación en los cuales las instrucciones se representaban en formatos nemónicos (nemotécnicos) en vez de formatos numéricos que eran mas difíciles de recordar.
Lenguajes de bajo nivel:
Para convertir los programas escritos en código nemotécnico a lenguaje maquina, se desarrollaron programas ensambladores (assenmblers). Es decir, ensambladores son programas que traducen otros programas escritos en código nemotécnico en instrucciones numéricas en lenguaje maquina que son compatibles y legibles por la maquina. A estos lenguajes se le denomino de segunda generación, reservando el nombre de primera generación ara los lenguajes maquina. en la década de los 50 y 60 comenzaron a desarrollarse lenguajes de programacion de tercera generación que diferencian de las otras generaciones anteriores, eran de alto nivel e independientes de las maquinas. Los ejemplos mas conocidos son FORTRAN y COBOL. con el paso de los años aparecieron lenguajes nuevos tales como Pascal, BASIC, C, Ada, Java, C#, HTML, XML.
Los lenguajes de alto nivel:
se componen de un conjunto de instrucciones o primitivas mas fáciles de escribir y recordar su función que los lenguajes maquina y ensamblador.

3.- Representa fundamentalmente enfoques diferentes para construccion de soluciones a problemas y por consiguiente afectan al proceso completo de desarrollo de software. Los paradigmas de programacion clásicos son:
Procedimental (o imperativo): representa el enfoque o método tradicional de programacion
Funcional declarativo: solicita al programador que describa el problema en lugar de encontrar una solución algorítmica al problema.
Orientado a objetos: guarda analogía con la vida real.

4.- C es el lenguaje de programacion de proposito general asociado de modo universal, al sistema operativo UNIX. Sin embargo, la popularidad, eficacia y potencia de C, se a producido por que ese lenguaje no esta practicamente asociado a ningun sistema operativo, ni a ninguna maquina, en especial. Esta es la razon fundamental, por la cual C, es conocida como el lenguaje de programacion de sistema, por excelencia. C nacio realmente en 1978, con la publicacion de The C programing lenguaje, por Brian kerninghan y Dennis Ritchie (Prentice Hall, 1978). Desde su nacimiento, se fue creciendo en popularidad y los sucesivos cambios en el lenguaje, a lo largo de los años, junto a la creacion de compiladoras por grupos no involucrados en esu diseño, hicieron necesario para pensar en la estandarizacion de definicion de lenguaje C. C es un lenguaje de alto nivel, que permite programar con instrucciones de lenguaje de proposito general. Tambien, C se defince como un lenguaje de programacion estructurado de proposito general; aunque en su diseño primo el hecho de que fuera especificado comom un lenguaje de programcion de sistemas, lo que proporciona un enorme cantidad de potencia y flexibilidad.

5.- C++ es heredero directo de lenguaje que a su vez se deriva del lenguaje B [Richards, 1980]. C se mantiene como un subconjunto de C++. Las caracteristicas mas notables que ha ido incorporandose a C++ son : herencia multiple, generecidad, plantillas, funciones virtuales, excepsiones, etc.

Java desarrollado por Sun Microsystems en 1995 es un magnifico y completo lenguaje de programacion orientado a objetos dieñado para distribuir contenidos a travez de una red. Una de sus principales caracteristicas es que permite operar de forma independiente de la plataforma y del sistema operativo que se este utilizando.

C# esta relacionado directamente con C, C++ y Java. De C ha heredado su sintexis, muchas de las palabras reservadas y sus operadores. De C++ ha heredaro su modelo de objetos. C# añade importantes innovaciones en el arte de la programacion.





viernes, 16 de enero de 2009

Bienvenida

hoy 15 de enero del 2009 empezamos utilizando las komputadoras para utilizar el internet para empezar a krear un blog y enseguida empezar a escribir o mas bien krear una entrada komo bienvenida a este blog