Está en la página 1de 5

2

Índice

Estructuras  Strings
 Structs

avanzadas de
 Vectores de estructuras

datos

3 4

Cadenas de caracteres ¿Qué es una cadena de caracteres?

 Las cadenas de caracteres se almacenan en un vector, con un carácter 
por elemento. Por ejemplo, la palabra asignatura se almacenará de la 
siguiente forma:
Las cadenas de caracteres van siempre entre comillas simples

strings >> c='asignatura'


c =
asignatura

Al ser un vector, se pueden utilizar las funciones propias de los vectores
>> size(c)
ans =
1 10
>> c(4)
ans = g
5 6

Tabla ASCII 2 Matriz de caracteres

 Una matriz de caracteres es una matriz cuyos elementos son caracteres, o bien 
una matriz cuyas filas son cadenas de caracteres (esto último es lo más común)
Todas las filas deben tener el mismo número de elementos (las filas más cortas 
se completarán con espacios en blanco)

a b c a l g e b r a
s f e c a l c u l o
g y u i n f o r m a t i c a

>> m=['a' 'b' 'c'; >> m2=char('algebra', 'calculo',


's' 'f' 'e'; 'informatica’)
1 'g' 'y' 'u']

m = m2 =
alt + 126 = ~ abc algebra
alt + 64 = @ sfe calculo
gyu informatica

7 8

Funciones para manejar cadenas de caracteres (I) Funciones para manejar cadenas de caracteres (II)
Nombre Función Descripción Nombre Función Descripción
double(c ) Convierte en números ASCII  cada carácter de la cadena c s = [ s1, s2] Concatena cadenas, añadiendo la segunda a continuación 
char(v) Convierte un vector v de números ASCII en una cadena de  de la primera
caracteres findstr(c1,c2) ó Devuelve un vector con las posiciones iniciales de todas las 
char(c1, c2) Crea una matriz de caracteres, completando con espacios  strfind(c1,c2) veces que la cadena más corta aparece en la más larga
en blanco las cadenas más cortas strmatch(cc,c) Devuelve los índices de todos los elementos de la matriz 
deblank(c) Elimina los espacios en blanco al final de la cadena de  de caracteres cc que empiezan por la cadena c
caracteres c strrep(c1,c2,c3) Sustituye la cadena c2 por c3 cada vez que c2 es 
disp(c) Imprime el texto contenido en la variable c encontrada en c1
ischar(c) Detecta si la variable c es una cadena de caracteres [p,r]=strtok(t) Separa una cadena de caracteres t. Devuelve la primera 
palabra en p y el resto de la cadena en r
isletter(I) Detecta si un carácter I es una letra del alfabeto
blanks(n) Crea un array de n espacios en blanco
isspace(I) Detecta si un carácter I es un espacio en blanco
sprintf Convierte los valores numéricos en cadenas de caracteres, 
strcmp(c1,c2) Comparación de cadenas. Devuelve 1 si son iguales y 0 si  de acuerdo con las reglas y formatos de conversión del 
no lo son. lenguaje C
strcmpi(c1,c2) Igual que strcmp(c1,c2) pero ignorando si son mayúsculas o 
minúsculas
9 10

Estructuras ¿Qué es una estructura?

 Es una agrupación lógica de diferentes datos bajo un contenedor común.
• Permiten albergar varias variables en su interior.
Estos datos o variables se llaman miembros o campos de la estructura.
• Por ejemplo, la estructura persona puede tener los campos:

Structs • nombre
• apellido1
• apellido2
• edad
• Otro ejemplo, la estructura complejo puede tener los campos:
• real
• imag

11 12

Con lo que sabíamos hasta hoy… Creación de la estructura


% Crear una función para sumar 3 números complejos:  Se van creando uno a uno los distintos campos
Para acceder a los campos de una estructura se utiliza el operador punto (.), que une 
real1 = 5;
imag1 = 3; el nombre de la estructura y el nombre del campo (por ejemplo: complejo.real).

real2 = 1; Muchas variables e  >> complejo.real=5

imag2 = 2; independientes entre sí complejo =


real: 5
real3 = 2; >> complejo.imag=3 Nombre de la estructura
imag3 = 3;
complejo =
real: 5
imag: 3
sumarComplejos(real1, imag1, real2, imag2, real3, imag3); Campo de la estructura
>> complejo
Las llamadas a las funciones se llenan de muchos parámetros de entrada complejo =
real: 5
imag: 3
13 14

Ejemplo con estructuras Estructuras


% Crear una función para sumar 3 números complejos:

complejo1.real = 5;

Vectores de 
complejo1.imag = 3;

complejo2.real = 1;
complejo2.imag = 2; Hay más orden y dependencia

complejo3.real = 2;
complejo3.imag = 3;

sumarComplejos(complejo1, complejo2, complejo3);


estructuras
Se aumenta el nivel de abstracción. 
Sumo números complejos no variables sueltas.

15 16

¿Qué son los vectores de estructuras? ¿Qué son los vectores de estructuras?
Opción 1
 Vectores que en cada posición contienen una estructura.
 Para insertar los datos:
Al igual que existen vectores de números enteros o reales; se puede 
persona(1).nombre = 'Jon'; vComplejos(1).real = 5;
tener vectores con elementos de tipo estructura
persona(1).apellido1 = vComplejos(1).imag = 3;
'Valencia’;
persona(1).apellido1 = vComplejos(2).real = 1;
'Echeverria’; vComplejos(2).imag = 2;
persona(1).edad = 21; …

El vector se va creando de forma dinámica, es decir, en tiempo de ejecución.
A medida que se introducen nuevos elementos, el vector aumentará su 
tamaño de forma automática.
17 18

¿Qué son los vectores de estructuras? Recorrido, asignación y visualización de datos


Opción 2
 Crear un vector con un número determinado de elementos e inicializar los 
n=3;
campos (función struct).
for i=1:n
vComplejos(1:10) = struct('real', 0, 'imaginario', 0); numReal = input('Introduce la parte real: ');
vComplejos(i).real = numReal;
numImag = input('Introduce la parte imaginaria: ');
vComplejos(i).imag = numImag;
end

for i=1:n
disp(['Complejo' num2str(i) ': '
num2str(vComplejos(i).real) '+'
num2str(vComplejos(i).imag) 'i']);
end
El vector se crea desde el inicio y de esta forma el programa es más eficiente.

19 20

Vectores + estructuras + cadenas de caracteres Recorrido, asignación y visualización de datos


vAlumnos = [struct()];
n=3;
 Recordatorio: Una estructura puede tener campos de cualquier valor, incluso 
for i=1:n
cadenas de caracteres.
name = input('Introduce el nombre: ');
vAlumnos(i).nombre = name;
phone = input('Introduce el teléfono: ');
vAlumnos(i).tel = phone;
age = input('Introduce la edad: ');
vAlumnos(i).edad = age;
end

for i=1:n
disp(['Alumno' num2str(i) ': ']);
disp(['Nombre: ' vAlumnos(i).nombre]);
disp(['Teléfono: ' num2str(vAlumnos(i).tel)]);
disp(['Edad: ' num2str(vAlumnos(i).edad)]);
end

También podría gustarte