viernes, 17 de diciembre de 2010

Comparar cadenas de caracteres

#!/bin/bash

echo escribe una palabra
read PAL1
echo escribe otra palabra
read PAL2

if [ -z "$PAL1" ]; then  "la opción -z es para ver si hay valores nulos"
 echo no puede haber valores nulos
 exit
elif [ -z "$PAL2" ]; then "al poner la variable entre comillas dobles"" es para que tenga en cuenta espacios en blanco
 echo no puede haber valores nulos
 exit
fi

if [ "$PAL1" \> "$PAL2" ]  "para cualquier operación siempre anteponer el backslash "\" "
then
 echo la mayor es "$PAL1"
else
 echo la mayor es "$PAL2"
fi

jueves, 16 de diciembre de 2010

SQL ORACLE

para ver las tablas creadas:

select table_name
from user_tables;

ejemplo de ejercicio:

CREATE TABLE Psicologos( -------------------------> crea la tabla
NIF        Varchar2(10),            
-------------------------> atributo y tipo de datos
Nombre        Varchar2(15) NOT NULL,
Apellido1    Varchar2(15) NOT NULL,
Apellido2    Varchar2(15),
Especialidad    Varchar2(15) NOT NULL,
Direccion    Varchar2(50),
 Constraint PK_Psicologos PRIMARY KEY (NIF)
-------------------------> clave primaria
);

CREATE TABLE Pacientes(
NIF        Varchar2(10),
Nombre        Varchar2(15) NOT NULL,
Apellido1    Varchar2(15) NOT NULL,
Apellido2    Varchar2(15),
Fec_Nacim    Date NOT NULL,
Telefono    Varchar2(10),

 Constraint PK_Pacientes PRIMARY KEY (NIF),
 Constraint CH_fec_nacim CHECK (Fec_Nacim >= TO_DATE('01/01/1900','DD/MM/YYYY'))
);
-------------------------> check de restricciones y  ");" es para terminar

CREATE TABLE Transtornos (
Cod_Transtorno    Number(5),
Nombre        Varchar2(25) NOT NULL,
Sintomas    Varchar2(250) NOT NULL,
 Constraint PK_Transtornos PRIMARY KEY (Cod_Transtornos),
 Constraint CH_Cod_trans CHECK (Cod_Transtornos >=0)
);

CREATE TABLE Terapias (
Cod_Terapia     Number(5),
Nombre        Varchar2(25) NOT NULL,
Observaciones     Varchar2(250) NOT NULL,
 Constraint PK_Terapias PRIMARY KEY (Cod_Terapia),
 Constraint CH_Cod_terap CHECK (Cod_Terapia >=0)
);

CREATE TABLE Sesiones(
NIF_PS        Varchar2(10),
NIF_PA        Varchar2(10),
Cod_Transtorno    Number(5),
Cod_Terapia    Number(5),
Fecha        Date,
 Constraint PK_Sesiones PRIMARY KEY (NIF_PS,NIF_PA,Cod_Transtornos,Cod_Terapia,Fecha),
 Constraint CH_Fecha CHECK (Fecha >= TO DATE('01/01/1990','DD/MM/YYYY')),
 Constraint FK_ses_psi     FOREIGN KEY (NIF_PS)
            REFERENCES Psicologos (NIF)
            ON DELETE CASCADE,
 Constraint FK_ses_pa    FOREIGN KEY (NIF_PA)
            REFERENCES Pacientes (NIF)
            ON DELETE CASCADE,
 Constraint FK_ses_pa    FOREIGN KEY (NIF_PA)
            REFERENCES Pacientes (NIF)
            ON DELETE CASCADE,
);
----------------------------------- Inserción de datos ------------------------------------
INSERT
INTO Psicologos --------> en la tabla
VALUES ('PS123456','JUAN,'PÉREZ',GARCÍA','CLÍNICA','C/REAL'); ----> valores

INSERT
INTO Pacientes
VALUES ('PA123444','MARÍA','GARCÍA','LÓPEZ',TO_DATE('12/12/1980','DD/MM/YYYY'),'666666');

INSERT
INTO Transtornos
VALUES (100,'JORCH','SINTOMAS');

INSERT
INTO Terapias
VALUES (1,'PSICOANÁLISIS','OBSERVACIÓN');

INSERT
INTO Sesiones
VALUES('PS123456','PA123444',100,1,SYSDATE);

COMMIT; --------------------------------> es para validar los cambios

viernes, 26 de noviembre de 2010

Ejemplos Shell (linux)

.........................................inicio (test -L)...............................................
#!/bin/bash

if test -L $1; then #devuelve verdadero o falso, si test -L es verdadero entonces es un enlace simbolico
 echo $1 es un enlace simbolico
else
 echo $1 no es un enlace simbolico
fi
.................................................fin.........................................................

jueves, 25 de noviembre de 2010

ls -l (nombre) | cut -d " " -f1
wc -l ..... cuenta lineas
ps (procesos) -ef ... (unproceso?)
cut -d: -f2 .... -d es el delimitador y -f es la fila ... ejem: -f1-3 (del 1 al 3)

miércoles, 24 de noviembre de 2010

Opciṕn Test (Linux

test -f ( si es un fichero devuelve 0)
test -s (si el tamaño es mayor a 0 devuelve 0)
test -d (si es un directorio devuelve 0)
test -x (si tiene permiso de ejecución devuelve 0)

en lugar de test se pueden usar corchetes
---------------------------------------(en el fichero.sh)........................................................
[ -d /home ]
echo $?
.....................................................(fin)..............................................................
Evaluar cadenas de caracteres
...................................................(en el fichero.sh)............................................
#[ cadena1 = cadena2 ]
[ "$1" = "$2" ]
echo $?
[ "$1" != "$2" ]
echo $?
....................................................(fin)...............................................................

.................................................(en el fichero.sh).............................................

#Comparar numeros
# -eq (igual)
# -ne (distinto de)
# -lt (menor que)
# -gt (mayor que)
read N1
read N2

[ $N1 -eq $N2 ]
echo $?
[ $N1 -ne $N2 ]
echo $? 
[ $N1 -lt $N2 ]
echo $?
[ $N1 -gt $N2 ]
echo $?
....................................................(fin).............................................................................................................................(fichero.sh)..............................................
# usar el if
if [ -d $1 ]
# ve si existe el directorio
then ls -ld $1
elif [ -f $1 ]
# ve si es un fichero
then
cat $1
else
echo creo que no existe
fi
.............................................................(fin)............................................................

jueves, 18 de noviembre de 2010

Linux (shell)

Escribir comandos en un fichero de texto
Guardar el fichero
Dar permisos de ejecución (chmod +x nombrefichero)
Escibir en la consola ./nombrefichero
Argumentos de un Shell
Hay q crear un fichero con extensión “.sh”
$0 => Argumento/parámetro 0     (dólar cero es el Argumento del programa (donde está)) (imprime)
$# => guarda el número de argumentos que recibe el programa
$* => guarda la cadena de argumentos (excluyendo $0)
$? => guarda el código de retorno de la última orden ejecutada (0 si no hay error, distinto de 0 si lo hay)
Operadores:
+ sumar
-restar
*multiplicar
/dividir
% para el resto de la división
Ejemplo:
Read a b
C=`expr $a\*$b`
Echo $c
Alternativa:

En vez de usar "expr" se puede usar los operadores [corchetes]


Operadores relacionales

Sirve para empezar palabras argumentos, números...
Si el resultado de la comparación es cierto, devuelven 1,
Si es fichero, devuelven 0
=  (compara si son iguales)
!= (distinto)
> (mayor que)
< (menor que)
Hay que usarlos con \
\>    \<
>= (mayor o igual)  <=(menor o igual)


Operadores lógicos

Se usan para comparar 2 argumentos (arg1, arg2).  
devuelven un argumento o parte del otro






& -> Y arg1 & arg2


Si arg1 y arg2 son distintos de cero, el resultado es arg1, si no, el resultado es arg2
: (2 puntos)
argi : arg2
arg2 es el patrón buscado en arg1. Si el patrón arg 2 está encerrado entre paréntesis \( u \), el resultado es la parte de arg1 que coincide con arg2, si no, el resultado es el número de caracteres que cpinciden.
NOTA:  | y  ¬ deben ir precedidos de \ ... \|, \&


Ejemplo:
  a= junio_2001
  b=`expr $a :'\([a-z]*\)'`
  echo b
 

viernes, 12 de noviembre de 2010

ejemplo de recursividad en C++

#include
main()[
long int x,y;
printf("Escribe un numero\n");
scanf("%li",&x);
y=factorial (x);
printf("%li",y);
}
long int factorial(long int n){
if (n==1) return1;
else return n*factorial (n-1)
}

simple tracker
Flowers Roses