program ac i on code block
TRANSCRIPT
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Introduccion a los ComputadoresIntroduccion a la programacion en C
CNM-130
Departamento de MatematicasFacultad de Ciencias Exactas y Naturales
Universidad de Antioquia
Copyleft «2009. Reproduccion permitida bajo los
terminos de la licencia de documentacion libre GNU.
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Contenido
1 Introduccion
2 Principios basicos
3 Variables y tipos
4 Operaciones basicas
5 Ejemplos
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Origen del lenguaje C
Desarrollado entre 1969 y 1973 por Dennis Ritchieen los Laboratorios Bell
Proviene del lenguaje de programacion B disenadopor Ken Thompson, una version simplificada deBCPL
Dennis Ritchie - Ken Thompson
Utilizado para implementar el sistema operativoUnix en la computadora PDP-11 de la empresa DEC
Primera implementacion de Unix en lenguajeensamblador
En 1973 se reescribe el kernel de Unix en C
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Origen del lenguaje C
En 1978, Brian Kernighan y Dennis Ritchie publicanla primera edicion de The C Programming Language
Entre 1983 y 1989 se define el estandar ANSIconocido como ANSI C, ampliamente usado portodos los compiladores
En 1979, Bjarne Stroustrup agrega a C las clases (Ccon clases)
En 1983 se agregan elementos de la programacionorientada a objetos y pasa a llamarse C++
En 1985 se publica la primera edicion de The C++Programming Language
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Aspectos generales
Lenguaje de nivel “medio”:
Elementos de lenguajes de bajo nivel (ensamblador): acceso adirecciones de memoria, registros, manipulacion de bits, etc.
Elementos de lenguajes de alto nivel: abstraccion, codigo mas sencillo ycomprensible, portable (valido para diversas maquinas), etc.
Lenguaje “estructurado”:
Todo programa es posible escribirlo con solo tres estructuras de control:
Secuencial Condicional Repetitiva
Modularidad: un programa se puede dividir en modulos o subprogramas(funciones) con el fin de hacerlo mas legible y manejable
Lenguaje de proposito general:
Gramatica sencilla y corta
Pocas restricciones
Sintaxis flexible
Estructuras de control de flujo
Variedad de operadores
Pocas palabras reservadas
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Proceso de creacion
Proceso de creacion del codigo fuente
Con un editor de texto usted crea un archivo con instrucciones dellenguaje (programa fuente)
Las instrucciones obedecen a unas reglas de construccion y sintaxispropia del lenguaje
Proceso de compilacion
El compilador transforma el codigo fuente en un programa objeto
El “linkeador” (linker) combina el programa objeto en un archivoejecutable
El programa ejecutable no se creara si el compilador encuentra erroresen el programa fuente
Proceso de ejecucion
Se ejecuta el programa y se evaluan los resultados
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Primer programa en C
holamundo.c
#include<stdio.h>
main(){printf("Hola maldito mundo\n");
}
stdio.h: standard input output (entrada y salida estandar), archivo quecontiene las definiciones de macros, constantes, declaraciones de funciones, etc.
main(): funcion principal que controla todo el programa
{: inicio del programa
}: final del programa
printf(‘‘Hola maldito mundo\n’’); funcion de salida de C definida enstdio.h, imprime el texto entre comillas.
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Compilando con gcc
holamundo.c
#include<stdio.h>
main(){printf("Hola maldito mundo\n");
}
invitado:∼$> mkdir Cinvitado:∼$> cd Cinvitado:∼/C$> lsinvitado:∼/C$>
invitado:∼$> gedit hola.cinvitado:∼/C$> lshola.cinvitado:∼/C$>
invitado:∼$> gcc hola.cinvitado:∼/C$> lsa.out hola.cinvitado:∼/C$>
invitado:∼$> ./a.outhola maldito mundoinvitado:∼/C$>
invitado:∼$> gcc hola.c -o holainvitado:∼/C$> lsa.out hola hola.cinvitado:∼/C$>
invitado:∼$> ./holahola maldito mundoinvitado:∼/C$>
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Entorno de Desarrollo Integrado
Code::Blocks: editor para el desarrollo de programas en lenguaje C++,distribuido bajo licencia GPL. Incluye compilador gcc
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Tipos de datos
Tipos de datos disponibles en C:
char
int
float
double
void
Modificadores de tipo: alteran el rango de los tipos de datos basicos
Modificadores de longitud:
short: aplicable a numeros enteros, por defecto los enteros son short
long: aplicable a numeros enteros y reales, duplica el rango
Modificadores de signo:
signed: con signo
unsigned: sin signo
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Tipos de datos
Tipo Descripcion bits Rango
unsigned char caracter sin signo 8 [0, 255]
char caracter 8 [−128, 127]
short int entero corto 16h−215, 215 − 1
ishort int entero sin signo 32
h0, 232 − 1
iint entero 32
h−231, 231 − 1
iunsigned long entero largo sin signo 32
h0, 232 − 1
ilong entero largo 32
h−231, 231 − 1
ifloat Real simple precision 32
h3.4× 10−38, 3.4× 1038
idouble Real doble precision 64
h1.7× 10−308, 1.7× 10308
idouble Real doble largo 80
h3.4× 10−4932, 3.4× 104932
ivoid Sin valor 0 Sin rango
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Identificadores y palabras reservadas
Identificadores
Nombres que hacen referencia a los objetos que componen el programa:constantes, variables, funciones, etc.
Reglas para los identificadores:
El primer caracter debe ser una letra o el caracter de subrayado
El primer caracter puede ir seguido de un numero variable de dıgitosnumericos, letras o caracteres de subrayado
No pueden utilizarse espacios en blanco, ni sımbolos de puntuacion
C distingue mayusculas y minusculas
No pueden utilizarse palabras reservadas del lenguaje
Palabras reservadas
auto const else goto return switchbreak continue enum if sizeof typedefcase default float int static voidchar double for long struct while
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Declaracion de variables en C
Componentes de una variable en C:
tipo: define el conjunto de valores posibles a almacenarse (int, float, etc.)
valor: valor especificado por el tipo, almacenado en la variable (3, "no")
identificador: nombre que permite acceder a la direccion de memoria dondese encuentra almacenado el valor (distancia, nota 3, temp)
Especificador de almacenamiento: determina el lugar y la forma en quese almacena el objeto cuando se ejecuta el programa (static)
Formato de declaracion de una variable en C:
[almacenamiento] [modificador] tipo identificador;
Ejemplos:
int nota;
char letra;
float radio;
long double masa;
static int temp;
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Inicializacion de variables en C
Formato de inicializacion de una variable en C:
identificador = valor;
Ejemplos:
nota = 5;
letra = "x";
radio = 3.1416;
masa = 198910000000;
temp = 875;
Declaracion e inicializacion simultanea:
int nota = 5;
char letra = "x";
float radio = 3.1416;
long double masa = 198910000000;
static int temp = 875;
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Salida de datos
printf: imprime datos en pantalla
Sintaxis:
printf("cadena de formato", arg1, arg2,...,argn);
Cadena de formato:
Texto
Caracteres de control
Especificadores de formato
Ejemplo con texto:
mensaje.c
#include<stdio.h>
main(){printf("Estamos en feria de flores");
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Salida de datos
Ejemplo con caracteres de control:
Sımbolo Accion
\n nuevo renglon\a emite sonido\t tabulador horizontal\b retroceso\f salto de pagina\r retorno de carro\” imprime comillas dobles\’ retroceso\0 imprime caracter nulo (cero)\? imprime signo de interrogacion\ \ imprime barra invertida\v tabulador vertical
mensaje caracteres.c
#include<stdio.h>
main(){printf("Hola a todos ");
printf("y sigo sin dejar lınea en blanco");
printf("ahora dejo una lınea en blanco\n");printf("se emite un sonido corto\a\n");printf("ahora dejo un espacio horizontal \t tabulador\n");
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Salida de datos: ejemplo con especificadores de formatoSımbolo Accion
%c caracter%d entero con signo%i entero con signo (en desuso)%ld entero long con signo%u entero long con signo%e real (notacion cientıfica, e minuscula)%E real (notacion cientıfica, E mayuscula)%f float
%lf double
%g imprime formato mas corto entre %e y %f
%G imprime formato mas corto entre %E y %f
%o entero octal sin signo%x hexadecimal sin signo (letra minuscula)%X hexadecimal sin signo (mayuscula)% % imprime %%p imprime puntero%s cadena de caracteres
mensaje formato.c
#include<stdio.h>
main(){int a = 3;int b = 4;
printf("La suma de %d y %d es: %d \n", a, b, a+b);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Salida de datos: ejemplo con especificadores de formato
mensaje formato varios.c
#include<stdio.h>
main(){// declaracion de variableslong int i, j;char letra;float x, y;double u, v;
// inicializacion de variablesi = 3458796;j = 57498746;letra = ’z’;x = 2.6e-38;y = 1.3e38;u = 0.4e-307;v = 1.2e308;
// salida de datosprintf("Enteros largos: %ld y %ld \n", i, j);printf("Caracter: %c \n", letra);printf("float: %f y %e \n", x, y);printf("double: %lf y %le \n", u, v);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Salida de datos
Ejemplo con modificadores de formato:
mensaje formato modificador.c
#include<stdio.h>
main(){
// declaracion e inicializacion de variablesfloat a = 45.375;double pi = 3.141592653589793115997963;
// salida de datos para aprintf("a: %f \n", a);printf("a con 2 decimales: %.2f \n", a);printf("a con 7 decimales: %.7f \n", a);
// salida de datos para piprintf("\npi = %lf \n", pi);printf("pi con 3 decimales: %.3lf \n", pi);printf("pi con 12 decimales: %.12lf \n", pi);printf("pi con 24 decimales: %.24lf \n", pi);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo
Si un calculo excede el tamano de las variables involucradas se generanerrores
error variable.c
#include<stdio.h>
main(){
// Inicializa una variable enteraint millon = 1000000; // 10∧6
/* La siguiente linea genera un error,la variable billon = 10∧12 supera a 2∧31 */int billon = millon*millon;
// imprime dato erradoprintf(" %d al cuadrado es: %d \n", millon, billon);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Entrada de datos
Sintaxis:
scanf("cadena de formato", &arg1, &arg2,..., &argn);
Cadena de formato:
Caracteres de espacios en blanco, comas (,)
Especificadores de formato
lectura datos.c
#include<stdio.h>
main(){// Declaracion de variableschar nombre[30];int edad;
// lee el nombreprintf("Ingrese su nombre: ");scanf("%s", nombre);
// lee edadprintf("Ingrese su edad: ");scanf("%d", &edad);
// Imprime los contenidos de nombre y edadprintf("\nnombre: %s\n", nombre);printf("edad: %d\n", edad);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Operadores aritmeticos
Operador Operacion Ejemplo Resultado
* Multiplicacion 7*3 21
/ Division 10/4 2.5000
+ Suma 3-4 -1
- Resta 7-4 3
% Modulo (residuo) 10 %3 1
operaciones.c
#include<stdio.h>
main(){// Declaracion de variablesint a = 3;int b = 4;
int suma = a+b;int resta = a-b;int producto = a*b;double division = a/b; // division se declara como tipo doubleint residuo = a %b;
// imprime contenido de variablesprintf("a = %d y b = %d \n", a, b);printf("La suma es %d \n", suma);printf("La resta es %d \n", resta);printf("El producto es %d \n", producto);printf("La division es %lf \n", division);printf("El residuo de dividir %d entre %d es %d \n", b, a, residuo);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Conversiones forzadas: moldes (cast)
Moldes: conversiones realizadas para forzar a una expresion a ser de untipo determinado de dato
Sintaxis:
(tipo) expresion
operaciones molde.c
#include<stdio.h>
main(){// declaracion de variablesint a = 3;int b = 4;
// division1 se declara como tipo double y se le asigna un enterodouble division1 = a/b;
// division2 se declara como tipo double y se le asigna un doubledouble division2 = (double)a/(double)b;
// imprime contenido de variablesprintf("a = %d y b = %d \n", a, b);printf("La division es %lf \n", division1);printf("La division es %lf \n", division2);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Operadores relacionales (de comparacion)
Operador Operacion Ejemplo Resultado
== Igual 4 == 5 0
!= Diferente de 2!=3 1
< Menor que 10 < 4 0
> Mayor que 5>-4 1
<= Menor o igual que 7<=7 1
>= Mayor o igual que 3.5 >= 10 0
comparacion.c
#include<stdio.h>
main(){// Declaracion de variablesint a, b, c;
// Inicializacion de variablesa = 2;b = 5;c = -3;
printf("a = %d, b = %d y c = %d \n\n", a, b, c);printf("a!=b produce como resultado %d \n", a!=b);printf("c<=b produce como resultado %d \n", c<=b);printf("a==b produce como resultado %d \n", a==b);printf("a=b produce como resultado %d \n", a=b);printf("a==b produce como resultado %d \n", a==b);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Operadores logicos (booleanos)
Operador Operacion Ejemplo Resultado
&& y 2 && 3 1
|| o 3 || 5 1
! negacion !7 0
x y x && y x || y !x
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
booleanos.c
#include<stdio.h>
main(){
// Declaracion de variablesint a, b, c;
// Inicializacion de variablesa = 2;b = 5;c = -3;
printf("a = %d, b = %d y c = %d \n\n", a, b, c);printf("a && b produce como resultado %d \n", a && b);printf("a && c produce como resultado %d \n", a && c);printf("a || b produce como resultado %d \n", a || b);printf("b || c produce como resultado %d \n", b || c);printf("!c produce como resultado %d \n", !c);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Operadores de incremento y decremento
Instruccion Significado
x += y; x = x+y;
x -= y; x = x-y;
x *= y; x = x*y;
x /= y; x = x/y;
x %= y; x = x %y;
x++; x = x+1;
x--; x = x-1;
prepost.c
#include<stdio.h>
main(){
// Declaracion de variablesint a, b, c, d;
// Inicializacion de variablesa = 10;c = 10;
//Operador de incremento (pre)b = ++a;printf("a = %d y b = %d \n", a, b);
//Operador de incremento (post)d = c++;printf("c = %d y d = %d \n", c, d);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Precedencia de los operadores
Operador Asociatividad Jerarquıa
() izquierda a derecha (mayor)! ++ -- derecha a izquierda* / % izquierda a derecha+ - izquierda a derecha
< <= > >= izquierda a derecha �== != izquierda a derecha
& izquierda a derecha|| izquierda a derecha= derecha a izquierda (menor)
precedencia.c
#include<stdio.h>
main(){// Declaracion de variablesfloat a, b, c, d, e;
// Inicializacion de variablesa = 1.0 + 2.0 * 3.0;b = 6.0 / 3.0 * 2.0;c = 6.0 / ( 3.0 * 2.0 );d = ! 1 < 4 + 8;e = ! ( 1 < 4 + 8 );
printf("a = %f, b = %f, c = %f, d = %f y e = %f\n", a, b, c , d, e);}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Funciones matematicas
math.h: biblioteca con las definiciones de las funciones matematicas
Contiene:
Funciones trigonmetricas: cos, sin, tan, etc.
Funciones exponenciales: pow, exp, log, etc.
Otras: abs, ceil, floor, etc.
Funcion Descripcion Argumentos Resultado
sqrt(x) raız cuadrada√x double double
pow(x,y) potencia xy double, double double
exp(x) exponencial double double
log(x) logaritmo natural double double
sin(x) seno double double
cos(x) coseno double double
tan(x) tangente double double
asin(x) arco seno double double
acos(x) arco coseno double double
atan(x) arco tangente double double
abs(x) valor absoluto de entero int int
fabs(x) valor absoluto de double double double
ceil(x) el mayor entero menor o igual x double int
floor(x) el menor entero mayor x double int
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Constantes simbolicas
Identificadores asociados con variables de diversos tipos de datos
Se encuentran definidas en math.h
Identificador Constante Valor almacenado
M E e 2.718281828459045090795598298427648842334747314453M LOG2E log2(e) 1.442695040888963387004650940070860087871551513672M LOG10E log(e) 0.434294481903251816667932416748953983187675476074M LN2 ln(2) 0.693147180559945286226763982995180413126945495605M LN10 ln(10) 2.302585092994045901093613792909309267997741699219M PI π 3.141592653589793115997963468544185161590576171875M PI 2 π/2 1.570796326794896557998981734272092580795288085938M PI 4 π/4 0,785398163397448278999490867136046290397644042969M 1 PI 1/π 0.318309886183790691216444201927515678107738494873M 2 PI 2/π 0.636619772367581382432888403855031356215476989746M 2 SQRTPI 2/
√π 1.128379167095512558560699289955664426088333129883
M SQRT2√
2 1.414213562373095145474621858738828450441360473633
M SQRT1 2 1/√
2 1.414213562373095145474621858738828450441360473633
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo 4.1
Dado el radio de un cırculo, elabore un programa en C que calcule el areadel cırculo.
Solucion
circulo.c
#include<stdio.h>#include<math.h>
main(){// Declaracion de variablesdouble r, area;
printf("Ingrese el radio del cırculo: ");scanf("%lf", &r);
area = M PI*pow(r,2); // M PI≈ π y esta definida en math.h
printf("El area del cırculo es %lf \n", area);}
invitado:∼$> gcc circulo.c -o cirulo -lminvitado:∼/C$> lscirculo circulo.cinvitado:∼/C$>
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo 5.1
Ejemplo 5.1 (intercambio de variables)
Realice un programa en C que lea dos variables numericas A y B y pase elvalor de A a B y de B a A.
Solucion
cambiar.c
#include<stdio.h>
main(){// Declaracion de variablesfloat A, B, TEMP;
printf("Ingrese los valores de A y B respectivamente: ");scanf("%f %f", &A, &B);
TEMP = A;A = B;B = TEMP;
printf("El valor de A es %f \n", A);printf("El valor de B es %f \n", B);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo 5.2
Ejemplo 5.2 (area de un triangulo)
Dado los tres lados de un triangulo cualquiera, realice un programa en C
que obtenga el area del triangulo.
Solucion
heron.c
#include<stdio.h>#include<math.h>
main(){// Declaracion de variablesdouble a, b, c, s, area;
printf("Ingrese los lados del triangulo: ");scanf("%lf %lf %lf", &a, &b, &c);
// Calcula el area con la formula de Herons = (a+b+c)/2; // semiperımetroarea = sqrt(s*(s-a)*(s-b)*(s-c));
printf("El area del triangulo es %lf \n", area);}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo 5.3 (ecuacion cuadratica)
Realice un programa en C que encuentre las soluciones reales (si las hay) de laecuacion cuadratica
ax2 + bx + c = 0, con a 6= 0
Solucion
cuadratica.c
#include<stdio.h>
#include<math.h>
main(){// Declaracion de variables
double a, b, c, d, x1, x2;
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
// Calcula las raıces
d = sqrt(b*b-4*a*c); // d = discriminante =p
b2 − 4acx1 = (-b+d)/(2*a); // x1 = raız 1
x2 = (-b-d)/(2*a); // x2 = raız 2
printf("x1 = %4.8lf \n", x1);
printf("x2 = %4.8lf \n", x2);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Ejemplo 5.4
Ejemplo 5.4 (funciones trigonometricas)
Realice un programa en C que tenga como entrada la medida de un angulo αen grados y obtenga cos α, sen α y tan α.
Solucion
fun trig.c
#include<stdio.h>#include<math.h>
main(){// Declaracion de variablesdouble alfa, rad, c, s, t;
printf("Ingrese angulo en grados: ");scanf("%lf", &alfa);
rad = M PI*alfa/180; // pasa de grados a radianesc = cos(rad); // calcula coseno de alfas = sin(rad); // calcula coseno de alfat = tan(rad); // calcula coseno de alfa
printf("cos( %lf) = %lf \n", rad, c);printf("sen( %lf) = %lf \n", rad, s);printf("tan( %lf) = %lf \n", rad, t);
}
Introduccion Principios basicos Variables y tipos Operadores Ejemplos
Referencias
M.A. CriadoProgramacion en lenguajes estructuradosAlfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 2006
A.B. DowneyHow to think like a computer scientist, C++ versionFirst edition, 1999
M.J. PaezC y C++ de afanSegunda edicion. Editorial Universidad de Antioquia, 2004
E. ScheinermanC++ for MathematiciansTaylor & Francis Group, LCC., 2005