viernes, 21 de noviembre de 2014
jueves, 20 de noviembre de 2014
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.
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.
Leer más: http://www.monografias.com/trabajos14/recursividad/recursividad.shtml#ixzz3JeXBDVzI
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:
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
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
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: 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)
}
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)
}
martes, 4 de noviembre de 2014
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.
Suscribirse a:
Entradas (Atom)