C1T1 FundamentosProgramación 2021
C1T1 FundamentosProgramación 2021
C1T1 FundamentosProgramación 2021
PROGRAMACIÓN
q Datos
q Instrucciones Elementales y Compuestas
q Programas Iterativos
q Diagramas de Estados
Datos
§ Salida System.out.println("¡Hola!");
q Compuestas
§ Se forman agrupando a otras instrucciones: elementales y/o compuestas, usando las
reglas de:
ü Secuencia
ü Alternación (if)
ü Iteración (while)
Instrucciones compuestas - secuencia
Condicion ? A : B
double x1 = Math.PI;
double x2 = Math.E;
double min = (x1 > x2 ) ? x2 : x1 ; // min value
double diff = (x1 > x2) ? x1−x2 : x2−x1; // absolute value
System.out.println(min +" difference with max = ” + diff);
Programas iterativos con invariante
while (condición)
instrucción;
// m = max(a[1],...,a[n]);
k = 1;
m = a[1];
// m == max(a[1])
// De esta manera trivial se incializa el siguiente invariante:
// Invariante: k<=n && m == max(a[1],...,a[k])
while( k<n ) {
++k; // k<=n && m == max(a[1],...,a[k-1])
if( a[k]>m )
m = a[k];
// k<=n && m == max(a[1],...,a[k])
}
// m = max(a[1],...,a[n])
Programas iterativos con invariante
q P.e. poner los elementos de un arreglo a[0],...,a[n-1] en orden
ascendente.
q Inserción
§ Invariante:
q Inserción
// Ordenar a[0],...,a[k-1] por inserción
k = 0; // inicialmente no hay elementos ordenados
while( k<n ) {
Insertar a[k] entre a[0],...,a[k-1];
++k;
}
q Inserción
// Ordenar a[0],...,a[k-1] por inserción
k = 0; // inicialmente no hay elementos ordenados
while( k<n ) {
// Ordenar a[0],...,a[k-1] por inserción
Insertar a[k] entre a[0],...,a[k-1];
++k; k = 0; // inicialmente no hay elementos ordenados
} while( k<n ) { //Insertar a[k] entre a[0],...,a[k-1]
t = a[k];
for( j=k; j>0 && a[j-1]>t; --j )
Insertar a[k] entre a[0],...,a[k-1] => a[j] = a[j-1];
for( j=k; j>0 && a[j-1]>a[j]; --j ) { a[j] = t;
// intercambiar a[j-1] con a[j]
t = a[j]; ++k;
a[j] = a[j-1]; }
a[j-1] = t;
}
Diagramas de estados
==‘ ‘ { ++k;}
{k=0; np=0}
==‘ ‘ {++k;}
==‘.‘
==‘.‘
Diagramas de estados
//versión 1
np = 0;
estado = FUERA;
for (k=0, (c=s.charAt(k)) != '.'; k++){
if (estado == FUERA){
if (c != ' '){
++np;
estado = DENTRO;
}
}
else //estado == DENTRO
if (c == ' ')
estado = FUERA;
}
Problema
//version 1
i = 0; j = n;
while( i<j ) {
if( a[i]<0 )
++i;
else if( a[j]>=0 )
--j;
else {
a[i] <-> a[j];
++i;
--j;
}
}