Archivo de la categoría Programacion en C

Recursividad en C++ – Función explicada paso a paso

Ejemplo de cáculo de potencia para hacer una explicación paso a paso de la misma, un depurado paso a paso.

Aqui esta el documento pdf

http://www.megaupload.com/?d=DFXF6TW6

Etiquetas: ,

Manual y Ejercicios de C

Indice General

* 1. Compilación de un programa en C/C++
o 1.1 Creación, compilación y ejecución de un programa
+ 1.1.1 Creación del programa
+ 1.1.2 Compilación
+ 1.1.3 Ejecución del programa
o 1.2 El modelo de compilación de C
o 1.3 El preprocesador
o 1.4 Compilador de C
o 1.5 Ensamblador
o 1.6 Ligador
o 1.7 Algunas opciones útiles del compilador
o 1.8 Uso de las bibliotecas
o 1.9 Ejemplos
+ 1.9.1 Creación de una biblioteca estática
+ 1.9.2 Creación de una biblioteca compartida
o 1.10 Funciones de la biblioteca de UNIX
+ 1.10.1 Encontrando información acerca de las bibliotecas.
o 1.11 Ejercicios

* 2. Principios de C
o 2.1 Orígenes del C
o 2.2 Características de C
o 2.3 Estructura de un programa en C
o 2.4 Variables
+ 2.4.1 Definición de variables globales
+ 2.4.2 Lectura y escritura de variables
o 2.5 Constantes
o 2.6 Operadores Aritméticos
o 2.7 Operadores de Comparación
o 2.8 Operadores lógicos
o 2.9 Orden de precedencia
o 2.10 Ejercicios

* 3. Estructuras Condicionales
o 3.1 La sentencia if
o 3.2 El operador ?
o 3.3 La sentencia switch
o 3.4 Ejercicios

* 4. Iteración
o 4.1 La sentencia for
o 4.2 La sentencia while
o 4.3 La sentencia do-while
o 4.4 Uso de break y continue
o 4.5 Ejercicios

* 5. Arreglos y cadenas
o 5.1 Arreglos unidimensionales y multidimensionales
o 5.2 Cadenas
o 5.3 Ejercicios

* 6. Funciones
o 6.1 Funciones void
o 6.2 Funciones y arreglos
o 6.3 Prototipos de funciones
o 6.4 Ejercicios

* 7. Más tipos de datos
o 7.1 Estructuras
+ 7.1.1 Definición de nuevos tipos de datos
o 7.2 Uniones
o 7.3 Conversión de tipos (casts)
o 7.4 Enumeraciones
o 7.5 Variables estáticas
o 7.6 Ejercicios

* 8. Apuntadores
o 8.1 Definición de un apuntador
o 8.2 Apuntadores y Funciones
o 8.3 Apuntadores y arreglos
o 8.4 Arreglos de apuntadores
o 8.5 Arreglos multidimensionales y apuntadores
o 8.6 Inicialización estática de arreglos de apuntadores
o 8.7 Apuntadores y estructuras
o 8.8 Fallas comunes con apuntadores
o 8.9 Ejercicios

* 9. Asignación dinámica de memoria y Estructuras dinámicas
o 9.1 Uso de malloc, sizeof y free
o 9.2 calloc y realloc
o 9.3 Listas ligadas
o 9.4 Programa de revisión
o 9.5 Ejercicios

* 10. Tópicos avanzados con apuntadores
o 10.1 Apuntadores a apuntadores
o 10.2 Entrada en la línea de comandos
o 10.3 Apuntadores a funciones
o 10.4 Ejercicios

* 11. Operadores de bajo nivel y campos de bit
o 11.1 Operadores sobre bits
o 11.2 Campos de bit
+ 11.2.1 Portabilidad
o 11.3 Ejercicios

* 12. El preprocesador de C
o 12.1 Directivas del preprocesador
+ 12.1.1 #define
+ 12.1.2 #undef
+ 12.1.3 #include
+ 12.1.4 #if Inclusión condicional
o 12.2 Control del preprocesador del compilador
o 12.3 Otras directivas del preprocesador
o 12.4 Ejercicios

* 13. C, UNIX y las bibliotecas estándar
o 13.1 Ventajas del usar UNIX con C
o 13.2 Uso de funciones de bibliotecas y llamadas del sistema

* 14. Biblioteca
o 14.1 Funciones aritméticas
o 14.2 Números aleatorios
o 14.3 Conversión de cadenas
o 14.4 Búsqueda y ordenamiento
o 14.5 Ejercicios

* 15. Biblioteca
o 15.1 Funciones matemáticas
o 15.2 Constantes matemáticas

* 16. Entrada y salida (E/S) stdio.h
o 16.1 Reportando errores
+ 16.1.1 perror()
+ 16.1.2 errno
+ 16.1.3 exit
o 16.2 Flujos
+ 16.2.1 Flujos predefinidos
o 16.3 E/S Basica
o 16.4 E/S formateada
+ 16.4.1 printf
+ 16.4.2 scanf
o 16.5 Archivos
+ 16.5.1 Lectura y escritura de archivos
o 16.6 sprintf y sscanf
+ 16.6.1 Petición del estado del flujo
o 16.7 E/S de bajo nivel o sin almacenamiento intermedio
o 16.8 Ejercicios

* 17. Manejo de cadenas
o 17.1 Funciones básicas para el manejo de cadenas
+ 17.1.1 Búsqueda en cadenas
o 17.2 Prueba y conversión de caracteres
o 17.3 Operaciones con la memoria
o 17.4 Ejercicios

* 18. Acceso de Archivos y llamadas al sistema de directorios
o 18.1 Funciones para el manejo de directorios
+ 18.1.1 Busqueda y ordenamiento de directorios: sys/types.h,sys/dir.h
o 18.2 Rutinas de manipulación de archivos: unistd.h, sys/types.h, sys/stat.h
+ 18.2.1 Permisos de accesos a archivos
+ 18.2.2 Estado de un archivo
+ 18.2.3 Manipulación de archivos: stdio.h, unistd.h
+ 18.2.4 Creación de archivos temporales:
o 18.3 Ejercicios

* 19. Funciones para el tiempo
o 19.1 Funciones básicas para el tiempo
o 19.2 Ejemplos de aplicaciones de funciones del tiempo.
+ 19.2.1 Ejemplo 1: Tiempo (en segundos) para hacer algún cálculo.
+ 19.2.2 Ejemplo 2: Inicializar la semilla de un número aleatorio.
o 19.3 Ejercicios

* 20. Control de procesos: ,
o 20.1 Ejecutando comandos de UNIX desde C
o 20.2 execl()
o 20.3 fork()
o 20.4 wait()
o 20.5 exit()
o 20.6 Ejercicios

* 21. Compilación de Programas con Archivos Múltiples
o 21.1 Archivos Cabezera
o 21.2 Variables y Funciones Externas
+ 21.2.1 Alcance de las variables externas
o 21.3 Ventajas de Usar Varios Archivos
o 21.4 Como dividir un programa en varios archivos
o 21.5 Organización de los Datos en cada Archivo
o 21.6 La utilería Make
+ 21.6.1 Programando Make
o 21.7 Creación de un Archivo Make (Makefile)
o 21.8 Uso de macros con Make
o 21.9 Ejecución de Make

* 22. Comunicación entre procesos (IPC Interprocess Communication), PIPES
o 22.1 Entubando en un programa de C
+ 22.1.1 popen() Tubería formateada
+ 22.1.2 pipe() Tubería de bajo nivel

* 23. Sockets
o 23.1 Creación y nombrado de sockets
o 23.2 Conectando sockets de flujo
+ 23.2.1 Transferencia de datos en un flujo y cerrado

Aqui teneis el enlace para descarga el pdf.

http://www.megaupload.com/?d=LU00J8WL

¿Que lenguaje de programacion es mejor Aprender?

Todas las veces que a mi me han hecho esta pregunta, siempre he respondido lo mismo; el lenguaje que hoy en dia es mejor aprender es C (si, c puro y duro).

Se que mucha gente me dira que si estoy loco, que si C ya esta desfasado, que no hace uso de la gran programacion orientada a objetos, etc, etc. A lo que yo respondo, si aprendes C bien aprendido, y despues aprendes bien los conceptos de programacion orientada a objetos, con poquisimo esfuerzo ya sabes programar C++, PHP, javascript, entre otros.

Luego si quieres avanzar y ponerte al dia con las nuevas tecnologias de programacion existentes hoy en dia, no te creas que te va a ser muy dificil dar el siguiente paso y aprender C# y java (estos son practicamente lo mismo, salvo algunas pequeñas diferencias, faltaria mas…Wink.

Tambien si sabes C, puedes hacer tus programas para windows y para linux.

Asi que, como conclusion a dia de hoy, el mejor lenguaje para aprender a programar es C.

Segun mi opinion. Wink

Usar una dll escrita en dev-cpp en visual basic .net

Como hace unos dias prometi que escribiria un ejemplo de como usar una dll escrita en c con el entorno de programacion dev-cpp aqui pongo lo prometido.

Codigo escrito en c, dllmain.c

#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

DLLIMPORT __stdcall void hola ()
{
printf("hola\n"Wink;
}

DLLIMPORT __stdcall int suma(int a, int b)
{
    return (a+b);
}

DLLIMPORT __stdcall char* cadena(char* s)
{
          strcat(s,"b"Wink;
          return (s);
          }

BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;

      case DLL_PROCESS_DETACH:
        break;

      case DLL_THREAD_ATTACH:
        break;

      case DLL_THREAD_DETACH:
        break;
    }

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

codigo dll.h

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

DLLIMPORT __stdcall void hola (void);
DLLIMPORT __stdcall int suma(int, int);
DLLIMPORT __stdcall char* cadena(char*);

#endif /* _DLL_H_ */

Y a continuacion pongo el codigo que llama a la dll desde visual basic .net

Imports System.Runtime.InteropServices
Module Module1
    Private Declare Function cadena Lib "c:\dev-cpp\Proyecto1.dll" (ByVal s As String) As String
    Private Declare Sub hola Lib "c:\dev-cpp\Proyecto1.dll" ()
    Private Declare Function suma Lib "c:\dev-cpp\Proyecto1.dll" (ByVal a As Integer, ByVal b As Integer) As Integer
    Sub Main()
        Dim i As Integer
        i = suma(5, 4)
        hola()
        Console.WriteLine("Resultado: " & i)
        Dim ss As String = "a"
        Console.WriteLine("Resultado: " & cadena(ss))
        Console.ReadKey()

    End Sub

End Module

Etiquetas: , , , ,