computación - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/computacion/unidad1.pdf · 1.4 tipos de...

37
1/21/2009 1 Computación Departamento de Electronica Facultad de Ciencias Programacion Basica Profesor: Dr. Jose Luis Tecpanecatl-Xihuitl Horario: 7:00 – 8:00 pm Lunes – Viernes Salon 24 E-mail : [email protected] [email protected] Asesorias:

Upload: ngothien

Post on 27-Sep-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

1/21/2009

1

Computación

Departamento de Electronica

Facultad de Ciencias

Programacion Basica

� Profesor:Dr. Jose Luis Tecpanecatl-Xihuitl

� Horario: 7:00 – 8:00 pm� Lunes – Viernes� Salon 24� E-mail : [email protected]

[email protected]

� Asesorias:

1/21/2009

2

Contenido

� Unidad 1. Conceptos Basicos de Programacion1.1 Algoritmos y pseudo-codigo1.2 Estructura del lenguaje C1.3 Compilacion y Ejecucion de un programa1.4 Tipos de datos, variables y el operador de asignacion1.5 Escritura de expresiones aritmeticas

1.5.1 Operadores aritmeticos1.5.2 Prioridad de Evaluacion

1.6 Instrucciones de Entrada y Salida1.7 Libreria matematica Math.h1.8 Ejemplos de Programas

� Unidad 2. Toma de Decisiones2.1 Escritura de expresiones booleanas

2.1.1 Operadores relacionales2.1.2 Conectores logicos

2.2 Estructuras de Seleccion IF2.2.1 IF e IF- ELSE2.2.2 IF escalonado2.2.3 IF anidado

2.3 Estructura de seleccion switch2.4 El operador ?2.5 Ejemplos de Programas

Contenido

� Unidad 3. Estructuras de Repeticion3.1 Estructuras de repeticion FOR

3.2 Estructuras de repeticion WHILE

3.3 Estructuras de repeticion DO-WHILE

3.4 Ciclos anidados3.5 Enunciados Break y Continue

3.6 Ejemplos de Programas

� Unidad 4. Arreglos4.1 Declaración y asignación de almacenamiento a arreglos.4.2 Operaciones con Arreglos unidimensionales

4.2.1. Recorrido de un arreglo4.2.2. Búsqueda4.2.3. Ordenación4.2.4. Inserción

4.3 Arreglos bidimensionales y ejemplos de aplicación4.3.1. Recorrido de un arreglo4.3.2. Búsqueda

4.4 Ejemplos de programas.

1/21/2009

3

Contenido

� Unidad 5. Cadenas de Caracteres5.1 Concepto, declaracion y asignacion de almacenamiento5.2 Operaciones con cadenas de caracteres: Libreria String.h5.3 Ejemplos de aplicacion de cadenas de caracteres5.4 Ejemplos de programas

� Referencias:� Fundamentos de Programacion, Piensa en C

Osvaldo CairoPearson Hall, 2006

� El Lenguaje de Programacion C, Brian W. Kernighan, Dennis M. Ritchie.Prentice Hall

� C How to Program, Deitel & DeitelPrentice Hall

Evaluacion

� 3 Examenes parciales (cada 2 unidades)� Tareas (Proyectos)� 80% Examenes parciales� 20% Tareas (Proyectos)� Asistencia

� Exposicion en el salon de clases� 3 Sesiones de Laboratorio.

1/21/2009

4

Politica del Curso

� No se tolerara copiar� Compañeros de clase� Codigo de Internet� Codigo de Libros� Telefono� (Usar Referencia)

� Las Tareas (projectos) seran individuales

Unidad 1.

� Porque aprender a programar?� Forma metodica de resolver problemas� Herramienta utilizada para resolver

problemas en diferentes areas como: ciencias, tecnologicas, economicas, artes y sociales.

� Electronica� Importante herramienta para calculos

numericos como:

1/21/2009

5

Unidad 1.

� Simulacion de circuitos� Simulacion de sistemas de control,

comunicaciones, sistemas digitales y analogicos,

� Procesamiento de señales como: imagenes, video, biomedicas, sismicas, etc.

Unidad 1.

� Cada vez la programacion tiene una mayor relevancia porque:

Programa

DSP (Digital Signal Processor)

FPGAField Programmable Gate Array

MicroControllers

Aplicacion

1/21/2009

6

� Aplicaciones:� Communicaciones� Automotriz� Robotica� Industria manufacturera� Articulos del hogar� Juguetes

� Que es una computadora?� Dispositivo capaz de realizar calculos numericos y toma de

decisiones logicas a grandes velocidades

� Computadoras Personales

� Calculadoras

� Computadoras de Proposito Especifico

� Supercomputadoras

� Las computadoras procesan datosbajo el control de un conjunto de instrucciones llamadas programa computacional.

1/21/2009

7

� Organizacion de una computadora

Unidadde

Entrada

Unidadde

Salida

Unidadde

MemoriaUnidadAritmetica

Logica(ALU)

UnidadCentral de

Procesamiento(CPU)

Unidadde

MemoriaSecundario

Mouse

Teclado

Lector de codigo de barras

Camara de video

Scanner

Monitor

Impresion en papel

Salida para controlar otros dispositivos

etc

Esta Unidad es la que coordina a la computadora y es la responsable de supervisar otras unidades.Por Ejemplo:Esta unidad es la encargada de inidcarle a la unidad de entrada cuando tomar informacion de la unidad de memoria.Le dice la unidad ALU cuando la informacion de la unidad de memoria puede ser tomada para realizar calculos

Esta Unidad es la encargada de realizar operaciones aritmeticas como: Suma, Resta, Multiplicacion y Division.Esta unidad es la encargada de realizar operaciones logicas, como comparar dos numeros de la unidad de memoria

Esta unidad es la llamada memoria principal, primaria o rapida.Esta memoria es de baja capacidadEsta unidad retiene informacion que ha sido adquirida por las unidades de entrada y que puede estar disponible para su inmediato procesamiento

Esta unidad es llama de memoria de larga duracion o de alta capacidadEsta unidad es lenta comparada con la memoria principalEsta Unidad pricipalmente almacena Programas o datos usados posiblemente en horas, dias, meses o años

� Como nos communicamos con la Computadora?

� Por medio de Lenguajes de Programacion� Algunos son entendibles y otros necesitan

de pasos de traduccion intermedios

� Lenguajes de Maquina� Lenguajes Ensambladores� Lenguajes de Alto Nivel

1/21/2009

8

� Lenguajes de Maquina� Lenguaje natural de una computadora en

particular y esta definido por medio de su hardware.

� Este lenguaje consiste de una cadena de 0s y 1s que le dicen a la computadora como realizar sus mas elementales operaciones una a la vez.

+1300042774+1400593419+1200274027

� Lenguaje Ensamblador� Es un lenguaje que traduce el lenguaje de

maquina a un lenguaje de mnemonico� Cada patrón binario asociado a una

instrucción es también asociado a un mnemónico.

� El conjunto de mnemónico forma el ensamblador del microprocesador.

LOAD BASEPAYADD OVERPAYSTORE GROSSPAY

1/21/2009

9

� Lenguaje de Alto Nivel� Lenguajes que permiten escribir programas

cercano al lenguaje que los seres humanos usamos (Ingles)

for i = 1:10C = A + B

If A < BC = A - B

1.1 Algoritmos y pseudo-codigo

� Que es un algoritmo?� Serie de acciones en un orden especifico para

solucionar un problema

� Problema a Resolver:� Cubo de Rubik

� 26 - 29 movimientos

� Buscadores en internet

1/21/2009

10

� En la vida diaria aplicamos algoritmos, incluso sin darnos cuenta de ello de manera automatica.� Al abrir una puerta� Al subir al autobus� Lustrando zapatos� Al realizar una llamada� Tomar un vaso de agua� Etc, etc.

Etapas para solucionar un algoritmo

Problema a

Resolver

Analisisdel

Problema

Construcciondel

Algoritmo

Verificaciondel

Algoritmo

1/21/2009

11

� Las 3 principales características que debe tener un algoritmo:

• Los pasos a seguir en el algoritmo deben ser claros y precisos

Precisión

• El algoritmo siempre debe de proporcionar los mismos resultados.

Determinismo

• El numero de pasos del algoritmo deber ser finito

Finito

� Todo algoritmo sigue tres pasos que son:

Datos de entrada

Procesamiento de losDatos

Datos de Salida

1/21/2009

12

1.1 Algoritmos y pseudo-codigo

� Problema a Resolver:� Ponchadura de una llanta

� Paso 1: Freno de Mano

� Paso 2: Sacar llanta de refaccion y gato hidraulico

� Paso 3: Aflojar tuercas de llanta

� Paso 4: Colocar gato hidraulico y se eleva el auto

� Paso 5: Quitar llanta dañada y colocar llanta nueva

� Paso 6: Colocar tuercas y retirar gato hidraulico

� Paso 3 ↔ Paso 4

1.1 Algoritmos y pseudo-codigo

� Ejemplos de Algoritmos:� Imaginemos el caso de un programa que

busque un numero dentro de un conjunto ordenado de 1000 elementos.

� Una solucion es: Recorrer la lista de numeros desde el principio hasta encontrar el numero buscado

[1, 2, 3, 4, …, 1000]

1/21/2009

13

1.1 Algoritmos y pseudo-codigo

� Ejemplos de Algoritmos:� Encotrar el numero mas grande de un

conjunto de numeros aleatorios.� Una solucion es comparar cada uno de los

numeros con el resto de ellos.

[1, 20, 13, 4, 5, 7,10, 2]

El mayor

1.1 Algoritmos y pseudo-codigo

� Pseudo-Codigo� Que es?

� Lenguaje informal que ayuda al programador a desarrollar algoritmos

� El pseudo-codigo puede ser facilmente convertido a lenguaje estructurado como “C”

� El pseudo-codigo no puede ser ejecutado por la computadora.

� El pseudo-codigo consiste de declaraciones que se van a ejecutar

Int i

1/21/2009

14

1.1 Algoritmos y pseudo-codigo

� Ejemplos de Pseudo-codigo.� Imaginemos el caso de un programa que

busque un numero dentro de un conjuntoordenado de 1000 elementos.

1. Asignar un indice a la posicion del primer elemento del vector2. Si el indice coincide con el ultimo elemento terminar3. Comparar el numero objetivo con el elemento del vector situado

en la posicion indice. Si son iguales, se ha encontrado el numeroobjetivo

4. Incrementar el indice5. Volver al paso 2

Algoritmos y pseudo-codigo

� Ejemplos de Pseudo-codigo.� Encotrar el numero mas grande de un

conjunto de numeros aleatorios.

1. Asignar al primer elemento una etiqueta de el mayor numero.

2. Comparar este numero con el siguiente numeroy si el numero con etiqueta es mayor continuar.De lo contrario asignar a este numero numero la etiqueta y

continuar hasta finalizar con el conjunto de numeros

1/21/2009

15

� Diseñe el pseudo código de la siguiente tarea:

Convierta la longitud y peso de un objeto en pies y libras a su equivalente en metros y kilos:

Un pie equivale a 0.09290 metrosUna libra equivale a 0.45359 kg.

� Diseñe el pseudo código de la siguiente tarea:Calcule e imprima el área y volumen de un cilindro. Proporcionando el radio y altura.

volumen = pi * radio*radio * alturaarea = 2 * pi * radio * altura

1/21/2009

16

Desplegar el resultado

Metro Peso

Conversión

Metro ← Pie * 0.09290 Peso ← Libra* 0.45359

Datos

Pie, Libra

Estructura del lenguaje C

� Estructura del Lenguaje C� El lenguaje C es creado en 1972 en los

Laboratorios Bell de AT&T y en 1978 sus creadores Kernighan & Ritchie publican el primer libro sobre C.

� Permite la creacion de programas transportables, es decir, programas que pueden ejecutarse sin cambios en multitud de computadoras.

1/21/2009

17

Estructura del lenguaje C

� Es un lenguaje pequeño, el cual ofrece sentencias de control sencillas y funciones.

� Mecanismos de alto nivel se ofrecen fuera del lenguaje y se ofrecen como funciones de biblioteca, como E/S

Estructura del lenguaje C

� Programacion Estructurada� Dividir la aplicacion en modulos� Cada modulo puede ser dividido en funciones

los cuales resuleven una tarea especifica� Cada bloque de codigo tiene un punto de

entrada y de salida unico. (Saltos incodicionales no son usados como goto)

� Cuando la ejecucion de un bloque finaliza, continua con otro y finaliza.

1/21/2009

18

Estructura de un programa en C� Programa en C/*

* Programa: Prog_1.c

* Este programa imprime un saludo al usuario

*/

#include <stdio.h>

#define DESTINO “lector”

/*

* Prototipo de funciones

*/

int imprimir_saludo (char * destino);

int main(void)

{

imprimir_saludo (DESTINO);

/* Terminacion del programa */

return(0); /* correcto */

}

/* Funcion que imprime el mensaje al usuario */

int imprimir_saludo (char * destino)

{

printf(“Hola %s.\n”, destino);

return(0);

}

Archivos que se indican en “ #include “,en este caso son funciones paradesplegar el mensaje en pantalla

Se declaran las funciones que incluyen enel programa, inlcuyendo:1. Nombre de la funcion2. Sus parametros3. Tipo que devuelve

Siempre debe existir una funcionprincipal, llamada main( ) ,Esta funcion marca el punto de incio de laejecucion de nuestro programaEsta funcion es unica y delimita el tamanodel programa mediante las llaves { }

Por ultimo se incluye el codigo de de lasfunciones del programa

Compilacion y Ejecucion de un programa

� Compilacion:� Conversion de un lenguaje de programacion a un

lenguaje de maquina� Este proceso es desarrollado por un programa

especial llamado compilador� Existen diferentes fabricantes de compiladores

� Ejecucion de un programa� Edicion del programa� Compilacion� Ejecucion

1/21/2009

19

Compilacion y Ejecucion de un programa

CodigoFuente

CompiladorCodigoObjeto

Lenguajeensambladoro de maquina

Programa en C

Linker

Combina los archivos objetosy las bibliotecas

de forma quepuedan ser ejecutados

como una sola unidadEjecutable

Miprograma.c

Miprograma.obj

Miprograma.exe

� Principales elementos del lenguaje:� Comentarios

� Son utiles para describir cada parte del codigo que se esta escribiendo.Ejemplos:

/*

Este es un programa prueba

*/

n = 2 + 3; /* Este seccion del codigo realiza la suma de 2 y 3 */

n = 2 + 3; // Este seccion del codigo realiza la suma d e 2 y 3

1/21/2009

20

Compilacion y Ejecucion de un programa

� Principales elementos del lenguaje:� Identificadores.

� Es un nombre que se asigna a distintos elementosde un programa como: variables, nombres de funciones

� Se usan caracteres alfa-numericos y el guion bajo( _ ), aunque no pueden empezar con numero. C es sensible a las mayusculas y minusculas.

� Ejemplos:� mi_var_2

� Mi_var_2

� 2_result_3

� 2_Result_3

� Palabras reservadas� Son identificadores pre-definidos por el

lenguaje y tiene un significado especial para el compilador.Ejemplos: for

if else

main

int

� Sentencias en C� Estan construidas por un conjunto de

identificadoresy palabras reservadas

1/21/2009

21

� Separadas por espacios en blanco y terminadas con un punto y coma al final “ ; ”Ejemplos: int a, b;

a = 5;

b = 2 + a;

� Variables y Tipos de Datos� El Lenguaje C tiene varios tipos de datos

predefinidos.Ejemplo:

int a; Define una variable a del tipo entero

� Cuando se define a una variable, esta esta asociada con unadeterminada zona dentro de la memoria de la computadora.

� Las variables pueden cambiar de valor durante la ejecucion del programa

� Se deben definir antes de ser utilizadas

tipo_de_dato var;

tipo_de_dato var0, var1, var2, … ; // mismo tipo

!Se recomienda utilizar nombres de variables que estenrelacionadas con los datos que estan utilizando!

� Variables con valor inicial

tipo_de_dato var = valor;

1/21/2009

22

� Tipos de datos basicos� caracteres, numeros enteros y numeros reales

Caracteres:

char es empleada para representar caracteres

‘a’ ‘X’ ‘3’ constantes tipo char

char letra; // definicion de una variable llamada letra

char letra = ‘a’; // Asignar un valor a una variable char // cuando es definida

� Representacion Numerica� En C se tienen varios tipos de numeros

� Enteros (int )� Reales (float )

� Enteros: � int

� short

� long

� long longshortsigned shortshort intsigned short int

unsigned shortunsigned short int

Longsigned longlong intsigned long int

unsigned longunsigned long int

1/21/2009

23

� Flotantes� float numeros reales de precision normal� double numeros reales de double precision� long double numeros reales de mayor precision

� Constantes� Se permite definir constantes simbolicas que

representan un valor determinado que n cambia a lo largo del programa.

Ejemplo:#define nombre_constante valor

#define pi 3.1416

#define const_1 0.3333

� Una forma alterna de definir una constantees:

� const int pi = 3.1416;

� Cual es la diferencia entre ambas formas de definir variables?

• “ #define “ el preprocesador sustituye el valor de la constante por su valorliteral en todo el programa.

• “const” es manejada como una variable con un valor constantey este nocambia durante la ejecucion del programa.

1/21/2009

24

� Escritura de datos con printf� Esta funcion permite escribir valores y variables

� Ademas permite dar formato a la salida

printf(formato, arg1,arg2,…,argN)

formato incluye la cadena de caracteres a imprimir y una serie de especificaciones de formatoEl especificador de formato indicara la forma en como se imprimiranlos datos que se encuentran en arg1,arg2,…,argN

printf(“valores: %d %d %d %d”,234, 4, 3, -9);

� Ejemplos: float b = 123.25

printf(“%f\n ”, b); 123.250000

printf(“%e\n ”, b); 1.232500e+02

printf(“%g\n ”, b); 123.25

printf(“Hola Lector”);

printf(“ a continuacion le muestro\t el valor: “);

printf(“%\n %d \n ”, 28);

Hola Lector a continuacion le muestro el valor:

28

codigo Formato

%c caracter

%d Entero con signo

%i Entero con signo

%e Notacion cientifica

%E Notacion cientifica

codigo Formato

%f Punto flotante

%s Cadena de caracteres

%u Entero sin signo

%% Un signo '%'

1/21/2009

25

� Operador Asignacion� Este operador es utilizado para construir

sentencias de C ( = ).� Mediante este operador se asigna el valor de

una expression a una variable.

int a, b;

a = 5;

b = a + 2;

a = b;

float num = 4.15;

a = b = c =0;

int a = 4, b = 10 , c = 4;float z, d = 1.1;

z = a + b /c * d;z = ?

Escritura de Expresiones Aritmeticas

� Operadores Aritmeticos� Permiter realizar operaciones con constantes

y variables� Aritmeticos� Logicos� Relacionales

� Aritmeticos Operador Funcion

+ Suma

- Resta

/ Division

* Producto

% Modulo

1/21/2009

26

� Operadores unarios + y –� Estos operadores indican el signo del

operando.� +4 indica que el valor es 4 y tiene signo positivo� -a indica que una variable a se toma con signo

negativo:-a = -1 * a

� Division� Si la division es entre dos numeros enteros el el

resultado es un entero:9/4 el resultado es 2 y

no 2.25

� Para el operador modulo (%) y division (/):� a/b y a%b estan indefinidas si b=0

� El tipo char y sus variantes signed char y unsigned charson cosniderados de tipo entero y su valor coinside con el codigo ASCII del caracter que representa.

char letra = ‘A’ // lo que se almacena en “letra” es el // codigo ASCII de la letra ‘A’ que es// 65

printf("Letra = %c; Numero = %d\n", letra, letra);

Letra A; Numero = 65

1/21/2009

27

� Reglas de conversion aritmetica� Cuando se aplica un operador aritmetico sobre operandos de distinto tipo el

operando de menor precision se convierte de forma implicitaal tipo de mayor precision.

� Reglas:1. Si uno de los operandos es long double el otro se convierte en long double

2. En caso contrario, si uno de los operandos es del tipo double , el otro se convierte a double

3. En caso contrario, si uno de los operandos es del tipo float , el otro se convierte a float

1. En el caso de Enteros:1. Si ambos opernados son enteros con signo tipo (signed ) o enteros sin signo (unsigned ), el

operando con menor rango de vlaores se convierte al de mayor rango:

int a; short b; b se convierte a int

1. En caso contrario, si el operando sin signo tiene un rango mayor o igual de valores que el tipodel otro operando, entonces el operando con signo se convierte al tipo del operanso sin signo

� En caso contrario, si el tipo de operando con signo puede representar todos lo valores del tipo del operando sin signo, entonces el operando sin signo se convierte al tipo del operando son signo.

� En caso contrario, si el tipo de operando con signo puede representar todos lo valores del tipo del operando sin signo, entonces el operando sin signo se convierte al tipo del operando son signo.

� Ejemplo: long nl = 2000;

unsigned short nu = 4890;

float nf = 9892;

double nd = 0.00023;

nl + nu = (ambos se convierten a long y el resultad o es del tipo long)nu + nf = (nu se convierte a float y el resultado es d el tipo float)nf + nd = (nu se convierte a double y el resultado es d el tipo double)

1/21/2009

28

� Programa Ejemplo: Realizar un programa que convierta unatemperatura dada en grados Fahrenheit a su correspondiente temperatura en grados centigrados utilizando la formula:

centigrados = (5 / 9) (Fahrenheit - 32)

float centigrados;

float fahrenheit = 82;

centigrados = (5/9) * (fahrenheit – 32);

printf(“Grados Fahrenheit %f”)

� Conversion de tipos explicita (casting)� En algunos casos esta conversion se desea controlar .

(tipo) expresion

La expresion se convierte al valor resultante de evaluar “expresion” al tipo indicado por tipo

(float) 5/9 /* Asi el valor 5 se convierte a float y por las reglas anteriores el otro de tipo entero se convierte a float y el resultado es tambien de tipo float */

constante, variable o expresion con operadores

1/21/2009

29

� Ejemplo: Se desea obtener solo la parte entera de la operacion de dos numeros reales:

float valor_real = 9/5.0;

int valor_entero;

valor_entero = (int) valor_real;

� Cuando en una sentencia de asignacion los dos operandosson de tipo distinto, el valor del operando de la derecha sera automaticamenteconvertido al tipo del operando de la izquierda siguiendo las siguientes reglas

� Formas abreviadas x = x + 5; x += 5

#include <stdio.h>

int main()

{

int x, y; x = 3; y = 5; x += 2;

printf( "x = %i\n", x ); x += y; //esto equivale a x = x + y

printf( "x = %i\n", x );

}

� Operador : Incremento /Decremento (++) (--) x = x + 1; x++

#include <stdio.h> x = x - 1; x--int main()

{

int x = 5; x++ ;

printf ( "Valor de x = %i\n", x );

x++ ; x--;

printf ( "Valor de x = %i\n", x );

}

1/21/2009

30

� Si el operadorprecedeal operando, el valor del operando se modificaraantesde su utilizacion.

++a --a

� Si el operadorsigueal operando, el valor del operando se modificaradespuesde su utilizacion.

a++ a--

� Los operadores de incremento y decremento tienen mayor prioridad que los operadores aritmeticos y se evaluan en las expresiones de derecha a izquierda

#include <stdio.h>

int main( )

{

int a = 1;

printf(“a = %d \n”, a);

printf(“a = %d \n”, ++a);

printf(“a = %d \n”, a++);

printf(“a = %d \n”, a);

}

Prioridad de Evaluacion

� Prioridad de evaluacion de operadores aritmeticos� La prioridad de los operadores indica el orden en el que se realizan las

operaciones aritmeticas.

� Dentro de cada categoria las operaciones aritmeticas se realizan de izquierda a derecha. A este orden se le denomina asociatividad

#include <stdio.h>

int main( )

{

int a = 4, b = 7, c = 3, d = 9; int resultado;

resultado = a + b * c; printf(“Resultado = %d\n”, resultado);

resultado = a * b / c * d; printf(“Resultado = %d\n”, resultado);

resultado = (a + b) * (d / c); printf(“Resultado = %d \n”, resultado);

}

Prioridad Operador

1 Signo mas (+), signo menos ( - )

2 * / %

3 + -

1/21/2009

31

� a = 4, b = 5, c = 2, d = 6,

� Los parentesis cambian el orden de evaluacion. Si una expresion contieneparentesis, lo primero en evaluarse son las expresiones dentro de ellos.

resultado = a * b / c * d;

printf(“Resultado = %d\n”, resultado);

resultado = (a + b) * (d / c);

printf(“Resultado = %d\n”, resultado);

a * b / c * d (a + b) * (d / c)

20 / c * d 9 * 3

10 * d 27

60

� Ejercicios:

#include <stdio.h>

int main( )

{

int a, c; a = 5; c += a +5; return 0;

}

// ------------------------------------------------ -----------

#include <stdio.h>

int main()

{

int a, b, c;

a = 5; b = ++a;

c = ( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 );

printf( "%i, %i, %i", a, b, c );

} // Cual es el resultado?

1/21/2009

32

� Ejercicios: Determine el valor de las siguientes expresiones en numeroentero:

a) 2 * 3 / 12 * 8 / 4

b) 10 * (1 + 7 * 3)

c) (20 - 2) / 6 + 3

d) 20 - 2 / (6 + 3)

e) (10 + 3) % 4

int d = 1, v = 50, n = 10, t = 5; // Evalue las sig uientes//expresiones:

a) n / t + 3;

b) v / t + n – 10 * d;

c) v – 3 * n + 4 * d;

d) 18 / t;

e) -t * n;

f) (v + n) / (t + d);

= 6/12 * 8/4 = 0* 8/4 = 0 / 4 = 0= 10* (1 + 21) = 10 * 22 = 220= 18 / 6 + 3 = 3 + 3= 20 - 2/ 9 = 20 – 0 = 20= 13 % 4 = 1

= 10 / 5 + 3 = 2 + 3 = 5= 50 / (1 + 21) = 10 * 22 = 220= 18 / 6 + 3 = 3 + 3= 20 - 2/ 9 = 20 – 0 = 20= 13 % 4 = 1

� Mas ejercicios:#include <stdio.h>

main()

{

int a, b; a = b = 5;

printf("%d\n", ++a+5);

printf("%d\n", a);

printf("%d\n", b++ +5);

printf("%d\n", b); return 0;

}

int i,j;

float f;

i = 5; j = 2;

f = 3.0;

f = f + j/i;

printf("value of f is %f\n", f);

1/21/2009

33

Tipo Datos almacenados Nº de BitsValores posibles

(Rango)Rango usando unsigned

char Caracteres 8 -128 a 128 0 a 255

int enteros 16 -32.767 a 32.767 0 a 65.535

long enteros largos 32 -2.147.483.647 a

2.147.483.647 0 a 4.294.967.295

float Nums. reales (coma flotante) 32 3,4E-38 a 3,4E38

double Nums. reales (coma flotante doble)

64 1,7E-307 a

1,7E308

1.6 Instrucciones de entrada y salida

� Instrucciones de Entrada y Salida� Las funciones de entra/salida, son funciones de biblioteca

especificadas standard en la libreria <stdio.h>� printf, scan

� scanf: cuando se desea leer un dato y almacenarlo en una variable se utiliza esta funcion. Tiene un farmato generico igual al de printf.

\n Nueva línea\t Tabulador\b Espacio atrás\r Retorno de carro\f Comienzo de página\a Pitido sonoro\¿ Comilla simple\" Comilla doble\\ Barra invertida\xdd Código ASCII en notación hexadecimal (cada d repre senta un dígito)\ddd Código ASCII en notación octal (cada d representa u n dígito)

scanf (formato, arg1, …, argN);

1/21/2009

34

� Ejemplos:#include <stdio.h>

main()

{

char c; int e; float r;

printf("Introduzca un caracter: ");

scanf("%c", &c);

printf("Introduzca un numero entero: ");

scanf("%d", &e);

printf("Introduzca un numero flotante: ");

scanf("%f", &r);

printf(“Usted a introducido los siguientes caracteres: %f"

}

� Leer una cadena de caracteres.

#include <stdio.h>

main()

{

char cadena[128];

printf("Introduzca un cadena de caracteres: ");

scanf("%s", cadena);

printf("Usted a introducido: %s\n“,cadena);

}

1/21/2009

35

1.7 Libreria Matematica

� Libreria Matematica math.h

� Es una libreria standard del lenguaje de programacion C diseñada para operaciones matematicas basicas.

� La mayoria de las funciones considera el uso de numerosflotantes

#include<math.h> Funciones trigonometricas:

sin Seno cos Coseno

sinh Seno hiperbolico cosh hyperbolic cosine

tan Tangente

tanh Tangentehiperbolica

acos Arccosine

asin Arcsine

atan Arctangent

Las funciones trigoometricasregresan un valor en radianes

� Exponencial, logaritmo y funciones de potencia

Funciones

exp Funcion exponencial e

frexp fraccion y potencia de 2.

log Logaritmo natural

log10 Logaritmo base-10

pow(x,y)

Calcula un valor exponente xy

sqrt Raiz cuadrada

Las funciones en la libreriaregresan un valor en radianes

1/21/2009

36

� Otras funciones matematicas

� La libreria <math.h> provee tambien lassiguientes contantes

Funciones

ceil Regresa el valor entero mas pequeño mayor o igual a x

round Regresa el valor mas cercano a x

fabs Regresa el valor absoluto de un numero

floor Regresa el valor entero mas grande menor o igual a x

Fmod Regresa el residuo de una division x/y

M_E Valor de e M_2_PI Valor de 2/pi

M_LOG2E Valor de log2e M_2_SQRTPI Valor de 2/√pi

M_LOG10E

Valor de log10e M_SQRT2 Valor de √2

M_LN2 Valor de loge2 M_SQRT1_2 Valor de 1/√2

M_LN10 Valor de loge10

M_PI Valor de pi

M_PI_2 Valor de pi/2

M_PI_4 Valor de pi/4

M_1_PI Valor de 1/pi

1/21/2009

37

� Como usar las funciones de la libreriamath.h

#include <stdio.h>#include <math.h>int main(){

float a = 2, f =1;double d = 4;

f = M_PI* sin (a) + sqrt (d);printf( " f = %f\n”, f);f = pow(d,a);printf( " f = %f\n”, f);return 0;

}