Computación - Facultad de Ciencias

Anuncio
1/21/2009
Facultad de Ciencias
Departamento de Electronica
Computación
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
1/21/2009
Contenido
Unidad 1. Conceptos Basicos de Programacion
1.1 Algoritmos y pseudo-codigo
1.2 Estructura del lenguaje C
1.3 Compilacion y Ejecucion de un programa
1.4 Tipos de datos, variables y el operador de asignacion
1.5 Escritura de expresiones aritmeticas
1.5.1 Operadores aritmeticos
1.5.2 Prioridad de Evaluacion
1.6 Instrucciones de Entrada y Salida
1.7 Libreria matematica Math.h
1.8 Ejemplos de Programas
Unidad 2. Toma de Decisiones
2.1 Escritura de expresiones booleanas
2.1.1 Operadores relacionales
2.1.2 Conectores logicos
2.2 Estructuras de Seleccion IF
2.2.1 IF e IF- ELSE
2.2.2 IF escalonado
2.2.3 IF anidado
2.3 Estructura de seleccion switch
2.4 El operador ?
2.5 Ejemplos de Programas
Contenido
Unidad 3. Estructuras de Repeticion
3.1 Estructuras de repeticion FOR
3.2 Estructuras de repeticion WHILE
3.3 Estructuras de repeticion DO-WHILE
3.4 Ciclos anidados
3.5 Enunciados Break y Continue
3.6 Ejemplos de Programas
Unidad 4. Arreglos
4.1 Declaración y asignación de almacenamiento a arreglos.
4.2 Operaciones con Arreglos unidimensionales
4.2.1. Recorrido de un arreglo
4.2.2. Búsqueda
4.2.3. Ordenación
4.2.4. Inserción
4.3 Arreglos bidimensionales y ejemplos de aplicación
4.3.1. Recorrido de un arreglo
4.3.2. Búsqueda
4.4 Ejemplos de programas.
2
1/21/2009
Contenido
Unidad 5. Cadenas de Caracteres
5.1 Concepto, declaracion y asignacion de almacenamiento
5.2 Operaciones con cadenas de caracteres: Libreria String.h
5.3 Ejemplos de aplicacion de cadenas de caracteres
5.4 Ejemplos de programas
Referencias:
Fundamentos de Programacion, Piensa en C
Osvaldo Cairo
Pearson Hall, 2006
El Lenguaje de Programacion C, Brian W. Kernighan, Dennis M. Ritchie.
Prentice Hall
C How to Program, Deitel & Deitel
Prentice 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.
3
1/21/2009
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:
4
1/21/2009
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)
Aplicacion
FPGA
Field Programmable Gate Array
MicroControllers
5
1/21/2009
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 datos bajo el control de un
conjunto de instrucciones llamadas programa
computacional.
6
1/21/2009
Organizacion de una computadora
Unidad
de
Entrada
Unidad
Central de
Procesamiento
(CPU)
Unidad
Aritmetica
Logica
(ALU)
Unidad
de
Memoria
Unidad
de
Salida
Unidad
de
Memoria
Secundario
Mouse
Monitor
Teclado
Lector de
codigo de
barras
Camara de
video
Scanner
Esta Unidad es la encargada
que coordina
de arealizar
la computadora y
es la responsable
operaciones
aritmeticas
de supervisar
como: Suma,
otras unidades.
Resta,
Esta unidad es la llamada memoria principal,
Por
Multiplicacion
Ejemplo:
y
Division.
Esta
unidad oesrapida.
llama de memoria de larga
primaria
Esta
unidad
esalta
la encargada
de realizar
inidcarle a la
duracion
o de
Esta memoria
escapacidad
de baja capacidad
unidad
operaciones
de entrada
logicas,
cuando
como tomar
comparar
informacion
dos
numeros
de la
Esta
unidad
es
lenta
comparada
con
la
memoria
Esta unidad retiene informacion
que
ha sido
unidad
de
la unidad
de memoria.
de memoria
principal
adquirida por las unidades de entrada y que puede
Le
dice
la unidad
ALU cuando
la informacion de la
Esta
Unidad
pricipalmente
o
estar
disponible
para su almacena
inmediato Programas
procesamiento
unidadusados
de memoria
puede ser
parameses
realizar
datos
posiblemente
en tomada
horas, dias,
o
calculos
años
Impresion en
papel
Salida para
controlar
otros
dispositivos
etc
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
7
1/21/2009
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 BASEPAY
ADD
OVERPAY
STORE GROSSPAY
8
1/21/2009
Lenguaje de Alto Nivel
Lenguajes que permiten escribir programas
cercano al lenguaje que los seres humanos
usamos (Ingles)
for i = 1:10
C = A + B
If A < B
C = 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
9
1/21/2009
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
Analisis
del
Problema
Construccion
del
Algoritmo
Verificacion
del
Algoritmo
10
1/21/2009
Las 3 principales características que debe
tener un algoritmo:
Precisión
• Los pasos a seguir en el algoritmo deben ser
claros y precisos
Determinismo
• El algoritmo siempre debe de proporcionar los
mismos resultados.
Finito
• El numero de pasos del algoritmo deber ser
finito
Todo algoritmo sigue tres pasos que son:
Datos de
entrada
Procesamiento
de los
Datos
Datos de
Salida
11
1/21/2009
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]
12
1/21/2009
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.
El mayor
[1, 20, 13, 4, 5, 7,10, 2]
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
13
1/21/2009
1.1 Algoritmos y pseudo-codigo
Ejemplos de Pseudo-codigo.
Imaginemos el caso de un programa que
busque un numero dentro de un conjunto
ordenado de 1000 elementos.
1.
2.
3.
4.
5.
Asignar un indice a la posicion del primer elemento del vector
Si el indice coincide con el ultimo elemento terminar
Comparar el numero objetivo con el elemento del vector situado
en la posicion indice. Si son iguales, se ha encontrado el numero
objetivo
Incrementar el indice
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 numero
y 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
14
1/21/2009
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 metros
Una 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 * altura
area = 2 * pi * radio * altura
15
1/21/2009
Datos
Pie, Libra
Conversión
Metro ← Pie * 0.09290
Peso ← Libra* 0.45359
Desplegar el resultado
Metro
Peso
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.
16
1/21/2009
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.
17
1/21/2009
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 para
desplegar el mensaje en pantalla
Se declaran las funciones que incluyen en
el programa, inlcuyendo:
1. Nombre de la funcion
2. Sus parametros
3. Tipo que devuelve
Siempre debe existir una funcion
principal, llamada main( ),
Esta funcion marca el punto de incio de la
ejecucion de nuestro programa
Esta funcion es unica y delimita el tamano
del programa mediante las llaves { }
Por ultimo se incluye el codigo de de las
funciones 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
18
1/21/2009
Compilacion y Ejecucion de un programa
Codigo
Fuente
Miprograma.c
Compilador
Miprograma.obj
Linker
Miprograma.exe
Ejecutable
Codigo
Objeto
Programa en C
Lenguaje
ensamblador
o de maquina
Combina los
archivos objetos
y las bibliotecas
de forma que
puedan ser
ejecutados
como una sola
unidad
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 de 2 y 3
19
1/21/2009
Compilacion y Ejecucion de un programa
Principales elementos del lenguaje:
Identificadores.
Es un nombre que se asigna a distintos elementos
de 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
identificadores y palabras reservadas
20
1/21/2009
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 una
determinada 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
tipo_de_dato
var;
var0, var1, var2, … ; // mismo tipo
!Se recomienda utilizar nombres de variables que esten
relacionadas con los datos que estan utilizando!
Variables con valor inicial
tipo_de_dato
var = valor;
21
1/21/2009
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 long
short
signed short
short int
signed short int
unsigned short
unsigned short int
Long
signed long
long int
signed long int
unsigned long
unsigned long int
22
1/21/2009
Flotantes
float
double
long double
numeros reales de precision normal
numeros reales de double precision
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 constante
es:
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 valor
literal en todo el programa.
• “const” es manejada como una variable con un valor constante y este no
cambia durante la ejecucion del programa.
23
1/21/2009
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 formato
El especificador de formato indicara la forma en como se imprimiran
los datos que se encuentran en arg1,arg2,…,argN
printf(“valores: %d %d %d %d”,234, 4, 3, -9);
codigo
Formato
codigo
Formato
%c
caracter
%f
Punto flotante
%d
Entero con signo
%s
Cadena de caracteres
%i
Entero con signo
%u
Entero sin signo
%e
Notacion cientifica
%%
Un signo '%'
%E
Notacion cientifica
Ejemplos:
float b = 123.25
printf(“%f\n ”, b);
printf(“%e\n ”, b);
printf(“%g\n ”, b);
123.250000
1.232500e+02
123.25
printf(“Hola Lector”);
printf(“ a continuacion le muestro\t el valor: “);
printf(“%\n
%d \n ”, 28);
Hola Lector a continuacion le muestro
28
el valor:
24
1/21/2009
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 =
a, b;
5;
a + 2;
b;
int a = 4, b = 10 , c = 4;
float z, d = 1.1;
z = a + b /c * d;
z = ?
float num = 4.15;
a = b = c =0;
Escritura de Expresiones Aritmeticas
Operadores Aritmeticos
Permiter realizar operaciones con constantes
y variables
Aritmeticos
Logicos
Relacionales
Aritmeticos
Operador
Funcion
+
Suma
-
Resta
/
Division
*
Producto
%
Modulo
25
1/21/2009
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 char
son 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
26
1/21/2009
Reglas de conversion aritmetica
Cuando se aplica un operador aritmetico sobre operandos de distinto tipo el
operando de menor precision se convierte de forma implicita al tipo de mayor
precision.
Reglas:
1.
2.
3.
Si uno de los operandos es long double el otro se convierte en long double
En caso contrario, si uno de los operandos es del tipo double, el otro se convierte a double
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;
1.
short b;
b se convierte a int
En caso contrario, si el operando sin signo tiene un rango mayor o igual de valores que el tipo
del 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 =
nu + nf =
nf + nd =
(ambos se convierten a long y el resultado es del tipo long)
(nu se convierte a float y el resultado es del tipo float)
(nu se convierte a double y el resultado es del tipo double)
27
1/21/2009
Programa Ejemplo: Realizar un programa que convierta una
temperatura 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
constante, variable o expresion con operadores
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 */
28
1/21/2009
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 operandos son de tipo distinto, el
valor del operando de la derecha sera automaticamente convertido al tipo del
operando de la izquierda siguiendo las siguientes reglas
Formas abreviadas
x = x + 5;
#include <stdio.h>
int main()
{
int x, y; x = 3; y = 5; x += 2;
printf( "x = %i\n", x ); x += y;
printf( "x = %i\n", x );
}
x += 5
//esto equivale a x = x + y
Operador : Incremento /Decremento (++) (--) x = x + 1;
x++
x = x - 1;
x--
#include <stdio.h>
int main()
{
int x = 5;
x++;
printf ( "Valor de x = %i\n", x );
x++;
x--;
printf ( "Valor de x = %i\n", x );
}
29
1/21/2009
Si el operador precede al operando, el valor del operando se modificara
antes de su utilizacion.
++a
--a
Si el operador sigue al operando, el valor del operando se modificara
despues de 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”,
printf(“a = %d \n”,
printf(“a = %d \n”,
printf(“a = %d \n”,
a);
++a);
a++);
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. Prioridad
Operador
1
2
3
Signo mas (+), signo menos ( - )
*
/
+
%
-
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
resultado = a + b *
resultado = a * b /
resultado = (a + b)
}
= 3, d
c;
c * d;
* (d /
= 9;
int resultado;
printf(“Resultado = %d\n”, resultado);
printf(“Resultado = %d\n”, resultado);
c); printf(“Resultado = %d\n”, resultado);
30
1/21/2009
a = 4, b = 5, c = 2, d = 6,
a*b/c*d
20 / c * d
10 * d
(a + b) * (d / c)
9
* 3
27
60
Los parentesis cambian el orden de evaluacion. Si una expresion contiene
parentesis, lo primero en evaluarse son las expresiones dentro de ellos.
resultado = a * b /
printf(“Resultado =
resultado = (a + b)
printf(“Resultado =
c * d;
%d\n”, resultado);
* (d / c);
%d\n”, resultado);
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?
31
1/21/2009
Ejercicios: Determine el valor de las siguientes expresiones en numero
entero:
a)
b)
c)
d)
e)
2 * 3 / 12 * 8 / 4
10 * (1 + 7 * 3)
(20 - 2) / 6 + 3
20 - 2 / (6 + 3)
(10 + 3) % 4
= 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
int d = 1, v = 50, n = 10, t = 5;
a)
b)
c)
d)
e)
f)
n / t +
v / t +
v – 3 *
18 / t;
-t * n;
(v + n)
3;
n – 10 * d;
n + 4 * d;
/ (t + d);
// Evalue las siguientes
//expresiones:
= 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);
32
1/21/2009
Nº de Bits
Valores posibles
(Rango)
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
Tipo
Datos almacenados
char
Rango usando
unsigned
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 representa un dígito)
\ddd Código ASCII en notación octal (cada d representa un dígito)
scanf (formato, arg1, …, argN);
33
1/21/2009
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);
}
34
1/21/2009
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 numeros
flotantes
Funciones trigonometricas:
#include<math.h>
Las funciones trigoometricas
regresan un valor en radianes
sin
Seno
cos
Coseno
sinh
Seno hiperbolico
cosh
hyperbolic cosine
tan
Tangente
tanh
Tangente
hiperbolica
acos
Arccosine
asin
Arcsine
atan
Arctangent
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 libreria
regresan un valor en radianes
35
1/21/2009
Otras funciones matematicas
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
La libreria <math.h> provee tambien las
siguientes contantes
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_LOG10
E
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
36
1/21/2009
Como usar las funciones de la libreria
math.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;
}
37
Descargar