Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Material de Estudio - Programacion
Material de Estudio - Programacion
Los índices: son los que permiten acceder a cualquier elemento del arreglo
de manera individual. (Programacion Basica VB, 2019)
7 8 9 10 5 8 4 9 6 2
Declaración.
En pseudocódigo un arreglo es declarado de la siguiente manera; el usuario
coloca dimensión, el nombre del arreglo y el tamaño, como se muestra en la
siguiente imagen.
Sintaxis:
Tipodato nombre[tamaño];
La memoria puede ser reservada para muchos arreglos dentro de una misma
declaración. Los arreglos pueden ser declarados de cualquier tipo de dato
primitivo (int, float, bool, double, etc.).
Inicialización y Asignación
Un arreglo unidimensional puede ser inicializado a través de
sus índices o automáticamente con un ciclo repetitivo que recorra todo el
arreglo unidimensional.
PSEUDOCÓDIGO
La sintaxis es la siguiente:
DIAGRAMA DE FLUJO
CODIFICACION EN C++
La sintaxis es la siguiente:
Ejemplo [4];
Ejemplo [0]=1;
Ejemplo [1]=23;
Ejemplo [2]=45;
Ejemplo [3]=169;
PSEUDOCODIGO
dimension ejemplo1[6];
Ejemplo1 <- i;
FinPara
DIAGRAMA DE FLUJO
CODIFICACION EN C++
int main() {
int i;
int Ejemplo1[6];
Ejemplo1 [ i ]=i;
} return 0;
Lectura y Escritura.
Escritura en pseudocódigo:
Lectura en pseudocódigo:
Escritura en C++:
Lectura en C++:
Ejemplo 1
Elaborar un programa en pseudocódigo, diagrama de flujo (utilizando la
herramienta pseint) y su respectiva codificación en lenguaje C++ (usando el
editor CodeBlocks) que pida al usuario el ingreso de tres números, y después la
aplicación deberá mostrar en pantalla los números digitados.
PSEUDOCÓDIGO
Proceso arreglos
dimension num[3];
para i<-1 Hasta 3 Con Paso 1 Hacer //i recorrerá desde 1 hasta 3
//manera ordenada de 1 a 3
FinPara
escribir "";
escribir "El numero ",i," fue: ", num[i]; //los numeros aparecerán
en la pantalla
// conforme fue
digitado
FinPara
FinProceso
DIAGRAMA DE FLUJO:
Figura 13. Diagrama de flujo ejemplo. Fuente: Pseint-Autoría propia
CODIFICACION EN C++
#include< iostream>
using namespace std;
int main() {
int i;
int num[3];
for (i=1;i<=3;i++) {
cout << "inserte un numero " << i << ":" << endl;
cin >> num[i-1];
}
cout << endl; //salto de línea
cout << endl;
for (i=1;i<=3;i++) {
cout << "El numero " << i << " fue: " << num[i-1] << endl;
}
return 0;
}
Autoevaluación
1. ¿Cuáles son los componentes de un arreglo?
Nombre y tipo
Elemento e índice
Tamaño y tipo
While
For y while
For
Directa o inversa
Sistemática
Índices o automática
Int notas[30];
Int notas{30};
6. ¿En pseudocódigo desde qué casilla se almacenan los datos del vector?
Última
Casilla cero
Primera
dimensión nombres[10];
char vector[10];
8. ¿En C++ desde qué casilla se almacenan los datos del vector?
Casilla cero
última
primera
9.1. Introducción
Partiendo de un vector, el cual se considera como una matriz fila, se concluye
entonces que un arreglo bidimensional es una variable única con dos subíndices:
el primero especifica las filas y el otro las columnas y deben estar separados por
corchetes. Por ello se los conoce también con el nombre de matrices.
PSEUDOCODIGO
Tipo Nombre_Matriz[Filas,Columnas];
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
Tipo Nombre_Matriz[Filas][Columnas];
PSEUDOCODIGO
Dimension num1[2,2];
num1[1,1]<-1;
num1[1,2]<-2;
num1[2,1]<-3;
num1[2,2]<-4;
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
O de esta manera:
m[1][2]= 2;
m[2][1]= 3;
m[2][2]= 4;
9.4. Lectura
Para la lectura de datos se utiliza 2 estructuras “PARA” anidadas, la primera para
recorrer las filas y la segunda recorre las columnas.
PSEUDOCODIGO
leer num1[i,j];
FinPara
FinPara
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
int filas=2,columnas=2;
9.5. Escritura
Para la escritura de datos se utiliza 2 estructuras “PARA” anidadas, la primera
para recorrer las filas y la segunda recorrer las columnas.
PSEUDOCODIGO
Escribir 'Su matriz es: ';
FinPara
Escribir "";
FinPara
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
cout<<matriz[i][j];< span=""></matriz[i][j];<>
cout<<" ";
cout<<"\n";
PSEUDOCODIGO
FinPara
FinPara
DIAGRAMA DE FLUJO
Figura 5.Diagrama de flujo: Acceso a un arreglo bidimensional por filas.Fuente: Autoría Propia
CODIFICACION EN C++:
cout<<num1[i,j];
}</num1[i,j];
FinPara
FinPara
DIAGRAMA DE FLUJO
C++:
cout<<num1[i,j];< span=""></num1[i,j];<>
FinPara
Escribir "";
FinPara
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
cout<<matriz[i][j];< span=""></matriz[i][j];<>
cout<<" ";
cout<<"\n";
9.9. Ejemplo 1
Diseñar un algoritmo en pseudocódigo con su respectivo diagrama de flujo y su
codificación en lenguaje C++ para generar una matriz 3x2 que me permita
ingresar datos a cada una de sus celdas por teclado y luego mostrar los
elementos de la matriz.
PSEUDOCODIGO
Proceso Arreglo_bidimensional
Dimension num1[3,2];
leer num1[i,j];
FinPara
FinPara
FinPara
Escribir "";
FinPara
FinProceso
[3 filas, 2columnas] 0 1
0 xx xx
1 xx xx
2 xx xx
DIAGRAMA DE FLUJO
Figura 8. Diagrama de flujo: Ejemplo 1. Fuente: Autoría Propia
CODIFICACION EN C++:
#include
int main() {
int i;
int j;
int num1[3][2];
for(i=0;i<3;i++){
for(j=0;j<2;j++){
cin>>num1[i][j];
for(i=0;i<3;i++) {
for(j=0;j<2;j++){
cout<<num1[i][j];< span=""></num1[i][j];<>
}
cout<<""<<endl;< span=""></endl;<>
return 0;
Explicación:
Se tiene 2 estructuras “for” anidadas, una para con el iterador i, que será la
variable para las filas de la matriz, y otro para el iterador j, que será la variable
para las columnas, seguidos de un “cout” que indica la posición en la matriz
donde se guardarán los datos. Con eso se completa la parte del guardado de
datos dentro de la matriz. Para mostrar el contenido de la matriz por pantalla se
usan 2 ciclos “for” seguidos por un “cout” y la variable de la matriz.(num1[i][j]).
Autoevaluación
1.Como sabemos cuántos elementos en total tiene un arreglo bidimensional?
A. tipo nombre[filas,columnas];
B. tipo nombre[filas][columnas];
C. tipo nombre{filas,columnas};
A. valores.
B. caracteres
C. variables.
C. Tres, una para las filas, otra para las columnas y otra para el ingreso de
variables.
A. Verdadero.
B. Falso.
A. Primitivos.
B. Estructurados.
C. Todas la anteriores.
1 int main() {
2 int i;
3 int j;
4 int num1[3],[2];
5 for(i=0;i<3;i++){
6 for(j=0;j<2;j++){
8 cin>>num1[i][j];
9 }
10 }
Este algoritmo se llama así por la manera con la que los elementos ascienden
por la lista durante los intercambios, como si fueran unas pequeñas “burbujas”,
ya que en un vaso de gaseosa las burbujas que son más livianas que el líquido
suben a la superficie, y de igual manera, todos los elementos de menor peso
subirán. Además, a este tipo de ordenación se lo conoce como método de
intercambio directo; ya que solo usa comparaciones para ordenar elementos y
por ende es el más simple de usar, sin embargo, es el que más intercambios
realiza.
PSEUDOCODIGO
Proceso Burbuja
Dimension array[5];
array[1]<-2;
array[2]<-3;
array[3]<-1;
array[4]<-5;
array[5]<-4;
aux<-array[j];
array[j]<-array[j+1];
array[j+1]<-aux;
FinSi
FinPara
FinPara
FinPara
FinProceso
Codificación en C++:
#include
#include
int main() {
int array[n];
int i,j,aux;
for (i=1;i<=n;i++) {
for (j=1;j<=n-1;j++) {
// Se intercambian valores
aux = array[j-1];
array[j-1] = array[j];
array[j] = aux;
for (i=1;i<=5;i++) {
getch();
return 0;
<
10.3.2 Ordenamiento por el método de inserción
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.
PSEUDOCODIGO
Proceso Insercion
Dimension vector[5];
Leer vector[i];
finPara
aux<-vector[i];
j<-i-1;
vector[j+1]<-vector[j];
j<-j-1;
FinMientras
vector[j+1]<-aux;
FinPara
FinPara
FinProceso
CODIFICACION EN C++:
#include
#include
int main() {
int i,j,aux;
int vector[5];
for (i=1;i<=5;i++) {
for (i=1;i<=5;i++) {
aux = vector[i-1];
j = i-1;
vector[j] = vector[j-1];
j = j-1;
vector[j] = aux;
for (i=1;i<=5;i++) {
cout << "posicion " << i << " es: " << vector[i-1] << endl;
return 0;
Es el más rápido pues a diferencia de los otros dos, este no analiza las celdas
de memoria ya ordenadas, sino que una vez ya analizados y ordenados ciertos
elementos, estos permanecen estáticos en sus posiciones, que, al ya estar
ordenadas, el algoritmo deja de contarlas como una zona activa de análisis y
solo procede a analizar los elementos restantes.
Pseudocódigo
Proceso Ordenamiento_seleccion
Dimension vector[5];
TAM<-5;
//Ingreso de datos
Leer vector[i];
finPara
//Ordenamiento por seleccion
minimo<-vector[i];
aux<-i;
aux<-j;
FinSi
FinPara
vector[aux]<-vector[i];
vector[i]<-minimo;
FinPara
FinPara
FinProceso
CODIFICACION EN C++:
#include
int main() {
int aux, i, j, minimo, tam;
int vector[5];
tam = 5;
// Ingreso de datos
for (i=1;i<=tam;i++) {
for (i=1;i<=tam-1;i++) {
minimo = vector[i-1];
aux = i;
for (j=i+1;j<=tam;j++) {
minimo = vector[j-1];
aux = j;
vector[aux-1] = vector[i-1];
vector[i-1] = minimo;
for (i=1;i<=tam;i++) {
cout << "posicion " << i << " es: " << vector[i-1] << endl;
return 0;
Pseudocódigo:
Proceso Busqueda_Lineal
inf<-1;
sup<-n;
Dimension array[n];
//Ingreso de datos
Escribir "array[",i,"]:";
Leer array[i];
FinPara
Leer elemento;
Repetir
cen<-trunc((inf+sup)/2);
Si array[cen]
inf<-cen+1;
SiNo
sup<-cen-1;
FinSi
SiNo
FinSi
FinProceso
Codificación en C++:
#include < iostream >
int main() {
int cen,elemento,i,n,inf,sup;
bool flag;
n = 5;
inf = 1;
sup = n;
int array[n];
// Ingreso de datos
for (i=1;i<=n;i++) {
cout << "Array[" << i << "]:" << endl;
do {
cen = int((inf+sup)/2);
inf = cen+1;
} else {
sup = cen-1;
if (array[cen-1]==elemento) {
} else {
return 0;
}
10.4.2 Búsqueda secuencial
Este tipo de búsqueda secuencial, consiste en usar una “clave”, después
recorrer todo el arreglo buscando la “clave”, para que de esta manera al
encontrarla nos despliegue un mensaje o a su vez realice alguna acción
específica.
Ejemplo:
Pseudocódigo:
Proceso Busqueda_Lineal
Dimension array[n];
//Ingreso de datos
Escribir "Array[",i,"]:";
Leer array[i];
FinPara
Leer elemento;
i<-1;
flag<-falso;
Si elemento=array[i] Entonces
flag<-Verdadero;
SiNo
i<-i+1;
FinSi
FinMientras
SI flag ENTONCES
SiNo
FINSI
FinProceso
Codificación en C++:
#include
int main() {
int array[N];
int elemento,i;
bool flag;
// Ingreso de datos
for (i=1;i<=N;i++) {
i = 1;
flag = false;
if (elemento==array[i-1]) {
flag = true;
} else {
i = i+1;
if (flag) {
} else {
return 0;
}
Autoevaluación
1.-¿Cual es una de las opciones más comunes y usadas en el procesamiento
de datos?
A.-Ordenación de datos.
B.-Diagramas.
C.-Resúmenes.
A.-Desordenar elementos.
C.-Cambiar variables.
A.-Verdadero.
B.-Falso.
C.-Quicksort.
B.-Reemplazar sucesivamente.
C.-Intercambiar directamente.
A.-desde el medio.
B.-desde el inicio.
C.-desde el final.
11.1. Funciones
Las funciones en los lenguajes de programación permiten que la codificación sea
más simple y que fragmentos de código puedan ser reutilizados.
Es decir, son un grupo de sentencias bajo el mismo nombre que realizan una
tarea específica.
Ejemplo:
Si n1 > n2 Entonces
resultado <- n1
Sino
resultado <- n2
FinSi
FinFuncion
Algoritmo Funciones01
Escribir Maximo(5,12)
Escribir Maximo(25,12)
FinAlgoritmo
Este programa crea una función que calcula cuál es el mayor de los dos números
que se le indican como parámetro, y la usa dos veces, para mostrar el máximo
de dos valores prefijados.
11.1.2. Beneficios
Las funciones son esenciales para un programador porque permite escribir
un código ordenado y eficiente. Al implementar las funciones en los programas
se reduce el tiempo de codificación y el tiempo de depuración, acortando el
tiempo total de desarrollo.
Beneficios:
• Efectos de mantenimiento
FUNCIONES EN PSEUDOCODIGO
Cabe recalcar que la herramienta PSeInt ubica las funciones creadas, arriba
de la Función principal.
tipo de dato de retorno: Tipo de dato del valor que la función retornara al
terminar su ejecución.
Por ejemplo:
EJEMPLO 1.2
En resumen:
return;
Ejemplo:
return a + b;
}
11.1.6. Tipos de funciones
Existen 4 tipos de funciones:
Los parámetros usados por una función pueden declararse con un valor por
defecto. Un parámetro que ha sido declarado con valor por defecto es opcional
a la hora de hacer la llamada a la función.
11.3. Implementación pasos de parámetro por valor
Implementación en Pseudocódigo
Implementación en C++
La función (o subrutina) recibe sólo una copia del valor que tiene la variable,
o sea que no la puede modificar.
Ejemplos:
A. Datos de Entrada.
B. Procesamiento de Datos.
C. Impresión de Resultados.
C. Polimorfismo en un programa.
A. real farenheitACelsius(toupper(x));
B. char farenheitACelsius(toupper(c))
1.#include<iostream>
2.#include<conio.h>
3.using namespace std;
4.char f(char caracter);
5.
6.int main(){
7. char letra;
8. letra = ‘g’;
9. f(letra);
10.}
11.
12.char f(char caracter){
13. caracter = ‘C’;
14. return carácter;
15.}
9. Hay funciones que no retornan datos, en este caso, ¿cuál de las siguientes
instrucciones es una forma de no retornar datos en C++?
A. return (variable);
B. return;
C. return expresión;
12.5. Ejemplo 1
Realizar un programa con codificación en C++ que permita intercambiar los
valores entre 2 números enteros.
1. #include
2. #include
3. using namespace std;
4. void intercambiar(int *num1, int *num2);
5. int main ()
6. {
7. int numero_1,numero_2,*pta,*ptb;
8. pta=&numero_1;
9. ptb=&numero_2;
10. cout<<” Ingrese el primer numero: “;
11. cin>>numero_1; cout<<endl; < span=""></endl; <>
12. cout<<” Ingrese el segundo numero: “;
13. cin>>numero_2; cout<<endl;< span=""></endl;<>
14. intercambiar(&numero_1,&numero_2);
15. cout<<” Valor nuevo 1: “<<numero_1<<endl;<
span=""></numero_1<<endl;<>
16. cout<<” Valor nuevo 2: “<<numero_2<<endl;<
span=""></numero_2<<endl;<>
17. getch ();
18. return 0;
19. }
20. void intercambiar (int *num1, int *num2)
21. {
22. int aux;
23. aux=*num1;
24. *num1=*num2;
25. *num2= aux;
26. }
Línea 24: Se crea una variable auxiliar para almacenar el puntero *num1.
12.6. Ejemplo 2
Realizar un programa con codificación en C++ que separa la parte entera y
decimal de un número de tipo float. Diseñar e implementar una función llamada
separar (), la cual debe retornar 2 valores, la parte entera y la parte decimal. Por
ejemplo
Numero=12.35
Entero=12
Decimal=35;
1. #include
2. #include
3. using namespace std;
4. int separar(float num, int *entero, int *decimal);
5. int main()
6. {
7. int *ent,*dec,entero,decimal;
8. float numero;
9. //almacenar direcciones de memoria en los punteros
10. ent=&entero;
11. dec=&decimal;
12. cout<<”Ingrese un numero real con dos decimales: “;
13. cin>>numero;
14. separar(numero,&entero,&decimal);
15. cout<<”El numero original: “<<numero<<” parte="" entera:=""
“<<entero<<” ="" la="" decimal:="" “<<decimal<<endl;<=""
span=""></numero<<”>
16. getch();
17. return 0;
18. }
19. //función que separa la parte entera y decimal
20. int separar(float num, int *entero, int *decimal){
21. float dec1;
22. *entero=num;
23. dec1=(num-*entero)*100;
24. *decimal=dec1;
25. }
Línea 24: Asignar el valor de la variable num a donde apunta entero, Es decir
Entero=num
Variables puntero
Variables enteras
1. #include<stdlib.h>
2. int main (){
3. int *numero_1;
4. float *numero_2;
5. int num1;
6. float num2;
7. numero_1=&num1;
8. *numero_1=34;
9. *numero_2=115;
10. return 0;
11. }
La variable puntero *numero_2 no puede almacenar el valor porque el tipo de
dato no coincide
&
<>
1. #include<iostream>
2. void valnuevo(int *xnum,int *ynum);//Prototipo de la función
3. int main()
4. {
5. int *numero_1,*numero_2,num1,num2;
6. numero_1=&num1;
7. numero_2 =&num2;
8. cin>>num1;
9. cin>>num2;
10. valnuevo(num1,num2);
11. return 0 ;
12. }
13. void valnuevo(int *xnum,int *ynum){
14. *xnum=15;
15. *ynum=20;
16. }
Sexagesimal
Hexadecimal
Heptadecimal
Las bibliotecas o también conocidas como librerías son cierto tipo de archivo
que podemos incluir en nuestros programas que contienen especificaciones de
diferentes funciones que ya están establecidas y podemos incluirlas para facilitar
la realización de nuestros programas.
A las librerías se las puede clasificar por diferentes aspectos los cuales
pueden ser bibliotecas de entrada y salida, por el tipo de trabajos que realizan,
bibliotecas matemáticas, de manejo de memoria, de manejo de textos, entre
otras.
Existen un gran número de librerías y cada una de ellas cuenta con una
función específica, que al poder incluirlas en los programas nos facilitara su
creación y nos ahorra tiempo.
Para hacer uso de las funciones de una librería debemos llamarla con la
siguiente sintaxis:
1. #include
• fstream:
• iostream:
Ejemplo:
#include
int main(){
cout<<"hola mundo";
return 0;
• math:
Para usar esta función debemos darle como argumento, una base y un exponente,
la función potenciación los asocia a variables tipo double ya que los resultados
pueden ser muy grandes ya que, si dejamos vacío cualquiera de los dos campos,
el compilador nos mostrará un mensaje de error como la figura 3:
• stdio:
Ejemplo:
// Inclusión de la librería
#include
int main ()
printf("Hola mundo\n");
return 0;
• stdlib:
• Conversión
• Memoria
• Control de procesos
• Ordenación
• Búsqueda
• Matemáticas
#include
#include
#include
int main()
int num, c;
srand(time(NULL));
return 0;
• string:
Ejemplo :
#include
#include
int main()
char s1[8];
strcpy( s1, s2 );
printf( "s2=%s\n", s2 );
printf( "s1=%s\n", s1 );
return 0;
}
13.6. ¿Cómo crear una librería propia?
Para poder crear una librería debemos seguir los siguientes pasos:
Y para poder utilizar nuestra librería solo tenemos que llamarla antes de
empezar a utilizar nuestro programa entre comillas dobles.
Ejemplo:
Autoevaluación
1. Una estructura secuencial es:
a. Secuencia
b. Condición
a. Errores de sintaxis
b. Errores de semántica
b. Creación de funciones.
c. Creación de menús
<número1>: <instrucciones>
a. Si <condición> Entonces
<instrucciones>
SiNo
<instrucciones>
FinSi
b. El programa se cierra.
a. Orden numérico.
b. Orden jerárquico.
a. Java
b. C
c. C++
14.1 Introducción
La recursividad en los lenguajes de programación son técnicas que se utilizan
para realizar una llamada a una función desde ella misma, de ahí proviene su
nombre y va a tener un sentido jerárquico y disciplinario. (Castro, 2019)
Recursividad directa.
Recursividad indirecta.
Tabla 1
Caso base: El caso para el cual una respuesta es explícitamente conocida, un resultado más
simple.
4.4 Estructura
El ejemplo más comprensible de cálculo recursivo en el campo de la
programación es la factorial del número (n).
5! = 5x4x3x2x1 = 120
4! = 4x3x2x1 = 24
3! = 3x2x1 = 6
2! = 2x1 = 2
1! = 1x1 = 1
0! = 1 = 1
5! = 5x4!
4! = 4x3!
3! = 3x2!
2! = 2x1!
1! = 1x0!
En términos generales
Desventajas