Program Ac i on Code Block

35
Introducci´ on Principiosb´asicos Variables y tipos Operadores Ejemplos Introducci´ on a los Computadores Introducci´ on a la programaci´ on en C CNM-130 Departamento de Matem´ aticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2009. Reproducci´on permitida bajo los erminos de la licencia de documentaci´on libre GNU.

Transcript of Program Ac i on Code Block

Page 1: Program Ac i on Code Block

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.

Page 2: Program Ac i on Code Block

Introduccion Principios basicos Variables y tipos Operadores Ejemplos

Contenido

1 Introduccion

2 Principios basicos

3 Variables y tipos

4 Operaciones basicas

5 Ejemplos

Page 3: Program Ac i on Code Block

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

Page 4: Program Ac i on Code Block

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

Page 5: Program Ac i on Code Block

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

Page 6: Program Ac i on Code Block

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

Page 7: Program Ac i on Code Block

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.

Page 8: Program Ac i on Code Block

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$>

Page 9: Program Ac i on Code Block

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

Page 10: Program Ac i on Code Block

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

Page 11: Program Ac i on Code Block

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

Page 12: Program Ac i on Code Block

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

Page 13: Program Ac i on Code Block

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;

Page 14: Program Ac i on Code Block

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;

Page 15: Program Ac i on Code Block

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");

}

Page 16: Program Ac i on Code Block

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");

}

Page 17: Program Ac i on Code Block

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);

}

Page 18: Program Ac i on Code Block

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);

}

Page 19: Program Ac i on Code Block

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);

}

Page 20: Program Ac i on Code Block

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);

}

Page 21: Program Ac i on Code Block

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);

}

Page 22: Program Ac i on Code Block

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);

}

Page 23: Program Ac i on Code Block

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);

}

Page 24: Program Ac i on Code Block

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);

}

Page 25: Program Ac i on Code Block

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);

}

Page 26: Program Ac i on Code Block

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);

}

Page 27: Program Ac i on Code Block

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);}

Page 28: Program Ac i on Code Block

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

Page 29: Program Ac i on Code Block

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

Page 30: Program Ac i on Code Block

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$>

Page 31: Program Ac i on Code Block

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);

}

Page 32: Program Ac i on Code Block

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);}

Page 33: Program Ac i on Code Block

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);

}

Page 34: Program Ac i on Code Block

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);

}

Page 35: Program Ac i on Code Block

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