martes, 1 de marzo de 2016

Programación 1 Unidad 1 y 2

Unidad 1                        
Proceso computacional y programas.
1.1-El proceso computacional

El computador es una máquina cuya función básica es llevar a cabo operaciones de cómputo (transformaciones) sobre elementos de datos. Como todas las máquinas, el computador recibe una “materia prima” (datos de entrada), la transforma a través de un proceso y devuelve un “producto” (datos de salida).

1.1.1Concepto de programa

El concepto de programa posee múltiples acepciones. Puede ser entendido como el anticipo de lo que se planea realizar en algún ámbito o circunstancia; el temario que se ofrece para un discurso; la presentación y organización de las materias de un cierto curso o asignatura; y la descripción de las características o etapas en que se organizan determinados actos o espectáculos artísticos. 

1.1.2 Concepto de información
La información está constituida por un grupo de datos ya supervisados y ordenados, que sirven para construir un mensaje basado en un cierto fenómeno o ente. La información permite resolver problemas y tomar decisiones, ya que su aprovechamiento racional es la base del conocimiento

1.1.3 Tipos de información
La información es un conjunto organizado de datos procesados, que constituyen un mensaje que cambia el estado de conocimiento del sujeto o sistema que recibe dicho mensaje. Existen diversos enfoques para el estudio de la información.

1.2 Tipos de lenguajes de programación
Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel.

1.2.1 Lenguajes de bajo nivel

Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras máquinas.

1.2.2 Lenguaje de mediano nivel

Lenguaje de medio nivel es un lenguaje de programación informática como el lenguaje C, que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel.
Suelen ser clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.

1.2.3 Lenguajes de alto nivel

Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina.
Están dirigidos a solucionar problemas mediante el uso de EDD's.

1.3 Proceso de compilación e interpretación

La compilación es el proceso de traducir un programa en código fuente a programa en código objeto (que usa el lenguaje binario), el programa encargado de compilar se llama compilador.
Los lenguajes interpretados necesitan de un programa que traduzca en directo el código fuente escrito a instrucciones de la plataforma en la que se ejecutan. Ejm: Python, Visual Basic Script.

1.3.1 Características de compiladores

El compilador traduce todo el programa antes de ejecutarlo.
Los programas compilados se ejecutan más rápido que los interpretados, debido a que han sido completamente traducidos a lenguaje máquina.
Informa al usuario de la presencia de errores en el programa fuente.
Poseen un editor integrado con un sistema de coloreado para los comandos, funciones, variables y demás partes de un programa.

 1.3.2 Características de interpretes

Un interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida quesea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

1.3.3 Tipos de Código

E l código ASCII es una serie de combinaciones en el teclado del computador afín de obtener un símbolo digito distinto.

1.4 Entorno de desarrollo

Un entorno de desarrollo integrado es un programa informático compuesto por un conjunto de herramientas de programación. Puede dedicarse en exclusiva a un solo lenguaje de programación o bien puede utilizarse para varios.

1.4.1 Entorno de desarrollo integrado

Un entorno de desarrollo integrado, es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI).

Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, PHP, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de programación en forma interactiva, sin necesidad de trabajo orientado a archivos de texto.

1.4.2 Línea o comando

Línea de Comandos Es una Interfaz (o CLI, por sus iniciales en inglés) es un método para manipular con instrucciones escritas al programa que subyace debajo. 






Unidad 2
Estructura y organización de un programa.


2.1 Modelos para el desarrollo de software


La Ingeniería de Software surge como la aplicación de modelos y formas de la ingeniería tradicional a la práctica de construir productos de software; situación que ha condicionado su accionar al tener como norte las precisiones y seguridades que en otros ámbitos tiene la ingeniería.


2.1.1 Modelo en cascada


Este es el más básico de todos los modelos y ha servido como bloque de construcción para los demás paradigmas de ciclo de vida. Está basado en el ciclo convencional de una ingeniería y su visión es muy simple: el desarrollo de software se debe realizar siguiendo una secuencia de fases. Cada etapa tiene un conjunto de metas bien definidas y las actividades dentro de cada una contribuyen a la satisfacción de metas de esa fase o quizás a una subsecuentica de metas de la misma. 




2.1.2 Modelo en espiral


Es un modelo de proceso de software evolutivo donde se conjuga la naturaleza de construcción de prototipos con los aspectos controlados y sistemáticos del MODELO LINEAL y SECUENCIAL. Proporciona el potencial para el desarrollo rápido de versiones incrementales del software que no se basa en fases claramente definidas y separadas para crear un sistema.


2.2 Elementos y estructura de un programa

Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos).

2.2.1 Bloque de declaraciones

Toda declaración tiene un ámbito (conjunto de sentencias) en el que es visible el nombre declarado y se puede usar para referenciar la vista de la entidad asociada y tener acceso a la misma. Generalmente, el ámbito de una declaración se extiende hacia adelante y hacia adentro: una declaración hecha en un subprograma o en un bloque es visible en todo el resto del mismo subprograma o bloque a partir del punto en que aparece, incluyendo los subprogramas o bloques anidados en él, salvo que incluyan una declaración con el mismo nombre (una declaración oculta cualquier otra del mismo nombre hecha en un bloque más externo).

2.2.2 Bloque de instrucciones

Un bloque de instrucciones es un conjunto de instrucciones que se ejecutan una detrás de otra y que se encuentran entre llaves. La primera instrucción de este bloque escribe un mensaje de error en la pantalla, y la segunda (return;) termina la ejecución de la función main.

Hasta ahora no hemos comprobado si los archivos se abrían correctamente. Sin embargo, la función fopen permite hacerlo porque asigna a f el valor NULL si no puede abrir el archivo correspondiente. 

2.3 Identificadores y tipos de datos

Un dato es la unidad mínima de memoria de información en una computadora. Se clasifica en simples y estructurados.
Simples

Numéricos      -->   Enteros, reales
Lógicos          -->   Verdadero, Falso
Alfanuméricos  -->   Cadenas y caracteres

2.3.1         Numéricos

La principal diferencia entre cada uno de los tipos de enteros es su tamaño, que va desde 1 byte de almacenamiento hasta los 8 bytes. Las columnas de tipo en- tero pueden recibir dos atributos adicionales, que deben especificarse inmediatamente después del nombre del tipo:
 unsigned. Indica que el entero no podrá almacenar valores negativos. Es responsabilidad del usuario verificar, en este caso, que los resultados de las restas no sean negativos, porque MySQL los convierte en positivos.
zerofill. Indica que la columna, al ser mostrada, rellenará con ceros a la iz- quierda los espacios vacíos. Esto de acuerdo al valor especificado por M en la declaración del tipo. Una columna con el atributo zerofill es al mismo tiempo unsigned aunque no se especifique.

2.3.2          Alfanuméricos
Los datos alfanuméricos permiten trabajar con caracteres y cadenas de caracteres (secuencias de caracteres). Los caracteres que la computadora puede utilizar pertenecen al código ASCII (ver el tema en Wikipedia). Los dos tipos de datos alfanuméricos que se pueden usar son el tipo caracter y el tipo cadena de caracteres, la diferencia entre estos dos tipos es que el primero sólo puede almacenar un caractere mientras que el segundo puede almacenar secuencias y por ende palabras oraciones y cualquier otro tipo de secuencia .



2.3.1      Lógicos
El tipo lógica permite representar los valores verdadero y falso.
En el código, los valores verdadero y falso se representan respectivamente como:
True.
False.
Al imprimirlos usando printf, estos valores aparecerán para la pantalla respectivamente.


2.4 Operadores y expresiones
Operadores
Los operadores son símbolos especiales que por lo común se utilizan en expresiones.
Expresión
Una expresión es una combinación de variables, operadores y llamadas de métodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor.

El tipo de dato del valor regresado por una expresión depende de los elementos usados en la expresión. 

2.4.1      Jerarquía de Operadores
consiste en el orden por el cual  el ordenador interpreta las operaciones a realizar ,determinando cuales tienen mas prioridad que las otras,  la jerarquía de los operadores son las siguientes:
1)Multiplicacion
2)Division
3)Suma
4)Resta
partiendo de este principio se podrá apreciar en el siguiente ejemplo  el desarrollo de la jerarquía:
5*3+12-14/2

2.4.2      Operadores Aritméticos
Los operadores aritméticos se usan para realizar cálculos de arit
Los operadores aritméticos pertenecen a dos grupos: unos aceptan operandos de tipo numérico; otros aceptan operandos de tipo puntero-a-tipoX [3]. Además son de dos tipos; unarios (que aceptan un solo operando) y binarios mética de números reales y de aritmética de punteros.

2.4.3 Operadores Lógicos y Relacionales
Se llaman operadores relacionales o de comparación a aquellos que permiten comparar dos valores evaluando si se relacionan cumpliendo el ser menor uno que otro, mayor uno que otro, igual uno que otro, etc. Los operadores lógicos permiten además introducir nexos entre condiciones como “y se cumple también que” ó . “o se cumple que”.

2.5    Variables y constantes
Una variable es un objeto de datos con un nombre, un tipo y un valor asociado que puede modificarse libremente durante la ejecución de la parte de un programa en la que es visible (ámbito). Una dec
lalación de variables consta de: (1) una lista de nombres de las variables que se declaran separadas por comas (",") y terminada con dos puntos (":"), (2) el tipo de las variables y, opcionalmente, (3) la asignación de un valor inicial.

2.5.1      Tipos de variables
Variable independiente
Una variable independiente es aquella cuyo valor no depende del de otra variable.
Variable dependiente
Una variable dependiente es aquella cuyos valores dependen de los que tomen otra variable.
Variable cualitativa
Las variables cualitativas se refieren a características o cualidades que no pueden ser medidas con números.

2.5.2      Tipos de constantes
Es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación ( momento en el cual revisamos que el programa – algoritmo no tiene errores de sintaxis y se puede ejecutar ) y este valor que se le dió permanece inalterado durante todo el programa.

2.5.3 Diferencia entre variables y constantes
La variable es un valor que siempre va a depender de otros, ya se por el tiempo, espacio, ó que esté en función de otro.
En cambio la constante es un valor dependiente, ya està determinado no depende de nadie, su valor no se modifica por más que algunos valores que estén en su entorno varíe. 

2.5.3      Sintaxis de aplicación de variables y constantes
Una constante es una partida de datos que permanecen sin cambios en el programa (durante el desarrollo y ejecución).
Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el desarrollo y ejecución).



Unidad 3
3.1 Estructuras secuenciales
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.
Prog. Computadoras
Estructuras selectivas, simple, doble, múltiple.
La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición. https://userscontent2.emaze.com/images/4746d4d0-bc55-462e-9133-ecb2911c619b/899a5369-5c2d-4556-b2a8-7bfe34d4e03a.jpg
Estructuras iterativas
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instrucción simple o compuesta. 
CICLO WHILE

Permite que se repita cierta acción en cuanto la condición evaluada sea verdadera y en el momento en que la condición sea falsa saldrá del ciclo y continuara con la siguiente instrucción
DO – WHILE

Su diferencia básica con el ciclo while es que la prueba de condición es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evalúa la condición.
https://programacionluzedu.files.wordpress.com/2012/06/diagrama1-21.png
Arreglos y Matrices
Un arreglo es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo. Conviene imaginar un arreglo como una secuencia contigua de celdas (espacios de memoria), o casillas, en cada una de las cuales se puede guardar un elemento de la colección
. http://develoteca.com/tutoriales/wp-content/uploads/2015/02/vector-300x246.jpg 
Tipos de arreglos
*1* Arreglos unidimensionales
*2* Arreglos bidimensionales
*3* Arreglos multidimensionales
1) Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.

2) El arreglo bidimensional, al igual que el anterior, es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas.

3) El arreglo multidimensional, también es un tipo de dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n índice, uno para cada dimensión
http://image.slidesharecdn.com/clase08-131203183559-phpapp01/95/fundamentos-de-programacion-6-638.jpg?cb=1386095800
Declaración e inicialización de un arreglo
http://image.slidesharecdn.com/12arreglos-1231095625518128-2/95/arreglos-en-c-9-728.jpg?cb=1231066861
Subíndice

El valor de cada elemento de un array (, vector o matriz) está asignado a un nombre de la variable y a un subíndice. El primer elemento del array tiene el subíndice 0, el subíndice 1 es el elemento que sigue al elemento 0 en la horizontal; y así hasta el final de la primera fila y progresivamente para las siguientes filas. https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Ena2qGJn09uNF1l_7O2TY9QVhTPjW8Tsyk7OFZeuARrnKhw5gGYvW1wPJCzKQtzdH7aEzTckpQKRup899IVbcfMOhKDE5Im-jCMx0KNhATXBoQk5m23CT1VqUF_nef2WMnkP9reu-b4/s640/Sin+t%C3%ADtulo.jpg

Almacenamiento en memoria de los arreglos
Todas las variables que se han considerado hasta ahora son de tipo simple. Una variable de tipo simple consiste de una sola caja de memoria y sólo puede contener un valor cada vez. Una variable de tipo estructurado consiste en toda una colección de casillas de memoria. Los tipos de datos estudiados: entero, real, alfabético son considerados como datos de tipo simple, puesto que una variable que se define con alguno de estos tipos sólo puede almacenar un valor a la vez, es decir, existe una relación de uno a uno entre la variable y el número de elementos (valores) que es capaz de almacenar
http://www.gayatlacomulco.com/tutorials/estru1/121.gif
Arreglos Unidimensionales  y Bidimensionales
Unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo.Es la estructura natural para modelar listas de elementos iguales.
Bidimensionales
Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede referenciar con un mismo nombre. https://lh3.googleusercontent.com/-7PYKM9yTS44/TYxHpwLD-gI/AAAAAAAAAIc/ca5BtiJVW0o/s600/CU00129A_1.jpg
Acceso a los elementos de los arreglos unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que está formado por una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos deben ser del mismo tipo.
http://image.slidesharecdn.com/cfakepathestructurasdedatosarreglos-091204200545-phpapp01/95/estructuras-de-datos-arreglos-8-728.jpg?cb=1259957175
Lectura y escritura de los arreglos unidimensionales
Las filas o renglones son las horizontales, y las columnas son las verticales en la matriz.
En la escritura y lectura es importante la presentación por pantalla, e importante que por pantalla se identifiquen las filas y las columnas, esto se puede lograr con una función especial de ubicación por pantalla.
http://image.slidesharecdn.com/arreglosunidimensionales-140526144930-phpapp01/95/arreglos-unidimensionales-10-638.jpg?cb=1401115790

Acceso a los elementos mediante ciclos
Los arrays, arreglos o vectores forman parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo además una de las principales y más útiles estructuras que podremos tener como herramienta de programación. Los arrays, arreglos o vectores (como los quieras llamar), son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, los arrays, permiten almacenar muchos valores en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos propios. 



















1 comentario: