0% encontró este documento útil (0 votos)
32 vistas57 páginas

C

Este documento describe varios tipos de datos y estructuras de control en C++, incluyendo vectores, matrices, condicionales if/else/switch y ciclos for/while/do-while.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas57 páginas

C

Este documento describe varios tipos de datos y estructuras de control en C++, incluyendo vectores, matrices, condicionales if/else/switch y ciclos for/while/do-while.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

C++

TIPOS DE DATOS
 Bool: Tipo de dato que tiene un tamaño de 8 bits y un rango entre 0 y 1,en
pocas palabras es cero o uno (falso o verdadero).
 Int: Tipo de dato que tiene un tamaño de 32 bits y un rango entre -
2,147,483,648 y 2,147,483,647.Este tipo de dato es usado para números
enteros (sin cifras decimales).
 Float: Tipo de dato que tiene un tamo de 32 bits, es usado comúnmente en
números con 6 o menos cifras decimales tiene un rango entre 1,17549*(e^-38)
hasta 3,40282*(e^38).
 Double: Tipo de dato tiene un tamaño de 64 bits es usado para números de
menos de 15 cifras decimales tiene un rango de entre 2,22507*(e^-308) hasta
1,79769*(e^308).
 Char: Tipo de dato que tiene un tamaño de 1 byte es usado para letra de un
solo valor su rango es entre -128 a127.
DECLARACION DE UNA VARIABLE

 Veamos rápidamente Como se declaran las variables junto con su tipo de dato
en C++.
 La sintaxis para declarar una variable es la siguiente:
[tipo de variable][nombre de la variable]
ENTRADA Y SALIDA EN C++

 En PSeInt se usaba la sentencia escribir para una salida y Leer para recibir
una entrada pero en c++ se transforma en cout<<“”; y en cin>> ;
CONDICIONAL IF-ELSE
 Los condicionales if-else, son una estructura de control, que nos permiten
tomar cierta decisión al interior de nuestro algoritmo, es decir, nos permiten
determinar que acciones tomar dada o no cierta condición, por ejemplo
determinar si la contraseña ingresada por el usuario es válida o no y de
acuerdo a esto darle acceso al sistema o mostrar un mensaje de error.
 Se les conoce también como estructuras selectivas de casos dobles (porque
definen ambas posibilidades en la ejecución --si se cumple y si no se cumple -
-).
 En resumen, un condicional if-else es una estructura que nos posibilita definir
las acciones que se deben llevar a cabo si se cumple cierta condición y
también determinar las acciones que se deben ejecutar en caso de que no se
cumpla; generando así una separación o bifurcación en la ejecución del
programa, ejecutando ciertas acciones u otras a partir de la evaluación de
una condición dada.
SINTAXIS DE LA CONDICIONAL IF-ELSE
EJEMPLO
CONDICIONAL SWITCH
 Los condicionales Switch, son una estructura de control condicional, que permite
definir múltiples casos que puede llegar a cumplir una variable cualquiera, y qué
acción tomar en cualquiera de estas situaciones, incluso es posible determinar qué
acción llevar a cabo en caso de no cumplir ninguna de las condiciones dadas.
 La mejor forma de entender el funcionamiento de algo, es viendo un ejemplo de
esto, de este modo, me parece que para comprender de forma adecuada como
funciona un condicional Switch, es bueno hacerlo poniendo un ejemplo.
Imaginemos entonces que nuestro programa consta de un menú de opciones
digamos 3 opciones, cada una representada con un número correspondiente, es
decir la opción uno corresponde al número 1, la dos al 2 y así sucesivamente,
queremos entonces que de acuerdo a un número ingresado por el usuario
ejecutemos una acción correspondiente y en caso de que no corresponda a
ninguna de las posibles opciones, mostrar un mensaje de error cualquiera. De este
modo, podemos identificar 3 casos distintos para nuestro switch o en otras
palabras, hemos identificado tres condiciones posibles que puede llegar a cumplir
nuestra variable: el caso uno corresponde a que el valor ingresado por el usuario
sea el 1, es decir ejecutar la opción 1, el caso 2 el número 2, etc.
SINTAXIS DE LA CONDICIONAL SWITCH
EJEMPLO
CICLO FOR

 Los ciclos for son lo que se conoce como estructuras de control de flujo
cíclicas o simplemente estructuras cíclicas, estos ciclos, como su nombre lo
sugiere, nos permiten ejecutar una o varias líneas de código de forma
iterativa, conociendo un valor especifico inicial y otro valor final, además nos
permiten determinar el tamaño del paso entre cada "giro" o iteración del
ciclo.
 En resumen, un ciclo for es una estructura de control iterativa, que nos
permite ejecutar de manera repetitiva un bloque de instrucciones,
conociendo previamente un valor de inicio, un tamaño de paso y un valor final
para el ciclo.
SINTAXIS DEL CICLO FOR
EJEMPLO
CICLO WHILE

 Los ciclos while son también una estructura cíclica, que nos permite ejecutar
una o varias líneas de código de manera repetitiva sin necesidad de tener un
valor inicial e incluso a veces sin siquiera conocer cuando se va a dar el valor
final que esperamos, los ciclos while, no dependen directamente de valores
numéricos, sino de valores booleanos, es decir su ejecución depende del valor
de verdad de una condición dada, verdadera o falso, nada más. De este modo
los ciclos while, son mucho más efectivos para condiciones indeterminadas,
que no conocemos cuando se van a dar a diferencia de los ciclos for, con los
cuales se debe tener claro un principio, un final y un tamaño de paso.
SINTAXIS DEL CICLO WHILE
EJEMPLO
CICLO DO-WHILE

 Los ciclos do-while son una estructura de control cíclica, los cuales nos
permiten ejecutar una o varias líneas de código de forma repetitiva sin
necesidad de tener un valor inicial e incluso a veces sin siquiera conocer
cuando se va a dar el valor final, hasta aquí son similares a los ciclos while,
sin embargo el ciclo do-while nos permite añadir cierta ventaja adicional y
esta consiste que nos da la posibilidad de ejecutar primero el bloque de
instrucciones antes de evaluar la condición necesaria, de este modo los ciclos
do-while, son más efectivos para algunas situaciones especificas. En resumen
un ciclo do-while, es una estructura de control cíclica que permite ejecutar
de manera repetitiva un bloque de instrucciones sin evaluar de forma
inmediata una condición especifica, sino evaluándola justo después de
ejecutar por primera vez el bloque de instrucciones
SINTAXIS DEL CICLO DO-WHILE
EJEMPLO
ARRAY O VECTORES
 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.
 En múltiples ocasiones es necesario almacenar gran cantidad de información
en una variable y a menudo sucede que no conocemos con exactitud la
cantidad de datos que debemos almacenar, pero sabemos que sí sería más de
uno, como por ejemplo almacenar las identificaciones de las personas
ingresadas al sistema. Los arrays, arreglos o vectores son una estructura que
nos permite solucionar este tipo de problemas.
DECLARACION UN ARRAY O UN VECTOR

 Para declarar un vector en C++, se deben seguir las mismas normas básicas
que se siguen para declarar una variable cualquiera, con un pequeño cambio
en la sintaxis. Para declarar un vector, arreglo o como lo quieras llamar,
necesitaremos saber el tipo de los datos que irán al interior de este, es decir,
serán número enteros, o numero decimales o cadenas de texto, etc.
necesitamos también, como siempre, un nombre para el vector y un tamaño
máximo. La sintaxis para declarar un vector en C++ es la siguiente:

tipo_de_dato nombre_del_vector[tamaño];
 Tenemos entonces, tal como mencioné antes, que para declarar un vector en
C++, debemos definirle un tipo de los datos, sea entero, float, string, etc.,
debemos darle un nombre y al interior de los corchetes "[]" debemos poner el
tamaño máximo que tendrá el vector, es decir la cantidad máxima de datos
que podrá contener (recuerda que en C++ esto es necesario hacerlo). Veamos
un ejemplo en el cual pondré la declaración de varios vectores de diferentes
tipos y tamaños en C++.
 En cuanto tenemos declarado un vector, es posible asignarle valores,
evidentemente estos valores deben coincidir con el tipo de dato que le
asignamos a dicho vector, no tendría sentido ingresar como valores de un
vector cadenas de caracteres si el tipo de dato de dicho vector es numérico.
 Voy a mostrar a continuación formas distintas de inicializar un vector, todas
son validas, ya es cuestión de nuestras necesidades y conocimientos
determinar cuál es útil y en qué momento. Veamos entonces:

string vector[5] = {"5", "hola", "2.7", "8,9", "adios"};


int vector2[] = {1,2,3,4,10,9,80,70,19};
RECORRER UN ARRAY O VECTOR
 Para obtener todos los datos que se encuentran al interior de un vector, es
necesario recorrer el array o vector, para recorrerlo, se usa casi siempre un
ciclo for, en algunos casos mas específicos un ciclo while, pero generalmente
el ciclo for es el ideal para esto, dado que conocemos el tamaño del array. La
lógica de este procedimiento es la siguiente, el ciclo for comenzara desde
cero e ira hasta el tamaño del vector, de modo que la variable de control que
generalmente llamamos "i", será la que va a ir variando entre cero y el
tamaño del array, de esta forma al poner la i al interior de los corchetes,
estaremos accediendo al valor de cada casilla del vector y podremos hacer lo
que sea necesario con dicho valor.
EJEMPLO
MATRICES
 Las matrices o como algunos las llaman "arreglos multidimensionales" son una
estructura de datos bastante similar a los vectores o arreglos. De hecho, una
matriz no es más que una serie de vectores contenidos uno en el otro (u
otros), es decir, una matriz es un vector cuyas posiciones son otros vectores.
Hablemos con más detalle de esto para quedar más claros.
 Primero, dejemos claro qué es una matriz. En términos generales, una matriz
es una estructura conformada por filas y columnas, idealmente más de dos
filas y columnas, de hecho, podemos decir que si una "matriz" tiene una única
fila o una única columna, entonces estamos hablando de un vector y no una
matriz como tal.
 La intersección de una fila y una columna de la matriz son las casillas y cada
una de ellas podrá poseer información, simple o compleja (ya dependerá de
nuestras necesidades).
DECLARACION DE MATRICES
 Declarar una matriz en C++ es muy similar a la de un vector, se deben seguir
las mismas normas para declarar una variable pero una vez más con un
pequeño cambio en la sintaxis. Primero necesitaremos saber el tipo de los
datos que irán al interior de este (números, decimales o cadenas de texto,
etc.) necesitamos también, como siempre, un nombre para la matriz y un
tamaño máximo tanto para las filas como para las columnas. La sintaxis para
declarar una matriz en C++ es la siguiente:
tipoDato nombreMatriz[filas][columnas];
 Tenemos entonces, como podrás ver, que la sintaxis es casi la misma excepto
que hemos añadido un par de corchetes "[]" más esta vez y al interior de éstos
debemos poner el número de filas y columnas máximas de la matriz,
respectivamente. Veamos un ejemplo en el cual pondré la declaración de
varias matrices de diferentes tipos y tamaños en C++
 En cuanto tenemos declarado una matriz, es posible asignarle valores a cada
una de sus casillas, evidentemente estos valores deben coincidir con el tipo
de dato que le asignamos a dicha matriz
 Voy a mostrar a continuación formas distintas de inicializar una matriz, todas
son validas, ya es cuestión de nuestras necesidades y conocimientos
determinar cuál es útil y en qué momento. Veamos entonces:
int myMatriz1[2][2] = {{1,2},{3,4}};

 Aquí hemos declarado una matriz de tipo int de dos filas y dos columnas y la
hemos inicializado con diferentes valores. El valor inicial corresponde a la
casilla 0,0 (fila cero, columna cero) y tiene el valor de 1, en la fila cero
columna uno tenemos el valor de 2, en la fila uno columna cero el valor de 3
y finalmente en la fila uno columna uno el valor de 4.
RECORRER UNA MATRIZ

 Para obtener todos los datos que se encuentran al interior de una matriz,
debemos acceder a cada posición y esto se hace fácilmente con dos ciclos for
(anidados). La lógica de este procedimiento es la siguiente, el primer ciclo for
comenzará desde cero e ira hasta el número de filas, de modo que la variable
de control que generalmente llamamos "i", será la que va a ir variando entre
cero y el tamaño del array, de esta forma al poner la i al interior de los
corchetes, estaremos accediendo al valor de cada fila y el segundo ciclo irá
de cero al número de columnas y normalmente se usa la variable llamada j
para acceder a cada columna, veamos:
EJEMPLO
FUNCIONES Y METODOS

 Las funciones son un conjunto de procedimiento encapsulados en un bloque,


usualmente reciben parámetros, cuyos valores utilizan para efectuar
operaciones y adicionalmente retornan un valor. Esta definición proviene de
la definición de función matemática la cual posee un dominio y un rango, es
decir un conjunto de valores que puede tomar y un conjunto de valores que
puede retornar luego de cualquier operación.
 Los métodos y las funciones son funcionalmente idénticos, pero su diferencia
radica en el contexto en el que existen. Un método también puede recibir
valores, efectuar operaciones con estos y retornar valores, sin embargo en
método está asociado a un objeto, básicamente un método es una función
que pertenece a un objeto o clase, mientras que una función existe por sí
sola, sin necesidad de un objeto para ser usada.
PROCEDIMIENTOS

 Los procedimientos son básicamente lo un


conjunto de instrucciones que se ejecutan sin
retornar ningún valor, hay quienes dicen que un
procedimiento no recibe valores o argumentos,
sin embargo en la definición no hay nada que se
lo impida. En el contexto de C++ un
procedimiento es básicamente una función void
que no nos obliga a utilizar una sentencia return.
DECLARACION DE FUNCIONES Y
PROCEDIMIENTOS
 La sintaxis para declarar una función o procedimiento es muy simple, veamos:
FUNCION SIN ENVIO DE PARAMETROS
FUNCION CON ENVIO DE PARAMETROS
PROCEDIMIENTO SIN ENVIO DE
PARAMETROS
PROCEDIMIENTO CON ENVIO DE
PARAMATROS
METODOS DE ORDENAMIENTO

 Debido a que las estructuras de datos son utilizadas para almacenar


información, para poder recuperar esa información de manera eficiente es
deseable que aquella esté ordenada. Existen varios métodos para ordenar las
diferentes estructuras de datos básicas.
En general los métodos de ordenamiento no son utilizados con frecuencia, en
algunos casos sólo una vez. Hay métodos muy simples de implementar que son
útiles en los casos en dónde el número de elementos a ordenar no es muy
grande (ej, menos de 500 elementos). Por otro lado hay métodos sofisticados,
más difíciles de implementar pero que son más eficientes en cuestión de
tiempo de ejecución.
METODO BURBUJA

 La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de


ordenamiento. Funciona revisando cada elemento de la lista que va a ser
ordenada con el siguiente, intercambiándolos de posición si están en el orden
equivocado. Es necesario revisar varias veces toda la lista hasta que no se
necesiten más intercambios, lo cual significa que la lista está ordenada.
Este algoritmo obtiene su nombre de la forma con la que suben por la lista los
elementos durante los intercambios, como si fueran pequeñas "burbujas".
También es conocido como el método del intercambio directo. Dado que solo
usa comparaciones para operar elementos, se lo considera un algoritmo de
comparación, siendo el más sencillo de implementar.
METODO DE INSERCION

 El ordenamiento por inserción (insertion sort en inglés) es una manera muy


natural de ordenar para un ser humano, y puede usarse fácilmente para
ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²)
operaciones para ordenar una lista de n elementos.
 Inicialmente se tiene un solo elemento, que obviamente es un conjunto
ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se
toma el elemento k+1 y se compara con todos los elementos ya ordenados,
deteniéndose cuando se encuentra un elemento menor (todos los elementos
mayores han sido desplazados una posición a la derecha) o cuando ya no se
encuentran elementos (todos los elementos fueron desplazados y este es el
más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse
los demás elementos.
METODO SHELL

 El ordenamiento Shell (Shell sort en inglés) es un algoritmo de


ordenamiento. El método se denomina Shell en honor de su inventor Donald
Shell. Su implementación original, requiere O(n2) comparaciones e
intercambios en el peor caso. Un cambio menor presentado en el libro de V.
Pratt produce una implementación con un rendimiento de O(n log2 n) en el
peor caso. Esto es mejor que las O(n2) comparaciones requeridas por
algoritmos simples pero peor que el óptimo O(n log n). Aunque es fácil
desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy
difícil analizar su tiempo de ejecución.
 El algoritmo Shell sort mejora el ordenamiento por inserción comparando
elementos separados por un espacio de varias posiciones. Esto permite que un
elemento haga "pasos más grandes" hacia su posición esperada. Los pasos
múltiples sobre los datos se hacen con tamaños de espacio cada vez más
pequeños. El último paso del Shell sort es un simple ordenamiento por
inserción, pero para entonces, ya está garantizado que los datos del vector
están casi ordenados.
METODO POR SELECCION
 El ordenamiento por selección (Selection Sort en inglés) es un algoritmo de
ordenamiento que requiere O (𝑛2 ) operaciones para ordenar una lista de n
elementos.
 Su funcionamiento es el siguiente:
 Buscar el mínimo elemento de la lista

 Intercambiarlo con el primero

 Buscar el mínimo en el resto de la lista

 Intercambiarlo con el segundo

 Y en general:
 Buscar el mínimo elemento entre una posición i y el final de la lista

 Intercambiar el mínimo con el elemento de la posición i

También podría gustarte