23/11/11

Ejercicios de funciones con matrices como parametros

Elaborar un programa que lee una matriz de n x m y determinar cual es el dato mayor y en que posicion se encuentra.

Para buscar un valor y su posición en una matriz se deben declarar tres variables, una para almacenar el valor encontrado, y las otras dos para ubicar su posición en la matriz. (filas y columnas).

Para el problema anterior, se declaran las variables de nombre mayor , filas y columna.

1. Se debe de asumir que la primera posición de la matriz es el numero buscado. (mayor)
2. se procede a comparar la variable mayor con el resto de la matriz, si se encuentra un numero mas alto, se asigna éste al la variable mayor y se le asignan las coordenadas del mismo a las variables fila y columna para determinar la posición en que se encuentra.
// matriz de 5 x 5

mayor=v[0][0];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(v[j][i]>mayor)
{
mayor=v[j][i];
fila=j;
columna=i;
}
}
}





6/11/11

Instalar y configurar Geany g++ con ncurses.h


La librería conio.h, es de propiedad de Borland y solo sus compiladores pueden usarla. Por lo tanto significa que conio.h, no es una librería estándar.

La librería conio.h se utiliza por el uso frecuente de sus funciones: getch(), clrscr(), gotoxy(), textcolor(), etc..; los cuales se usan par adarle mejor presentación a nuestros programas.
Pero si nos apasiona tanto como a mí el uso de software libre como Ubuntu, y por supuesto programar en él; la solución esta en usar librerías alternativas como ncurses.h, la cual cumple con características semejantes a conio.h pero libre y para Linux.

Para instalar:

1. Abrimos una terminal Ctrl + Alt + T e instalamos build-essential: sudo apt-get install build-essential
2. Instalamos Geany : sudo apt-get install geany
3. Instalamos la libreria: sudo apt-get install libncurses5-dev

Luego de instalar todos estos paquetes vamos a configurar Geany para poder hacer uso de la librería.

Abrimos Geany y vamos al menú construir/Establecer comandos de construccion y en el cuadro de dialogo en la columna de comando colocamos: g++ -Wall -c -lm "%f" y en el segundo campo colocamos: g++ -Wall -o "%e" "%f" -lncurses.

Como muestra la imagen:






















Click en aceptar y listo.

En el codigo de sus programas solo se incluye la librería .
Por obvias razones las funciones y/o comandos de ncurses.h no se escriben igual a como se hacia en conio.
Ejemplo:
En conio.h se usa gotoxy(x,y); pero en ncurses para hacer lo mismo es: move(y,x); notar que las variables x e y se intercambian de posición.

Les recomiendo la siguientes web:

2. Ncurses.h web

3. Ncurses.h.pdf

Espero les sea de ayuda..

22/9/11

Operadores, Expresiones y Estructuras








Hasta ahora, prácticamente hemos visto, como el protocolo esencial, para realizar un programa en C; y algunas funciones muy importantes, como son las funciones de lectura e impresión (scanf y printf, respectivamente).

Ahora veremos, otros aspectos fundamentales, como lo son los operadores, que pueden ser: lógicos, matemáticos, relacionales, etc. Las expresiones, y las estructuras: de secuenciación, de seleccion y de interacción.

Operadores

Un operador, es un símbolo que indica al compilador que se lleve a cabo cuentas, manipulaciones matemáticas o lógicas.

TABLA 3.1

Todos estos operadores se pueden aplicar a constantes, variables y expresiones. El resultado es el que se obtiene de aplicar la operacion correspondiente entre los dos operandos.
Los operandos sobre los que actúan los operadores ariméticos deben ser valores Numéricos, es decir datos enteros, punto flotante o caracter (Int, Float y Char, respectivamente).

Una aclaracion especial, merece el operador "%", que indica el resto de la division entera.
Ejemplo:
si dividimos 30/3, su cociente es 10, y su residuo es 0. Si dividimos 25/3, su cociente es 8, y tiene un residuo de 1. Entonces de lo que se encarga, este operador, es de devolvernos el valor del residuo de una división. Cabe aclarar que los datos deben de ser tipo entero, y su sintaxis es la siguiente:

25%3

NOTA: Este Operador, NO puede aplicarse a los datos de tipo float. Una Expresión, Es un conjunto de variable, constantes y otras expresiones más sencillas, relacionadas por algún tipo de operador. De las cuales hablaremos con más detalle, posteriormente.

Operadores de Relacionales, Lógicos y Unarios

Estos Operadores, los podemos dividir, en varios tipos, entre los cuales están:

1. OPERADORES UNARIOS: C, incluye una clase de operadores que actúan sobre un solo operador para producir un nuevo valor. Por eso el nombre de Unarios, por que para poder funcionar solo necesitan de un operador.

TABLA 3.2

Ejemplo:
int i=1, x=5;
printf("%d",++i);
printf("%d",- -i);

Estos operadores, el incremento y el decremento, pueden utilizarse de dos maneras, eso depende del orden de aparición de los mismos:
-Si el operador precede al operando el valor del operando se modifica antes de ser utilizado.
-Si el operador aparece después del operando, este se modifica después de ser utilizado.

2. OPERADORES RELACIONALES O DE COMPARACIÓN:
TABLA 3.3

3. OPERADORES LÓGICOS: Estos son los que nos permiten unir varias comparaciones: 10>5 y 6==6.
Los operadores lógicos son:
TABLA 3.4

Operador || (OR, en castellano O): Devuelve un 1 si se cumple una de las dos condiciones.
Operador ! (NOT, negación): Si la condición se cumple NOT hace que no se cumpla y viceversa.
Ver el capítulo Sentencias, sección Notas sobre las condiciones para más información. (Tomado de “Curso de C” por Gorka Urrutia).

Operadores de Asignación
Los Operadores de Asignación, como su nombre lo indica, se encargan de atribuirle, asignarle, confinarle, etc a una variable, el resultado de una expresión o el valor de otra variable.
Se utilizan en forma de expresiones de asignación en los que se asigna en el valor de una expresión a un identificador. El operador de asignación más utilizado es “=” y su formato es:

identificador = expresión;

Donde el identificador representa por lo general una variable y una constante, una variable o una
expresión más compleja.

Si los dos operandos de la expresión de asignación son de tipo de datos diferentes el valor de la expresión de la derecha se convertirá automáticamente al tipo de identificador de la izquierda de ésta forma la expresión de asignación será del mismo tipo de datos.

Ejemplo:
*Un valor en coma flotante puede ser truncado, se asigna a un identificador entero.
*Un valor de doble precisión puede ser redondeado si se asigna a un identificador de coma flotante.
En C, están permitidas las asignaciones múltiples, así:
Identificador1 = identificador2 = identificador3.....= identificador=expresión

TABLA 3.5

Los Operadores de asignación tiene menos procedencia que el resto de los operadores y tienen asociatividad de izquierda a derecha.

Ejemplo
Programa que calcula el valor de la expresión X^2+X+1


EXPRESIONES

(Tomado de “Aprenda ANSII C como si estuviera en Primero”, Universidad de Navarra. 1998).
Ya han aparecido algunos ejemplos del lenguaje C en las secciones precedentes. Una Expresión es una combinación de variables y/o constantes, y operadores. La expresión es equivalente al resultado que proporciona al aplicar sus operadores a sus operandos. Por ejemplo 1 + 5 es una expresión formada por dos operandos (1 y 5)y el operador (el +); esta expresión es equivalente al valor 6, por lo cual quiere decir que allí donde esta expresión aparece en el programa, en el momento de la ejecución es evaluada y sustituida por su resultado. Una expresión puede estar formada por otras expresiones más sencillas, y puede contener paréntesis de varios niveles agrupando distintos términos. En C, existen diferentes tipos de expresiones. El cual depende del tipo de operadores que se estén utilizando. Por ejemplo:
Expresiones lógicas, aritméticas, etc.
Se debe hacer hincapié en que, si existen algunas expresiones encerradas entre paréntesis, estas se evalúan primero. Ejemplo:
9*(8+5)
primero sumamos 8+5, cuyo resultado es 13, y este lo multiplicamos por nueve, con lo que la expresión anterior, da cómo resultado: 117.
Si existen expresiones en paréntesis anidadas, es decir, que uno se encuentra dentro de otros paréntesis, se evalúan los más internos. Ejemplo:
2*((20/(12-2))+5)
se evalúa la operación 12-2, que da como resultado 10, luego se divide 20, entre el resultado anterior, es decir 10. el resultado es 2, y a este número se le suma 5, obteniendo 7. ahora se multiplica por dos, para determinar así que la expresión anterior es igual a 14.

Estructuras

Estructuras Secuenciales
Se les denomina así, por que; son estructuras en un programa, que después de ejecutar una instrucción o sentencia, continúan con la otra, hasta llegar al final del programa. Los ejemplos que hemos visto anteriormente, son ejemplos de estructuras secuenciales. Veamos otros ejemplos:

Diseñe un programa que calcula el cuadrado y el cubo de tres números introducidos por el usuario.


Realicen sus practicas y si tienen inquietudes pueden compartirlas en el foro



Repetición controlada por centinela


Practica 1.2.

Generalizando el problema de promedios de clase: Considere el siguiente problema.

Desarrolle un programa de promedios de clase que pueda procesar un número arbitrario de calificaciones, cada vez que se ejecute el programa.

En el ejemplo 1.1, se sabía por anticipado el número de calificaciones (10). En este ejemplo, no se da ninguna indicación de cuantas calificaciones se tomarán. El programa debe se capaz de procesar un número arbitrario de calificaciones. ¿Cómo podrá el programa determinar cuándo parar la captura de calificaciones? ¿Cuándo sabrá calcular e imprimir el promedio de clase?.

Una forma de resolver este problema es utilizar un valor especial llamado valor centinela o valor bandera, que indicará "fin de la captura de datos". El usuario escribirá calificaciones hasta que haya capturado todas las calificaciones. Entonces escribirá un valor centinela, a fin de indicar que ha sido introducida la última calificación. A esta repetición controlada por centinela se le llama repetición indefinida.

Claramente, el valor centinela deberá ser seleccionado de tal forma que no se confunda con algún valor de entrada aceptable. Este valor puede ser -1 puesto que las calificaciones solo serian números positivos.


Compartan sus comentarios en el foro.

21/9/11

Estructuras de repetición


WHILE

Una estructura de repetición le permite al programador especificar que se repita una acción, en tanto cierta condición se mantenga verdadera. El enunciado en seudocódigo

while tanto queden elementos en mi lista de compras
Adquirir elemento siguiente y tacharlo de la lista

Describe la repetición que ocurre durante una salida de compras. la condición, "tanto queden elementos en mi lista de compras" puede ser verdadera o falsa. si es verdadera, entonces la acción, "adquirir elemento siguiente y tacharlo de la lista" se ejecutará. Esta acción se ejecutará en forma repetida, en tanto la condición sea verdadera. El enunciado o enunciados contenidos en la estructura de repetición while constituyen el cuerpo del while. El cuerpo de la estructura while puede ser un enunciado sencillo o un enunciado compuesto; si es compuesto deben de incluirse entre llaves.
Ejemplo:

while (condición)
{
Sentencia 1
sentencia 2
.......................
}

Dentro del cuerpo de while deberá existir una sentencia que pe
rmita que la condición sea falsa, esto para permitir que salga del ciclo while, de lo contrario se convertirá en un ciclo infinito.

Como ejemplo de un while real, considere un segmento de programa diseñado para encontrar la primera potencia de 2 superior a 1000. suponga la variable entero pro
ducto inicializa en 2. Cuando la estructura de repetición while siguiente termine de ejecutarse, producto contendrá la respuesta deseada:

producto = 2;
while (producto <=1000)
producto = 2 * producto;

El diagrama de flujo de la figura 3.4 enseña con claridad el flujo de control en la estructura de repetición while.


Practica 1.1.

Repetición controlada por contador

Una clase de diez alumnos hizo un examen. Las calificaciones están en el rango de 1 a 10. Calcular el promedio de la clase en este examen.


El promedio de la clase es igual a la suma de las calificaciones dividida por el número de alumnos.

Error común de programación
Si no se inicializa un contador o un total, los resultados de su programa probablemente estarán incorrectos. Esto es un ejemplo de error lógico.

Realicen sus comentarios en el foro