Sunteți pe pagina 1din 9

Los vectores o arreglos (array en ingls) de dos o ms dimensiones se denominan

con frecuencia matrices, y pueden tener tantas dimensiones como se desee; aunque
lo correcto es llamarlo arreglo (de memoria) ya que una variable de ms de dos
dimensiones, no cumple con las caractersticas matemticas de una matriz numrica.
esde el punto de vista del programa, un arreglo (matriz, array ! vector) es una zona
de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los
elementos de la matriz. esde el punto de vista l!gico podemos considerarlas como
un con"unto de elementos ordenados en fila. #s pues, en principio todas las matrices
son de una dimensi!n, la dimensi!n principal, pero veremos que los elementos de
esta fila pueden ser a su vez arreglos (un proceso que puede ser recursivo), lo que
nos permite $ablar de la e%istencia de arreglos multidimensionales, aunque las ms
fciles de &ver& o imaginar son las de dos y tres dimensiones.
'uede afirmarse que las matrices son un recurso de programaci!n simple y socorrido;
en realidad pueden considerarse como las &estructuras& de datos ms simples que
cabe imaginar (todos los elementos del mismo tipo). 'resentan la venta"a de que sus
elementos son rpidamente accesibles, en especial si utiliza punteros en vez de
subndices, pero presentan una notable limitaci!n( son de tama)o fi"o; es preciso
definir su tama)o desde el principio y no pueden ser fcilmente incrementadas o
disminuidas sino mediante comple"os procesos de copia.
*stas estructuras de datos son adecuadas para situaciones en las que el acceso a los
datos se realice de forma aleatoria e impredecible. 'or el contrario, si los elementos
pueden estar ordenados y se va a utilizar acceso secuencial sera ms adecuado
utilizar una lista.
La ordenaci!n o clasificaci!n de datos (sort, en ingls) es una operaci!n consistente
en disponer un con"unto +estructura+ de datos en alg,n determinado orden con
respecto a uno de los campos de elementos del con"unto. 'or e"emplo, cada elemento
del con"unto de datos de una gua telef!nica tiene un campo nombre, un campo
direcci!n y un campo n,mero de telfono; la gua telef!nica est dispuesta en orden
alfabtico de nombres; los elementos numricos se pueden ordenar en orden
creciente o decreciente de acuerdo al valor numrico del elemento. *n terminologa
de ordenaci!n, el elemento por el cual est ordenado un con"unto de datos (o se est
buscando) se denomina clave.
-na colecci!n de datos (estructura) puede ser almacenada en un arc$ivo, un array
(vector o tabla), un array de registros, una lista enlazada o un rbol. .uando los datos
estn almacenados en un array, una lista enlazada o un rbol, se denomina
ordenaci!n interna. /i los datos estn almacenados en un arc$ivo, el proceso de
ordenaci!n se llama ordenaci!n e%terna.
En algunos momentos se necesita que un programa se mueva de
manera "dinmica" entre variables, que representan un conjunto de
datos. Las tablas son una forma de lograr que nuestro programa pueda
hacer eso utilizando un ndice que ser siempre un dato del tipo entero.
La mayora de las definiciones de qu es una tabla son como la
siguiente, "!na tabla es un conjunto de variables que comparten el
mismo tipo de dato y nombre y a las que se hace referencia a travs de
un ndice" .
El concepto de tabla o matriz en los lenguajes de programaci"n es
e#actamente el mismo $o mejor dicho muy parecido% a los conceptos de
matrices y vectores en las matemticas con la diferencia de que en los
lenguajes de programaci"n se pueden hacer tablas de cualquier cantidad
de dimensiones. &ambin es importante mencionar que algunos autores
hace uso del termino "vector" en los lenguajes de programaci"n $igual
que en las matemticas% para referirse a las tablas de una sola
dimensi"n y que matriz siempre se refiere a tablas bidimensionales.
'tros autores llaman genricamente "poliedros" a las tablas de ms de
dos dimensiones, distinguindose especialmente los "cubos" $poliedros
de ( dimensiones%. )ara no confundir en e#ceso a los que empiezan a
aprender, es mejor llamar simplemente tabla $como las tablas de
*oiss% indpendientemente de la dimensi"n $n+mero de ndices% que
estas tengan. 'tros autores $principalmente suramericanos% han
traducido con cierto desacierto el trmino "array" con el que los
anglosajones denominan esta estructura esttica de datos, por
"arreglo", lo que no da una idea muy intuitiva de su utilidad.
INSTRUCCIONES DE CONTROL y CICLOS REPETITIVOS
FLUJO DE CONTROL:
/e llama flu"o de control de un programa al orden en que se
e"ecutan las instrucciones que lo conforman.
*l flu"o de control de los programas, es lineal, esto significa que
la computadora e"ecuta una a una las instrucciones que se le indican,
sin alterar el orden en que se escriben.
EXPRESION LGICA:
-na e%presi!n l!gica en . es una sentencia que al ser evaluada, la
computadora da un valor 0 si es falsa y un valor distinto de cero si es
verdadera.
OPERADORES DE RELACIN:
Los siguientes operadores los utilizaremos para construir e%presiones
l!gicas y establecen relaciones que pueden ser falsas o verdaderas.
OPERADOR SIGNIFICADO
>= Mayor o igual que
<= Menor o igual que
= = Igual que
!= Diferente
< Menor que
> Mayor que
EJEMPLO:
#1234.56; 74 48/8; 793/;
La e%presi!n( z4 a1b34c56;
.ompara el valor de la suma de a y b con el doble de c, si es
menor almacena en z el valor 0 si es mayor o igual almacena un valor
distinto de cero.
OPERADORES LGICOS:
OPERADORES SIGNIFICADO
&& y
|| o
! no
EJEMPLOS:
/i tenemos la e%presi!n ( :(;3<) al evaluarla el resultado que da es 0.
La e%presi!n( z4:(;3<); #lmacena 0 en la variable z
La e%presi!n( z4:(a1b34c56)
#lmacena = en la variable z si el resultado de comparar a1b con el
doble de c es menor, puesto que la proposici!n es falsa, al negarla da
verdadera
PRIORIDAD DE OPERADORES:
>eniendo los operadores ya definidos, debemos definir la prioridad
nuevamente as(
CATEGORA
DEL
OPERADOR
OPERADORES ASOCIATIVA
Operadores Monarios -,++,--,!, sizeof(tipo) Dere!a a Izquierda
Multipliai"n di#isi"n y
residuo
$, %, & Izquierda a Dere!a
'u(a y sustrai"n
arit()tia
+, - Izquierda a dere!a
Operadores de relai"n <, <=, >, >= Izquierda a dere!a
Operadores de igualdad = = , != Izquierda a dere!a
y ** Izquierda a dere!a
o ++ Izquierda a dere!a
Operadores de
asignai"n
=, +=, - =, $=, %=, &= Izquierda a dere!a
Las e%presiones entre parntesis se eval,an primero.
Los operadores de asignaci!n tiene menor prioridad que todos
los otros operadores. 'or tanto las operaciones monarios, aritmticos,
de relaci!n, de igualdad y l!gicos se realizan antes que las de
asignaci!n.
INSTRUCCIN if (e!re"i#$ %#&ic'( e%"e:
La instrucci!n si eval,a la e%presi!n l!gica, si sta es verdadera,
e"ecuta la instrucci!n definida en 9'cci#$ #3, si es falsa se e"ecuta la
instrucci!n inmediata al e%"e definida en 9'cci#$ 23, despus de eso
e"ecuta la instrucci!n siguiente a la 9acci!n 23 y las que le siguen
if (e,presi"n l"gia)
<Accin A>
!"#!
<Accin $>
EJEMPLO(
*scriba un programa en lengua"e . que le permita a un estudiante
calcular la nota definitiva de tres notas, que tienen el mismo valor
porcentual. *l programa debe imprimir la nota definitiva y un mensa"e
adecuado que diga 8?ano la materia8, o 8'erdi! la @ateria8, seg,n si la
nota sea mayor igual que cero o menor que cero.
Ainclude 9stdio.$3
void main()
B double nota=, nota6, nota<;
double definitiva;
clrscr();
printf(&*scriba la primera notaCn&);
scanf(&Dlf&,Enota=);
printf(&*scriba la segunda notaCn&);
scanf(&Dlf&,Enota6);
printf(&*scriba la tercera notaCn&);
scanf(&Dlf&,Enota<);
definitiva4(nota=1nota61nota<)F<;
if (definitiva34G)
printf(&/u nota es Df ?#HI&,definitiva);
else
printf(&/u nota es Df '*JKI&,definitiva);
getc$();
L
Itra versi!n del programa usando la instrucci!n que $emos visto es(
Ainclude 9iostream.$3
Ainclude 9conio.$3
Adefine gano &?ano la @ateria&
Adefine perdio &'erdio la @ateria&
)oid main()
B do*+%e nota=, nota6, nota<;
do*+%e definitiva;
clr"cr();
co*,99&*scriba la primera nota&;
ci$33nota=;
co*,99&*scriba la segunda nota&;
cin33nota6;
co*,99&*scriba la tercera nota&;
cin33nota<;
defi$itiva4(nota=1nota61nota<)F<;
if (definitiva34G)
co*,99&/u nota es &99definitiva99gano;
e%se
co*,99&/u nota es &99definitiva99perdio;
getc$();
L
SENTENCIA COMPUESTA:
.uando un programador, necesita que la computadora e"ecute
ms de una instrucci!n en el momento de que la e%presi!n l!gica sea
verdadera o sea falsa, lo indica encerrando entre llaves B L las
instrucciones que siguen al ,-e$ o '% e%"e.
EJEMPLO:
*scriba un programa que lea tres n,meros reales a, b, c. -na vez
ledos, el programa debe calcular la soluci!n a la ecuaci!n(
y debe escribir las soluciones reales si e%isten y las soluciones comple"as.
Ai$c%*de 9iostream.$3
Ai$c%*de 9conio.$3
Ai$c%*de 9mat$.$3
Adefi$e imagin 8i8
)oid.'i$()oid)
Bdo*+%ea,b,c,
discri, preal,
%=, %6, pimag;
c%r"cr() ;
co*,99&E"cri+e %o" coeficie$,e" M&;
ci$ 33a33b33c;
discri4!o/(b,6)NO5a5c;
if (discri340)
0%=4(Nb1"1r,(discri))F(65a);
%64(NbN"1r,(discri))F(65a);
cout99&7=4&99%=;
cout99&%64&99%6;
2
e%"e 0
preal4NbF(65a); pimag4sqrt(abs(discri))F(65a);
co*,99&Cn %=4&99preal99PimaginP99pimag;
co*,99&Cn %=4&99preal99PimaginP99Npimag;
2
getc$();
L
IF ANIDADOS :
>endremos situaciones l!gicas en las cuales despus de
$acernos una pregunta se nos $ace necesario $acer una nueva
pregunta, en esos caso tenemos entonces que despus
del ,-e$ yFo e%"e es necesario volver a tener una sentencia if,-e$
e%"e decimos entonces que anidamos if.
-n puntero es un tipo especial de variable que contiene una direcci!n de memoria.
'or supuesto, a partir de esa direcci!n de memoria puede $aber cualquier tipo de
ob"eto( un c$ar, un int, un float, un array, una estructura, una funci!n u otro puntero. *l
programador ser el responsable de decidir ese contenido.
Los punteros se declaran igual que el resto de las variables, pero precediendo el
identificador con el operador de indirecci!n, (5), que leeremos como &puntero a&.
*"emplos(
int 5entero;
c$ar 5carcter;
struct st'unto 5punto;
Los punteros siempre apuntan a un ob"eto de un tipo determinado, en el e"emplo,
&entero& siempre apuntar a un ob"eto de tipo &int&.
ebes tener muy claro que &entero& es una variable del tipo &puntero a int&, y que
&5entero& HI es una variable de tipo &int&.
/i &entero& apunta a una variable de tipo &int&, &5entero& ser el contenido de esa
variable, pero no olvides que &5entero& es un operador aplicado a una variable de tipo
&puntero a int&, es decir &5entero& es una e%presi!n, no una variable.
'ara averiguar la direcci!n de memoria de cualquier variable usaremos el operador de
direcci!n (E), que leeremos como &direcci!n de&.
.omo todas las variables, los punteros tambin contienen &basura& cuando son
declaradas. *s costumbre dar valores iniciales nulos a los punteros que no apuntan a
ning,n sitio concreto(
entero 4 H-LL;
caracter 4 H-LL;
H-LL es una constante, que est definida como cero en varios fic$eros de cabecera,
como
&stdio.$& o &iostream.$&, y normalmente vale 0.

S-ar putea să vă placă și