Está en la página 1de 42

JONATHAN YANEZ

PROYECTO DE PROGRAMACION
EN C

1
Contenido
1.Capítulo I.................................................................................................................................................. 3
1.1Fundamentos de programación.......................................................................................................... 4
2.Capitulo II.................................................................................................................................................. 6
2.1.Programas básicos............................................................................................................................. 7
3.Capítulo III............................................................................................................................................... 10
3.1.Estructuras de control selectivas..................................................................................................... 11
4.Capitulo IV.............................................................................................................................................. 14
1.Estructuras de control repetitivas....................................................................................................... 16
5.Capítulo V............................................................................................................................................... 23
5.1.Arreglos en 1 y 2 Dimensiones......................................................................................................... 24
6.Capítulo VI.............................................................................................................................................. 26
6.1.Métodos de ordenamiento.............................................................................................................. 27
7.Capítulo VII............................................................................................................................................. 35
7.1.Funciones......................................................................................................................................... 36
8.Capítulo VII............................................................................................................................................. 38
8.1.Archivos........................................................................................................................................... 39

2
1. Capítulo I

3
1.1 Fundamentos de programación
Algoritmo
Desde el punto de vista informático un algoritmo es cualquier procedimiento computacional bien
definido que parte de un estado inicial y un valor o un conjunto de valores de entrada, a los
cuales se les aplica una secuencia de pasos computacionales finitos, produciendo una salida o
solución.

Programación
En el ámbito de la informática, la programación refiere a la acción de crear programas o
aplicaciones a través del desarrollo de un código fuente, que se basa en el conjunto de
instrucciones que sigue el ordenador para ejecutar un programa.

Código
En el contexto de la programación, el código es el conjunto de instrucciones que un desarrollador
ordena ejecutar a un computador. Dicho código está estructurado según las guías
correspondientes a un lenguaje de programación específico.

Código Fuente
Por código fuente se entiende todo texto legible por un ser humano y redactado en un lenguaje de
programación determinado. El objetivo del código fuente es crear normas y disposiciones claras
para el ordenador y que este sea capaz de traducirlas a su propio lenguaje.

Compilador
Es un programa que traduce el código fuente de un lenguaje de alto nivel a un lenguaje maquina

Programación Modular

4
Se divide en módulos o partes independientes cada una de las cuales ejecuta una única actividad
y es independiente de los otros módulos.

Recursividad
Es una técnica, muy empleada en la programación informática y consiste en que la función se
llame así mismo.

Entorno de desarrollo
Un entorno de desarrollo en el mundo del software y la tecnología es un conjunto de
procedimientos y herramientas utilizadas por los desarrolladores para codificar, generar, depurar,
actualizar, integrar, testear, validar y ejecutar programas.

5
2. Capitulo II

6
2.1. Programas básicos
Printf
Imprime un mensaje por pantalla utilizando una “cadena de formato” que incluye las
instrucciones para mezclar múltiples cadenas en la cadena final a mostrar por pantalla.

Scanf
La función scanf permite leer varios tipos de datos de una sola vez, tales como enteros, números
decimales o cadenas de caracteres.

Ejemplos
#include <stdio.h>
int main()
{
printf("\n Hola grupo 4I11 ");
printf("\n Jonathan Yanez ");

return 0;
}

#include <stdio.h>
int main()
{
int numero1 ,numero2 ,suma ;
printf("\n Este programa suma dos numeros enteros ");
printf("\n Escribe un numero ");
scanf("%d", & numero1 );
printf("\n Escribe el segundo número ");
scanf("%d", & numero2 );
suma=numero1 + numero2 ;
printf("\n El resultado de la suma es %d" ,suma);

7
return 0;
}

#include <stdio.h>
int main()
{
float calificacion1, calificacion2, calificacion3, promedio;
printf("\n Este programa calcula el promedio ");
scanf("%f", & calificacion1 );
printf("\n promedio de calificacion2 ");
scanf("%f", & calificacion2 );
printf("\n promedio de calificacion3");
scanf("%f", & calificacion3 );
promedio=(calificacion1 + calificacion2 + calificacion3 ) /3;
printf("\n el resultado del promedio es %f", promedio );
return 0;
}

#include <stdio.h>
int main()
{
float radio, pi, volumen, area ;
printf("\n Escribe el radio ");
scanf("%f", & radio );
printf("\n Escribe pi ");
scanf("%f", & radio );
printf("\n Calcula el area ");
volumen=(4 / 3.0) * pi * radio * radio ;
area=(4 * pi * radio * radio );
printf("\n El resultado del volumne es %f", volumen );
printf("\n El resultado del area es %f", area );

return 0;
}

8
#include <stdio.h>
int main()
{
float K, C ;
printf("\n Este programa convierte de grados K a C ");
printf("\n Escribe la temperatura en F ");
scanf("%f", & F );
C=(F - 32 ) + 5/9;
printf("\n La temperatura en C es %f", C );

return 0;
}

#include <stdio.h>
int main()
{
float pulgadas, cm;
printf("\n Este programa convierte de pulgadas a cm ");
printf("\n Escribe las pulgadas ");
scanf("%f", & pulgadas );
cm=pulgadas * (2.54/1);
printf("\n La conversion de pulgadas es %f", cm );

return 0;

#include <stdio.h>
int main()
{
float s, n ;
printf("\n Este programa suma de 1 hasta n ");
printf("\n Escribe la cantidad de n ");

9
scanf("%f", & n );
s=(n*(n+1)/2);
printf("\n la suma de 1 hasta n es %f", s);

return 0;
}

3. Capítulo III

10
3.1. Estructuras de control selectivas
If-Else
La sintaxis de un condicional if-else, es en principio similar a la del condicional if, pero
adicionando una nueva "estructura" que es el else, el cual indica la acción o conjunto de acciones
a llevar a cabo, en caso de que la condición del if no se cumpla.

Switch Case
Esta estructura se suele utilizar en los menús, de manera que según la opción seleccionada se
ejecuten una serie de sentencias.

Ejemplos
#include <stdio.h>

main() /* Escribe bebé, niño o adulto */


{
int edad;
printf("Introduce tu edad: ");
scanf("%d",&edad);
if (edad<1)
printf("Lo siento, te has equivocado.");
else if (edad<3) printf("Eres un bebé");
else if (edad<13) printf("Eres un niño");
else printf("Eres adulto");
}

#include <stdio.h>

main() /* Simula una clave de acceso */


{
int usuario,clave=18276;

11
printf("Introduce tu clave: ");
scanf("%d",&usuario);
if(usuario==clave)
printf("Acceso permitido");
else
printf("Acceso denegado");
}
#include <stdio.h>

main() /* Escribe el día de la semana */


{
int dia;
printf("Introduce el día: ");
scanf("%d",&dia);
switch(dia){
case 1: printf("Lunes"); break;
case 2: printf("Martes"); break;
case 3: printf("Miércoles"); break;
case 4: printf("Jueves"); break;
case 5: printf("Viernes"); break;
case 6: printf("Sábado"); break;
case 7: printf("Domingo"); break;
}
return 0;

#include <stdio.h>
#include <math.h>
main()
{
int n;
scanf("%d",&dia);
printf("\n ESte programa te escribe si un numero es par o impar ");
printf("\n EScribe el numero ");
scanf("%d", & n);
if(n/2==0)
printf("\n El numero %d es par ", n );
printf("\n El numero %d es impar ", n );

return 0;
}

12
#include <stdio.h>
int main()
{
float saldo, deposito, retiro;
saldo = 0;
printf("Cuanto deposita: ");
scanf("%f", &deposito);
saldo = saldo + deposito;
printf("Cuanto retira: ");
scanf("%f", &retiro);
if (retiro <= saldo)
{
saldo = saldo - retiro;
printf ("Su nuevo saldo es: %f", (saldo));
}
else{
printf("No hay suficiente saldo");
}
}

#include <stdio.h>

int main()
{
float compra, descuento, total;
printf("Monto de la compra: ");
scanf("%f",&compra);
if (compra < 500)
{
descuento = 0;
}
if (compra >= 500 && compra < 1000)
{
descuento= compra * .10;
}
if (compra >= 1000 && compra < 2000)
{
descuento = compra * .20;
}
if (compra >= 2000)

13
{
descuento = compra * .30;
}
total = compra - descuento;
printf("Su descuento es: %.2f", descuento);
printf("\nEl total a pagar es: %.2f", total);
}

4. Capitulo IV

14
15
1. Estructuras de control repetitivas
For
La instrucción for explota la capacidad del ordenador para repetir procesos y para contar.
Muchas veces esta instrucción se puede reemplazar por otras instrucciones o estructuras de tipo
repetición.

Do while
La estructura do while es otra estructura repetitiva del lenguaje C, la cual ejecuta al menos una
vez su bloque repetitivo, a diferencia del while o del for que podían no ejecutar el bloque. Esta
estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se
ejecutará el bloque repetitivo.

Ejemplos

#include <stdio.h>

main() /* Muestra un menú si no se pulsa 4 */


{
char seleccion;
do
{
printf("1.- Comenzar\n");
printf("2.- Abrir\n");
printf("3.- Grabar\n");
printf("4.- Salir\n");
printf("Escoge una opción: ");
seleccion=getchar();
switch(seleccion)
{
case '1':printf("Opción 1");
break;
case '2':printf("Opción 2");
break;
case '3':printf("Opción 3");
}

}while(seleccion!='4');
return 0;
}

16
#include <stdio.h>

int main()
{
int i, n, suma;

printf("\n Este programa suma los numeros pares ");


printf("\n Escriba hasta que numero desea sumar: ");
scanf("%d", &n);
suma=0;
for(i=2;i<=n;i=i+2)
{
suma=suma+i;
}
printf("\n El resultado de la suma de pares desde 2 hasta %d es: %d ", n,
suma);
return 0;

#include <stdio.h>

int main()
{
int i, n, suma;

printf("\n Este programa suma los numeros impares ");


printf("\n Escriba hasta que numero desea sumar: ");
scanf("%d", &n);
suma=0;
for(i=1;i<=n;i=i+2)
{
suma=suma+i;
}
printf("\n El resultado de la suma de impares desde 1 hasta %d es: %d ", n,
suma);
return 0;
}

17
#include <stdio.h>

int main()
{
int i, n, multiplicacion;
printf("\n Este programa imprime las tablas de multiplicar ");
printf("\n Escriba un numero: ");
scanf("%d", &n);
printf("\n La tabla de multiplicar es: ");
multiplicacion=0;
for(i=1;i<=10;i++)
{
multiplicacion=n*i;
printf("\n %d x %d = %d", n, i, multiplicacion);

return 0;
}

Resultado

Este programa imprime las tablas de multiplicar


Escriba un numero: 7

La tabla de multiplicar es:


7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

...Program finished with exit code 0


Press ENTER to exit console

18
#include <stdio.h>

int main()
{
int i, n, residuo;
printf("\n Este programa calcula los residuos ");
printf("\n Escriba un numero: ");
scanf("%d", &n);
printf("\n Los residuos son: ");
residuo=0;
for(i=1;i<=10;i++)
{
residuo=n%i;
printf("\n %d / %d = %d", n, i, residuo);

return 0;
}

Resultado

Este programa calcula los residuos


Escriba un numero: 30

Los residuos son:


30 / 1 = 0
30 / 2 = 0
30 / 3 = 0
30 / 4 = 2
30 / 5 = 0
30 / 6 = 0
30 / 7 = 2
30 / 8 = 6
30 / 9 = 3
30 / 10 = 0

...Program finished with exit code 0


Press ENTER to exit console.

19
Programa que muestre un menú de opciones. Se realizará la opción elegida y se volverá a
mostrar el menú. El programa termina cuando el usuario elige la opción 5 del menú.

#include "stdio.h"
int main()
{
int saldo=0, deposito=0, retiro=0, opcion=0;
printf("Introduzca saldo inicial: ");
scanf("%d", &saldo);
while(opcion != 5)
{

printf("===Bienvenido al banco===");
printf("\nElija una opcion");
printf("\n1. Depositar");
printf("\n2. Retirar");
printf("\n3. Ver saldo");
printf("\n4. Abonar intereses");
printf("\n5. Salir");
printf("Su opcion: ");
scanf("%d", &opcion);
if (opcion == 1)
{

printf("Monto a depositar: ");


scanf("%d", &deposito);
saldo = saldo + deposito;
}
if (opcion == 3)
{

printf("\nSu saldo es: %d", saldo);


}
if (opcion == 5)
{

printf("\nGracias por usar este programa");


}
}
}

20
#include <stdio.h>
int main ()
{
int i,j,n=2;
int A[n][n], suma[i][j],B[n][n];
printf("\n Este programa efectura la suma de dos matrices nxn");
printf("\n Ingrese las entradas de la matriz");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\n Entrada A %d %d ",i+1,j+1);
scanf("%d",&A[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
suma[i][j]=A[i][j]+A[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\n Entrada B %d %d ",i+1,j+1);
scanf("%d",&B[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
suma[i][j]=A[i][j]+B[i][j];
}
}
printf(" \n La suma de dos matrices es \n ");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d", suma[i][j]);
}
printf("\n");

21
}
return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i;
n=5;
int arreglo [n];
printf("\n Este programa llena un arreglo de numeros aleatorios y lo
despliega en pantalla");
for (i=0;i<n;i++)
{
arreglo[i]=rand();
}
printf("\n los elementos del arreglo son");
for (i=0;i<n;i++)
{
printf("\n Elemento %d = %d",i+1, arreglo[i]);
}

return 0;
}

22
5. Capítulo V

23
5.1. Arreglos en 1 y 2 Dimensiones
Un arreglo es una secuencia de datos del mismo tipo, los datos del arreglo se llaman elementos y
se enumeran consecutivamente.

Ejemplos
1D
#include <stdio.h>
int main()
{
int x[10];
int i,suma;
printf ("\n Ingrese 10 números:\n");
for (i=0;i<10;i++)
scanf("%d",&x[i]);//lleva & pq es componente a
suma=0;
for (i=0;i<10;i++)
suma+=x[i];
printf("\n El resultado de la suma es = %d ",suma);
printf("\n El resultado del promedio es = %d ",suma/10);
return 0;
}

#include <stdio.h>
int main()
{
#define TAMANIO
int lista [TAMANIO] = {10,8,5,8,7,4,4,4,6,8};
int indice = 0;

printf("\tLista\n");
while(indice <10)
{
printf("\n Calificacion del alumno %d es %d", indice+1,
lista[indice]);
indice +=1; //analogo a imdice = indice + 1;
}

printf("\n");
return 898;

24
}
2D
#include <stdio.h> /* Declaración librerías*/
#include <stdlib.h>
#include <string.h>

int main(){
int contador;//Variable contadora de ciclos
char nombre[5][20]; //Arreglo que guardara los nombres

//Ciclo en el que solicitamos los nombres a ingresar


for(contador=0;contador<5;contador++){
printf("Ingresa un nombre: ");
gets(nombre[contador]);
}

//Ciclo que imprime los nombres guardados


printf("\nNombres ingresados: \n");
for(contador=0;contador<5;contador++){
puts(nombre[contador]);
}

return 0;
}

#include <stdio.h>

main() /* Rellenamos una matriz */


{
int x,i,numeros[3][4];
/* rellenamos la matriz */
for (x=0;x<3;x++)
for (i=0;i<4;i++)
scanf("%d",&numeros[x][i]);
/* visualizamos la matriz */
for (x=0;x<3;x++)
for (i=0;i<4;i++)
printf("%d",numeros[x][i]);
}

25
6. Capítulo VI

26
6.1. Métodos de ordenamiento
La ordenación o clasificación es el proceso de organizar datos en algún orden o secuencia
específica, tal como creciente o decreciente, para datos numéricos, o alfabéticos, para datos de
caracteres. Los métodos de ordenación más directos son los que se realizan en el espacio
ocupado por el array.

Método de burbuja
Se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre si
hasta que estén todos ordenados. Supongamos que se desea clasificar en orden ascendente el
vector o lista.

Ejemplos

#include <stdio.h>
#define MAX 100

int main() {
int total;
int vNumeros[MAX];
int j, i, temp;

printf ("Cuantos numeros deseas ordenar? ");


scanf("%d", &total);

/* Lee y almacena los datos en el arreglo */


for (i = 0; i < total; i++) {
printf ("%d: ", i + 1);
scanf ("%d", &vNumeros[i]);
}

/* Método de búrbuja */
for (i = 0; i < (total - 1); i++) {
for (j = i + 1; j < total; j++) {
if (vNumeros[j] < vNumeros[i]) {
temp = vNumeros[j];
vNumeros[j] = vNumeros[i];
vNumeros[i] = temp;
}
}
}

/* Números ordenados */

27
printf ("Los números ordenados son:\n");
for (i = 0; i < total; i++) {
printf("%d | ", vNumeros[i]);
}

printf("\n");

Resultado

¿Cuantos números deseas ordenar? 15


1: 65472
2: 98354
3: 92734
4: 93654
5: 87453
6: 64539
7: 94745
8: 74539
9: 83745
10: 68504
11: 98665
12: 76576
13: 76905
14: 46555
15: 103426
Los números ordenados son:
46555 | 64539 | 65472 | 68504 | 74539 | 76576 | 76905 | 83745 | 87453 | 92734 |
93654 | 94745 | 98354 | 98665 | 103426 |

...Program finished with exit code 0


Press ENTER to exit console.

28
#include <stdio.h>
#include <conio.h>
#define TAM 9

int main()
{
int a[TAM] = { 9, 8, 0, 2, 5, 1, 3, 2, 9};
int i, pasada, aux;

printf("Datos en el orden inicial:\n\n");


for(i=0;i<=TAM-1;i++)
printf("%4d",a[i]);
for (pasada=1;pasada<=TAM-1;pasada++) /*pasadas*/
for (i=0;i<=TAM-2;i++)
if (a[i]>a[i+1]) /*comparación */
{
/*intercambio*/
aux=a[i];
a[i] = a[i+1];
a[i+1] = aux;
}
printf( "\n\nDatos ordenados en sentido ascendente:\n\n" );
for (i=0;i<=TAM-1;i++ )
printf("%4d", a[i]);
printf("\n");
getch();
return 0;
}

29
Ordenamiento por inserción
Consiste en insertar un elemento en el vector en una parte ya ordenada de este vector y comenzar
de nuevo con los elementos restantes. Por ser utilizado generalmente por los jugadores de cartas
se le conoce también por el método de la baraja. Por ejemplo, supóngase que se tiene la lista
desordenada
#include <stdio.h>
int arreglo[10] = {3,10,1,8,15,5,12,6,5,4}; /*Declaracion e inicialización
del arreglo. */

/*imprimearreglo - Funcion que muestra por pantalla


el contenido de un arreglo.*/
void imprimearreglo() {
int i; for (i=0;i<10;i++)
printf("Elemento %d: %d \n",i,arreglo[i]);
}

void main() /*Funcion Principal del Programa*/


{
int i,j,k;
imprimearreglo();
for (i=1; i<10; i++) {
j=i;
while (j>=0 && arreglo[j]<arreglo[j-1]) {
k=arreglo[j];
arreglo[j]=arreglo[j-1];
arreglo[j-1]=k;
j--;
}
}
printf("\n\nArreglo ordenado \n\n");
imprimearreglo();
}

Resultado

30
Elemento 0: 3
Elemento 1: 10
Elemento 2: 1
Elemento 3: 8
Elemento 4: 15
Elemento 5: 5
Elemento 6: 12
Elemento 7: 6
Elemento 8: 5
Elemento 9: 4

Arreglo ordenado

Elemento 0: 1
Elemento 1: 3
Elemento 2: 4
Elemento 3: 5
Elemento 4: 5
Elemento 5: 6
Elemento 6: 8
Elemento 7: 10
Elemento 8: 12
Elemento 9: 15

#include<stdio.h>

31
#define N 5
void mostrarLista(int*);
int main(int argc, char** argv){
int arreglo[N]={5,2,4,1,3};
int i,clave,j;
//Recorrer el arreglo
for (i = 1; i < N; i++)
{
clave = *(arreglo+i);
j = i-1;
//Comparar el valor selecionado con todos los valores anteriores
while (j >= 0 && *(arreglo+j) > clave)
{
//Insertar el valor donde corresponda
*(arreglo+j+1) = *(arreglo+j);
j = j-1;
}
*(arreglo+j+1) = clave;
mostrarLista(arreglo);
}
mostrarLista(arreglo);
return 0;
}
//Función para mostrar estado de la lista
void mostrarLista(int *lista){
int i;
for (i=0; i< N; i++){
printf("%d ",*(lista+i));
}
printf("\n");;

Ordenamiento Rápido (Quicksort).

32
El ordenamiento rápido (quicksort en inglés) es un algoritmo basado en la técnica de divide y
vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.
Esta es la técnica de ordenamiento más rápida conocida. El algoritmo fundamental es el
siguiente.

#include <stdio.h>

void qs(int lista[],int limite_izq,int limite_der)

{
int izq,der,temporal,pivote;
izq=limite_izq;
der = limite_der;
pivote = lista[(izq+der)/2];
do{
while(lista[izq]<pivote && izq<limite_der)izq++;
while(pivote<lista[der] && der > limite_izq)der--;
if(izq <=der)
{
temporal= lista[izq];
lista[izq]=lista[der];
lista[der]=temporal;
izq++;
der--;
}
}while(izq<=der);
if(limite_izq<der){qs(lista,limite_izq,der);}
if(limite_der>izq){qs(lista,izq,limite_der);}
}
void quicksort(int lista[],int n)
{
qs(lista,0,n-1);
}
int main(int argc, const char * argv[])
{
int lista[] ={100,56,0,1,-45,2,46,5,9,6,67,23,5};
int size = sizeof(lista)/sizeof(int);
printf("Lista Desordenada \n");
for (int i=0; i<size; i++)
{
printf("%d",lista[i]);

33
if(i<size-1)
printf(",");
}
printf("\n");
quicksort(lista,size);
printf("Lista Ordenada \n");
for (int i=0; i<size; i++)
{
printf("%d",lista[i]);
if(i<size-1)
printf(",");
}
return 0;

Ordenamiento por selección


Consiste en encontrar el menor de todos los elementos del vector e intercambiarlo con el que está
en la primera posición. Luego el segundo más pequeño, y así sucesivamente hasta ordenarlo
todo.
#include <stdio.h>
int main()
{
int minimo=0,i,j;
int swap;
for(i=0;i<n-1;i++)
{
minimo=i;
for(j=i+1 ; j<n ; j++)
if (x[minimo] > x[j])
minimo=j;
swap=x[minimo];
x[minimo]=x[i];
x[i]=swap;
}

34
7. Capítulo VII

35
7.1. Funciones
Funciones
Una función en C se distingue sólo por su nombre. Dos funciones con igual nombre y con
diferente número y tipo de parámetros se considera una definición múltiple, y por tanto un error.
Las funciones suelen encapsular una operación más o menos compleja de la que se deriva un
resultado.

Ejemplos
#include <stdio.h>

void funcion(void); /* prototipo */


int num=5; /* variable global */
main() /* Escribe dos números */
{
int num=10; /* variable local */
printf("%d\n",num);
funcion(); /* llamada */
}

void funcion(void)
{
printf("%d\n",num);
}

Funciones recursivas
En un programa de C, se puede llamar a cualquier función de forma recursiva, es decir, cualquier
función se puede llamar a sí misma. El número de llamadas recursivas viene limitado por el
tamaño de la pila.

36
Ejemplos
#include <stdio.h>
unsigned long long factorial(unsigned long long numero) {
// Si hemos llegado a 1, detenemos la recursión
if (numero <= 1)
return 1;
return numero * factorial(numero - 1); // Restar 1
}

int main(void) {
unsigned long long numero = 20;
unsigned long long factorialDelNumero = factorial(numero);
printf("El factorial de %llu es %llu", numero, factorialDelNumero);
}

El factorial de 20 es 2432902008176640000

#include <stdio.h>
long fibonacci (int);
int main()
{
int n= 30;
printf("El %dº número de Fibonacci es %ld\n", n,
fibonacci(n));
}
long fibonacci(int n)
{
if (1 == n || 2 == n)
{
return 1;
} else
{
return (fibonacci(n-1) + fibonacci(n-2));
}
}

37
8. Capítulo VII

38
8.1. Archivos
En c, un archivo es un concepto lógico que puede aplicarse a muchas cosas desde archivos de
disco hasta terminales o una impresora. Se asocia una secuencia con un archivo especifico
realizando una operación de apertura.

Ejemplos

#include <stdio.h>
#include <stdlib.h>
int main()
{
char cadena1 [] = "Aprender a programar (linea 1)\n";
char cadena2 [] = "requiere esfuerzo (linea 2)\n";
char cadena3 [] = "y dedicacion (linea 3)";
FILE* fichero;
fichero = fopen("cursoAF1.txt", "wt");
fputs(cadena1, fichero);
fputs(cadena2, fichero);
fputs(cadena3, fichero);
fclose(fichero);
printf("Proceso completado");
return 0; // Ejemplo aprenderaprogramar.com
}
Aprender a programar (linea 1)
requiere esfuerzo (linea 2)
y dedicacion (linea 3)

39
Un programa que pida al usuario que teclee frases, y las almacene en el fichero
“frases.txt”. Acabará cuando el usuario pulse Intro sin teclear nada. Después deberá mostrar
el contenido del fichero.

#include <stdio.h>
#include <string.h>

int main()
{
FILE* ficheroU;
char frase[61];
int i=0;

ficheroU = fopen("frases.txt", "wt");


printf(" PROGRAMA para ESCRIBIR y almacenar FRASES.\n"
"Cuando quiera salir, simplemente pulse \"Intro\".\n\n");
do
{
if (i == 0)
puts("\nEscriba una FRASE:\n(o pulse \"Intro\"). \n");
else
puts("\nEscriba otra FRASE:\n(o pulse \"Intro\"). \n");
gets(frase);
fprintf(ficheroU, "%s\n", frase);
i++;
}
while (strcmp(frase, "") != 0);
printf("He aqui lo que escribio:\n\n");
fclose(ficheroU);

ficheroU = fopen("frases.txt", "rt");


do
{
fgets(frase, 60, ficheroU);
puts(frase);
}
while (!feof(ficheroU));
getchar();
printf("...Hasta luego!");
getchar();
fclose(ficheroU);

return 0;
}

40
Un programa que pregunte un nombre de fichero y muestre en pantalla el contenido de ese
fichero, haciendo una pausa después de cada 25 líneas, para que dé tiempo a leerlo. Cuando el
usuario pulse intro, se mostrarán las siguientes 25 líneas, y así hasta que termine el fichero.
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fichero;
char linea[100], nombre[40];
int i=0;
do
{
printf("\nNombre de fichero: ");
gets(nombre);

fichero = fopen(nombre, "rt");

if (fichero == NULL)
{
printf("No existe el fichero\n\n");
i++;
if (i == 5)
exit(1);
}
}
while (fichero == NULL);
while (!feof(fichero))
{
for (i=0; i<25; i++){
fgets(linea, 100, fichero);
if (!feof(fichero))
{
puts(linea);
}
}
getchar();
}
fclose(fichero);
return 0;
}

41
· Título: Cómo programar en C/C++ y Java (4ª Ed.)
· Autor: Harvey M. Deitel, Paul J. Deitel
· Número de páginas: 1152
· Idioma: español
· ISBN: 9789702605317
· Editorial: Pearson Educación
· Año de edición: 2004

LENGUAJE DE PROGRAMACION C
Traducido delicion en ingles de
THE C PROGRAMMING LANGUAGE
Prohibida la reproducción total o parcial de esta obra, per cualquier meitin in
método
DERECHOS RESERVADOS 1991 pecto a la segunda edición en el per
PRENTICE HALL HISPANGAMERICANA, SA
Men de la Camara Nacional de la India Ball Eng. Num. 1524
Original language edition trashed by
CMCMXCVI by Pl
Ab Highs Beend
IMPRESO EN MEXICO PRINTED IN MEXICO

42

También podría gustarte