PROGRAMACIÓN ESTRUCTURAS DE DATOS Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de ...
ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
ALGORITMOS Un algoritmo es un conjunto de reglas definidas que permite solucionar un problema, de una determinada manera, mediante operaciones sitemáticas (no necesariamente ordenadas) y finitas.
Contenido ESTRUCTURAS DE DATOS
9
6
Variables y tipos de datos
10
7
Sintaxis Descubrepara estosdeclarar destinos de playa, asequibles, variables
11
desiertos y secretos
8
Tipos de Dato
Principales tipos de expreciones que se pueden llegar a manejar en programacion
Tipos de Datos
15 Vectores o Arrays
Principales 19 Arreglos y operadores manejados Multidimensionales en programacion en programacion
13 Jerarquia de los
operadores en programacion
23 Estructuras
Adstractas y Dinamicas de datos, Pilas y Colas de datos
ESTRUCTURAS DE CONTROL 27
ESTRUCTURAS DE DONTROL
28
INTRODUCCION A LA PROGRAMACION
29
CAMPOS CONSTANTES Y VARIABLES
31
32
35
37
FUNCIONES BASICAS DEL C++
39
TIPOS DE OPERADORES Y SU CLASIFICACION
42
ESTRUCTURA DE SELECCION IF
ALGORITMOS Y DIAGRAMAS DE FLUJO INSTRUCCIONES DEL C++
HISTORIA DEL C++
44
45
46
SWICTLT
BUCLE
CICLO FOR CON ACUMULADOS
ALGORITMOS 58
COMO SE HACE UN DIAGRAMA DE FLUJO
48
ALGORITMO
49
TIPOS DE ALGORITMOS Y PARTES DE UN ALGORITMO
59
COMO UTILIZAR EL DIAGRAMA DE FLUJO
50
ALGORITMOS CUALITATIVOS
60
TIPOS DE DIAGRAMAS DE FLUJO
51
ALGORITMOS CUANTITATIVOS
52
QUE ES UN PROBLEMA
53
DIAGRAMA DE FLUJO
61 HERRAMIENTAS PARA LA ESCRITURA Y EDICION DEL PSEUDOCODIGO Y DIAGRAMAS DE FLUJO 62
COMANDOS BASICOS
64 54
SIMBOLOD DE LOS DIAGRAMAS DE FLUJO
55
HISTORIA DEL PSEINT
56
PROPOSITO DEL TRABAJO EN PESEIN
57 BENEFICIOS SOBRE EL USO DEL DIAGRAMA DE FLUJO
DEFINICION DE PROGRAMA EN COMPUTACION
65
66 67
ALGUNOS LENGUAJES DE PROGRAMACION CONCEPTROS GENERALES ESTRUCTURAS DE CONTROL
ESTRUCTURAS DE DATOS
JULIA SANS ROMPE EL SILENCIO, P. 21 5
VARIABLES Y TIPOS DE DATOS
6
¿Un programa que solo muestre información en la pantalla no es más que una curiosidad que poca utilidad puede tener. En la vida real resulta necesario manipular información, de hecho es lo que regularmente hacen los programas. Tomar algún dato, procesarlo y presentarlo (ya sea en pantalla, enviarlo por algún medio, o simplemente entregarlo a otro proceso Tomar un dato o conjunto de datos o realizar un proceso, implica “mover” información en uno o varios sentidos. Para realizar esta tarea utilizamos Variables.
VARIABLES se conoce por ser un lenguaje fuertemente tipado, esto significa que antes de utilizar cualquier variable, se deberá definir primero, no hacerlo ocasionará un error de compilación. Una variable es un identificador que puede cambiar su valor durante la ejecución de un programa. Una variable tiene asociado un Tipo de Dato, que determina el tipo de valor que puede almacenar dicha variable. A bajo nivel una variable es una referencia a una localidad de memoria que se encuentra dentro del segmento de datos del programa, una de las más grandes fortalezas de C++ es su capacidad de manipular de múltiples formas estas localidades de memoria
Sintaxis para declarar variables PARA DEFINIR UNA VARIABLE DEBES UTILIZAR LA SIGUIENTE SINTAXIS: En donde tipo denota un tipo de dato válido y variable(s) es el nombre de la(s) variable(s), si son varias variables, se deben separar con una coma. Por ejemplo: int numero; bool continuar; char repuesta, Respuesta; //respuesta y Respuesta son diferentes, recuerda que en C++ se diferencían mayúsculas de minúsculas int numero1, numero2, numero3, resultado; //Los espacios entre los nombres de variable son opcionales pero facilitan la lectura
7
TIPOS DE DATO Un tipo de dato determina las operaciones que son válidos con él y la forma en que es almacenada e interpretada la información en memoria. A continuación se listan los tipos de datos básicos de C++.
Debes considerar que el tamaño de una variable depende de la arquitectura del sistema en donde se ejecuta el compilador, los valores ilustrados son válidos en plataformas de 32 bits. En C++ existen modificadores que cambian el comportamiento y el rango de los tipos de variables expresados anteriormente, en esta etapa no profundizaremos en este tema debido a que en etapas de aprendizaje son los tipos comúnmente utilizados, incluso en términos estrictos debo indicar que en C++ solo existen 3 categorías fundamentales de tipos de dato: entero, punto flotante y void. La tabla anterior y muchas de las que se encuentran a Internet, pertenecen generalmente a las 2 primeras categorías.
8
PRINCIPALES TIPOS DE EXPRESIONES QUE SE PUEDEN LLEGAR A MANEJAR EN PROGRAMACIÓN
Expresiones lógicas: son aquellas que usan exclusivamente operadores lógicos. El resultado de una expresión lógica siempre es verdadero o falso. El operador Y hará que la expresión sea verdadera sólo y exclusivamente cuando los dos operandos sean verdaderos. Una expresión con el operador O será verdadera cuando alguno de los dos operandos, o los dos, sean verdaderos. El operador NO negará la expresión, es decir, que el resultado final será verdadero cuando el operando sea falso, o viceversa.
Dependiendo de los tipos de operadores que incluyen, las expresiones pueden ser de cinco tipos: aritméticas, lógicas, relacionales, alfanuméricas y de asignación. A continuación puedes ver algunos ejemplos de cada uno de ellos:
Expresiones aritméticas: son aquellas que utilizan operadores aritméticos y como operandos tienen datos numéricos.
Expresiones relacionales: Son las expresiones en las que aparecen los operadores relacionales. El resultado de expresiones relacionales siempre será uno de dos valores posibles, o verdadero o falso.
Expresiones alfanuméricas: En las expresiones de carácter no existen operadores y en las expresiones de cadena sólo existe uno, el +, concatenación, que lo que hace es unir cadenas.
Expresiones de asignación: Estas expresiones ya las conoces, se utilizan para asignarle valores a las variables o constantes. Tienen dos operandos: el operando de la izquierda del operador será siempre un identificador que corresponderá a una variable o a una constante, mientras que el operando de la derecha del operador puede ser un valor fijo, una variable, una constante o una expresión. Ambos operandos tienen que ser del mismo tipo de dato.
9
Tipos de Datos INT
Cantidad entera 2 bytes o una palabra (varía según compilador).
CHAR
carácter 1 byte. FLOAT Almacena valores reales en punto flotante. 1 palabra (4 bytes).
DOUBLE Almacena valores reales en doble precisión. 2 palabras (8 bytes).
VOID Se utiliza para definir una función que no devuelve ningún valor o declarar punteros genéricos (lo veremos más tarde).
10
PRINCIPALES OPERADORES MANEJADOS EN PROGRAMACIÓN OPERADORES ARITMÉTICOS Los operadores aritméticos realizan operaciones matemáticas, como sumas o restas con operandos. Hay dos tipos de operadores matemáticos: unarios y binarios. Los operadores unarios realizan una acción con un solo operando. Los operadores binarios realizan acciones con dos operandos. OPERADORES DE ASIGNACION Los operadores de asignación devuelven el valor del objeto especificado por el operando izquierdo después de la asignación. El tipo resultante es el tipo del operando izquierdo. El resultado de una expresión de asignación es siempre un valor L. Estos operadores tienen asociatividad de derecha a izquierda.
OPERADORES DE CADENA Uno utiliza los valores cadena de los operandos y devuelve una cadena como resultado. El otro compara los operandos y devuelve un valor booleano que indica la correspondencia.
OPERADORES LOGICOS Los operadores lógicos se usan para combinar dos valores Booleanos y devolver un resultado verdadero, falso o nulo. Los operadores lógicos también se denominan operadores Booleanos. Devuelve True cuando Expresión1 y Expresión2 son verdaderas.
11
Precedencia de los operadores La precedencia de operadores determina el orden en el cual los operadores son evaluados. Los operadores con mayor precedencia son evaluados primero. Ejemplo: 3 + 4 * 5 // retorna 23 El operador de multiplicación ("*") tiene una precedencia mas alta que el operador de suma ("+") y por eso sera evaluado primero.
ASOCIATIVIDAD La asociatividad determina el orden en el cual los operadores con el mismo nivel de precedencia son procesados. Por ejemplo: a OP b OP c
12
La asociatividad de izquierda a derecha significa que esa expresión es procesada como (a OP b) OP c, mientras que la asociatividad de derecha a izquierda significa que es procesada como a OP (b OP c). Los operadores de asignación tienen asociatividad de derecha a izquierda, por lo que puedes escribir: a = b = 5; Copy to Clipboard
para asignar 5 a las dos variables. Esto es porque el operador de asignación retorna el valor que asignó. Primero b es inicializada a 5. Despues a es inicializada al valor de b.
JERARQUIA DE LOS OPERADORES EN PROGRAMACION
El resultado de evaluar una expresión aritmética es un número. Ahora bien, cuando aparecen dos o más expresiones aritméticas, ¿Cómo saber qué operaciones hay que realizar primero? Por ejemplo, si tenemos una expresión 3 + 7 * 4. Cuál es la respuesta correcta?. Veamos: 1) 3 + 7 = 10 10 * 4 = 40. Si hacemos primero la suma el resultado será 40. 2) 7 * 4 = 28 3) 3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer término, la respuesta es 31. Sabemos que la matemática es exacta, entonces ¿Si hay una única respuesta, cómo la obtenemos?. Veamos otro ejemplo. Sea la expresión: X2 + 1 / 2 Observe que esta expresión es totalmente diferente a esta otra (X2+1)/2, por lo que es importante codificar las expresiones aritméticas correctamente. Los paréntesis nos indican un orden para realizar las operaciones. Pero no siempre nos darán los paréntesis, por lo se creó la jerarquía de operadores. La jerarquía varía de lenguaje a lenguaje, por lo que es importante que cuando usted vaya a codificar en algún lenguaje, lo primero que debe revisar es la jerarquía que corresponde a ese lenguaje. 13
CIMA | PÁG. 4
Uno de los propósitos de las computadoras es manejar información. La información está formada por datos. Un dato es toda aquella información característica de una entidad, que es susceptible de tratamiento en un programa informático. También es la expresión general que describe los objetos con los cuales opera una computadora. En un programa los datos de entrada se transforman por el programa hasta producir datos de salida. Para la solución de problemas, definir adecuadamente las estructuras de los datos es tan importante como el diseño mismo de la solución del problema. Todos los datos tienen un tipo asociado con ellos que nos servirá para poder conocer con qué información trabajaremos. Por ejemplo, cuando ingresamos el sueldo de un trabajador necesitamos que este contenga decimales, o al solicitar la edad de una persona ésta tiene que estar con números enteros, etc. Además hay operaciones que no tienen sentido como la suma entre caracteres.
Jerarquía de operadores
OPERADORES
OPERADORES
RELACIONALES
LÓGICOS O BOOLEANOS
Usted puede comparar dos operandos utilizando operadores relacionales. El resultado es un valor de verdad ya sea Cierto o Falso.
15
Los operadores lógicos son usados para combinar el resultado de expresiones conteniendo operadores relacionales.
VECTORES O
ARRAYS ARRAYS
Un array, es un tipo de dato estructurado que permite almacenar un conjunto de datos homogeneo, es decir, todos ellos del mismo tipo y relacionados. Cada uno de los elementos que componen un vector pueden ser de tipo simple como caracteres, entero o real, o de tipo compuesto o estructurado como son vectores, estructuras, listas... A los datos almacenados en un array se les denomina elementos; al número de elementos de un array se les denomina tamaño o rango del vector.
Los arrays en gran parte se definen como las variables ordinarias, excepto en que cada array debe acompañarse de una especificación de tamaño (número de elementos). Para un array unidimensional, el tamaño se especifica con una expresión entera positiva encerrada entre paréntesis cuadrados. La expresión es normalmente una constante entera positiva. En términos generales un array unidimensional puede expresarse como: tipo-almacenamiento array[expresión];
tipo-dato
15
EJEMPLOS DE ARRAYS Existe otra manera más simple para crear arreglos con valores iniciales. Imagina esta situación: String[] nombres = {"Juan","Carlos","Marcos"} Que si lo quieres un poco más ordenado el compilador te permitiría ponerlo así: String[] nombres = {"Juan","Carlos","Marcos"} Este código sería equivalente a escribir así: String[] nombres = new String[3]; nombres[0] = "Juan"; nombres[1] = "Carlos"; nombres[2] = "Marcos"; 16
VECTORES
Los vectores son estructuras de datos similares a los arreglos, pero más desarrollados, ya que entre otras cosas, crecen y decrecen dinámicamente, según se necesite. En algunos lenguajes, el tamaño de un arreglo queda fijo en tiempo de compilación. En otros lenguajes, la dimensión del arreglo, queda fijada en tiempo de ejecución. No obstante, una vez fijada, no puede alterarse. La real necesidad es que la estructura de datos pueda ajustar su capacidad dinámicamente durante todo el tiempo de ejecución. En ingles esta estructura de datos es vectors. La estructura de datos que puede crecer y decrecer dinámicamente, en todo momento, según las exigencias de ejecución se llama vector. La estructura de datos vector representa un conjunto de objetos.
17
El conjunto de objetos es de tamaño variable. Se incorporan objetos hasta colmar la capacidad total del vector. Cuando se requiera incorporar un nuevo objeto en un vector lleno, el vector se expande automáticamente, según la capacidad incremental definida. La capacidad inicial, por default, es 10. La capacidad incremental, por default, es el doble de la existente en el momento de la expansión. Si no se desea este crecimiento exponencial, se puede especificar la capacidad incremental, y en esa capacidad crecerá el vector cada vez que se expanda. Cuando la capacidad del vector está agotada, el vector se redimensiona y se reubica automáticamente. La redimensión del vector acontece como se mencionó más arriba, según se haya explicitado o nó una capacidad incremental. En el momento de la redimensión se crea un nuevo vector. A continuación se reubican todos los elementos del vector viejo, copiandolos en el nuevo, para finalmente ubicar el nuevo elemento que provocó la expansión, en el vector nuevo. crearVector(vector) crearVector(capacidadInicial, vector) crearVector(capacidadInicial, capacidadIncremental, vector) averiguarCapacidadTotal(vector, capacidad) averiguarCapacidadUsada(vector, capacidad) averiguarCapacidadLibre(vector, capacidad) averiguarVectorVacio(vector, boolean) modificarCapacidadTotal(vector, capacidad, vector) modificarCapacidadIncremental(vector, capacidad, vector) agregarElementoComienzo(vector, elemento, vector) agregarElementoFinal(vector, elemento, vector) agregarElementoPosicion(vector, posicion, elemento, vector) eliminarElementoComienzo(vector, vector) eliminarElementoPosicion(vector, posicion, vector) eliminarElementoFinal(vector, vector) eliminarElementoRango(vector, posicionDesde, cantidad, vector) eliminarElementoTodos(vector, vector) recuperarElementoComienzo(vector, elemento) recuperarElementoPosicion(vector, posicion, elemento) recuperarElementoFinal(vector, elemento)
18
buscarElemento(vector, elemento, posicion) buscarElementoRango(vector, posicionDesde, cantidad, elemento, posicion) Aclaración : Los parámetros en negrita son parámetros de salida.
PÁGINA 8
ARREGLOS UNI Y MULTIDIMENSIONALES EN PROGRAMACIÓN. Un arreglo unidimensional es un tipo de dato que permite almacenar un conjunto de datos homogeneos, es decir, del mismo tipo de dato. Al declararse el arreglo debe indicarse el tamaño, en ese momento el compilador reserva la memoria que se necesite para almacenar los datos solicitados por el programador.
El l í mi te en l a di mensi ón de l os arregl os varí a dependi endo del l enguaj e de programaci ón que se uti l i ce, si endo el l í mi te natural l a memori a de l a computadora. Di m nombre As New ti poDato[tamaño] I magi nese que un arregl o es como un conj unto de l ockers. Cada l ocker ti ene ci erto tamaño para guardar obj etos en él y todos son de l as mi smas di mensi ones. Para di ferenci ar entre el l os e i denti fi car uno en parti cul ar, cada l ocker posee un número úni co con el cual puede ser encontrado.
19
Un arreglo funciona de la misma forma. Al declararse se debe especificar el tamaño, es decir el número de localidades de memoria. Es como si se declararan muchas variables del mismo tipo al al mismo tiempo y asociadas todas ellas a un nombre en común. Por ejemplo, considere el caso de un profesor que desea tener una lista de calificaciones de cierto grupo. En ese grupo tiene 8 alumnos y las calificaciones son numéricas no necesariamente enteras. Esta es la lista de calificaciones.
20
En este caso, podrían declararse 8 variables donde cada una contendría la calificación de cada alumno, pero esto resulta impráctico de muchas formas. Una de ellas ocurre si el grupo tuviera más alumnos habría que hacer muchas declaraciones y ademas la forma de acceder a los datos sería poco práctico. Por otro lado, si hubiera alumnos que se dan de baja entonces la lista disminuiría y habría que hacer cambios funcionales en el código que hayamos escrito. Este problema y otros más se pueden resolver con un arreglo.
PÁGINA 22
Para este ejemplo declaremos un arreglo que se llame calificaciones, de tipo Single y de 8 localidades. Esto se haría con la siguiente línea de código. Dim calificaciones As New Single[8] Como puede obervar, el arreglo fue declarado como Single lo que significa que todas los contenedores dentro de el son del mismo tipo, es decir, son homogéneas. Para diferenciar las calificaciones, cada alumno debe tener un número de lista. Observe que la numeración de las localidades del arreglo comienza en 0, quizá lo más natural para un humano sería comenzar la numeración de las lolcalidades de memoria desde 1 hasta 8, pero se comienza en 0 debido a la manera como están numeradas las localidades de memoria en las computadoras y se hace de esta forma en la gran mayoría de los lenguajes de programación.
Cada una de las localidades actúa entonces como una variable independiente de las demás, por esa razón puede ser leída y/o modificada sin afectar a las demás. Lo que tienen en común las variables en los contenedores, es que son del mismo tipo y que pertenecen al mismo arreglo, en este caso el arreglo calificaciones. Por ejemplo, observe el programa a continuación y trate de entender como funciona.
PUBLIC SUB MAIN() DIM CALIFICACIONES AS NEW SINGLE[8] CALIFICACIONES[0] = 6.8 CALIFICACIONES[1] = 8.3 CALIFICACIONES[2] = 10.0 CALIFICACIONES[3] = 9.5 CALIFICACIONES[4] = 4.5 CALIFICACIONES[5] = 7.7 CALIFICACIONES[6] = 9.4 CALIFICACIONES[7] = 10.0 END
En este programa declaramos un arreglo llamado calificaciones tipo Single de 8 posiciones. Luego se le asignan a todas las lolcalidades todos los valores de la tabla mostrada anteriormente.
21
Arreglos Multidimensionales Un arreglo puede tener tantas dimensiones como el usuario lo requiera. El camino más natural para comprenderlos es comenzar con los arreglos de dos dimensiones e ir aumentando la cantidad de dimensiones. Formalmente definimos un arreglo bidimensional de la siguiente manera: "Un arreglo bidimensional es una colección finita, homogénea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio de dos índices. El primero de los índices se utiliza para indicar la fila y el segundo para indicar la columna." Para el caso de dos dimensiones es natural asociarlo con una matriz, y por tanto en filas y columnas. Cuando son tres o más dimensiones es complicado pensar en una asociación sencilla sin embargo en general se debe tener un índice para cada dimensión que se haya declarado en el arreglo. Si continuamos con la analogía de los lockers, podemos asociar un arreglo de dos dimensiones con un conjunto de lockers del mismo tamaño acomodados en forma filas y columnas. En este caso considere que para identificar un locker en específico se puede utilizar su posición en la fila y en la columna. En este caso se puede incrementar la cantidad de lockers si aumenta el número de filas y/o columnas. Por esta razón es que en un arreglo multidimensional se necesita de un índice por cada dimensión. Entonces, para el caso de una matriz dimensional se necesitan dos índices, uno para los renglones y otro para las columnas. La sintaxis para declarar un arreglo multidimensional es la siguiente: Dim nombre As New tipoDato[tamañoDimensión1, tamañoDimensión2, ..., tamañoDimensiónN]
22
El espacio que los arreglos ocupan en memoria se reserva en el momento de realizar la declaración de los mismos. A continuación se presentan diferentes ejemplos de declaración de arreglos multidimensionales, con su explicación correspondiente.
PUBLIC SUB MAIN() DIM A AS NEW INTEGER[5, 10] 'ARREGLO BIDIMENSIONAL TIPO INTEGER: 5 FILAS Y 10 COLUMNAS DIM B AS NEW FLOAT[5, 5] 'ARREGLO BIDIMENSIONAL TIPO FLOAT: 5 FILAS Y 5 COLUMNAS DIM C AS NEW BYTE[3, 5, 7] 'ARREGLO DE TRIDIMENSIONAL TIPO BYTE DIM D AS NEW STRING[10, 10, 2, 9] 'ARREGLO 4 DIMENSIONES TIPO STRING END
ESTRUCTURAS ABSTRACTAS Y DINAMICAS DE DATOS, PILAS Y COLAS DE DATOS ESTRUTURAS DE ABSTRACTAS
Dada
una
forma
denominamos
estructura abstracta al conjunto de elementos
que
definen
propiedades
sus
geométricas
fundamentales, por ejemplo líneas y/o planos limitantes, centro, ejes o planos
de
reflexión.
estructuración
concreta
Llamamos de
una
Dinamicas de datos Una de las grandes divisiones en el marco de las bases de datos se establece según la variabilidad de la información que contienen. En este sentido se puede hablar de databases estáticas y dinámicas. En
este
sobre
artículo
las
bases
te
hablamos de
datos
forma al modo en que es generada
dinámicas,
sistemáticamente por unidades.
características, ventajas y usos.
sus
principales
23
PILAS Y COLAS DE DATOS Una pila es una estructura lineal en la que los elementos pueden ser añadidos o eliminados solo por el final y una cola es una lista lineal en la que los elementos solo pueden ser añadidos por un extremo y eliminados por el otro.
PILAS Una pila (stack) es un objeto similar a una pila de platos, donde se puede agregar y sacar datos sólo por el extremo superior. En computación esta estructura es utilizada ampliamente, aunque muchas veces los usuarios ni siquiera se percaten. Están tan arraigadas como concepto en computación, que una de las pocas cosas que los procesadores (CPU) saben hacer, aparte de operaciones aritméticas, es usar pilas. La Pila se utiliza con las siguientes funciones: poner(p,x): agrega el elemento x a la pila p. También es conocido como push int sacar(p): quita el elemento que está en la cima de la pila p (acá suponemos una pila de números enteros). Hay gente que se refiere a este método como pop y pull. vacía(p): retorna 1 si la pila p no tiene ningún elemento, 0 sino. Las pilas son estructuras LIFO (last in, first out), el último que entra es el primero en salir. Barbarismos: una pila NO ES la batería que usa el reloj del computador, como alguna vez dijo un alumno de pocas luces. Tampoco es cierto lo que una vez salió en un Condorito: la invención del auto a pila (a pila de "jetones" que lo empuja) Propuesto: Implemente una pila y sus funciones usando arreglos y otra usando listas enlazadas.
24
PÁGINA 8
COLAS uando uno quiere ir a comer un sandwich a la cafetería se pone en una fila. Esta estructura es una estructura FIFO (first in, first out), el primero en entrar es el primero en salir. En computación se llama "colas" a las filas (en la práctica también, quien no ha escuchado "¡a la cola patudo!"). La Cola se utiliza, en forma análoga a una Pila, con las siguientes funciones: encolar(c,x): agrega el elemento x al final de la cola c. int decolar(c): saca el elemento que se encuentra al principio de la cola c (acá también estamos suponiendo que la cola es de números enteros). int cabeza(c): devuelve cual es el elemento que esta al principio de la cola c, sin sacarlo. vacia(c): devuelve 1 si la cola no tiene elementos, 0 sino. Propuesto: Implemente una cola y sus funciones usando arreglos y otra usando listas enlazadas.
25
Estructuras De Control
26
Estructuras de control
Todas
las
tienen
un
estructuras único
punto
de de
control entrada.
Las estructuras de control se pueden clasificar en: secuenciales, iterativas y de control avanzadas. Esta es una
En
lenguajes
de
programación,
estructuras
de
el
ejecución
flujo
de
control
permiten de
las
las
modificar
instrucciones
de un programa.
acuerdo
con
una
condición,
ejecutar un grupo u otro de sentencias
acuerdo
variable,
con
ejecutar
el un
valor grupo
de u
una
otro
de
sentencias (Switch-Case) Ejecutar
un
cosas
que
programación
se
principios
de
permiten rija
que
por
la los
la
programación
Los
lenguajes
de
programación
modernos
tienen
estructuras
de
control similares. Básicamente lo que
(If-Then-Else) De
las
estructurada.
Con las estructuras de control se puede: De
de
grupo
de
sentencias
solo
cuando se cumpla una condición (Do-
varía entre las estructuras de control de
los
diferentes
sintaxis;
cada
sintaxis
propia
lenguajes
lenguaje para
es
tiene
expresar
su una la
estructura.
While) Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until) Ejecutar número Next)
un
grupo
de
determinado
sentencias
de
veces
un
(For2 7
INTRODUCCIÓN
A LA PROGRAMACIÓN.
Si tuviéramos que resumir el propósito de la programación en una frase, ésta debería ser: que el computador haga el trabajo por nosotros. Los computadores son buenos para hacer tareas rutinarias. Idealmente, cualquier problema tedioso y repetitivo debería ser resuelto por un computador, y los seres humanos sólo deberíamos encargarnos de los problemas realmente interesantes: los que requieren creatividad, pensamiento crítico y subjetividad. La programación es el proceso de transformar un método para resolver problemas en uno que pueda ser entendido por el computador.
28
EVOLUCIÓN DE LA
PROGRAMACIÓN.
El primer lenguaje de programación nació en 1801 Joseph Marie Jacquard fue el inventor del telar programable. Este inventor francés es el responsable de la programación. No es el inventor de la misma, ya que las cosas han cambiado mucho desde entonces, pero está claro que creó el primer sistema de instrucciones para un ''computador''. Y es que, sus tarjetas programables se introducían en un telar que leía el código, las instrucciones, de dichas tarjetas y automatizaba procesos. Evidentemente, se trataba de crear diferentes diseños en tejidos, pero esto permitió que cualquiera con el telar y las tarjetas perforadas crearan estos diseños sin ser expertos en la materia.
Se estima que este fue el primer lenguaje de programación, ya que estas tarjetas perforadas se utilizaron en las primeras máquinas computacionales creadas por Charles Babbage, y posteriormente por los primeros ordenadores. El primer lenguaje de programación, el de Ada Lovelace Este recorrido empieza muy muy atrás, entre 1842 y 1843. Ada Lovelace se propuso traducir las memorias del matemático italiano Luigi Menabrea y, mientras lo hacía, creó un lenguaje de programación a mano para calcular la serie de números de Bernoulli con la máquina de Babbage. 1936, entra en escena Alan Turing Años más tarde, y nuevos lenguajes de programación mediante, Turing revolucionó la computación con su Máquina de Turing. Se trata de una máquina que demostraba que, con un algoritmo, podían resolver cualquier problema matemático. Si había un algoritmo, la máquina podía resolver el problema. 1957 y el primer lenguaje de programación real En el 57, John W.Backus inventa el primer lenguaje de programación de alto nivel, el primero que utilizaron los programadores reales, Fortran.
Campos Constantes y Variales
CONSTANTES Una constante es un elemento de datos con nombre con un valor predefinido, mientras que una variable es un elemento de datos con nombre cuyo valor puede cambiar durante el curso de la ejecución de un programa.
VARIABLES Una variable está formada por un espacio en el sistema de almacenaje (memoria principal de un ordenador) y un nombre simbólico (un identificador) que está asociado a dicho espacio. Ese espacio contiene una cantidad de información conocida o desconocida, es decir un valor. El nombre de la variable es la forma usual de referirse al valor almacenado: esta separación entre nombre y contenido permite que el nombre sea usado independientemente de la información exacta que representa
2 9
Campo Es un espacio de almacenamiento para un dato
·Moneda (Numéricos con el signo de la moneda
específico, dentro de un registro.
del país) Este es un campo numérico que muestra el símbolo de la moneda del país almacenado en
Por el tipo de información que contendrán los podemos clasificar en: Autonúmero (Entero) (Int) Este tipo de campo se utiliza para llevar una secuencia automática. El motor de base de datos se encarga
de
asignarle
el
número
de
registro
siguiente y no es modificable. Entero con signo (Signed Int) Este tipo de campo se utiliza para almacenar un número entero que lleva
la
configuración
nuestro
ordenador.
Incluye
números enteros y números reales. Ejemplo: $55, $55.80, L800, L800.25,
Numérico Es un campo donde se almacenan números
que
incluyen
el
signo
de
su
procedencia. Ejemplo: 25.421, -80.9257. ·Alfanumérico En este tipo de campos podemos almacenar Ejemplo: Colonia
en
conjunto
Direcciones Las
Colinas,
números
y
letras.
geográficas.
Ejemplo:
5ª
8
avenida,
calle,
implícito el tipo de signo según sea su origen
Noroeste.
positivo o negativo. Ejemplo: 5, -5.
Carácter En este tipo de campo solo podemos
Entero sin signo (Unsigned Int) En este tipo de
almacenar letras. Ejemplo: Nombre- Juan Repich,
campo el valor que se almacena es un entero donde
Estado Civil- Casado.
no se incluye el tipo de signo de su procedencia,
Esta clasificación puede variar de acuerdo al
negativo o positivo. Ejemplo: 25, 40
motor de base de datos o del lenguaje de programación que estemos utilizando.
30
Algoritmos y diagramas de flujo Escribir un método lógico paso a paso para resolver
los
problemas
es
llamado
algoritmo, en otras palabras, un algoritmo es un proceso para resolver problemas. Para resolver un problema matemático o de computador, este es el
Definición de Diagrama de Flujo Un diagrama de flujoes una representación
Un
gráfica o pictórica de un algoritmo con la
algoritmo incluye cálculos, razonamiento y
ayuda de diferentes símbolos, formas y líneas
procesamiento de datos. Por lo tanto,la
de flujo para demostrar el proceso del
definición de algoritmo puede ser
programa. Con
primer
paso
representados
del
natural,
algoritmos, fácilmente podemos entender un
pseudocódigo y diagramas de flujo entre
programa. El propósito principal del diagrama
otros
en
procedimiento.
lenguaje
de flujo es analizar los diferentes procesos 31
INTRUCCIONES DEL C++ Cout
POR MAXIMILIANO ROSAS
El cout permite mostrar por pantalla cualquier tipo de dato, pues el operador << está sobrecargado para ello. Del mismo modo el cin se utiliza para introducir datos con el operador >> también sobrecargado.
cin es el flujo de entrada estándar que normalmente es el teclado y cout es el flujo de salida estándar que por lo general es la pantalla. La instrucción cin >> i1; obtiene un valor desde el teclado. El usuario debe introducir un valor y luego enter.
Math
32
h es un archivo de cabecera de la librería estándar del lenguaje de programación C diseñado para operaciones matemáticas básicas. Muchas de sus funciones incluyen el uso de números en coma flotante. C++ también implementa estas funciones por razones de compatibilidad y las declara en la cabecera cmath .
33 | SITIOINCREIBLE.MX
Cin
19
Conio
conio. h' es un archivo de cabecera escrito en C usado mayormente por los compiladores de MS-DOS para proveer un sistema de E/S por consola. Éste no es parte de la biblioteca estándar de C o ISO C, ni está definida por POSIX.
Iostream
iostream es un componente de la biblioteca estándar (STL) del lenguaje de programación C++ que es utilizado para operaciones de entrada/salida. Su nombre es un acrónimo de Input/Output Stream.
Include
La directiva de preprocesador #include se usa en los lenguajes C y C++ para incluir las declaraciones de otro fichero en la compilación. En la programación en C es posible utilizar funciones que no esten incluídas en el propio programa.
Real
Se emplea para representar numeros reales (con decimales). Para definir datos reales se antepone la palabra reservada float al identificador de la variable.
Float
Tipo "float" o coma flotante: float <identificador>[, <identificador2>[,<identificador3>]...]; Las variables de este tipo almacenan números en formato de coma flotante, esto es, contienen un valor de mantisa y otro de exponente, que, para entendernos, codifican números con decimales.
33
DICIEMBRE DE 2016
Char
El tipo char se utiliza para representar caracteres individuales. Por tanto, el tipo char requiere sólo un byte de memoria. Cada tipo char tiene una interpretación como entero equivalente, de esta forma un char es una clase especial de entero pequeño.
Double
Una variable de tipo "double" puede almacenar valores decimales. Por ejemplo: double resultado; resultado = 3 / 2; cout << resultado << endl; Mostrará por pantalla "1.5
Pintura posmoderna Estela pinta al óleo y con acuarela
If
Básicamente, un condicional if, es una estructura que nos posibilita definir las acciones a ejecutar si se cumple cierta condición y de ese modo modificar la ejecución de tareas en un programa según se necesite.
34
PÁGINA 1 | MOCHILA
HISTORIA DEL C++
APAZ
La historia del C++ se remonta a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Se le añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos en 1982. En 1983 fue propuesto el nombre C++ por Rick Mascitti, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión.
35
En 1984 la directiva #include se le dice al compilador que busque e interprete todos los elementos definidos en el archivo que acompaña la directiva (en este caso, iostream). Para evitar sobrescribir los elementos ya definidos al ponerles igual nombre, se crearon los espacios de nom En mediados del año 1985 Se le agrego al C++ los siguientes tipos fundamentales: Caracteres: char (también es un entero), wchar_t Enteros: short, int, long, long long Números en coma flotante: float, double, long double Booleanos: boolVacío: void En 1990 la palabra reservada void define en C++ el concepto de no existencia o no atribución de un tipo en una variable o declaración. Es decir, una función declarada como void no devolverá ningún valor. Esta palabra reservada también puede usarse para indicar que una función no recibe parámetros, como en la siguiente declaración: int funcion (void);
Por el año 1992 todo programa en C++ debe tener la función principal main() (a no ser que se especifique en tiempo de compilación otro punto de entrada, que en realidad es la función que tiene el main()) int main(){}La función principal del código fuente main debe tener uno de los siguientes prototipos:int main()int main(int argc, char** argv) Aunque no es estándar algunas implementaciones permitenint main(int argc, char** argv, char** env) La primera es la forma por omisión de un programa que no recibe En 1993 los objetos en C++ son abstraídos mediante una clase. Según el paradigma de la programación orientada a objetos un objeto consta de: Identidad, que lo diferencia de otros objetos
En 1997 constructor de copia. Es un constructor que recibe un objeto de la misma clase, y realiza una copia de los atributos del mismo. Al igual que el predeterminado, si no se define, el sistema proporciona uno. En 1998 constructores + Memoria heap Un objeto creado de la forma que se vio hasta ahora, es un objeto que vive dentro del scope(las llaves { }) en el que fue creado. Para que un objeto pueda seguir viviendo cuando se saque de el scope en el que se creó, se lo debe crear en memoria heap. Los destructores son funciones miembro especiales llamadas automáticamente en la ejecución del programa, y por tanto no tienen por qué ser llamadas explícitamente por el programador en el año 1999.
En el año 2000 se puedo liberar los recursos computacionales que el objeto de dicha clase haya adquirido en tiempo de ejecución al expirar éste.Quitar los vínculos que pudiesen tener otros recursos u objetos con éste. Año 2011 última versión estable ISO/IEC 14882:2011 (2011) Última versión en pruebas C++14 (2014) En 2014 dialectos ISO/IEC C++ 1998, ISO/IEC C++ 2003, ISO/IEC C++ 2011Influido por C, Simula, Ada 83, ALGOL 68, CLU, ML1Ha influido a Perl, LPC, Lua, Pike, Ada 95, Java, PHP, D, C99, C#, FalconSistema operativo Multiplataforma
36
19
FUNCIONES BASICAS DEL C++ LIBRERÍAS
33 | SITIOINCREIBLE.MX
En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras más. Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo realmente complejo), al poder contar con las librerías en C++, podremos hacer uso de una gran variedad de funciones que nos facilitarán la vida y aumentarán el modularidad de nuestros códigos. 37
INCLUDE La di recti va de preprocesador #i ncl ude se usa en l os l enguaj es C y C++ para i ncl ui r l as decl araci ones de otro fi chero en l a compi l aci ón. En l a programaci ón en C es posi bl e uti l i zar funci ones que no esten i ncl uí das en el propi o programa.
IOSTREAM I ostream es un componente de l a bi bl i oteca estándar (STL) del l enguaj e de programaci ón C++ que es uti l i zado para operaci ones de entrada/sal i da. Su nombre es un acróni mo de I nput/Output Stream. El fl uj o de entrada y sal i da de datos en C++ (y su predecesor C) no se encuentra defi ni da dentro de l a si ntaxi s bási ca y se provee por medi o de l i brerí as de funci ones especi al i zadas como i ostream.
USING NAMESPACES STD; Los namespaces defi ni dos pueden uti l i zarse para restri ngi r sel ectores uni versal es, types, y sel ectores de atri butos para sel ecci onar sól o el ementos dentro de ese namespace. La regl a @namespace general mente sól o es úti l cuando se trata de documents que conti enen múl ti pl es namespace—como HTML5 con SVG o MathML, o XML que . . . El moti vo de l a tercera l í nea, usi ng namespace std, es el de dar acceso al espaci o de nombres (namespace) std, donde se encuentra encerrada toda l a l i brerí a estándar. Un namespace no es más que un di rectori o para cl ases, trai ts, i nterfaces, funci ones y constantes. Se crean uti l i zando l a pal abra reservada namespace al pri nci pi o del archi vo, antes que cual qui er otro códi go, a excepci ón de l a estructura de control decl are.
MAIN Cada programa de C tiene una función principal que se debe llamar main. Si su código sigue el modelo de programación Unicode, puede utilizar la versión de carácter ancho de main, wmain. La función main sirve como punto de partida para la ejecución del programa. Normalmente, controla la ejecución del programa dirigiendo las llamadas a otras funciones del programa. Un programa deja de ejecutarse normalmente al final de main, aunque puede finalizar en otros puntos del programa por distintos motivos
CIN Y COUT 38
cin es el flujo de entrada estándar que normalmente es el teclado para guardar datos y el cout es el flujo de salida estándar que por lo general imprime en la pantalla uno o varios datos. Sintaxis Cout<<”Palabra impresa en la pantalla”; Cin>>variable;
TIPOS DE OPERADORES Y SU CLASIFICACIÓN Un operador es un signo o símbolo que especifica el tipo de cálculo que se realiza en una expresión. Hay operadores matemáticos, de comparación, lógicos y de referencia. Access admite diversos operadores, incluidos los operadores aritméticos como +, -, de multiplicación (*) y división (/), además de los operadores de comparación para comparar valores, los operadores de texto para concatenar texto y los operadores lógicos para determinar valores verdadero o falsos. En este artículo se proporciona información sobre el uso de estos operadores. 39
OPERADORES ARITMÉTICOS
OPERADORES DE COMPARACIÓN
Los operadores de comparación se usan para comparar valores y devolver un resultado que sea True, False o Null
40
Los operadores aritméticos se usan para calcular un valor de dos o más números, o cambiar el signo de un número de positivo a negativo o viceversa.
OPERADORES LÓGICOS Los operadores lógicos se usan para combinar dos valores Booleanos y devolver un resultado verdadero, falso o nulo. Los operadores lógicos también se denominan operadores Booleanos.
OPERADORES DE CONCATENACIÓN
Los operadores de concatenación se usan para combinar dos valores de texto en uno.
OPERADORES ESPECIALES
Los operadores especiales se usan para devolver un resultado True o False como se describe en la tabla siguiente.
41
ESTRUCTURA DE SELECCIÓN Las condicionales if, son una estructura de control condicional,
IF
también llamadas estructuras selectivas de casos simples (porque solo definen un posible flujo), las cuales nos permiten tomar cierta decisión al interior de nuestro programa, es decir nos permite determinar que acciones ejecutan según cierta condición sea verdadera. Básicamente, un condicional if, es una estructura que nos posibilita definir las acciones a ejecutar si se cumple cierta condición y de ese modo modificar la ejecución de tareas en un programa según se necesita.
42
Sintaxis If(expresion lógica){ Sentencia } Else if(expresión lógica Sentencia } Else(expresión lógica){ Sentencia }
IF ANIDADOS Cuando en alguno de los bloques de un instrucción if-else se incluye otro if u otro if-else se dice que esta segunda estructura esta anidada en la primer y se habla de secuencias de estructura condicionales anidadas. Sintaxis If(expresion lógica){ Sentencia If(expresion lógica){ Sentencia } else(){ Sentencia } }
IF COMPUESTO Es un if que maneja al operador lógico, o relacionales en una combinación de comparación es. Sintaxis If(expresion lógica){ Sentencia } Else (expresión lógica){ Sentencia } 43
SWITCH Las condicionales Switch, son una estructura de control condicional, que permite definir múltiples casos que puede llegar a cumplir una variable cualquiera, y que acción tomar en cualquiera de esas situaciones, incluso es posible determinar qué acción llevar a cabo en caso de no cumplir ninguna de las condiciones dadas. 44
El programa consta de un menú de opción digamos 3 opciones cada uno representada con un número correspondiente, es decir la opción uno corresponde al número 1, la dos al 2, así sucesivamente, queremos entonces una acción correspondiente y en casa de que no corresponda a ninguna de las posibles opciones, mostrar un mensaje de error cualquiera. Sintaxis Switch(opc){ Case 1: Sentencia Break Case 2: Sentencia Break Case3: Sentencia Break Default: Sentencia }
BUCLE
FOR
Para comprender mejor el funcionamiento del ciclo for, pongamos un ejemplo, supongamos que queremos mostrar los números pares entre el 50 y el 100, si imaginamos un poco como seria esto, podremos darnos cuenta que nuestro ciclo deberá mostrar una serie de números como la siguiente: 50 52 54 56 58 60 ... 96 98 100. Como podemos verificar, tenemos entonces los componentes necesarios para nuestro ciclo for, tenemos un valor inicial que sería el 50, tenemos también un valor final que sería el 100 y tenemos un tamaño de paso que es 2 (los números pares). Estamos ahora en capacidad de determinar los componentes esenciales para un ciclo for.
Vamos a ver ahora como es la sintaxis de un ciclo for en C++, así estaremos listos para usarlos en nuestros programas de ahora en adelante Sintaxis del Ciclo For en C++: La sintaxis de un ciclo for es simple en C++, en realidad en la mayoría de los lenguajes de alto nivel es incluso muy similar, de hecho, con tan solo tener bien claros los 3 componentes del ciclo for (inicio, final y tamaño de paso) tenemos prácticamente todo hecho for(int i = valor inicial; i <= valor final; i = i + paso) { .... .... Bloque de Instrucciones.... .... 45 .... }
CICLO FOR CON ACUMULADOS
Un ciclo For es una estructura que se utiliza para ejecutar un bloque de código un número determinado de veces. Al ejecutar el VI, se evalúa la cantidad de iteraciones y luego se ejecuta el código. Un ciclo For se puede configurar para detener condicionalmente la ejecución del código además de su salida basada en iteraciones. En estos casos, el código se ejecutará hasta que se alcance la configuración de la terminal de conteo o se cumpla la condición, lo que ocurra primero. 46
Los ciclos For deben usarse cuando: Necesita ejecutar el código una cierta cantidad de veces Quiere escribir un número determinado de medidas en un archivo Quiere tomar una cierta cantidad de puntos de datos Quiere ejecutar código hasta que se cumpla una condición o un número determinado de iteraciones, lo que ocurra primero
ALGORITMOS
47
Algoritmo Un algoritmo es un conjunto de instrucciones definidas, ordenadas y acotadas para resolver un problema, realizar un cálculo o desarrollar una tarea. Es decir, un algoritmo es un procedimiento paso a paso para conseguir un fin. Sirven para resolver un problema, realizar calculos, o desarrollar un problema, etc.
SUS
CARACTERISTICAS
COMUNES
MAS
SON:
Precisos: Objetivos, sin ambigüedad. Ordenados: Presentan una secuencia clara y precisa para llegar a la solucion. Finitos: Continen un numero determinado de pasos. Concretos: Ofrecen una solucion para la situacion a problema planteados. Definidos: El mismo algoritmo debe dar el mismo resultado al recibir la misma entrada. 48
Tipos de algoritmos • Computacionales • Cualitativos • No computacionales • Cuantitativos
Partes de algoritmos o Datos de entrada o Proceso o Datos de salida
49
Algoritmos cualitativos:
Por ejemplo: las instrucciones de uso que traen los equipos electrónicos, las instrucciones para el montaje de un equipo, las técnicas de laboratorio para evaluar ácidos, etc.
Son todos aquellos algoritmos en los que los
Por tanto, un algoritmo puede darse en cualquier
pasos que lo componen se describen de una
proceso que involucre el análisis de una situación y una
forma narrada con un lenguaje natural. Un
solución posible, sin que necesariamente se haga desde
algoritmo es una secuencia de pasos ordenados y lógicos que se llevan a cabo con el objeto de resolver un problema determinado. Así, si se tiene una entrada y un estado inicial, al seguir los pasos en el orden indicado se llegará a un estado final, obteniéndose una solución. Los algoritmos
cualitativos
se
emplean
con
frecuencia en la vida cotidiana para resolver problemas.
50
una perspectiva científica. Un algoritmo cualitativo podrá tener tanto detalle como se quiera. Además, para alcanzar el mismo objetivo podrán tomarse distintos algoritmos o caminos. En este caso,
para
alcanzar
el
objetivo
es
conveniente
seleccionar siempre el algoritmo más pequeño, que use la menor cantidad posible de recursos.
Algoritmos cuantitativos Son
aquellos
operaciones
algoritmos
que
utilizan
Resulta
y
cálculos
importancia
algebraicas
significativo de
los
destacar
algoritmos,
lar porque
un
representan un elemento básico para la
proceso, obteniendo valores concretos. Por
informática, la robótica y las matemáticas,
ejemplo, el resultado de una resta o una
ya que por medio de ellos se logra ordenar
numéricos
específicos
para
definir
multiplicación.
las ideas. Ellos llevan a la ejecución correcta
En las ciencias de la computación, en las
concernientes a cualquier aspecto.
matemáticas y otras disciplinas afines, un algoritmo es un conjunto finito y ordenado de instrucciones que permite efectuar una actividad por medio de pasos sucesivos que no generan dudas a quien deba ejecutar estas acciones, llevando a la solución de un determinado problema.
de las actividades y a ideas con un orden, Algunos ejemplos en matemáticas son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de multiplicación para calcular un producto, el método
de
Gauss
para
sistema
de
ecuaciones
solucionar lineales,
o
un el
algoritmo de Euclides para obtener el máximo común divisor de dos enteros.
51
ANALISIS DEL PROBLEMA
¿Qué es un problema?
Esta fase se desarrolla con el proposito de comprender el problema y saber exactamente que es lo que desea obtener como resultado. Dado un problema, el desarrollo de esta fase se puede orientar dando respuesta a las
Un problema es un determinado asunto o una cuestión que requiere de una solución. A nivel social, se trata de alguna situación en concreto que, en el momento en que se logra
solucionar,
aporta
beneficios
a
la
sociedad
Un problema es una situacion determinada que necesita o requiere de una solucion. Las fases para resolver un problema son: § Analisis del problema § Diseño del algoritmo § Diagramacion § Elaboracion de un programa
52
. . . .
siguientes preguntas.
¿Cuál es el problema que se ha de resolver?
¨¿Cuál o cuales son los resultados que debe producir la solución?
¿De que informacion se dispone para resolver el problema? ¿Cuál o cuales son las restricciones que debe satisfacer la solucion?
DIAGRAMA DE FLUJO Un diagrama de flujo es un lenguaje para la representación gráfica de un
evidenciando la relación secuencial entre
proceso, en el cual cada paso o
ellas, facilitando la rápida comprensión
acción
representado
de cada actividad y su relación con los
mediante un símbolo particular y
demás, y el flujo de la información, así
además utiliza líneas con flechas
como la forma en que se van tratando los
para conectar los símbolos gráficos y
datos de entrada hasta producir los datos
expresar la secuencia y orden en
de salida. Dado su carácter gráfico, un
que los pasos o acciones del proceso
diagrama de flujo facilita la visualización
se irán ejecutando.
de los detalles de las acciones que se
Así
de
con
diagrama
este,
estos de
es
recursos flujo
visuales
muestra
el
ejecutan dentro de un proceso.
una
descripción gráfica de las actividades implicadas en un proceso,
53
Simbolos de los diagramas de flujo:
54
Pseint es un software libre educativo multiplataforma dirigido a personas que se inician en la programación. Su tipo de programa es Pseudocodigo. El desarrollador fue Pablo Novara, su lanzamiento inicial fue el 29 de diciembre de 2004 última versión estable 20210408 (8 de abril de 2021, 11 meses y 21 dias). Además el pseint es una herramienta para aprender la lógica de programación, orientada de estudiante sin experiencia en dicha área. Mediante la utilización de un simple ilimitado pseudo-lenguaje intuitivo y en español, permite comenzar a comprender conceptos básicos y fundamentales de un algoritmo computacional
¿QUÉ ES EL PSEINT?
HISTORIA DEL PSEINT
LOS VIAJES DE MELISA Y MARÍA SÁNCHEZ
Es la abreviatura de los estados de computación de pseudocódigo intérprete, una herramienta educativa creada en Argentina, utilizada principalmente por estudiantes para aprender los fundamentos de la programación y el desarrollo de la lógica. CARACTERISTICAS DEL PSEINT Lenguaje autocompletado Ayudas emergentes Plantillas de comandos Soporta de procedimientos y funciones Indentado inteligente Exportación a otros lenguajes (C, C++, Java, PHP, JavaScript, Visual Basic, Net, Python, MaHab)
Graficado, creación y edición de diagramas de flujo Editor con coloreado de sintaxis
55
CÓMO HACE CLARA ROSAS PARA MANTENERSE JOVEN A LOS 40
PROPOSITO DEL TRABAJO DEL PSEINT: La PSeInt posibilita el empleo de elementos visuales los cuales permiten la construcción de un diagrama de flujo (o el pseudocódigo) para representar el problema en cuestión, además del análisis detallado del mismo. El software no permite el empleo de instrucciones incorrectas, los estudiantes pueden verificar si su diagrama de flujo o su pseudocódigo son correctos. 56
Este tipo de problema no solamente contribuye al desarrollo del pensamiento algorítmico de los estudiantes, sino también a la comprensión de los conceptos del álgebra lineal.
BENEFICIOS SOBRE EL USO DEL DIAGRAMA DE FLUJO 1.Control de calidad. El diagrama de flujo se utiliza como una herramienta para identificar actividades sin valor agregado en la ejecución del proceso y, de ese modo, mejorar el rendimiento. 2.Visión transparente. El diagrama de flujo mejora la comprensión del proceso. La diagramación hace posible aprender el conjunto de actividades, relaciones e incidencias de un proceso, enfocándose en aspectos específicos del mismo. 3.Identificación de clientes. Gracias al diagrama de flujo, es más fácil conocer las necesidades de los clientes y ajustar el proceso hacia la satisfacción de sus necesidades y expectativas. 4.Comunicación eficaz. El diagrama introduce un lenguaje común que mejora la comunicación de todo el equipo. Para ello, se deben realizar capacitaciones a los profesionales que lo administrarán. 5.Mejora de tiempos y costes. El diagrama de flujo facilita la aplicación de acciones en la optimización del tiempo y los costes de actividad. De esta manera, mejora la eficacia y la eficiencia del proceso.
57
¿CÓMO SE HACE UN DIAGRAMA DE FLUJO?
Determinar el proceso a graficar. Para este
primer paso es importante conocer el punto de partida y final del proceso, así como sus características y toda información a incluir en el esquema. Determinar el inicio y el fin del proceso.
Estos son datos fundamentales de todo proceso y se grafican en un ovalo. Determinar actividades. Aquí se hace un resumen o pequeño bosquejo sobre las acciones que forman parte del proceso y el orden en que se desarrollarán. Graficar los pasos. Una vez delimitados los pasos se puede comenzar a graficar el flujo del proceso siguiendo el orden en el que se llevarán a cabo las acciones.
58
En el diagrama de flujo se representan todos los pasos, las secuencias y las decisiones de un proceso o flujo de trabajo. Si bien hay muchos tipos diferentes de diagrama de flujo, el diagrama básico es un mapa de procesos en su forma más simple. Es una herramienta muy potente que se puede aplicar en muchos campos diferentes para la planificación, visualización, documentación y mejora de los procesos. Los
ingenieros
industriales
Frank
y
Lillian
Gilberth
presentaron esta herramienta por primera vez en la Sociedad Americana de Ingenieros Mecánicos (American Society of Mechanical Engineers ASME) en 1921. Desde entonces,
los
diagramas
de
flujo
han
servido
para
perfeccionar, estandarizar y optimizar procesos en los más variados sectores.
COMO UTILIZAR EL DIAGRAMA DE FLUJO 1.Documentar un proceso. Los diagramas de flujo son magníficos para trazar y documentar algún proyecto o proceso colaborativo. 2.Simplificar y visualizar ideas o procesos complejos. No todos los miembros del equipo tendrán el tiempo (o los recursos) para leer detenidamente un proceso documentado largo y complicado.
3.Organizar al equipo Y asignar tareas con efectividad.
6.Estandarizar los procesos. Una vez que el diagrama de flujo está listo, puedes
Representa visualmente un proceso que pueda facilitar la
reutilizarlo para otros proyectos o procesos similares. A
asignación de tareas a los miembros del equipo y
la larga, tanto el equipo como tu ahorraran tiempo (y
organiza el trabajo del grupo de manera que todo fluya
evitarán el estrés).
mejor.
7.Dar seguimiento al proceso de un proyecto.
4.Tomar decisiones y justificarlas. Las decisiones, con frecuencia, parecen ser mucho menos intimidantes y complicadas cuando están dispuestas en
Como es muy fácil seguir los pasos del diagrama de flujo, siempre es posible detectar en qué etapa del proceso o proyecto se encuentra el equipo en un
un diagrama de flujo. Los diagramas de flujo también
momento dado. Simplifica muchísimo el seguimiento
pueden ser útiles para ver las consecuencias de esas
del proceso y también ofrece un panorama general
decisiones, lo que facilita la anticipación y argumentación
excelente de las tareas que faltan realizar.
de los pasos a seguir.
5.Identificar
y
evitar
cuellos
de
botella
o
problemas. Los diagramas de flujo son muy útiles para descubrir cuellos de botella o inconvenientes antes de que se vuelvan problemas graves. Con el traslado del proceso entero en esta guía visual, puede seguir cada paso y, a la vez, garantizar que se dediquen el tiempo y los recursos suficientes para cada tarea.
59
TIPOS DE DIAGRAMAS DE FLUJO Diagrama de flujo de decisiones ayuda a explicar las
medidas que se toman para justificar una decisión. Este tipo de diagramas de flujo es muy útil para anticipar las consecuencias de diferentes sesiones. Un diagrama de flujo lógico se aplica para dictar
deficiencias, cuellos de botella o limitaciones del proceso que podrían causar interrupciones o problemas. Un diagrama de flujo del sistema representa el modo
en que los datos fluyen en un sistema. Por lo general, se usan en el mundo de las finanzas. Con un diagrama de flujo de productos se visualiza el
proceso de creación del producto y su orden secuencial. Éste tipo de gráficos pueden constituir documentación muy útil para cuando lances un producto nuevo o mejores el proceso de producción. En un diagrama de flujo de procesos se muestra como
se
obtendrá
cierto
resultado
con
un
proceso.
Probablemente crees un diagrama de flujo de este tipo para mejorar algún proceso que ya uses o para implementar uno nuevo. 60
PESTAÑAS DE TRABAJO:
Herramientas para la escritura y edición de algoritmos el pseudocódigo y diagramas de flujo
Cada
Pseudocodigo
abierto
se
muestra
nuevo en
o una
pestaña diferente. Si se asigna un nombre
al
mostrara
algoritmo, en
la
correspondiente, contrario
se
este
se
pestaña en
muestra
caso con
el
nombre “SIN TITULO”.
ÁREA DEL TRABAJO:
COMANDOS:
Corresponde a la zona donde se escribe el pseudocódigo
del
pseudocódigo
se
directamente,
o
correspondiente
algoritmo. puede
escribir
escogiendo
el
desde
ventana
la
El
comando de
En
esta
disponibles distintos sentencias
ventana como
estan
botones,
comandos y
estructuras
los de de
comandos. A la izquierda de cada línea de pseudocódigo se muestra un número entero positivo que es el identificador de la línea,
control, expresados en lenguaje de diagrama de flujo (DF).
cuya referencia se utiliza cuando se indican los errores.
61
COMANDOS LEER BASICOS ESCRIBIR
Este comando refiere a la sentencia para escribir. La accion de escribir puede hacerse respecto de un contenido textual, o una variable, o una expresion, o combinaciones de estos elementos. 62
Este comando refiere a la sentencia para Leer. Las acciones de lectura se realiza para ingresar valores de variables (dato) durante la ejecución del algoritmo.
ASIGNAR
Mediante este comando se declara la acción de Asignar a una variable (la que se encuentra al lado izquierdo de <-(que se encuentra al lado derecho de <-).
CARACTERISTIC AS DEL PSEUDOCODIGO H : ERRAMIENTA PARA DISEÑAR ALGORITMOS
El pseudocódigo es un lenguaje no formal que sirve para que los programadores puedan desarrollar algoritmos. Es una herramienta para diseñar algoritmos que se basa en textos.
SE ESCRIBE EN CUALQUIER FORMATO Se puede escribir pseudocódigo en cualquier formato deseado. Por ejemplo, se podría usar un formato de academia, que sea sumamente detallado y estructurado, involucrando mucha matemática.
PASO PREVIO A LA PROGRAMACIÓN REAL El pseudocódigo no es realmente un lenguaje de programación. Para escribir esta especie de código se utiliza una sintaxis sencilla en español, que luego será reformado a la sintaxis correcta de un lenguaje de programación en particular.
REGLAS Las reglas del pseudocódigo son razonablemente sencillas. Las declaraciones son normalmente secuencias, selecciones o iteraciones. Todas las declaraciones que tengan una “dependencia” deben sangrarse.
63
DEFINICION DE PROGRAMA EN COMPUTACION Un programa informatico o programa de computadora es una secuencia de instrucciones, escritas para realizar una tarea especifica en un computador. Este dispositivo requiere programas para funcionar, por lo general, ejecutando las instrucciones del programa en un procesador central. ELEMENTO DE UN PROGRAMA:
Los elementos BASICOS que constituyen un: PALABRAS RESERVADAS: Son palabras especiales, utilizadas solo por el lenguaje para ejecutar una funcion especifica y que no podemos utilizar en el desarrollo del programa para un fin distinto. IDENTIFICADORES: Los identificadores son los nombres que les damos a las variables, funciones, al programa, etc.
64
CARACTERES ESPECIALES: Son elementos como comas, comillas, punto y coma, parentesis que son parte del lenguaje algoritmco o de programa. CONSTANTES: Son datos que no van a modificarse en la ejecucion del programa. VARIABLES: Datos cuyo valor se puede modificar en la ejecucion del programa. EXPRESIONES: Son combinaciones de constantes, variables y operadores para ejecutar una operación. INSTRUCCIONES: Son las sentencias o podemos decir pasos que se ejecutan en un programa.
ALGUNOS LENGUAJES DE PROGRAMACION Python JAVA JAVASCRIPT C# PHP
C/C++ R OBJECTIVE-C SWIFT MATLAB 65
CONCEPTOS GENERALES CAMPOS Es una variables de cualquier tipo que se declara directamente en una clase o struct.
VARIABLES Está formada por un espacio en el sistema almacenaje (memoria principal de un ordenador). Este espacio contiene una cantidad de información conocida o desconocida, es decir un valor.
CONSTANTES Es un valor que no puede ser alterado/ modificado durante la ejecución de un programa, únicamente puede ser leído.
TIPOS DE DATOS Hacen referencia al tipo de información que se trabaja, donde la unidad mínima de almacenamiento es el dato.
66
ESTRUCTURAS
DE CONTROL DEFINICION
Las estructuras de control permite modificar el flujo de ejecución de las instrucciones. Con las estructuras de control se puede: 1. De acuerdo con una condición, ejecutar una sentencia o grupo de sentencias (if, then, else). 2. De acuerdo con el valor de una variable, ejecutar un grupo u otro de sentencias. 3. Ejecutar un grupo de sentencias sólo cuando se cumpla una condición. 4. Ejecutar un grupo de sentencias hasta que se cumpla una condición. 5. Ejecutar un grupo de sentencia es un número determinado de veces. Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se pueden modificar en:
DESTRUCCIÓN DE
CONTROL SECUENCIAL
Es aquella en la que la acción sigue a otra una tras otra (es decir en secuencia). En este tipo de algoritmo se presentan operaciones de inicio fin, inicialización de variables, operaciones de asignación, cálculo, etc. Los algoritmos secuenciales son los más simples y fáciles de usar, son más sencillos de entender, ya que su proceso es de inicio, operaciones y salidas lo que indica la secuencia.
INSTRUCCIÓN DE
CONTROL CONDICIONAL
Una instrucción (o estructuras) condicional o de selección es aquella que establece que instrucciones deben de ejecutarse o no, en función del valor de una condición, de condición múltiple.
Secuenciales Iterativas De control avanzadas Esta es una de los casos que permiten las estructuras en la solución de problemas. Los algoritmos modernos tienen estructuras de control similares, o idénticas. Donde hay diferencia es en la aplicación de las estructuras de control en los diferentes lenguajes de programación, básicamente en sus sintaxis.
67