jueves, 20 de noviembre de 2014

Estructuras dinámicas de memoria mediante: pilas, colas y listas.





Arreglo


Estructura de datos



Una pila (stack en inglés) es una estructura de datos de tipo LIFO (del inglés Last In First Out,último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud deocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura.Representación gráfica de una pilaPara el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca unobjeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apliado(denominado TOS, top of stack en inglés). La operación retirar permite la obtención de este elemento,que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser elnuevo TOS.Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobreuna pila de platos, y una operación retirar a retirarlo.Las pilas suelen emplearse en los siguientes contextos:Evaluación de expresiones en notación postfija (notación polaca inversa).Reconocedores sintácticos de lenguajes independientes del contextoImplementación de recursividad.EjemploForma principal.

Apuntador: definición, declaración y ejemplo en C.


Recursividad

La recursividad es una técnica de programación importante. Se utiliza para realizar una llamada a una función desde la misma función. Como ejemplo útil se puede presentar el cálculo de números factoriales. Él factorial de 0 es, por definición, 1. Los factoriales de números mayores se calculan mediante la multiplicación de 1 * 2 * ..., incrementando el número de 1 en 1 hasta llegar al número para el que se está calculando el factorial.

If (n < = 1)
return (n);
lofib = 0 ;
hifib = 1 ;
for (i = 2; i < = n; i ++)
{
x = lofib ;
lofib = hifib ;
hifib = x + lofib ;
} /* fin del for*/
return (hifib) ;


Leer más: http://www.monografias.com/trabajos14/recursividad/recursividad.shtml#ixzz3JeXBDVzI

Parámetros por valor y por referencia

Parámetros por referencia a funciones

En C todos los parámetros se pasan por valor. Esto tiene en principio dos inconvenientes:
•          No se pueden modificar variables pasadas como argumentos
•          Si se pasa como parámetro una estructura, se realiza un duplicado de ella, con lo que se pierde tiempo y memoria

Sin embargo, se puede pasar un puntero como argumento a una función. El puntero no se puede alterar, pero sí el valor al que apunta:

void incrementa_variable (int* var)
{
   (*var)++;
}

main()
{
   int x = 1;
   incrementa_variable (&x);       /* x pasa a valer 2 */
}


En el ejemplo anterior, habia que poner paréntesis en (*var)++ porque el operador ++ tiene más precedencia que la desreferencia (el asterisco). Entonces *var++ sería como escribir*(var++), que no sería lo que queremos.

En el pasaje por referencia se pasa a la función las direcciones de memoria de las variables en cuestión en lugar de su valor. A diferencia del paso por valor, aquí no se realizan copias de las variables sino que se trabaja sobre la dirección de memoria que pasamos, lo que nos permite modificar el valor de la variable en cuestión.


Veamos esto con el mismo ejemplo que usamos antes, pero usando punteros:




Luego hacemos el llamado a la función de la misma manera, pero pasando las direcciones de memoria de x e y:



Obteniendo lo siguiente al compilar el programa y ejecutarlo:



Donde vemos que esta vez sí se modificó el contenido de las variables en cuestión.

Definición de Función y Estructura de una función: prototipo, llamada y definición.


Ejemplo
/* mpar.c: Permite probar la función par. */ 
#include<stdio.h> 
int par(int); // o int par(int numero); 
int main() 
 int numero, resultado; 
 printf(“Introduzca un número:\n”); 
 scanf(“%i”,&numero); 
 resultado=par(numero); 
 if (resultado==1) 
 printf(“Es par.\n”); 
 else 
 printf(“Es impar.\n”); 
 return(0); 
/* Función par: Devuelve un valor indicando si un 
número entero es par o no. */ 
int par(int numero) 
 if((numero%2)==0) 
 return(1); 
 else 
 return(0); 
}
 Estraido de: http://www.juntadeandalucia.es/averroes/~41009822/inf/fp/EjemplosProgramacionFuncionesEnC.pdf

Break, Continue y goto

 Sentencia break

La instrucción de salto break se usa para interrumpir (romper) la ejecución normal de un bucle, es decir, la instrucción break finaliza la ejecución de un bucle y, por tanto, el control del programa se transfiere (salta) a la primera instrucción después del bucle.


Ejemplo:
#include <stdio.h>
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
break;
/* En el caso de que n sea un cero,
el bucle se interrumpe. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );

printf( "Suma: %d", a );
return 0;
}

Sentencia goto

La instrucción de salto goto se puede usar en un programa, para transferir incondicionalmente el control del mismo a la primera instrucción después de una etiqueta, o dicho de otra forma, al ejecutar una instrucción goto, el control del programa se transfiere (salta) a la primera instrucción después de una etiqueta.

Ejemplo:
#include <stdio.h>
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
goto etiqueta_1;
/* En el caso de que n sea un cero,
el control de programa salta a la
primera instrucción después de
etiqueta_1. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );

etiqueta_1:
printf( "Suma: %d", a );
return 0;
}

Sentencia continue

La instrucción de salto continue siempre se usa para interrumpir (romper) la ejecución normal de un bucle. Sin embargo, el control del programa no se transfiere a la primera instrucción después del bucle, como sí hace la instrucción break, es decir, el bucle no finaliza, sino que, finaliza la iteración en curso, transfiriéndose el control del programa a la condición de incremento de contadores y después a la condición de salida del bucle, para decidir si se debe realizar una nueva iteración o no.


Ejemplo:
#include <stdio.h>
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
continue;
/* En el caso de que n sea un cero,
la iteración en curso del bucle
se interrumpe aquí. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 );

printf( "Suma: %d", a );
return 0;
}

Tomado de:http://programacion1-teoria.wikispaces.com/C.+Sentencias+de+Control#C.3

Estructuras de control de flujo anidadas

Puede colocar instrucciones de control dentro de otras instrucciones de control, por ejemplo un bloque If...Then...Else dentro de un bucle For...Next. Cuando una instrucción de control se coloca dentro de otra, se dice que está anidada.

Referencia: http://msdn.microsoft.com/es-es/library/8y82wx12.aspx
Ejemplo de un diagrama de flujo con estructuras de control anidadas.

Definición y ejemplo de: Estructuras: secuencia, selectivas (if, switch), repetitivas (for, while, do-while).






Definición de estructuras de control de flujo en la programación estructurada.


Definición y ejemplo de: Contador, bandera.

Contador:
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se
produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones
internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento
o decremento del mismo. La inicialización consiste en asignarle al contador un valor inicial. Se situará antes y
fuera del bucle.
Ejemplo de contadores
• Cada vez que alguien es atendido en la taquilla de un banco se puede almacenar en un contador de
personas atendidas.
• Cada vez que se vende una entrada a un juego de béisbol se puede almacenar en un contador de entradas
vendidas.
• Cada vez que se registra un  nuevo usuario en una página web se puede almacenar en un contador de usuarios registrados.
Banderas 

Una bandera, también denominada interruptor o conmutador es una variable que puede tomar uno de dos valores (verdadero o falso) a lo largo de la ejecución del programa y permite comunicar información de una parte a otra del mismo. 

int primo; 

primo = 0; 

primo = 1; 




por ejemplo: 

#include <stdio.h> 

int main() 


int contador = 0; 
int acumulador = 0; 
int bandera=1; 
while(bandera==1) 

contador = contador + 1; //incrementa en uno al contador 
acumulador = acumulador + contador; // acumula cont 1+2+3.. 
if(contador==10)bandera=0; //para que se salga de while 

printf("%d",acumulador); //imprime la suma(acumulador) 

}


Definición de Proposición y bloque.




Precedencia de operadores.


Expresión.


Operadores: aritméticos, lógicos, relacionales, incremento y decremento, manejo de bits.


Tipos de datos, variables, constantes.


Realiza operaciones de entrada y salida de datos.



Reconocimiento del entorno de trabajo


Estructura general de un programa en lenguaje C


martes, 4 de noviembre de 2014

Linea Del tiempo del lenguaje C



Definición de lenguaje C


C es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.

Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicación.

domingo, 2 de noviembre de 2014

Presentacion


Conalep Temixco plantel 36


Informatica, 3105,  Matutino 


 Módulo: Programacion Basica


Docente : Nallely Quintana 


 Estudiante: Carlos Gutierrez Martinez 


 Blog de Programación Básica.