En este recurso lo que se desea es proporcionar todos los contenidos y ejemplos de lo referente a ARREGLOS O VECTORES UNIDIMENSIONALES en el curso de PROGRAMACIÓN I en todas las carreras de la Facultad de Informática, Electrónica y Comunicación
texto argumentativo, ejemplos y ejercicios prácticos
Arreglos unidimensionales
1. UNIVERSIDAD PANAMA
Facultad De Informática, Electrónica
y Comunicación
Curso de Programación I
Módulo 3
Arreglos Unidimensionales
Facilitador: Ing. Saulo Aizprúa
I Semestre
2019
1
ARREGLOS&VECTORES
2. C++.
• Creación de programas simples de C++ Builder
como ejercicios en C++.
• Los elementos de control fundamentales en C++,
incluyendo operadores lógicos y aritméticos,
estructuras de decisión, y de ciclo.
• Los tipos de datos disponibles en C++, incluyendo
los numéricos, cadenas de caracteres, Boolean y
definidos por el usuario.
• Las facilidades de C++ para crear estructuras de
datos complejas, incluyendo arreglos, conjuntos y
estructuras.
2ARREGLOS&VECTORES
3. Creación de programas simples de
C++ Builder como ejercicios en C++.
• Símbolos para especificar
comentarios: // para líneas; /* y */
para párrafos.
• Instrucciones simples:
– Asignación: a = 15;
– Llamado a función:
ShowMessage(“Hola”);
3ARREGLOS&VECTORES
4. Creación de programas simples de
C++ Builder como ejercicios en C++.
• Instrucciones Compuestas: Es un
conjunto de instrucciones agrupadas
entre los símbolos { y }, las cuales son
tratadas como un bloque.
if (a >b)
{ temp = a; //inicio de bloque
a=b;
b=temp;
} //fin de bloque
4ARREGLOS&VECTORES
5. Creación de programas simples de
C++ Builder como ejercicios en C++.
• Uso del (punto y coma) “;” todas las
instrucciones simples deben
terminar con “;”.
5ARREGLOS&VECTORES
6. Elementos de control en C++
(operadores lógicos y aritméticos,
estructuras de decisión, y de ciclo).
• Símbolo de asignación “=“ (diferente del
símbolo de igualdad “==“).
• Operadores Aritméticos: +,-,*,/ y
%(residuo). Todos pueden hacer
operaciones con enteros y/o flotantes,
excepto %, el cual solo acepta enteros.
6ARREGLOS&VECTORES
7. Elementos de control en C++
(operadores lógicos y aritméticos,
estructuras de decisión, y de ciclo).
• Operadores relacionales: <, <=, >, >=,
== y !=.
• Operadores de operaciones con bits:
<< Corrimiento a la izquierda.
>> Corrimiento a la derecha.
& And
| Or
^ Xor
7ARREGLOS&VECTORES
8. Elementos de control en C++
(operadores lógicos y aritméticos,
estructuras de decisión, y de ciclo).
• Operadores Lógicos:
&& And
|| Or
! Not
8ARREGLOS&VECTORES
9. Operadores de Asignación
= Asignación.
*= Asignación de producto.
/= Asignación de cociente.
%= Asignación de residuo.
+= Asignación de suma.
-= Asignación de diferencia.
9ARREGLOS&VECTORES
10. Operadores de Asignación
<<= Asignación de corrimiento a la
izquierda.
>>= Asignación de corrimiento a la
derecha.
&= Asignación de And de bits.
^= Asignación de Xor de bits.
|= Asignación de Or de bits.
10ARREGLOS&VECTORES
11. Operadores de pertenencia a clases.
:: Resolución de área de visualización
de clases.
. y * Apuntadores de referencia de un
apuntador a un miembro de una
clase.
-> y * Apuntadores de referencia a
apuntadores de un miembro de una
clase.
11ARREGLOS&VECTORES
12. Elementos de control en C++
(operadores lógicos y aritméticos,
estructuras de decisión, y de ciclo).
?: If aritmético o condicional:
Ejemplo :
max = (x > y) ? x : y;
Equivale a:
if (x >y)
max = x;
else max = y;
12ARREGLOS&VECTORES
13. Estructuras de decisión.
if (condición) //if simple
instrucción(es);
if (condición) //if ..else
instrucción(es);
else
instrucción(es);
13ARREGLOS&VECTORES
15. Estructuras Ciclo.
• while (condición) instrucción(es);
• for (inicialización ; condición ;
incremento);
instrucción(es);
• do {
instrucción(es);
} while (condición);
15ARREGLOS&VECTORES
16. Modificadores de ejecución de
estructuras ciclo.
• break : hace que se interrumpa la
ejecución del ciclo o bloque de
instrucciones que la contiene, y se
continúe con la instrucción que siga
a dicho bloque.
16ARREGLOS&VECTORES
17. Modificadores de ejecución de
estructuras ciclo.
• continue : al ejecutarse se saltan las
instrucciones siguientes y se continúa con la
evaluación de la condición. Ejemplo:
for (i= 0; i<20;i++){
if (arreglo[i] == 0)
continue;
arreglo[i]= 1/arreglo[i];
}
17ARREGLOS&VECTORES
18. Tipos de datos en C++.
• Tipos de datos enteros:
char, short, int y long (todos ellos
pueden usarse en combinación con
el modificador unsigned para
definir variables enteras positivas).
unsigned int, unsigned long int
18ARREGLOS&VECTORES
19. Tipos de datos numéricos en C++.
Tipo Tamaño Rango Utilidad
unsigned char 8 0 <= X <= 255 Números pequeños y valores de la tabla
de caracteres de la PC.
char 8 -128 <= X <= 127 Números muy pequeños y caracteres de
la tabla ASCII
short int 16 -32,768 <= X <= 32,767 Contadores y números pequeños
unsigned int 32 0 <= X <= 4,294,967,295 Números grandes y ciclos
int 32 -2,147,483,648 <= X <= 2,147,483,647 Contadores, números pequeños
unsigned long 32 0 <= X <= 4,294,967,295 Enteros positivos muy grandes,
distancias
enum 32 -2,147,483,648 <= X <= 2,147,483,647 Conjuntos de valores ordenados
long 32 -2,147,483,648 <= X <= 2,147,483,647 Números grandes
float 32 1.18 10^-38 < |X| < 3.40 10^38 Cálculos (7-dígitos)
double 64 2.23 10^-308 < |X| < 1.79 10^308 Cálculos (15-dígitos)
long double 80 3.37 10^-4932 < |X| < 1.18 10^4932 Financieros (18-dígitos)
19ARREGLOS&VECTORES
20. Tipos de datos de cadenas de
caracteres en C++.
Tipo Longitud máxima Memoria requerida Usado para
ShortString 255 caracteres 2 a 256 bytes Compatibilidad con
versiones anteriores.
AnsiString ~2^31 caracteres 4 bytes a 2GB Cadenas de
caracteres de 8-bit
(ANSI)
WideString ~2^30 caracteres 4 bytes a 2GB Caracteres unicode;
servidores multi-
usuario y aplicaciones
multi-idioma.
20ARREGLOS&VECTORES
21. Tipos de datos Boolean en C++.
• Las variables de este tipo pueden
almacenar los valores: true y false.
21ARREGLOS&VECTORES
22. Tipos de datos definidos por el
usuario en C++.
• Apuntadores a objetos y
apuntadores a funciones.
• Tipos de datos enumerados:
enum dias {lunes, martes, miercoles, jueves, viernes, sabado, domingo};
22ARREGLOS&VECTORES
23. Tipos de datos Variant en C++.
• Son esencialmente variables sin tipo,
que pueden tomar valores de diferente
tipo y además pueden cambiar su tipo
dinámicamente.
• Además una variable de tipo Variant
puede tomar el valor Null y
Unassigned, para indicar ausencia de
dirección y que no se ha inicializado
respectivamente.
23ARREGLOS&VECTORES
24. Las facilidades de C++ para crear
estructuras de datos complejas
(arreglos, conjuntos y estructuras).
• Arreglos:
tipo identificador[expresion constante];
• DinamycArray:
DinamicArray <int> arregloEnteros;
arregloEnteros.Length = 10;
24ARREGLOS&VECTORES
25. Las facilidades de C++ para crear
estructuras de datos complejas
(arreglos, conjuntos y estructuras).
• Permite reunir un grupo de valores
de diferente tipo bajo un mismo
nombre.
struct miestructura {
char nombre[20], telefono[20];
int edad, altura;
} midato;
25ARREGLOS&VECTORES
26. Las facilidades de C++ para crear
estructuras de datos complejas
(arreglos, conjuntos y estructuras).
• El tipo conjunto en C++ Builder se
puede implementar mediante el uso
del template:
• Set <tipo, valor_mínimo,valor
máximo>
26ARREGLOS&VECTORES
27. Arreglos
• Un arreglo es un conjunto de variables del
mismo tipo que poseen un nombre
común concatenado a un índice.
• El índice permite acceder directamente a
un elemento particular de un arreglo.
• Los arreglos en lenguaje C se almacenan
en celdas de memoria contiguas.
• Pueden tener 1 o más dimensiones.
27ARREGLOS&VECTORES
28. Arreglos unidimensionales
• La forma general de declaración:
• La cantidad de memoria en bytes se puede
obtener con la función:
• El 0 es el índice del primer elemento de un
arreglo.
tipo nombre_variable[tamaño];
numero_bytes = sizeof(tipo)*tamaño;
28ARREGLOS&VECTORES
29. Arreglos Unidimensionales
elemento 0 elemento 1 elemento n-1
tipo nombre_variable[tamaño];
Ejemplo:
Realizar un programa en el que se ingresen 10 enteros, y
luego se sumen sus elementos. Mostrar el resultado.
29ARREGLOS&VECTORES
30. Ejemplo
#include <stdio.h>
int main(){
int x[10];
int i,suma;
for (i=0;i<10;i++){
printf ("Ingresar entero: ");
scanf("%d",&x[i]);
}
suma=0;
for (i=0;i<10;i++)
suma+=x[i];
printf(" El resultado de la suma es = %dn",suma);
return 0;
}
30ARREGLOS&VECTORES
31. Arreglos Unidimensionales
• Ejercicios:
- Crear un programa al cual se le ingrese un
conjunto de caracteres.
- Calcular el promedio en un arreglo de largo L el
cual no está lleno completamente.
31ARREGLOS&VECTORES
32. Paso de Arreglos
unidimensionales a
funciones• Forma 1: Arreglo delimitado
#include <stdio.h>
func1(int x[100]){
.........
}
int main(){
int a[100];
…..
func1(a);
……...
return 0;
}
Se pasa la dirección del primer
elemento del arreglo a la función
Se debe especificar el tamaño
del arreglo
32ARREGLOS&VECTORES
33. Paso de Arreglos
unidimensionales a funciones
• Forma 2: Arreglo no delimitado
#include <stdio.h>
func1(int x[]){
……...
}
int main(){
int a[10];
…..
func1(a);
……...
return 0;
}
No se especifica el tamaño del
arreglo
33ARREGLOS&VECTORES
34. Paso de Arreglos
unidimensionales a funciones
• Nota:
– Al llamar una función pasándole un arreglo
como parámetro, como se le entrega la
dirección del primer elemento, entonces si los
valores del arreglo son modificados dentro de
la función, también son modificados en la
función que llama.
34ARREGLOS&VECTORES
35. String
• Es el uso más común de arreglo
unidimensional.
• En C un string es un arreglo de caracteres
que terminan en un caracter nulo: ‘0’.
35ARREGLOS&VECTORES
36. String
• Declaración:
– Se declaran como arreglos unidimensionales.
– Debe contener 1 carácter más que la cadena
más larga más larga que pueda contener.
char cadena[6];
Puede contener hasta
5 caracteres
0 1 2 3 4 5
0
Caracter que marca el fin del string
36ARREGLOS&VECTORES
37. Strings
Constante de cadenas:
– Es una secuencia de uno o más caracteres
encerrado entre comillas.
– Ejemplo: “informatica”
37ARREGLOS&VECTORES
38. Biblioteca de funciones de
Manejo de cadenas
Función Prototipo Acción Retorna
strcpy() char *strcpy(char *s1,const char *s2); Copia s2 en s1. s1
strcat() char *strcat(char *s1,const char *s2); Concatena s2 en s1. s1
strlen() int strlen(const char *s1); Longitud de s1
strcmp() int strcmp(const char *s1,const char *s2); Compara s2 con s1 0 si son iguales
>0 si s1>s2
<0 si s1<s2
Biblioteca: string.h
Las cadenas o string no son un tipo de dato en C, por lo tanto, las
operaciones sobre cadenas se realizan mediante funciones de
biblioteca que ahorran el trabajo byte a byte (podemos crear otras).
38ARREGLOS&VECTORES
39. Ejemplo
#include <string.h>
#include <stdio.h>
int main(void){
char c1[64,c2[64];
printf("Ingrese un string:");
scanf("%s",c1);
printf("Ingrese un string:");
scanf("%s",c2);
printf("Longitudes: %d %n",strlen(c1),strlen(c2));
if(!strcmp(c1,c2)) printf("Son igualesn");
strcat(c1,c2);
printf("%sn",c1);
return 0;
}
39ARREGLOS&VECTORES
40. Strings
Ejercicio:
- Realizar un programa que convierta dentro de
un string, las mayúsculas a minúsculas,
minúsculas a mayúsculas y sumar los dígitos.
40ARREGLOS&VECTORES
41. Arreglos de punteros
Un puntero es una variable, por lo tanto puede ser
almacenado en un arreglo.
Declaración:
tipo *nombre_variable[tamaño];
Abcdefghi
xyz
Qwertyuiopasdfg
Abcdefghi
xyz
Qwertyuiopasdfg
41ARREGLOS&VECTORES
42. Punteros a punteros:
argumentos de la función main()
main(int argc, char **argv){....}
cdefghi0
z0
ertyuiopasdfg0
main(int argc, char *argv[]){....}
argv:
0
Ejemplo: $z ertyuiopasdfg cdefghi
Dos formas equivalentes para declarar los argumentos:
42ARREGLOS&VECTORES
43. Argumentos de main()
• El estándar ANSI define dos argumentos de
main(): argc y argv.
• Permite pasar información al programa de C
mediante argumentos de línea de órdenes.
• argc : contiene el número de argumentos, y es
entero.
• argv : es un puntero a un arreglo de caracteres.
./programa argumento1 argumento2 ….
Línea de órdenes
43ARREGLOS&VECTORES
44. Argumentos de main() (cont.)
#include <stdio.h>
int main(int argc, char *argv[]){
int i;
for(i=0;i<argc;i++){
printf(“El argumento %d es: %s”,i,argv[i]);
return 0;
}
$./programa aaa bb
El argumento 0 es: ./programa
El argumento 1 es: aaa
El argumento 2 es: bb
44ARREGLOS&VECTORES