Introducción
El lenguaje C fue inventado por Dennis Ritchie en 1972 cuando trabajaba, junto con
Ken Thompson,
en el diseño del sistema operativo UNIX.
Compiladores del lenguaje C:
- Borland: C++: Ejecutar: Bcc32 Turbo C++: Viene con IDE integrado: Ejecutar Tcc
Vers obsoleta gratuita en: [Link]
- G++ para Linux: Ejecutar: gcc
- MS Visual C ++: Crear el proyecto (File – New – Project - Win32 Console
aplication) Crear New
Works pace y luego crear C++ Source file. Microsoft Visual C++ 6: New: C++ Source
code
- Dev C++: Compilador de software
Características
Es un lenguaje de propósito genera, de medio nivel. Permite programar a alto nivel y
a bajo nivel.
Es un lenguaje portátil. Los programas escritos en C son fácilmente transportables a
otros sistemas.
Pasos para crear y ejecutar un programa en C:
1º. Escribirlo en un editor: Cualquier editor que genere ficheros de texto: serán los
ficheros fuentes.
2º. Compilarlo en un compilador: El compilador produce ficheros objetos a partir de
los ficheros
fuentes. Los ficheros objetos contienen código máquina.
3º. Enlazarlo(“Linkar”): El enlazador produce un fichero ejecutable a partir de los
ficheros objetos.
4º. Ejecutarlo.
Ejercicio introducción al lenguaje C
// --PRIMER PROGRAMA EN C --
#include <stdio.h>
main ()
{
printf ("Hola mundo");
}
//-SEGUNDO PROGRAMA-
#include <stdio.h>
#include <conio.h>
main()
{
clscr() //en libreria conio - limpia pantalla
printf("hola mundo");
getch(); //en libreria stdio - pausa
}
Getchar
getchar () es una función que espera la pulsación de la tecla return. se encuentra en
la librería
stdio.h, por lo tanto, siempre que la utilicemos es necesario incluir la línea: #include
<stdio.h>
Los programas C están compuestos de unidades de programa llamadas funciones,
las cuales son
los módulos básicos del programa.
TERCER PROGRAMA C
#include <stdio.h> // Son como los diccionarios que va a emplear
main ()
{
printf ("_Tercer programa en C\n");
printf ("Pulsa la tecla RETURN para terminar.");
getchar ();
}
Secuencias de escape
- Los caracteres empezados por \ se les llaman secuencias de escape. Representan
caracteres no imprimibles. Hemos visto \n para salto de línea.
- Otras secuencias de escape:
\r para el retorno de carro, \t para el tabulador, \b para retroceso, \" para la comilla, \'
para el
apóstrofe y \\ para la barra diagonal invertida.
Tercer ejemplo
#include <stdio.h>
main ( ) /* Tercer ejemplo */
{
int horas, minutos; //se declaran las variables
horas = 3; //se asignan las variables
minutos = 60 * horas;
printf ("Hay %d minutos en %d horas.", minutos, horas);
getchar ();
}
//int horas, minutos; -> es una sentencia de declaración y las variables
son de tipo entero (integer)
Comentarios
/*Comentarios: todo aquello que vaya entre un /* y un */ es ignorado En TC++ también se
usa: //
Variables
int – Valor número entero.
flotante - valor de punto flotante, con una parte fraccional.
doble - un valor de punto flotante de doble precisión.
char - un solo carácter.
vacío - Tipo de valor para fines especiales.
Declaración: La declaración de variables deben ir al principio de la función,
asignación: Una vez declarada la variable ya puede usarla almacenando algo en
ella. El símbolo % avisa a la función printf que se va a imprimir una variable en esta
posición; la letra d informa que la variable a imprimir es entera (digit). /*
Tipos de datos
Existen cinco tipos de datos básicos en C:
Tipo Descripción [Link] bytes Rango
char carácter 1 0 a 255
int entero 2 -32768 a 32767
float coma flotante 4 aprox. 6 dígitos de precisión
coma flotante doble
double 8 aprox. 12 dígitos de precisión
precisión
void sin valor 0 sin valor
Secuencias de escape
\b retroceso
\f salto de página
\n nueva línea
\r retorno de carro
\t tabulación horizontal
\" comillas (")
\' apóstrofo (')
\0 carácter nulo
\\ barra invertida (\)
\v tabulación vertical
\a alerta (bell, campanilla)
\ddd constante octal (ddd son tres dígitos como máximo)
\xddd constante hexadecimal (ddd son tres dígitos como máximo)
Tipo entero
Es un número sin parte fraccionaria.
Las constantes enteras se pueden escribir de uno de los tres modos siguientes:
- Decimal: escribiendo el número sin empezar por 0 (excepción sel propio 0). Ej: 1,
0, -2.
- Hexadecimal: empezando el número por 0x. Ejemplos: 0xE, 0x1d, 0x8.
- Octal: empezando el número por 0. Ejemplos: 02, 010.
Tipos float y double
Tienen parte real y parte fraccionaria (num. decimal). Los dos tipos son casi iguales
pero
El tipo double tiene doble precisión que el tipo float.
La sintaxis correcta de las constantes de estos dos tipos es:
[signo] [dígitos] [.] [dígitos] [exponente [signo] dígitos]
donde:
- signo -> es + o -;
- dígitos -> es una secuencia de dígitos;
- . -> es el punto decimal;
- exponente -> es E o e.
Los elementos que están entre [] son opcionales, pero el número no puede empezar
por e o E, ya
que el compilador lo interpretaría en este caso como un identificador y no como un
número.
Algunos ejemplos de constantes de este tipo: 1.0e9, -3E-8, -10.1.
Tipo void
Significa sin valor, sin tipo.
Uno de los usos de void se puede observar al comparar estos dos programas:
#include <stdio.h> #include <stdio.h>
main () void main (void)
{ {
printf ("Versión 1."); printf ("Versión 2.");
getchar (); getchar ();
} }
Al poner void entre los paréntesis de la definición de una función, se define a ésta
como función que no tiene argumentos. Si se pone delante indica que la función no
retorna nada (procedure).
PROGRAMA EJEMPLO
#include <stdio.h>
void main (void)
{
int i = 1;
char c = 'c';
float f = 1.0;
double d = 1e-1;
printf (" i = %d\n c = %c\n f = %f\n d = %lf\n", i, c, f,
d);
getchar ();
}
Salida
Comprueba que la salida de este
programa es:
i = 1 (entero)
c = c (chart)
f = 1.000000 (flotante)
d = 0.100000 (doble prec.)
Clase 5: Clase 6: MODIFICADORES DE TIPO
Un modificador de tipo se usa para alterar el significado del tipo base para que se
ajuste más
precisamente a las necesidades de cada momento.
Modificador Descripción Tipos a los se les puede aplicar
signed con signo int, char
unsigned sin signo int, char
long largo int, char, double
short corto int, char
Preprocesador: Directivas #include y #define
#include: Al encontrar una línea de #include seguido de un nombre de archivo, el
preprocesador la sustituye por el archivo.
#define: Crea una macro que luego puede ser sustituida en el código fuente
#if, #else, #endif: Compilación de una parte del código condicional
Clase 6: FUNCIONES DE E/S: Printf(), scanf() y
Getchar()
Scanf. Lee datos de la entrada estándar y almacena en una variable:
Sintaxis: printf ("cadena de control", lista de argumentos); Ej: Scanf ( "% d", &a);
Printf: Para mostrar el valor almacenado en una variable:
Sintaxis: scanf ("cadena de control", lista de argumentos); printf ( "El valor a% d", a);
Scanf puede obtener varias variables a la vez y de distintos tipos. ejemplo:
scanf ("%d %s %f", &var_entera, var_caracteres, &var_float);
Especificadotes o argumentos
Codigo Formato o variable
%c Char – 1 caracter simple
%d o %i Entero decimal
%e Flotante o doble notación científica
%f Flotante o doble decimal con signo
%g Usa el mas corto de los anteriores
%o Entero octal sin signo
%s Cadena de varios caracteres
%u Entero decimal sin signo
%x Entero hexadecimal sin signo
% Signo de tanto por ciento: %
%p Pointer, puntero de dirección
%n puntero a entero con nº caracteres
Ejemplos
Ejemplos:
Sentencia printf () Salida
(":%f:", 123.456) :123.456001:
(":%e:", 123.456) :1.234560e+02:
(":%g:", 123.456) :123.456:
(":%-2.5f:", 123.456) :123.45600:
(":%-5.2f:", 123.456) :123.46:
(":%5.5f:", 123.456) :123.45600:
(":%10s:", "hola") :hola:
(":%-10s:", "hola") :hola :
(":%2.3s:", "hola") :hol:
(":%x:", 15) :f:
(":%o:", 15) :17:
(":%05d:", 15) :00015:
(":abc:%n", &var_int) :abc:
Caracteres acentuados
Alt+160 =á - Alt+130 =é - Alt+161 =í - Alt+162 =ó Alt+163 =ú
Programas ejemplos
/* Programa que lee números enteros de teclado /* para las funciones printf() y getchar() */
hasta que se introduce un 0. /*Mientras el caracter sea distinto de INTRO
El programa no muy útil pero sí instructivo imprimelo */
#include <stdio.h> /* para scanf */ int main (void) #include <stdio.h> int main(void)
{ {
int x; do int c;
{
while ((c = getchar()) != '\n')
scanf ("%d", &x);
} while (x != 0); printf ("%c", c);
} return 0;
}
Operadores
Operadores
Aritméticos : + mas - menos * por / división % resto Relacionales: >= mayor o igual != diferente de… = = igual
que… Lógicos: NO negación: !, Y AND lógico: && O OR lógico: ||
Incrementales:
++ Incremento: i=i+1 à i++
-- Decremento: i=i-1 à i -
+ = - = /= Asignación compleja
¬ SUMA à SUMA+NUM à Primero se suma y luego se asigna.
Otros operadores:
& Dirección a un objeto * Direccionamiento indirecto [ ] Direccionamiento indexado Sizeof( ) Tamaño de la variable , reunir
varias expresiones en una función
EJERCICIOS
#include <stdio.h> // ok edu
main ()
{
int nume1,nume2,suma=0; printf ("Suma en C.\n");
printf ("Escriba el primer numero:"); scanf("%d",&nume1);
printf ("Escriba el segundo numero:"); scanf("%d",&nume2);
suma=nume1+nume2;
printf ("%d mas %d son %d",nume1, nume2,suma);
printf("\n");
printf ("Pulsa RETURN para terminar."); scanf("%d"); //o
getchar()
}
Clase 7: OPERACIONES ARIMETICAS
Condiciones o comparaciones lógicas:
Puede ser cualquier prueba de un valor contra otro. Por ejemplo:
a > 0 -> Verdadero si contiene un valor mayor que cero;
b < 0 -> Verdadero si B contiene un valor inferior a cero.
§ == 0 -> Prueba de igualdad
Para probar si algo es igual a otra cosa se utiliza la secuencia de caracteres == y no =.
El siguiente programa pide dos números flotantes en formato “%f” flotante . Luego calcula la suma, diferencia, producto y cociente
y los valores los imprime en formato “%g” flotante corto y espera a que el usuario pulse 8 .
#include <stdio.h> /* para utilizar: printf (), getchar () */
void main (void) // ->ok en Borland TurboC++ Unit1 - en C++
funciona con main (void)
{
float numero1, numero2;
float suma, diferencia, producto, cociente; printf("Escribe primer
numero:");
scanf("%f",&numero1); printf("Escribe segundo numero:");
scanf("%f",&numero2);
suma = numero1 + numero2; diferencia = numero1 - numero2; producto =
numero1 * numero2; cociente = numero1 / numero2;
printf ("OPERACIONES ARITMETICAS CON DOS NUMEROS:");
printf ("\n\nNumero 1: %g", numero1); //muestra numero 1 en
formato %g flotante corto printf ("\nNumero 2: %g", numero2);
//muestra numero 2 en formato %g flotante corto printf ("\n\nSuma: %g",
suma);
printf ("\nDiferencia: %g", diferencia); printf ("\nProducto: %g",
producto); printf ("\nCociente: %g", cociente);
printf ("\n\nPulsa la tecla RETURN para terminar programa."); getchar ();
}
CALCULO DE LA LONGITUD Y AREA DEL CIRCULO
#include <stdio.h> // printf (), getchar ()
main (void)
{
const float pi = 3.141592; float radio, longitud, area;
printf("Escribe el radio: "); scanf("%f",&radio);
longitud = 2 * pi * radio; area = pi * radio * radio;
printf ("Calculo de la longitud y area de un circulo de
radio %g:\n\n", radio); printf ("LONGITUD: %f\n", longitud);
printf ("AREA : %f\n", area); getchar ();
}
Clase 8: TAMAÑO DE LOS ESPECIFICADORES
Este programa muestra el tamaño de los tipos más usados en C en el sistema en el
cual se ejecuta.
#include <stdio.h> /* printf(), getchar() */
void main (void)
{
printf ("TAMAÑO EN BYTES DE ALGUNOS TIPOS \n");
printf (" Tipo Tamaño (en bytes)\n"); printf (" \n");
printf (" char %d \n", sizeof (char));
printf (" int %d \n", sizeof (int)); printf (" short int %d \n", sizeof (short int)); printf (" long int %d \n", sizeof
(long int)); printf (" float %d \n", sizeof (float)); printf (" double %d \n", sizeof (double));
printf (" long double %d \n", sizeof (long double)); printf ("\nPulsa la tecla RETURN para salir.\n");
getchar ();
Funciones comunes:
Abs Retorna el valor absoluto Pow Eleva a la potencia
Asin Retorna el arco seno Rand Retorna valor aleatorio
Cos Retorna del coseno Srand Pone punto de inicio para Rand
Exit Cierra archivos y termina el programa Sqrt Raíz cuadrada
Exp Eleva a la potencia d Strcat Concatena cadenas de texto
Fabs Retorna el valor absoluto Strcmp Compara cadenas de texto
Fclose Cierra el archivo Strcomp Compara cadenas de texto
Feof Indica si ha llegado al final del archivo StrCpy Copia cadenas de texto
Fgetc/getc Lee un carácter del archivo Strlen Cuenta caracteres del texto
Floor Redondea al valor entero System Pasa la orden al sistema Op.
Fmod Retorna el resto Tan Retorna la tangente
Fopen Abre el archivo Time Retorna segundos transcurridos
Fputc Escribe un carácter en el archivo Toupper Convierte letra a mayúsculas
Log Retorna logaritmo natural Fabs Retorna valor absoluto
Funciones para cadenas de caracteres:
Están en el fichero cabecera: string.h
STRLEN(): Cuenta al num de caracteres de la cadena
STRCAT(): Concatena 2 cadenas
STRCMP(): Compara 2 cadenas
STRCPY(): Copia una cadena en otra
STRCHR() y STRSTR(): Busca un carácter o un string.
Toupper():Convierte letra a mayúscula
#include <stdio.h> #include <string.h> int main(void)
{
char *string = "OFIMEGA"; printf("%d\n", strlen(string)); return 0;
}
#include <string.h> #include <stdio.h> int main(void)
{
char destination[25]; char *source = " States";
strcpy(destination, "United"); strncat(destination, source, 7);
printf("%s\n", destination); return 0;
}
Streams – Cin - Cout:
En C++ a diferencia de C las entradas y salidas se leen desde streams ( canal, flujo o
corriente)
Para su uso hay que incluir: #include <iostream.h> entonces de pueden introducir y sacar
datos con
Cin: Lee datos (por defecto del teclado)
Cout: Imprime el texto entre comillas tal y como está escrito.
>> : operador de inserción acompaña a cin
<< : operador de extracción acompaña a cout