miércoles, 7 de abril de 2010

ESTRUCTURA DE DATOS

Estructura de Datos :Repetitivas y Secuencial

•Estructuras Repetitivas

Las estructuras repetitivas o iterativas son aquellas en las que las acciones se ejecutan un número determinado de veces y dependen de un valor predefinido o el cumplimiento de una determinada acción.

Características

•Las estructuras repetitivas permiten representar aquellas acciones que pueden descomponerse en otras sub-acciones primitivas.

•Es una estructura con una entrada y una salida en la cual se repite una acción un número determinado o indeterminado de veces

•En una Estructura Repetitiva Mientras (While) se repite una acción mientras se cumpla la condición que controla el bucle. La característica principal de esta estructura es lque la condición es evaluada siempre antes de cada repetición.

•La estructura repetitiva Desde(FOR) permite que las instrucciones las cuales contiene en su ámbito, se ejecuten un número de veces determinado.

Entre las estructuras repetitivas se encuentran:

Mientras (while), es aquélla en que el cuerpo del bucle se repite mientras se cumple una determinada condición, su representación gráfica es:

Repetir (repeat), esta estructura se ejecuta hasta que se cumpla una condición determinada que se comprueba hasta el final del bucle. Se ejecuta al menos una vez.

articulo

ARTICULO.

Las computadoras están diseñadas para aquellas aplicaciones en las cuales una operación o conjunto de ellas debe repetirse muchas veces. Un tipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones por un número determinado de veces, a esta estructura se la llama estructura repetitiva.

Se debe tener en cuenta lo siguiente para la construcción de una estructura repetitiva:

El cuerpo del bucle.-el grupo de instrucciones que se van a repetir

Las sentencias de iniciación.- son instrucciones que inicializan contadores acumuladores

La condición para la terminación del bucle.- expresiones lógicas que controlan la terminación del bucle.

martes, 6 de abril de 2010

jerarquia de operadores 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 <> 5 && 3 <> 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 < operador =" asigna" pi =" 3.1416" raiz2 =" 1.4142" a =" b" c =" 45;" a=" (b" c =" 45));" a =" b" c =" 5;" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg8XCs8tzfD5ZhLmiYWQdThIzOaH_Ak0swuQfzbwqRNSyRbrDEA1-y4xfFA8ziSQE8SIjLJGG34xXFeuuTZkXO7r-il39Qwnb-7ph8sOYsqPEH2zLGEd3s6ZJbN0TOXy2ksCfVOPyUylo/s1600-h/asignacion.JPG">

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.

como diseñar algoritmos

Explique las dos técnicas utilizadas comúnmente para diseñar algoritmos.

Las dos herramientas utilizadas comúnmente para diseñar algoritmos son:

Pseudocodigo: Pseudocódigo es un lenguaje artificial e informal que ayuda a los programadores a desarrollar algoritmos. El Pseudocódigo es similar al lenguaje cotidiano; es cómodo y amable con el usuario, aunque no es realmente ni verdadero lenguaje de computadora. No se ejecutan en las computadoras, mas bien sirven para ayudar al programador a razonar un programa antes de intentar escribirlo en algún lenguaje. Un programa ejecutado en pseudocódigo puede ser fácilmente convertido en un programa en C++, si es que está bien elaborado.

Diagrama de Flujo: Un diagrama de flujo es la representación gráfica de un algoritmo.

También se puede decir que es la representación detallada en forma gráfica de como

deben realizarse los pasos en la computadora para producir resultados.

Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos

en la computadora), se relacionan entre sí mediante líneas que indican el orden en que se

deben ejecutar los procesos.