C
- Detalles
- Escrito por PC Resumen
- Categoría: C
- Visto: 466
Las cadenas de caracteres (en C) son vectores de tipo carácter (char) que reciben un tratamiento especial para simular el tipo de datos string que existe en otros lenguajes de programación. Para que un vector de caracteres pueda ser considerado como una cadena de caracteres, el último de los elementos útiles del vector debe ser el carácter nulo (código ASCII 0). Según esto, si se quiere declarar una cadena formada por N caracteres, deberá declararse un vector de N+1 elementos de tipo carácter. En C pueden definirse constantes correspondientes a cadenas de caracteres. Se utilizan comillas dobles para delimitar el principio y el final de la cadena, a diferencia de las comillas simples utilizadas con las constantes de tipo carácter. Por ejemplo, la constante “H” es diferente al carácter constante ‘H’.
Asignación
Mientras que la consulta de los elementos de una cadena de caracteres se realiza de la misma forma que con los vector, las asignaciones tienen ciertas peculiaridades. Como en cualquier mesa, puede asignarse cada carácter de la cadena individualmente. No hemos de olvidar que el último carácter válido debe ser el carácter nulo (‘\0’).
Ejemplo:
char cadena [10];
......
cadena[0]= ‘c’;
cadena[1]= ‘a’;
cadena[2]= ‘s’;
cadena[3]= ‘c’;
cadena[4]= ‘\0’;
Fíjese en que las cinco últimas posiciones no se han utilizado. Es más, aunque los hubiésemos asignado algún valor, su contenido sería ignorado. O sea, el contenido del vector en las posiciones posteriores al carácter nulo es ignorado.
- Detalles
- Escrito por PC Resumen
- Categoría: C
- Visto: 313
Búsqueda binaria
Si el número de elementos es grande, el algoritmo de búsqueda secuencial es muy lento. Pensamos que tuviéramos que consultar un nombre en la guía telefónica de Barcelona con más de un millón de abonados, según el nombre que buscáramos la consulta sería eterna. Naturalmente una persona cuando hace esta búsqueda no utiliza nunca este método secuencial, sino un método basado en en la división sucesiva del espacio ocupado en sucesivas mitades, hasta encontrar el elemento buscado.
Si los datos están clasificados en un determinado orden, el método citado anteriormente se llama búsqueda binaria.
La búsqueda comienza examinando el elemento central, si éste es el elemento buscado ya hemos terminado. De lo contrario se determina si el elemento buscado está en la primera parte o en la segunda parte de la lista y a continuación se repite este proceso, utilizando el elemento central de esta sublista.
var primero, ultimo, central: entero; encontrado: booleano;
encontrado :=falso;
primero :=1;
ultimo := N;
Mientras (primero <= ultimo) y (no encontrado) hacer
central := (primero + ultimo) / 2 ;
si v[central] = x entonces
encontrado :=cierto ;
sino
si v[central] > x semillas
ultimo := central – 1;
sino
primero :=central + 1;
fsi
fsi
fmientras
- Detalles
- Escrito por PC Resumen
- Categoría: C
- Visto: 313
A continuación, mostraremos los esquemas básicos de recorrido y búsqueda sobre tablas, tratadas éstas como estructuras secuenciales. Para simplificar la notación, tomaremos como conjunto de índices el intervalo [1..N]
Esquema de recorrido
var y : enter fvar
y := 1;
incializar tratamiento
Mientras y ≠ N + 1 hacer
tratar i - ésimo elemento
y : = y + 1;
fMientras
tratamiento final
Como el recorrido de tablas es una tarea muy frecuente, es útil definir una instrucción más simple para utilizarla en casos como éste. Es la instrucción por, que tiene la sintaxis
por variable : = valor inicial hasta valor final paso incremento hacer
S
fpor
Cuando el incremento sea igual a 1 podemos obviar su mención en la instrucción.
Hay que hacer notar que al final de cada instrucción, excepto en la última, se añade automáticamente el valor incremento en la variable que sirve de índice. La expresión valor final se evalúa al principio de cada iteración y por tanto las instrucciones del cuerpo del bucle no deberían modificar las variables que aparezcan.
- Detalles
- Escrito por PC Resumen
- Categoría: C
- Visto: 351
En PC Resumen explicaremos las Matrices en C, también llamadas tablas bidimensionales, no son otra cosa que vectores con dos dimensiones. Por tanto los conceptos vistos son muy parecidos.
La declaración de una matriz tiene la siguiente forma:
tipo_de_datos matriz [tam1][tam2]
Donde tam1 y tam2 indican respectivamente el número de filas y de columnas de la matriz. Las matrices en C se almacenan por filas (esto es importante considerarlo para hacer programas más rápidos).
Consulta
El acceso a un elemento de una matriz mediante el nombre de ésta y dos índices entre corchetes. El primer índice representa la fila y el segundo la columna en la que se encuentra el elemento.
valor = matriz[1][4]
Asignación
Básicamente es igual que en los vectores pero utilizando dos índices en vez de uno. Comentaremos únicamente cómo se haría la inicialización de una matriz en la propia declaración. En el siguiente ejemplo se declara una matriz de tres filas y cuatro columnas y se inicializa. Por claridad, se ha separado en líneas, pero se podría escribir todo con una línea.
int mat [3] [4] = {24, 12, 6, 17, 15, 28, 78, 32, 0, 44, 322, -34};
La inicialización de matrices y en general de tablas multidimensionales, puede expresarse de forma más clara agrupando los valores mediante claves, siguiendo la estructura de la matriz. Por tanto también habríamos podido hacer:
int mat [3] [4] = {{24,12,6,17},
{15,28,78,32},
{0,44,322,-34}
};
- Detalles
- Escrito por PC Resumen
- Categoría: C
- Visto: 334
Los vectores, también llamados tablas unidimensionales, son estructuras de datos caracterizadas por:
- Una colección de datos del mismo tipo
- Referenciadas por el mismo nombre
- Almacenados en posiciones de memoria físicamente contiguas, de forma que la dirección de memoria más baja corresponde al primer elemento y la dirección de memoria más alta corresponde al último elemento.
El formato general para la declaración de una variable de tipo vector es:
PSEUDOCODIGO | C |
Var nombre : tabla [1 .. tamaño] de tipo_de_datos | Tipo_de_datos nombre [tamaño] |
Página 2 de 3