República Boliviana De Venezuela. Ministerio Del Poder Popular Para La Defensa. Universidad Nacional Experimental Politécnica De La Fuerza Armada. Núcleo Bolívar - Extensión Ciudad Bolívar Análisis Y Diseño De Sistema - II Semestre, Sección 02
Facilitador:
Bachiller:
Denis Acosta
Kriss Echezuría Julio Carvajal Yelitza Martínez Jose García
Estado Bolívar - Ciudad Bolívar
1
ÍNDICE Introducción
3
Un Arreglo
4
Funciones De Los Arrays
4
Clasificación Y Procedimientos De Los Arrays
4
Arreglo Unidimensional
4
Arreglos Multidimensionales Multidimensi onales
5
Arreglo Bidimensional
5
Lenguaje De Programación
6
Tipos De Lenguaje De Programación
6
Lenguaje Máquina
7
Lenguajes De Bajo Nivel
7
Lenguajes De Medio Nivel
7
Lenguajes De Alto Nivel
7
Lenguajes De Aplicaciones
8
Lenguajes De Redes
8
Cadena De Caracteres
8
Longitud De Una Cadena
9
Operaciones Entre Cadenas
9
Procedimientos Y Función Para El Manejo Y Tratamiento De Cadenas
9
Apuntadores
11
Declaración Sintáctica De Un Puntero
12
Apuntadores Y Funciones
14
Expresiones Aritméticas
15
Método De Ordenamiento
15
Conclusión
18
Bibliografía
20
Anexo
22
2
INTRODUCCIÓN
Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples. Este hecho junto con el avance de la tecnología a nuestros tiempos, ha causado interrogantes en términos usados por programadores. Una de estas interrogantes es sobre los arreglos también conocida en inglés como arrays. Los arreglos tienen diversas funciones que se realizan dependiendo a su clasificación y procedimiento. El lenguaje de programación cumple la función de proporcionar instrucciones al sistema de la computadora para que pueda realizar una actividad de procesamiento, el lenguaje de programación se clasifica o se divide por grupos de lenguajes de programación. También tenemos las cadenas de caracteres, longitud de las cadenas, procedimientos y funciones para el manejo y tratamiento de las cadenas. Por otro lado se nos da la incógnita de que son los apuntadores, como se declara sintácticamente un puntero, los apuntadores y sus funciones, expresiones aritméticas y los métodos de ordenamiento, son teorías muy importantes para los programadores, por lo cual se debe tener conocimiento de ellos.
3
Un Arreglo. Es también conocido como array un conjunto o agrupación de variables del mismo tipo cuyo acceso se realiza por índices, es decir, es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un número entero denominado índice. 0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo n, la dimensión del array. Los arreglos son objetos implícitos que siempre conocen sus propias longitudes y que se comportan como clases finales, a diferencia con C++ donde un arreglo no es nada más que un puntero.
Funciones De Los Arrays.
Almacenar los elementos del array en posiciones de memoria continúa.
Tener un único nombre de variable que representa a todos los elementos.
Cada uno de los valores se puede acceder independientemente utilizando un índice
Acceso directo o aleatorio a los elementos individuales del array.
Clasificación Y Procedimientos De Los Arrays. Los arrays son objetos en Java y como tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente:
Declarar el array
Crear el array
Inicializar los elementos del array
Usar el array
El procedimiento de los arrays depende a su clasificación, las cuales son tres:
Arreglo unidimensional Es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de
4
un índice para cada elemento del arreglo que nos da su posición relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior. Si el arreglo en el cual estamos trabajando tiene un índice numerativo utilizaremos las siguientes fórmulas: RANGO = ord (ls) - (ord (li)+1) A[i] = base (A) + [ord (i) - ord (li) * w]
Arreglos Multidimensionales Es un tipo de dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n índice, uno para cada dimensión. Para determinar el número de elementos en este tipo de arreglos se usan las siguientes fórmulas: RANGO (Ri) = lsi - (lii + 1) No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...* Rn Donde: i = 1... n n = No. total de dimensiones Para determinar la dirección de memoria se usa la siguiente fórmula: LOC A[i1,i2,i3,...,in] = base(A) + [(i1-li1)*R3*R4*Rn + (i2-li2)*R3*R2*... (in lin)*Rn]*w
Arreglo Bidimensional Al igual que el anterior, es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices. Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación. La representación en memoria se realiza de dos formas: almacenamiento por columnas o por renglones.
5
Para determinar el número total de elementos en un arreglo bidimensional usaremos las siguientes fórmulas: RANGO DE RENGLONES (R1) = Ls1 - (Li1+1) RANGO DE COLUMNAS (R2) = Ls2 - (Li2+1) No. TOTAL DE COMPONENTES = R1 * R2 REPRESENTACION EN MEMORIA POR COLUMNAS
Lenguaje De Programación. Es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas máquin as como las computadoras. Pueden usarse para p ara crear programas qué controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con 1
precisión, o como modo de comunicación humana . Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, depura, se y se mantiene el código fuente de un programa se le llama programación. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Tipos De Lenguaje De Programación. La clasificación más común y básica que suele hacerse de los lenguajes de programación es la que los divide en lenguajes de bajo nivel y de alto nivel, pero la estructura de los lenguajes mucho más extensa.
6
La estructura de los lenguajes es la siguiente:
Lenguaje Máquina las invocaciones a memoria, como los procesos aritmético
lógicos son posiciones literales de conmutadores físicos del hardware en su representación booleana. Estos lenguajes son literales de tareas.
Lenguajes de bajo nivel son instrucciones que ensamblan los grupos de
conmutadores necesarios para expresar una mínima lógica aritmética. Están íntimamente vinculados al hardware. Por norma general están disponibles a nivel firmware, cmos o chip set. Estos lenguajes están orientados a procesos. Los procesos se componen de tareas. Contienen tantas instrucciones como la arquitectura del hardware así haya sido diseñada.
-
En la arquitectura computacional, CISC (del inglés complex instruction set computer) es un modelo de arquitectura de computadora. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC.
-
Son denominados como ensambladores de un hardware concreto.
Lenguajes de medio nivel son aquellos que, basándose en los juegos de
instrucciones disponibles (chip set), permiten el uso de funciones a nivel aritmético, pero a nivel lógico dependen de literales en ensamblador. Estos lenguajes están orientados a procedimientos. Los procedimientos se componen de procesos, unos de estos lenguajes de nivel medio son:
Pascal
-
C
-
Basic
Lenguajes de alto nivel son aquellos que permiten una máxima flexibilidad al
programador a la hora de abstraerse o de ser literal. Permiten un camino bidireccional entre el lenguaje máquina y una expresión casi oral entre la escritura del programa y su posterior compilación. Estos lenguajes están orientados a objetos. Los objetos se componen de propiedades cuya naturaleza emerge de procedimientos. Algunos de ellos son:
-
Ada
-
Fortran
-
Perl
-
ALGOL
-
Java
-
PHP
-
BASIC
-
Lisp
-
PL/1
-
C#
-
Modula-2
-
PL/SQL
-
COBOL
-
Pascal
-
Python
7
Ruby
Lenguajes de aplicaciones son aquellos que no permiten una bidireccionalidad
conceptual entre el lenguaje máquina y los lenguajes de alto nivel, ni tampoco la literalidad a la hora de invocar conceptos lógicos. Se basan en librerías creadas en lenguajes de alto nivel. Pueden permitir la creación de nuevas librerías, pero son propietarias y dependientes de las suministradas por la aplicación. Estos lenguajes están orientados a eventos. Los eventos acontecen cuando las propiedades de un objeto interactúan con otro, tales como:
-
Visual Basic .NET ó BASIC
-
Visual C# .NET
Lenguajes de redes son aquellos que se basan en un convenio de instrucciones
-
Visual C++ .NET
totalmente independientes de la máquina, y completamente dependientes de la red a la que están orientadas. Se dividen en descriptivos (HTML, XML, VML), de cliente-Servidor (Java, PHP) y de script.
Cadena De Caracteres. Se determina como una secuencia ordenada de longitud arbitraria de elementos que corresponden a un cierto lenguaje formal o alfabeto análogas a una frase o a una oración, una cadena de caracteres es una sucesión de caracteres ya sean letras, números, signos o símbolos. En C, C++ las cadenas de caracteres no son otros más que arrays de caracteres, solo que a este tipo de arrays el escritor les da un tratamiento especial. Usted consigue manejar las cadenas de caracteres de la misma manera en que manipula cualquier otro tipo de array, sin embargo, es preferente hacer uso de una librería estándar especialmente escrita para la administración de cadenas de caracteres, la cual se le hace referencia a la librería y que viene incluida con todo compilador de C, C++. Las cadenas se pueden almacenar físicamente:
Enlazadas letras a letra.
Seguidas.
Generalmente son guardados un carácter a continuación de otro por una cuestión de eficiencia de acceso. Un caso especial de cadena es la que contiene cero caracteres, a esta
8
cadena se la llama cadena vacía; en teoría de autómatas es común denotar a la misma por medio de la letra griega €.
Longitud De Una Cadena. La longitud de una cadena es fija cuando el tamaño de la misma no variará a lo largo de la ejecución del programa, todas las variables, sean del tipo que sean tienen longitud fija, excepto los arrays o las cadenas. La longitud de una cadena es variable cuando el tamaño de la misma puede variar a lo largo de la ejecución, típicamente colecciones de datos.
Operaciones Entre Cadenas. Al considerar las cadenas como un tipo de datos, hay que estar al tanto cuáles son las operaciones que se puede hacer con ellas, en principio ésta podrían ser muchas y llegar a ser muy sofisticadas, aquí se exponen algunas de ellas:
Asignación: Consiste en asignarle una cadena a otra.
Concatenación: Consiste en unir dos cadenas o más (o una cadena con un carácter) para formar una cadena de mayor tamaño.
Búsqueda: Consiste en localizar dentro de una cadena una subcadena más pequeña o un carácter.
Extracción: Se trata de sacar fuera de una cadena una porción de la misma según su posición dentro de ella.
Comparación: Se utiliza para comparar dos cadenas.
Procedimientos Y Función Para El Manejo Y Tratamiento De Cadenas. Todas las funciones para manejo de cadenas dependen de la biblioteca, las cuales tiene distintas funciones que se nombraran y describirán en la siguiente tabla:
9
Nombre de
Descripción
Biblioteca assert.h alloc.h
Es proporcionar una definición de la macro assert, que imprime un mensaje de error y aborta el programa Existen funciones para asignar, liberar memoria, u obtener información de bloques de memoria. Son funciones que nos permiten conocer la naturaleza de un carácter, o
ctype.h
bien para convertir de d e mayúsculas a minúsculas y viceversa; y valores va lores enteros a códigos ASCII.
dir.h
Esto permite ordenar, crear, modificar, mover y eliminar directorios Representa los números de error, después que ocurre un error se puede
errno.h
consultar el valor de la variable del sistema deerrno para obtener mas información sobre ese error.
float.h
Define los limites de los tipos de coma flotante
limits.h
Define los limites de los diferentes tipos de enteros
math.h
Contiene las funciones matemáticas estándar utilizadas en C y C++
setjmp.h
Define el tipo de jmp_buf para algunas funciones.
signal.h
Contiene funciones de estado.
stdarg.h
Define funciones que pueden ser llamadas con diferentes números de argumentos, de modo que se pueda escribir f(a) y f(a,b).
stdef.h
Se definen algunos tipos especiales
stdio.h
Incorporan las funciones de Entrada - Salida E/S estándar, tipos y macros
stlib.h
Declara funciones que son útiles para diferentes propósitos, en especial de búsqueda y ordenación.
string.h
Este archivo contiene funciones para manejo de cadenas de caracteres.
time.h
Contiene funciones relativas a fechas y horas
10
Las cadenas tienen su prototipo, como el que se puede observar:
#include
, las funciones más frecuentes son representadas a continuación:
char *strcpy(const char *dest, const char *orig) : Copia la cadena de caracteres car acteres apuntada por “orig “orig”” (incluyendo el carácter terminador '\0' ) al vector apuntado por “dest”. “dest”. Las cadenas no deben solaparse, y la de destino, debe ser suficientemente grande como para alojar la copia.
int strcmp(const str cmp(const char *s1, const char *s2) : Compara las dos cadenas de caracteres s1 ys2. Devuelve un entero menor, igual o mayor que cero si se encuentra que s1 es, respectivamente, menor que, igual a, o mayor que s2.
char *strerror(int errnum) : Devuelve un mensaje de error que corresponde a un número de error.
int strlen(const char *s) : Calcula la longitud de la cadena de caracteres.
char *strncat(char *s1, const char *s2, size_t n) : Agrega n caracteres de s2 a s1.
int strncmp(const char *s1, char *s2, size_t n) : Compara los primeros n caracteres de dos cadenas.
char
*strncpy(const *st rncpy(const
char
*s1, *s 1,
const
char
*s2,
size_t
n) :
Copia C opia
los
primeros n caracteres de s2 a s1.
strcasecmp(const char *s1, const char *s2) : versión que ignora si son mayúsculas o minúsculas de strcmp().
strncasecmp(const char *s1, const char *s2, size_t siz e_t n) : versión insensible a mayúsculas o minúsculas de strncmp() que compara los primeros n caracteres de s1.
Apuntadores Son una parte fundamental de C, los apuntadores es una variable cuyo valor es una dirección de memoria. El secreto para C esta en el uso de apuntadores. Se pueden tener apuntadores a cualquier tipo de variable, si se tiene una variable ' p ' de tipo puntero que contiene una dirección de memoria en la que se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '. El programador utilizará punteros para guardar datos en memoria en muchas ocasiones, de la forma que se describe a continuación.
11
Declaración Sintáctica De Un Puntero. Un puntero se declara de forma general de la siguiente manera: tipo *nombrevariable; Se debe asociar a cada apuntador un tipo particular. Por ejemplo, no se puede asignar la dirección de un “short int” a un “long int”. int”. Un ejemplo claro de cómo se debe utilizar, se debe considerar el siguiente código: int *apuntador; main() { int x = 1, y = 2; int *ap; ap = &x; y = *ap; x = ap; *ap = 3; } En el momento en que se compile el código se mostrará el siguiente mensaje: warning: assignment makes integer from pointer without a cast. Con el objetivo de entender el comportamiento del código supongamos que la “100”, “y” en “200” y “ap” en “1000”, “1000”, un variable “x” esta en la localidad de la memoria “100”, apuntador es una variable, por lo tanto, sus valores necesitan ser guardados en algún lado. int x = 1, y = 2; int *ap; ap = &x; 100
200
1000
x 1
y 2
ap 100
Las variables “x” e y son declaradas e inicializadas con “1” y “2” respectivamente, “ap” es declarado como un apuntador a entero y se le asigna la dirección de “x” (&x). Por lo que “ap” se carga con el valor “100”. “100”. y = *ap; 100
200
1000
x 1
y 1
ap 100
12
“ap”. En el ejemplo “ap” apunta a la localidad de Después y obtiene el contenido de “ap”. memoria “100” la localidad de “x”. “x”. Por lo tanto, y obtiene el valor de “x” el cual es 1. x = ap; 100
200
x 100 y 1
1000 ap 100
Como se ha visto C no es muy estricto en la asignación de valores de diferente tipo (apuntador a entero). Así que es perfectamente legal (aunque el compilador genera un aviso “x”. El valor de “ap” en ese de cuidado) asigna el valor actual de “ap” a la variable “x”. momento es “100”. “100”. *ap = 3; 100
200
1000
x 3
y 1
ap 100
Finalmente se asigna un valor al contenido de un apuntador (*ap). Cuando un apuntador es declarado apunta a algún lado. Se debe inicializar el apuntador antes de usarlo, por lo que: main() { int *ap; *ap = 100; } Puede generar un error en tiempo de ejecución o presentar un comportamiento errático. El uso correcto será: main() { int *ap; int x; ap = &x; *ap = 100; }
13
Con los apuntadores se puede realizar también aritmética entera, por ejemplo: main() { float *flp, *flq; *flp = *flp + 10; ++*flp; (*flp)++; flq = flp; } La razón por la cual se asocia un apuntador a un tipo de dato, es porque se debe conocer en cuantos bytes esta guardado el dato. De tal forma, que cuando se incrementa un apuntador, se incrementa el apuntador por un “bloque” de memoria, en donde el bloque esta en función del tamaño del dato.
Apuntadores Y Funciones Cuando C pasa explicaciones a funciones, la pasa por valor, es decir, si el parámetro es modificado dentro de la función, una vez que concluye la función el valor pasado de la variable permanece inalterado. Hay muchos casos que se quiere alterar el argumento pasado a la función y recibir el nuevo valor una vez que la función ha terminado. Para hacer lo anterior anteri or se debe usar una un a llamada por referencia, refer encia, en C se puede pu ede simular pasando un puntero al argumento. Con esto se provoca que la computadora pase la dirección del argumento a la función. Para entender mejor lo anterior consideremos la función “swap()” que intercambia el valor de dos argumentos enteros: void swap(int *px, int *py); main() { int x, y; x = 10; y = 20; printf("x=%d\ty=%d\n",x,y); swap(&x, &y); printf("x=%d\ty=%d\n",x,y); }
14
void swap(int *px, int *py) { int temp; temp = *px; /* guarda el valor de la direccion x */ *px = *py; /* pone y en x */ *py = temp; /* pone x en en y */ }
Expresiones Aritméticas En las operaciones en que intervengan operadores numéricos, numéri cos, el resultado es un número y los operadores son aritméticos. Los operadores aritméticos más comúnmente utilizados son: +, - , *, / y %. El signo más “+” se emplea para adicionar dos valores, el signo menos “-” para restar un
valor
de
otro,
el
asterisco “*” para multiplicar dos
valores,
la división “/” para dividir un valor por otro, y el signo “%” para obtener el resto de una división entera. Estos símbolos se conocen como operadores binarios, pues operan sobre dos valores o variables. El signo igual “=” se le conoce como operador de asignación, asigna el valor de la derecha de dicho signo igual a la variable de la izquierda.
Método De Ordenamiento Conocido también como algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación o reordenamiento de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos, como los de búsqueda y fusión, que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos, algunos algoritmos de ordenamiento agrupados según estabilidad tomando en cuenta la complejidad computacional.
15
Otros ordenamientos importantes son los que se exponen en la siguiente tabla:
Estables Nombre original Ordenamiento de burbuja Bubblesort Ordenamiento de burbuja Cocktail sort bidireccional Ordenamiento por Insertion sort inserción Ordenamiento por Bucket sort casilleros Ordenamiento por Counting sort cuentas Ordenamiento por mezcla Merge sort Ordenamiento con árbol Binary tree binario sort Pigeonhole sort Nombre traducido
Ordenamiento Radix
Complejidad
Memoria Método
O( n²)
O(1) O(1)
Intercambio
O( n²)
O(1) O(1)
Intercambio
O( n²)
O(1) O(1)
Inserción
O( n)
O( n)
O( n+ k)
O( n+ k)
O( n log n)
O( n)
No comparativo No comparativo Mezcla
O( n log n)
O( n)
Inserción
O( n+ k)
O( k)
Radix sort
O( nk)
O( n)
Distribution sort Gnome sort
O( n³) versión O( ²) n recursiva O( n²)
No comparativo
Inestables Nombre traducido
Nombre original
Complejidad
Memoria Método
Ordenamiento Shell
Shell sort
O( n1.25 )
O(1) O(1)
Inserción
Comb sort
O( n log n)
O(1) O(1)
Intercambio
O(1) O(1)
Selección
O(1) O(1)
Selección
O(1) O(1)
Selección
Ordenamiento por Selection sort O( n²) selección Ordenamiento por Heapsort O( n log n) montículos Smoothsort O( n log n)
16
Ordenamiento rápido
Quicksort Several Unique Sort
Promedio: O( n log n), O(log O(log n) Partición peor caso: O( n²) Promedio: O( n u), peor caso: O( n²); u=n; u = número único de registros
Cuestionables, imprácticos Nombre traducido
Nombre original Bogosort
Complejidad
O( n × n!), peor: no termina O( n), excepto en Pancake sorting máquinas de Von Neumann Promedio: O(n!) Peor: No Randomsort termina
17
Memoria Método
CONCLUSIÓN Un arreglo o array es una secuencia de datos primitivos o de objetos, todos del mismo tipo, unidos bajo un identificador o nombre común y solo diferenciados por un índice. Los array se clasifican de tres formas, Unidimensionales o también llamado vector, almacena datos indicando un índice; Bidimensionales que almacena datos en forma de una matriz, para acceder a cada posición de un elemento dentro de un arreglo hay que indicar 2 índices; y lo multidimensionales que son arreglos que tienen más de dos dimensiones. Por cada dimensión del arreglo se tiene que utilizar un índice para ubicar exactamente a un elemento en particular. Lenguaje de programación es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo, en pocas palabras, es utilizado para controlar el comportamiento de una computadora. Existen muchos tipos de lenguajes de programación y se dividen dependiendo a su función en 6 grupos, los cuales son: lenguaje máquina, lenguajes de bajo nivel, lenguajes de medio nivel, lenguajes de alto nivel, lenguajes de aplicaciones y lenguajes de redes. Una cadena de caracteres es una sucesión de caracteres ya sean letras, números, signos o símbolos. En C, C++ las cadenas de caracteres no son otros más que arrays de caracteres, solo que a este tipo de arrays el escritor les da un tratamiento especial. La longitud de una cadena es variable cuando el tamaño de la misma puede variar a lo largo de la ejecución, típicamente colecciones de datos. Las operaciones entre cadenas se dan cuando una cadena se toma como un dato, algunos de los tipos de cadenas son: asignación, concatenación, búsqueda, extracción, comparación, etc.; Las cadenas tienen su propio prototipo, el cual depende de su biblioteca, que no es más, quela que identifica el propósito de la cadena y se utiliza como cabecera. Los apuntadores es una variable cuyo valor es una dirección de memoria, sé pueden tener apuntadores a cualquier tipo de variable, se declara de forma general de la siguiente manera: tipo *nombre-variable; Se debe asociar a cada apuntador un tipo particular.
18
Un ejemplo de esto es: int *apuntador; main() { int x = 1, y = 2; 100 200 1000 int *ap; ap = &x; x 1 y 2 ap 100 y = *ap; x = ap; *ap = 3; } Los apuntadores y funciones cuando C pasa explicaciones a funciones, la pasa por valor, es decir, si el parámetro es modificado dentro de la función, una vez que concluye la función el valor pasado de la variable permanece inalterado. Cuando intervienen operadores numéricos y el resultado es un numero, los operadores son expresiones aritméticas, las más comunes son: /(se utiliza para dividir un valor por otro), *(se emplea para multiplicar dos valores), -(es para resta un valor de otro), +(ejecuta la adición de dos valores), = (asigna el valor de la derecha de dicho signo igual a la variable de la izquierda) y % (es para obtener el resto de una división entera). Los métodos de ordenamientos o algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, existen muchos tipos de métodos de ordenamiento y están establecidos en tres grupos: Estables: Ordenamiento de burbuja (Bubblesort), Ordenamiento de burbuja bidireccional (Cocktail sort), Ordenamiento por inserción (Insertion sort), Ordenamiento por casilleros (Bucket sort), Ordenamiento por cuentas (Counting sort), Ordenamiento por mezcla (Merge sort), Ordenamiento con árbol binario (Binary tree sort y Pigeonhole sort), Ordenamiento Radix (Radix sort, Distribution sort y Gnome sort). Inestables: Ordenamiento Shell (Shell sort y Comb sort), Ordenamiento por selección (Selection sort), Ordenamiento por montículos (Heapsort, Smoothsort), Ordenamiento rápido (Quicksort y Several unique sort). Cuestionables e imprácticos: Bogosort, Pancake sorting y Randomsort
19
REFERENCIA BIBLIOGRÁFICO http://www.monografias.com/trabajos71/clasificacion-arrays/clasificacion-arrays.shtml [consulta] Viernes, 26 de Octubre de 2012 a las 16:15:02 http://es.wikipedia.org/wiki/Arreglo [consulta] Viernes, 26 de Octubre de 2012 a las 16:32:42 http://html.rincondelvago.com/arreglos.html
[consulta] Viernes, 26 de octubre de 2012 a
las 16:52:24 http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n [consulta] Viernes, 26 de Octubre de 2012 a las 17:14:55 http://www.monografias.com/trabajos38/tipos-lenguajes-programacion/tipos-lenguajesprogramacion.shtml [consulta] Viernes, 26 de Octubre de 2012 a las 17:30:24 http://es.wikipedia.org/wiki/Lenguaje_de_bajo_nivel [consulta] Viernes, 26 de Octubre de 2012 a las 17:49:59 http://webcache.googleusercontent.com/search?q=cache:TE5BKIhGM00J:es.wikipedia.org /wiki/Complex_ins /wiki/Complex_instruction_ truction_set_com set_computing+& puting+&cd=1&hl=e cd=1&hl=en&ct=clnk n&ct=clnk&gl=ve &gl=ve
[consulta]
Viernes, 26 de Octubre de 2012 a las 18:00:07 http://es.wikipedia.org/wiki/Lenguaje_de_alto_nivel [consulta Viernes, 26 de Octubre de 2012 a las 18:21:10 http://es.wikipedia.org/wiki/Cadena_de_caracteres [consulta Viernes, 02 de Noviembre de 2012 a las 20:03:24 http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Arrays_y_cadenas_de _texto [consulta Viernes, 02 de Noviembre de 2012 a las 20:21:55 http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)
[consulta Viernes, 02 de
Noviembre de 2012 a las 20:34:53 http://www.fismat.umich.mx/mn1/manual/node18.html
[consulta
Viernes,
02
de
Noviembre de 2012 a las 20:57:54 http://www.data-2013.cl/DOCS/INFORMATICA/PROGRC/cap-c9.html [consulta Viernes, 02 de Noviembre de 2012 a las 21:09:27 http://es.wikipedia.org/wiki/Puntero_(inform%C3%A1tica) Noviembre de 2012 a las 20:12: 09
20
[consulta
Sábado,
03
de
http://www.compuclasico.com/C/APUNTE_DE_PROGRAMACION_II.pdf
[consulta
Sábado, 03 de Noviembre de 2012 a las 20:19:49 http://www.fismat.umich.mx/mn1/manual/node9.html [consulta Sábado, 03 de Noviembre de 2012 a las 20:26: 08 http://www.fismat.umich.mx/mn1/manual/node9.html [consulta Sábado, 03 de Noviembre de 2012 a las 20:31:37 http://es.wikipedia.org/wiki/Expresi%C3%B3n_aritm%C3%A9tica [consulta Sábado, 03 de Noviembre de 2012 a las 20:38:12 http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento Noviembre de 2012 a las 20:53:28
21
[consulta
Sábado,
03
de
Anexo 1
22
Arreglo (Array)
Arreglo unidimensional
Arreglo unidimensional
Anexo 2
23
Arreglos Multidimensionales
Arreglos Multidimensionales
Arrays bidimensionales Anexo 3
24
Arrays bidimensionales
Lenguaje De Programación
Tipos De Lenguaje De Programación
Anexo 4
25
Cadena De Caracteres
Longitud De Cadenas
Procedimientos Y Función Para El Manejo Y Tratamiento De Cadenas
Anexo 4
26
Apuntadores
Declaración Sintáctica De Un Puntero
Apuntadores Y Funciones
Anexo 4
27
Expresiones Aritméticas
Métodos De Ordenamiento
28