lunes, 30 de julio de 2007

Practica 5 Ejercicios de estructuras secuenciales

Materia: Lógica Computacional.
Profesor: Lic. Salomón Aquino


1. Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado.

2. Escribir un programa que calcule el salario de un trabajador de la manera siguiente. El trabajador cobra un precio fijo por hora y se le descuento el 10% en concepto de impuesto sobre la renta. El programa debe pedir el nombre del trabajador, las horas trabajadas y el precio que cobra por hora. Como salida debe imprimir el sueldo bruto, el descuento de renta y el salario a pagar.

3. Programa que pida el precio de un artículo y calcule su valor aplicándole un 13% de IVA.

4. Dada una medida de tiempo expresada en horas, minutos y segundos con valores arbitrarios, elabore un programa que transforme dicha medida en una expresión correcta. Por ejemplo, dada la medida 3h 118m 195s, el programa deberá obtener como resultado 5h 1m 15s.

5. Escriba un programa que calcule el área de un triángulo rectángulo, dada la altura y la base.

6. Elabore un programa que realice la conversión de cm. a pulgadas.
Donde 1cm = 0.39737 pulgadas.
Por lo tanto, el usuario proporcionara el dato de N cm. y el programa dirá a cuantas pulgadas es equivalente.

7. Elabore un programa que realice la conversión de pulgadas a cm.
Donde 1 cm. = 0.39737 pulgadas.
Por lo tanto, el usuario proporcionara el dato de N pulgadas y el programa dirá a cuantos centímetros equivale.

8. Elabore un programa que realice la conversión de metros a pies
Donde 1 m = 3.2808 pies.
Por lo tanto, el usuario proporcionara el dato de N m y el programa dirá a cuantos pies equivale.

9. Elabore un programa que realice la conversión de pies a metros
Donde 1 m = 3.2808 pies.
Por lo tanto, el usuario proporcionara el dato de N pies y el programa dirá a cuantos metros equivale.

10. Elabore un programa que realice la conversión de kilogramos a libras
Donde 1 Kg. = 2.2046 libras.
Por lo tanto, el usuario proporcionara el dato de N Kg. y el programa dirá a cuantas libras equivale.

11. Elabore un programa que realice la conversión de libras a kilogramos
Donde 1 Kg. = 2.2046 libras.
Por lo tanto, el usuario proporcionara el dato de N libras y el programa dirá a cuantos kilogramos equivale.

domingo, 29 de julio de 2007

Clase 5 Entrada y Salida Estándar.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Objetivos de la clase:
• Al final de la clase los alumnos y alumnas serán capaces de:
• Comprender la sintaxis de las funciones printf() y scanf().
• Utilizar correctamente las funciones printf() y scanf().

La función printf()
• La función printf permite escribir una lista de datos con un formato preestablecido. Acepta diferentes tipos de argumentos: carácter, valor numérico entero o real o cadena de caracteres, y los escribe según un formato especificado sobre la salida estándar. La forma de la función printf es:
• printf ("formato", arg1, arg2, ..., argn);
• donde argi pueden ser constantes, variables o expresiones, y “formato” es una serie de caracteres en la cual se pueden encontrar dos tipos de datos: un mensaje o texto a escribir literalmente, y los símbolos especificadores del formato con el cual se van a escribir las variables dadas como argumentos.
• Por ejemplo: printf ("Esto es un mensaje\n");
• Escribe la cadena Esto es un mensaje seguida de un salto de línea (debido al \n)

Ejemplo de printf()
#include < stdio.h >
main()
{
int i; char letra; float f; char string[10]="hola";
i = 1; letra='a'; f = 3.15;
/* \n en el printf hace que salte de linea */
printf(" El numero entero es %d\n", i);
printf(" El numero real es %f\n",f);
printf(" La letras es %c\n", letra);
printf(" El string es %s\n",string);
system(“pause”);return 0;
}
Especificadores de formato:
• Los especificadores de formato deben ir precedidos del signo %. Algunos de ellos son:
• %c carácter (char)
• %d número entero (int)
• %ld número entero (long)
• %f número real (float)
• %lf número real (double)
• %s cadena de caracteres

• Por cada argumento a imprimir debe existir un especificador de formato, que indica el formato en el cual se va a mostrar el dato. Por ejemplo, siendo letra una variable de tipo char con el valor ‘A’, la instrucción
printf (“El código ASCII de %c es %d”, letra, letra);
escribirá:
El código ASCII de A es 65

Otros ejemplos de printf:
• printf (“\nEl cuadrado de %f vale %f”, x, x*x);
• printf (“\nLa edad de %s es %d años”, “Juan”, edad);
• printf (“\nSeno (%lf) = %lf\n”, x, sin(x));

• La función printf puede emplearse sin argumentos, en cuyo caso sólo se imprimen los caracteres presentes en la cadena de formato.

Caracteres opcionales:
• Entre el símbolo "%" y el carácter que especifica la notación a emplear se pueden insertar ciertos caracteres opcionales. Son los siguientes:

– El signo (-) para que el dato se ajuste por la izquierda, en lugar de hacerlo por la derecha, que es lo establecido por defecto.
– Un número que indica la longitud mínima en caracteres que tiene el campo donde se mostrará el dato. Los espacios hacen de caracteres de relleno.
– Un punto decimal (.) seguido de una cifra que indica el número de dígitos tras el punto decimal de un dato real o el número mínimo de dígitos para un entero o el número máximo de caracteres de una cadena que serán impresos

Ejemplo de caracteres opcionales:
• %8d imprime un número decimal (int) alineado por la derecha y en un campo de al menos ocho caracteres.

• %-25s imprime una cadena de caracteres alineada por la izquierda y asegurando una longitud mínima de 25 caracteres (reserva al menos 25 espacios, si la longitud del valor a visualizar es mayor de 25 se visualizan todos).

• %.6f imprime un número real (float) con un máximo de 6 cifras significativas en la parte fraccionaria.

La función scanf()
• La función scanf permite leer valores desde la entrada estándar y almacenarlos en las variables que se especifican como argumentos. Éstas deben ir normalmente precedidas por el símbolo &. La sintaxis es:
scanf ("formato", arg1, arg2, ..., argn);
• donde debe haber tantos especificadores en la cadena de “formato” como variables en la lista de argumentos. Por ejemplo,
int n;
double x;
scanf ("%d%lf", &n, &x);
• para leer un valor de tipo int y otro de tipo double. Los valores se introducirán desde la entrada estándar separándolos por espacios o retornos de carro. En la cadena de formato aparecen especificadores de formato (los mismos que ya se han visto) pero nunca deben aparecer caracteres ordinarios.


#include < stdio.h >
main() {
int i; char c; float f; char string[10];
printf("Introduce la letra: "); scanf("%c",&c);
printf(" Introduce el numero entero: "); scanf("%d",&i);
printf("Introduce el numero real: "); scanf("%f",&f);
printf("Introduce el string: "); scanf("%s",&string);
printf("Los valores introducidos son: %c %d %f %s \n",c,i,f,string);
system(“pause”);return 0;
}

Ejemplo de uso de printf() y scanf()
Como ejemplo del uso de printf y scanf, sea un programa que lee dos números del teclado y calcula e imprime la suma de ambos:
/* Programa que lee dos números y los suma */
#include < stdio.h >
void main (void)
{
int a, b, suma;
printf ("\nIntroduzca a y b: ");
scanf ("%d%d", &a, &b);
printf ("\n a vale: %d; b vale %d", a, b);
suma = a + b;
printf ("\n\nLa suma de a y b vale: %d\n", suma);
}

Fin de la clase.
Gracias por asistir.

lunes, 23 de julio de 2007

Practica 4: Ejercicios de programas basicos en lenguaje C

Profesor: Lic. Salomon Aquino
Materia: Logica Computacional

Escriba los siguientes ejemplo de programas en C en el compilador Devcpp:

Ejemplo 1
Primer programa en lenguaje C:

/* Mi primer programa completo en Lenguage C.
Imprime un texto en pantalla. */

#include < stdio.h >
#include < stdlib.h >

int main()

{

printf(“Hola mundo!!\n”);
system("pause");
return 0;
}

Modifique el programa para que en vez de Hola Mundo aparezca tu nombre, por ejemplo: Hola Salomon Aquino.


Ejemplo 2
Segundo programa en lenguaje C:

#include < stdio.h >
#include < stdlib.h >
#include < conio.h >
main()
{
int a, b, c, suma;
a=6;
b=4;
c=17;
suma = a + b + c;
printf ("\n La suma es : %d ", suma);
printf("\n");
system("pause");
return 0;
}

ahora vamos a modificar el programa para que solicite los valores de a, b y c y estos se introduzcan por el teclado, el programa quedaria de la siguiente manera:

#include < stdio.h >
#include < stdlib.h >
#include < conio.h >
main()
{
int a, b, c, suma;

printf("Introduzca el valor de a : ");
scanf("%d", &a);
printf("\n");

printf("Introduzca el valor de b : ");
scanf("%d", &b);
printf("\n");

printf("Introduzca el valor de c : ");
scanf("%d", &c);
printf("\n");

suma = a + b + c;
printf ("\n La suma es : %d ", suma);
printf("\n");
system("pause");
return 0;
}

Ejemplo 3

/* Este ejemplo muestra el uso de variables tipo char y tipo int */
#include < stdio.h >
#include < stdlib.h >
#include < conio.h >

main ( )
{
char nombre[30];
int edad;
printf ("Escriba su nombre: ");
scanf ("%s", nombre);
printf ("\n Escriba la edad de %s: ", nombre);
scanf ("%d", &edad);
printf("\n");
printf ("Su nombre es: %s ", nombre);
printf("\n");
printf ("Su edad es: %d ", edad);
printf ("\n");
system("pause");
return 0;
}

Ejemplo 4
Este programa muestra es uso de variables tipo char.


#include < stdio.h >
#include < stdlib.h >

main ( )
{
char nombre[30] ;
printf ("Esta es una secuencia de sentencias\n");
printf("Ahora escriba su nombre (solo su primer nombre): ");
scanf("%s",nombre);
printf ("\nMucho gusto %s.",nombre);
printf ("\nEspero que te estes divirtiendo y aprendiendo el Lenguaje C \n");
printf("Con mucha dedicacion y esfuerzo saldras bien en tus practicas\n");
system("pause");
return 0;
}

Ejemplo 5
Este ejemplo muestra el uso de variables tipo float, pide 3 salarios y los suma.

#include < stdio.h >
#include < stdlib.h >
#include < conio.h >
main()
{
float salario1, salario2, salario3, suma;

printf("Introduzca el valor de salario1 : ");
scanf("%f", &salario1);
printf("\n");

printf("Introduzca el valor de salario2 : ");
scanf("%f", &salario2);
printf("\n");

printf("Introduzca el valor de salario3 : ");
scanf("%f", &salario3);
printf("\n");

suma = salario1 + salario2 + salario3;
printf ("\n La suma es : %.2f ", suma);
printf("\n");
system("pause");
return 0;
}


Ejercicios:
Escribe un programa en lenguaje C para los siguientes ejercicios:

1. Escribe un programa que calcule el área de un círculo de cualquier radio.
2. Escribe un programa que lea una cantidad depositada en un banco y que calcule la cantidad final después de aplicarle un 20% de interés.
3. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.
4. Un alumno desea saber cual será su calificación final en la materia de Lógica Computacional. Dicha calificación se compone de tres exámenes parciales cuya ponderación es de 30%, 30% y 40%
5. Una farmacia aplica al precio de los remedios el 10% de descuento. Hacer un programa que ingresado el costo de los medicamentos calcule el descuento y el precio final

domingo, 22 de julio de 2007

Clase 4: Estructura de un programa en lenguaje C.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Objetivos de la clase:
Al final de la clase los alumnos y alumnas serán capaces de:
1. Comprender la estructura de los programas en lenguaje C.
2. Elaborar programas secuenciales usando la estructura de los programas en lenguaje C.

Primer programa en lenguaje C:
/* Mi primer programa completo en Lenguage C.
Imprime un texto en pantalla. */

#include

int main()

{

printf(“Hola mundo!!\n”);
system("pause");
return 0;
}





Segundo programa en lenguaje C:
#include
#include
#include
main()
{
int a, b, c, suma;
a=6;
b=4;
c=17;
suma = a + b + c;
printf ("\n La suma es : %d ", suma);
printf("\n");
system("pause");
return 0;
}




Directivas de Librerías:
• En esta sección se escriben aquellas sentencias que proveerán herramientas útiles para desarrollar el programa.
• Para el caso específico de lenguaje C, en esta sección se escriben los nombres de las galerías de encabezados que serán utilizadas (incluídas).
• Se antecede a cada galería la instrucción #include y seguido de esta se escribe entre signos de menor que y mayor que, el nombre de la galería.
• Ejemplos de la sección de utilerías son las siguientes:
#include (stdio.h) #include (stdlib.h)
#include (conio.h) #include (string.h>)
#include (ctype.h) #include (math.h)
#include (dos.h)

Nota: En las instrucciones #include, sustituya los parentesis por los simbolos "<" y ">"

La función main()
• Todos los programas en lenguaje C deben comenzar con la función main().
• Toda función debe retornar un valor, la funcion main() retorna un valor entero, por eso los programas deben terminar con un return 0;
• La función puede declararse como int main() o solo main(), las dos formas son validas.

Los comentarios:
• Los comentarios son lineas incluidas en un programa que no realizan ninguna accion, solo sirven para agregar explicaciones o documentar el programa.
• Hay dos tipos de comentarios: de una linea y de varias lineas.
• /* */ Para comentarios cuando ocupan más de una línea de texto. Lo que se escriba entre estos dos símbolos será ignorado por el compilador.
• // para comentarios en una única línea de texto.

Declaración de variables:
• C requiere que se declaren las variables que se utilizarán en el desarrollo del programa. Estas se declaran precedidas por un palabra reservada que le indica al compilador el tipo de datos que se almacenará en la variable.
=
• Se pueden también declarar múltiples variables en la misma línea:
, ....
• Así por ejemplo:
• Int longitud; int valor=99;
• Int valor1, valor2;
• float salario, estatura;

Instrucciones del programa:
• Las instrucciones de un programa en C se encuentran entre las llaves de inicio y fin de la funcion main().
• Todas las instrucciones del programa deben finalizar con un punto y coma (;)
• Ejemplo: Int edad;
• La funcion printf() se utiliza como instrucción de salida.
• La funcion scanf() se utiliza como instrucción de entrada de datos.
• la instrucción system(“pause”) que es necesaria para que la pantalla se detenga temporalmente cuando corremos el programa, ya que si no ponemos esa instrucción, no veríamos lo que hace el programa porque mostraría rápidamente los resultados.
• Esta instrucción se encuentra en la librería que deberá ser declarada en la cabecera del programa.

lunes, 16 de julio de 2007

Practica 3: ejercicios de diagramas de flujo

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino

Objetivos: Al final de la clase los alumnos serán capaces de:
1. Comprender las estructuras secuenciales y resolver problemas usando dichas estructuras.
2. Elaborar algoritmos, y flujogramas para estructuras secuenciales.

ESTRUCTURAS BÁSICAS.
Un problema se puede dividir en acciones elementales o instrucciones, usando un número limitado de estructuras de control (básicas) y sus combinaciones que pueden servir para resolver dicho problema.
Las Estructuras Básicas pueden ser:
Secuenciales: cuando una instrucción del programa sigue a otra.
Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones.
Repetición, Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso.



Estructura Secuencial.
Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones.
Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, sumarización, etc.
Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
Definición de variables (Declaración)
Inicialización de variables.
Lectura de datos
Cálculo
Salida

Ejemplo 1.
Se desea encontrar la longitud y el área de un círculo de radio 5.
Solución.
El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio conocido y de valor 5. Las salidas serán entonces la longitud y el área. (Fase 5 del algoritmo)
Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo)

Si definimos las variables como: (fase 1 del algoritmo)
L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:
Inicio
Pi <- 3.1416 (definición de un valor constante)
R <- 5 (radio constante ya que es conocido su valor)
A <- pi * R ^ ² (asignación del valor del área)
L <- 2 * pi * R (asignación del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Fin

Representación en Diagrama de Flujo para el ejemplo:



En este ejercicio no existen datos de entrada ya que para calcular el área y la longitud necesitamos únicamente el radio y el valor de Pi los cuales ya son dados en el problema.

Ejemplo 2.
Modificar el problema anterior para que sea capaz de calcular el área y la longitud de un círculo de cualquier radio requerido.

Solución.
El problema es el mismo con la variante de que ahora ya existe un dato de entrada, puesto que el radio puede ser cualquiera y será necesario que el usuario sea quien lo introduzca de teclado. Usando las misma definición de variables tenemos:
Algoritmo:
Inicio
pi <- 3.1416 (fase de inicialización)
Leer (R) (fase de lectura)
A <- pi * R ^ ² (fase de cálculos)
L <- 2 * pi * R
Escribir ( A, L ) (fase de salida)
Fin
Note que la instrucción de asignación fue cambiada por la instrucción leer.
En el flujograma deberán cambiarse también los símbolos que los representan:



Ejemplo 3.
Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado.
Salidas: Sueldos finales
Entradas: Salarios de los empleados
Datos adicionales: aumentos del 10, 12 y 15%
Cálculos:
Sueldo final = sueldo inicial + aumento
Aumento = sueldo inicial * porcentaje/100
Definición de variables:
Sf1, Sf2, Sf3 = los sueldos finales
S1, S2, S3 = salarios de los empleados
Aum1, aum2, aum3 = aumentos

ALGORITMO
Inicio
Leer (S1,S2,S3)
Aum1 <- S1 * 0.10
Aum2 <- S2 * 0.12
Aum3 <- S3 * 0.15
Sf1 <- S1 + Aum1
Sf2 <- S2 + Aum2
Sf3 <- S3 + Aum3
Escribir (SF1,SF2,SF3)
Fin


FLUJOGRAMA:




Ejercicios para resolver en la clase:
Para cada ejercicio escriba su algoritmo en pseudocodigo y su flujograma.
1. Escribe un programa que calcule el área de un círculo de cualquier radio.
2. Escribe un programa que lea una cantidad depositada en un banco y que calcule la cantidad final después de aplicarle un 20% de interés.
3. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.
4. Un alumno desea saber cual será su calificación final en la materia de Lógica Computacional. Dicha calificación se compone de tres exámenes parciales cuya ponderación es de 30%, 30% y 40%
5. Una farmacia aplica al precio de los remedios el 10% de descuento. Hacer un programa que ingresado el costo de los medicamentos calcule el descuento y el precio final

6. Haga tabla de seguimiento para encontrar los resultados de las variables dadas en el siguiente algoritmo:
Algoritmo Verifica
Entero: x, y, z
Inicio
X <- 40
Y <- 25
Z <- x – y
Y <- X
Escribir ( y, x)
Escribir (z)
Fin.

domingo, 15 de julio de 2007

Clase 3: Diagramas de Flujo.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Fecha: 16/07/07

Objetivos de la clase:
Al final de la clase los alumnos y alumnas serán capaces de:
1. Comprender y aplicar el concepto de diagrama de flujos.
2. Comprender y aplicar las reglas de construcción de los diagramas de flujos.
3. Elaborar diagramas de flujo.

Los Diagramas de Flujo:
Son la representación gráfica de la solución algorítmica de un problema.
Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento.
Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.

Para su elaboración se siguen ciertas reglas:
Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jamás curvas
Se debe evitar cruce de flujos
En cada paso se debe expresar una acción concreta
Secuencia de flujo normal en una solución de problema
Tiene un inicio
Una lectura o entrada de datos
El proceso de datos
Una salida de información
Un final

Simbología para diseñar flujogramas.




VENTAJAS DE USAR DIAGRAMAS DE FLUJO
Rápida comprensión de las relaciones
Análisis efectivo de las diferentes secciones del programa
Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas
Comunicación con el usuario
Documentación adecuada de los programas
Codificación eficaz de los programas
Depuración y pruebas ordenadas de programas

DESVENTAJAS DE LOS DIAGRAMAS DE FLUJO
Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño
Acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos
No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.

Ejemplo de diagrama de flujo:




Ejercicio:
Indica cuáles de los siguientes diseños son válidos según las reglas de construcción de flujogramas:

lunes, 9 de julio de 2007

Practica 2: Jerarquia de operadores en C++

Materia: Logica Computacional
Profesor: Lic. Salomón Aquino


Objetivos. Al finalizar la práctica los alumnos y alumnas sran capaces de:

Asimilar y poner en práctica los conceptos de datos y operadores, además conocerá sus tipos.
Resolver expresiones usando la jerarquía de operadores.
Aplicar la jerarquía de operadores (lógicos y aritméticos) propias del Lenguaje C.


OPERADORES ARITMÉTICOS.

Sirven para realizar operaciones aritméticas básicas. Los operadores aritméticos C siguen las reglas algebraicas típicas de jerarquía o prioridad.



Los paréntesis se utilizan en las expresiones de C de manera muy similar a como se usan en las expresiones algebraicas, sirven para indicar que la expresión dentro de ellos se debe realizar primero. Por ejemplo, para multiplicar a por la cantidad b+c escribimos:

a * (b + c)

Pow es la función que permite realizar las potencias. Por ejemplo x=23 se podría presentar en C de las maneras siguientes: x=pow (2 , 3); o x=2*2*2;

Las reglas de precedencia o jerarquía de operadores son guías de acción, que le permiten a C calcular expresiones en el orden correcto. Cuando decimos que una evaluación o cálculo avanza de izquierda a derecha, nos estamos refiriendo a la asociatividad de los operadores.




Ejemplo 1:

El siguiente ejemplo contiene módulo (%), multiplicación, división, adición y sustracción.

Algebraicamente: z= pr mod q + w ÷ / x - y

En C: z = p * r % q + w / x – y;

1, 2, 4, 3, 5

Los números de las operaciones indican el orden en el cual C valorará o calculará los operadores. La multiplicación, el módulo y la división, serán evaluadas primero, en un orden de izquierda a derecha (es decir, se asocian de izquierda a derecha), en vista de que tienen precedencia mayor que la suma y la resta. La suma y la resta serán calculadas después. También ellas se evaluarán de izquierda a derecha.

No todas las expresiones con varios pares de paréntesis contienen paréntesis anidados. La expresión a * ( b + c) + c * (d + e) no contiene paréntesis anidados. En vez de ello, se dice que estos paréntesis están “en el mismo nivel”. En ese caso, se calcularán las expresiones del paréntesis primero y en un orden de izquierda a derecha

Ejemplo 2:

Se tiene la siguiente expresión polinómica de segundo grado y=2*5*5+3*5+7, se desea evaluarla y encontrar el resultado.

Solución:

Paso 1. y = 2 * 5 * 5 + 3 * 5 + 7;
2 * 5 = 10 (Multiplicación más a la izquierda primero)

Paso 2. y = 10 * 5 + 3 * 5 + 7;
10 * 5 = 50 (Multiplicación más a la izquierda)

Paso 3. y = 50 + 3 * 5 + 7;
3 * 5 = 15 (Multiplicación antes de la suma)

Paso 4. y = 50 + 15 + 7;
50 + 15 = 65 (Suma más a la izquierda)

Paso 5. y = 65 + 7;
65 + 7 = 72 (Última operación)


Operadores de Igualdad en Lenguaje C.

Como ya hemos visto, en Lenguaje C, los operadores algebraicos tienen la misma función, pero cambia la forma en la que se presentan.

Los operadores de igualdad no son la excepción y al hablar de estos nos referimos a igual (=) y no igual (≠). El resultado que generan los operadores de igualdad, puede ser un cero (falsa) o uno (verdadero).

Tabla de Operadores de Igualdad.


Ejemplo:

a = b , se muestra en Lenguaje C de la siguiente manera: a = = b;

y a ≠ b , se escribiría así: a ! = b.

Operadores Relacionales en Lenguaje C.

Los enunciados ejecutables de C, pueden llevar a cabo ACCIONES (como cálculos o salidas de datos), o tomar DECISIONES (evaluación de dos o más expresiones). Por ejemplo, podríamos necesitar tomar una decisión en un programa para determinar si la calificación de una persona en un examen es mayor o igual a 7, y si es así, imprimir el mensaje “Felicidades usted pasó”.

Los operadores relacionales tienen un mismo nivel de precedencia y se asocian de izquierda a derecha. En C, una condición puede ser cualquier expresión que genere un valor de verdad falso o verdadero.

Tabla de Operadores Relacionales.


Ejemplo
Dados a=1, b=2 y c=3 efectúe la siguiente expresión: 10 * a > c * 10 + b

Paso I. 10 * 1 > 3 * 10 + 2

Paso II. 10 > 30 + 2

Paso III. 10 > 32

Respuesta FALSO



Operadores Lógicos.

Se utilizan para evaluar dos o más relaciones, estos operadores son AND, OR y NOT, siempre devuelven como resultado un 0 (falso) o 1 (verdadero). Se evalúan primero las relaciones y luego se evalúan las operaciones entre sí tomando en cuenta los operadores lógicos.

El Operador AND.

Se evalúan primero las expresiones aritméticas, luego las relacionales y lógicas. Con el operador and, para que la respuesta sea verdadera, ambas relaciones deben ser verdaderas, de lo contrario, con una que sea falsa, el resultado de la evaluación es falso. En C se utiliza && para representar el operador AND.

Ejemplo 1:

3 > 5 and 3 < 10; en Lenguaje C se representa por 3 > 5 && 3 < 10;

Para este ejemplo, la primera relación da como resultado FALSO (pues 3 no es mayor que 5) mientras que la segunda relación da como resultado VERDADERO (3 es menor que 10). El siguiente paso es evaluar los resultados con el operador lógico, en otras palabras FALSO and VERDADERO esta evaluación da como resultado FALSO. Si el resultado de las dos evaluaciones diera como resultado VERDADERO, entonces el resultado seria VERDADERO.

Ejemplo 2:

5 > 2 and 10 ≥ 9; en Lenguaje C se representa por 5 > 2 && 10 >= 9;

En esta expresión las dos evaluaciones dan como resultado un valor VERDADERO, por lo que al evaluar VERDADERO and VERDADERO da como resultado VERDADERO.



El Operador OR.

En este caso, al evaluar las expresiones aritméticas y luego las relacionales y lógicas; para que la respuesta sea verdadera, una de las relaciones debe ser VERDADERA, si todas las evaluaciones son FALSAS, el resultado de la evaluación es falso. En C se utiliza || para representar el operador OR.



El Operador NOT.

Este operador tiene la función de cambiar el valor de verdad al penúltimo resultado obtenido de evaluar la expresión. Si al final se obtiene not (verdadero), el resultado será FALSO; y si es not (falso), el resultado será VERDADERO. En C se utiliza ! para representar dicho operador.



Ejemplo 1:

Not(99 >= 50 or 10 > = 75); en Lenguaje C se representa !( 99 >= 50 || 10 >= 75)

Al evaluar esta expresión, notamos que en la primera parte nos da un verdadero y en la segunda nos da un falso. De verdadero or falso obtenemos verdadero y finalmente not de verdadero nos da como resultado un FALSO.

Jerarquía general de operadores en Lenguaje C.


ASOCIATIVIDAD

En una expresión tal como 3 * 4 + 5 el compilador realiza primero la multiplicación - por tener el operador * prioridad más alta - y luego la suma, por tanto, produce 17. Para forzar un orden en las operaciones se deben utilizar paréntesis.

3 * (4 + 5) produce 27, ya que 4 + 5 se realiza en primer lugar.

La asociatividad determina el orden en que se agrupan los operadores de igual prioridad; es decir, de izquierda a derecha o de derecha a izquierda. Por ejemplo,

X – y + z se agrupa como ( x – y ) + z

Ya que – y +, con igual prioridad, tienen asociatividad de izquierda a derecha. Sin embargo,

x = y = z se agrupa como x = ( y = z ) dado que su asociatividad es de derecha a izquierda.



Uso de Paréntesis

Los paréntesis se pueden utilizar para cambiar el orden usual de evaluación de una expresión determinada por su prioridad y asociatividad. Las subexpresiones entre paréntesis se evalúan en primer lugar según el modo estándar y los resultados se combinan para evaluar la expresión completa. Si los paréntesis están anidados, es decir, un conjunto de paréntesis contenido en otro, se ejecutan en primer lugar los paréntesis más internos. Por ejemplo, considérese la expresión ( 7 * (10 – 5) % 3 ) * 4 + 9

La subexpresión (10 – 5) se evalúa primero, produciendo (7 * 5 % 3) * 4 + 9

A continuación se evalúa de izquierda a derecha la subexpresión (7 * 5 % 3) y obtenemos

(35 % 3) * 4 + 9 luego

2 * 4 + 9 donde se realiza la multiplicación y obtenemos 8 + 9 lo que produce un resultado final de 17.

Ejercicio 1.

A continuación se muestran expresiones algebraicas en base a las cuales usted deberá formular expresiones en C, utilizando los operadores aritméticos y tomando en cuenta la precedencia de operadores aritméticos.

1.) db+ac÷x+y 3.) d mod c (b + a) 5.) ax

2.) x+y ( m) n 4.) x + y + z ( w ÷ a) 6.) (x + y) dn



Ejercicio 2:

Si x=10, y=5 y z=1 encontrar el resultado de las siguientes expresiones:

a) x = y ______ b) z ≥ y ______ c) x ≤ y ________

Ejercicio 3:

Si x=2, y=1, c=4 y d=6 evalúe la expresión y diga el resultado.

A) x = y _____________ B) c ≠ d __________

Ejercicio 4. Evalúe las expresiones siguientes; use los mismos valores del ejemplo anterior:

A) ( y + 2 ) * c > = ( d + 1 ) * c R/ ______________

B) ( ( 2 / c ) * ( d / 2 ) ) + 5 < 10 R/ ______________



OPERADOR DE ASIGNACIÓN:

El operador = asigna el valor de la expresión derecha a la variable situada a su izquierda.

Ej. Pi = 3.1416
Raiz2 = 1.4142

Este operador es asociativo por la derecha, lo que permite realizar asignaciones múltiples. Así a = b = c = 45; equivale a a= (b = (c = 45)); en otras palabras, a, b y c toman el valor de 45.

Esta propiedad permite inicializar varias variables con una sola sentencia.

Int a, b, c;
A = b = c = 5;

TABLA DE OPERADORES DE ASIGNACIÓN:




Operadores de Incrementación y Decrementación

De las características que incorpora C, una de las más útiles son los operadores de incremento ++ y decremento -- . Los operadores ++ y --, denominados de incrementación y decrementación, suman o restan 1 a su argumento, respectivamente, cada vez que se aplican a una variable.

Entonces a++ equivale a a = a + 1

Estos operadores tienen la propiedad de que pueden utilizarse como sufijo o prefijo, el resultado de la expresión puede ser distinto, dependiendo del contexto.

Las sentencias ++n; y n++; tienen el mismo efecto; así como --n; y n--;

Sin embargo, cuando se utilizan como expresiones tales como

m = n++;

printf(“ n = %d”, n--) ; el resultado es distinto si se utilizan como prefijo.

++n produce un valor que es mayor en uno que el de n++, y --n produce un valor que es menor en uno que el valor de n--. Supongamos que

n = 8;

m = ++n; /* incrementa n en 1, dando 9, y lo asigna a m */

n = 9;

printf(“ n = %d”, --n); /*decrementa n en 1, dando 8 y lo pasa a printf( ) */

En este otro ejemplo:

int a = 1 , b;

b = a++; /* b vale 1 y a vale 2 */

int a = 1, b;

b = ++a; /* b vale 2 y a vale 2 */

Entonces, si los operadores ++ y -- están de prefijos, la operación de incremento o decremento se efectúa antes que la operación de asignación; si los operadores están de sufijos, la asignación se efectúa en primer lugar y la incrementación o decrementación a continuación.

domingo, 8 de julio de 2007

Clase 2: Tipos de datos.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Fecha: 09/07/07

Objetivos de la clase:
Al final de la clase los alumnos y alumnas serán capaces de:
1. Comprender y aplicar el concepto de datos
2. Comprender y aplicar lo operadores y conocer sus tipos.
3. Escribir expresiones con diferentes tipos de datos y operadores.

Conceptos:
DATO. Es la expresión general que describe los objetos con los cuales opera el programa. Por ejemplo, la edad y el domicilio de una persona, forman parte de sus datos.
Los datos se sitúan en objetos llamados variables.
Los tipos son: simples (no estructurados) y compuestos (estructurados).

Tipos de datos simples:



Tipos de datos compuestos:




Las Variables:
Las variables son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información. Son objetos cuyo valor puede ser modificado a lo largo de la ejecución de un programa.
Las variables llevan un nombre llamado Identificador. Este puede ser una cadena de letras y dígitos, empezando siempre con una letra. Por ejemplo: Pi, curso99, nom_alum, etc.
Los identificadores:
Los Identificadores son palabras creadas por los programadores para dar nombre a los objetos y demás elementos que necesitamos declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas, etc.
En C++ las letras mayúsculas se tratan como diferentes y distintas unas de otras. Por ejemplo, contador, Contador y CONTADOR son tres nombres de identificadores distintos.
Un identificador no puede ser igual a una palabra reservada, y no debe tener el mismo nombre que una función, ya sea definida por el usuario o de la biblioteca de C.
Constantes, operador, expresiones:
Constantes: Son objetos cuyo valor permanece invariable a lo largo de la ejecución de un programa. Una constante es la denominación de un valor concreto, de tal forma que se utiliza su nombre cada vez que se necesita referenciarlo.
Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos.
Expresiones. Son representaciones de un cálculo necesario para la obtención de un resultado.
Son un conjunto de operadores y operandos que producen un valor. Por ejemplo:
Cos (pi * X) + 12.56 * SQR(100)
Tipos de operadores:
Aritméticos (su resultado es un número): potencia, * , / , mod, div, + , -
Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <>
Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or
Alfanuméricos : + (concatenación)
Asociativos. El único operador asociativo es el paréntesis ( ) , el cual permite indicar en qué orden deben realizarse las operaciones. Cuando una expresión se encuentra entre paréntesis, indica que las operaciones que están dentro de ellos debe realizarse
Operadores aritméticos:



Operadores de relación:



Operadores logicos:



Funciones predefinidas:

lunes, 2 de julio de 2007

PRACTICA 1 : LOS ALGORITMOS

Profesor: Lic. Salomón Aquino

Objetivos: Al final de la clase los alumnos y alumnas serán capaces de:
• Comprender y aplicar el concepto de algoritmos..
• Elaborar algoritmos narrados y en pseudocodigo.

Algoritmo: es una serie de operaciones detalladas a ejecutar paso a paso, que conducen a la resolución de problemas.
Es un conjunto de reglas para resolver determinado problema describiendo de forma lógica su solución.
Cada una de las acciones de que consta un algoritmo es denominada sentencia y éstas deben ser escritas en términos de cierto lenguaje comprensible para el computador, que es el lenguaje de programación.
Para diseñar un algoritmo se debe comenzar por identificar las tareas más importantes para resolver el problema y disponerlas en el orden en que han de ser ejecutadas.
Criterios que debe satisfacer un algoritmo (características):
1. Entrada. Son cero o más cantidades las cuales son externamente sustituidas.
2. Salida. Al menos una cantidad es producida.
3. Exactitud/precisión. Cada instrucción debe ser clara y sin ambigüedad.
4. Finito. Terminará después de un número finito de pasos.
5. Eficiente. Cada instrucción puede ser verificada por una persona con una prueba manual que satisfaga los requerimientos planteados por el problema.

Tipos De algoritmos:
a) Algoritmos Narrados.
b) Algoritmos enPseudocódigo


Algoritmos narrados: Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

Ejemplo 1 Algoritmo para asistir a clases:
1. Levantarse
2. Bañarse
3. Vestirse
4. Desayunar
5. Cepillarse los dientes
6. Salir de casa
7. Tomar el autobús
8. Llegar a la universidad.
9. Buscar el aula
10. Ubicarse en un asiento

Ejemplo 2 Receta para hacer huevos picados
1. Se coloca aceite o margarina en la cacerola
2. Se pica cebolla, chile y tomate
3. Se ponen a freír, con un poco de sal
4. Cuando ya están fritos, se echan los huevos
5. Se bate y se deja cocer
6. Se sirve caliente en un plato

Ejercicios:
Elabore un algoritmo narrado para los casos siguientes:
1. Cambiar un vidrio roto de una ventana
2. Preparar una taza de te
1. Hacer palomitas de maíz
4. Poner la mesa para la comida
5. Ir al cine

Algoritmos en Pseudocódigo
Pseudo = falso. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras.
Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema.
Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación.
Se concibió para superar las dos principales desventajas de los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo.

Ejemplo 1
Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética.
inicio
leer (a, b, c, d)
producto <-- (a * b * c * d)
suma <-- (a + b + c + d)
media <-- (a + b + c + d) / 4
escribir (producto, suma, media)
fin

Ejercicios:
1. Escribe un algoritmo que pida tres números y luego escriba el promedio.
2. Escribe un algoritmo que calcule el área de un círculo de cualquier radio.
3. Escribe un algoritmo que lea una cantidad depositada en un banco y que calcule la cantidad final después de aplicarle un 20% de interés.
4. Diseñar un algoritmo que lea un valor en dolares y lo convierta a colones salvadoreños.
5. Leer dos numeros y encontrar la suma del doble del primero mas el cuadrado del segundo.

Clase 1: Generalidades de la programación de computadoras. 01/07/08

Objetivos de la clase:
• Al final de la clase los alumnos y alumnas serán capaces de:
– Comprender y aplicar los conceptos generales de la programación
– Aplicar el concepto de procesamiento de datos.
– Identificar la diferencia entre lenguajes de alto y bajo nivel.
– Definir y aplicar los conceptos de compiladores e intérpretes

Estructura de la clase:
• Conceptos básicos de programación.
• Los lenguajes de programación.

Conceptos básicos de programación:
• PROGRAMACION: Se llama programación a la creación de un programa de computadora
• PROGRAMA: Es un conjunto concreto de instrucciones que la computadora debe seguir para procesar datos y convertirlos en información.
• CARACTERISTICAS DE UN PROGRAMA:
– Debe ser confiable y funcional
– Advertir errores de entrada obvios y comunes
– Documentado adecuadamente
– Ser comprensible
– Codificado en el lenguaje apropiado
Conceptos básicos de programación:
• COMPUTADORA: Maquina electrónica que funciona casi a la velocidad de la luz y es capaz de procesar datos para convertirlos en información útil al ser humano.


Fig. 1 Procesamiento de datos.

Lenguajes de programación:
• Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente.
• Un lenguaje de programación permite a un programador especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Lexico.
Lenguajes de alto y bajo nivel:
• lenguaje de bajo nivel
• Es el tipo de lenguaje que cualquier computadora es capaz de entender. Se dice que los programas escritos en forma de ceros y unos están en lenguaje de máquina, porque esa es la versión del programa que la computadora realmente lee y sigue.
• lenguajes de alto nivel
• Son lenguajes de programación que se asemejan a las lenguas humanas usando palabras y frases fáciles de entender.
• En un lenguaje de bajo nivel cada instrucción corresponde a una acción ejecutable por el ordenador, mientras que en los lenguajes de alto nivel una instrucción suele corresponder a varias acciones.
Ejemplo de Lenguaje de bajo nivel:



Ejemplo de lenguaje de alto nivel:



Interpretes y compiladores:
• Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que haya escrito en lenguaje de alto nivel (código fuente) y lo convierten a código objeto (casi ejecutable).



Tarea:
• Investigar sobre las generaciones de los lenguajes de programación.