Professional Documents
Culture Documents
Programacin I
Ao 2012
Introduccin
2
Docentes:
Profesor: Ing. Jorge Steifensand
Auxiliares : Ing. Jos Younes Ing. Mara Fernanda Guzmn Ing. Mariana Snchez Ing. Teresa Cardozo
Introduccin
3
Carreras:
Ingeniera Elctrica Ingeniera Electrnica
Ingeniera en Computacin
Introduccin
4
Condiciones para cursar: Informtica (QQB): Regular Condiciones para rendir: Informtica (QQB): Aprobada
Introduccin
5
Rgimen de cursado
Teora (2 horas semanales):
Jueves de hs. 08:00 a 10:00 Anfiteatro B1
Introduccin
6
Rgimen de cursado
Tres (3) evaluaciones de prctica en Gabinete
Las evaluaciones se aprueban con nota 6 (seis) o ms Para regularizar se deben aprobar las 3 evaluaciones Las evaluaciones desaprobadas se recuperan. Slo las desaprobadas antes del receso invernal. Un integral luego del receso.
Introduccin al lenguaje C
Bibliografa, historia del lenguaje C
7
Bibliografa
C. Manual de referencia, 4ta. edicin, Herbert Schildt, McGraw-Hill Cmo programar en C/C++, H.M. Deitel y P.J. Deitel, Prentice Hall Programacin en C, Joyanes Aguilar y Zahonero Martnez, McGraw-Hill
'66 BCPL Basic Combined Programming Language (Lenguaje de Programacin Bsico Combinado). Martin Richards, Cambridge. '69 B Dennis Ritchie y Ken Thompson. Laboratorios Bell. Rescribir el UNIX que estaba en ensamblador. '72 C Dennis Ritchie y Brian Kernighan '83 comit para la estandarizacin '89 y '99. ANSI-ISO C99
Introduccin al lenguaje C
Bibliografa, historia del lenguaje C
8
Aclaracin: Los cdigos de los ejemplos pueden contener errores. Estos se introducen de exprofeso para ser discutidos en clase. Aquellos alumnos que no asistan a clase presten atencin a los errores de compilacin y/o ejecucin de los ejemplos.
UNT - FACET - DEEC - Programacin I - 2012
Introduccin al lenguaje C
Edicin, compilacin y ejecucin
9
Tarea
Edicin
S. O
Windows Linux
Herramienta
Editor de texto
Resultado
Cdigo fuente
jedit mcedit
Compilador
nombre.c
Archivo ejecutable
Compilacin
Windows ...>gcc nombre.c [-o nombre] Linux ...$gcc nombre.c [-o nombre] Archivo ejecutable
a.exe nombre.exe
Ejecucin
Windows Linux
a.exe
nombre.exe ./nombre
./a.out
a.out nombre Ejecucin del programa Ingreso de datos Procesamiento Salida de datos
Introduccin al lenguaje C
Estructura de un programa en C
10
1.-
/* Comentarios:
Los comentarios se escriben entre /* en varias lneas */ o con //...... hasta el final de la lnea */
2.-
// Directivas al compilador:
#include <....>
3.4.-
argc, char
*argv[])
return 0; }
5.// Definicin de las funciones declaradas en el punto 3.Ejemp-C01-01.c
Introduccin al lenguaje C
Tipos primitivos de datos
11
float
double
32
64
El Lenguaje C no tiene datos tipo booleanos. Toma como "verdadero" cualquier valor distinto que cero. Devuelve 1 como valor verdadero y 0 como falso
UNT - FACET - DEEC - Programacin I - 2012
Introduccin al lenguaje C
Identificador
12
Vlido Identificador no vlido (smbolo ) Vlido Identificador no vlido (el primer caracter numrico) Vlido Identificador no vlido (tiene espacio en blanco)
Introduccin al lenguaje C
Variables
13
Una variable es un smbolo que se utiliza para representar un dato. En informtica representa el domicilio de memoria donde se guarda el dato asignado.
En el lenguaje C la variables deben ser declaradas antes de ser usadas.
Declaracin: tipo_de_dato nomb_de_la var1 [, nombre_de_la_var2, ... ] ;
Ejemplos:
char var_1; int cont, suma; float promedio;
Ejemp-C01-02.c
Introduccin al lenguaje C
Constantes
14
Una constante es un smbolo que se utiliza para representar un dato cuyo valor no puede modificarse durante la ejecucin de un programa. Las constantes pueden ser: 1) literales, 2) definidas o simblicas, 3) declaradas.
1.- literales:
Son valores de cualquier tipo que se utilizan directamente. No se declaran ya que no tienen nombre.
'm' 7 12.098 "clases"
Ejemplos:
Introduccin al lenguaje C
Constantes
15
Se declaran e inicializan en la zona de declaraciones globales Se recomienda NO utilizar constantes simblicas. La razn es que para este tipo de constantes el compilador no analiza compatibilidad en cuanto tipos de datos y se pueden producir errores difciles de detectar.
Ejemplos:
#define R 0.082 #define rho_Cu 0.0172
Introduccin al lenguaje C
Constantes
16
3.- declaradas:
Se declaran como una variable precedidas de la palabra reservada const. Deben inicializarse cuando se declaran.
Declaracin:
const tipo_de_dato
Ejemplos:
nomb_de_la_const = valor;
Introduccin al lenguaje C
Asignacin
17
Asignacin es la accin mediante la cual una variable toma un valor determinado. El smbolo Sintaxis:
variable Ejemplos:
expresin;
Introduccin al lenguaje C
Operadores
18
*
mayor que mayor o igual que
/
menor que
%
menor que
==
Operadores lgicos
!=
>
O (or)
>=
<
Y (and)
<=
NO (not)
!
UNT - FACET - DEEC - Programacin I - 2012
||
&&
Introduccin al lenguaje C
Operadores unarios
19
&
&x *p
++
--
incrementa el valor y luego lo utiliza utiliza el valor y luego lo incrementa decrementa el valor y luego lo utiliza utiliza el valor y luego lo decrementa
Introduccin al lenguaje C
Otros operadores de asignacin
20
En lenguaje C la asignacin:
+= -= *= /= %=
UNT - FACET - DEEC - Programacin I - 2012
z += ( x + y ) z -= ( x + y ) z *= ( x + y ) z /= ( x + y ) z %= ( x + y )
Introduccin al lenguaje C
Entrada y salida de datos
21
Los dispositivos estndares de entrada y salida de del lenguaje C son, respectivamente, el teclado y el monitor.
Para mostrar informacin por monitor o ingresar datos por teclado existen una serie de funciones estndares definidas en un archivo cabecera o "header" llamado stdio.h
Salida por pantalla La funcin ms utilizada es:
Introduccin al lenguaje C
Entrada y salida de datos
22
La "cadena de control" puede contener: texto (mensaje), secuencias de escape y/o especificadores de tipos de datos .
Secuencias de escape Salto de lnea \n \t Tabulacin horizontal Seal sonora \a Retroceso \b Retorno de carro \r Barra invertida \\ Comilla simple \' Comilla doble \" Interrogacin \? Caracter nulo \0
UNT - FACET - DEEC - Programacin I - 2012
%c %i %d %f %e %E %s %p
Especificador de tipo de dato caracter (char) entero (int) entero (formato decimal) punto decimal flotante forma exponencial (1.23e+2) forma exponencial (1.23E+2) cadena de caracteres (string) puntero (direccin de memoria)
Ejemp-C01-04.c
Introduccin al lenguaje C
Entrada y salida de datos
23
Salidas con formato: El formato de salida tiene el siguiente prototipo: %[bandera][ancho][.precisin] especificador bandera:
+ 0
ancho: es un valor entero. Indica la cantidad de espacios para representar los valores. Si la cantidad de espacios que ocupa un valor es superior al "ancho" lo mismo se representa. En los valores con punto decimal en el ancho se incluyen el punto decimal y los dgitos decimales. precisin: Slo para valores con punto decimal flotante. Indica la cantidad de dgitos decimales que se mostrarn.
Ejemp-C01-05.c Ejemp-C01-06.c
Introduccin al lenguaje C
Entrada y salida de datos
24
Introduccin al lenguaje C
Estructuras de Control
25
Seleccin simple
if (expresin) {
// bloque de cdigo
} Si al evaluar la expresin el resultado es verdadero (distinto que cero) se ejecutan las sentencias del bloque de cdigo. Caso contrario el flujo del programa contina con la sentencia siguiente.
Ejemp-C01-08.c
Introduccin al lenguaje C
Estructuras de Control
26
else
{
// bloque de cdigo F }
Ejemp-C01-09.c
Introduccin al lenguaje C
Estructuras de Control
27
Seleccin doble Si la expresin arroja resultado verdadero se ejecutan las sentencias del "bloque de cdigo V". Caso contrario se ejecutan las sentencias del "bloque de cdigo F". Operador condicional
(expresin)
instruccin_V : instruccin_F;
Es equivalente a una estructura de seleccin if ... else, con slo una sentencia en cada bloque. Si el resultado de expresin es verdadero se ejecuta instruccin_V, si es falso se ejecuta instruccin_F.
Ejemp-C01-10.c
Introduccin al lenguaje C
Estructuras de Control
28
Seleccin mltiple
switch ( selector) { case valor_1: //bloque de cdigo_1 break; case valor_2: //bloque de cdigo_2 break;
. . .
Introduccin al lenguaje C
Estructuras de Control
29
Seleccin mltiple Esta estructura analiza una variable llamada "selector". Segn el valor de esta se ejecutar uno de los bloques de cdigo. Si el valor del selector no coincide con ninguna de las opciones se ejecutar el bloque de cdigo de la opcin default, si es que fue definido. El bloque default es opcional.
Ejemp-C1-11.c
Introduccin al lenguaje C
Estructuras de Control
30
Introduccin al lenguaje C
Estructuras de Control
31
Introduccin al lenguaje C
Estructuras de Control
32
Introduccin al lenguaje C
Estructuras de Control
33
Introduccin al lenguaje C
Estructuras de Control
34
// bloque de cdigo }
Esta estructura es similar a la estructura while ... , slo que inicializacin, condicin (expresin) y modificacin de la variable de control se realizan en una slo lnea, separadas por punto y coma(;). Esta estructura tiene variantes que se analizarn en clases prximas.
Ejemp-C01-14.c
Introduccin al lenguaje C
Estructuras de Control
35
Sentencias: continue break continue: es una sentencia que interrumpe la ejecucin de un ciclo en una estructura de repeticin, forzando a comenzar el ciclo siguiente. break: es una sentencia de ruptura de ejecucin en una estructura. Transfiere la ejecucin a la estructura siguiente. Su uso es vlido tanto en estructuras de repeticin como de seleccin.
Ejemp-C01-15.c
Introduccin al lenguaje C
Punteros en C
36
Un puntero es una variable cuyo contenido es una direccin de memoria, de otra variable o constante. Se declara como todas las variables precediendo al identificador del smbolo asterisco (*). El puntero deber ser del mismo tipo que la variable o constante apuntada.
Declaracin: tipo_de_dato *nombre_del_puntero;
Introduccin al lenguaje C
Punteros en C
37
Ejemplos:
int float char val, *ptri; prod, *ptrf; car, *ptrc;
ptri
FF3
ptri = &val;
//a ptri se asigna la direccin val
... 25
... ...
FF4 FF3
val
*ptri = 25;
//por indireccin se asigna a val el valor 25
FF2
FF1
ptrf = &val;
// INSTRUCCIN INVLIDA, ptrf debe apuntar a un float y se le asigna direccin de int
ptrf = ∏
Ejemp-C01-16.c
Introduccin al lenguaje C
Punteros en C
38
int val, *ptri; float prod, *ptrf; char car, *ptrc; ptri = &val; ptrf = ∏ ptrc = &car;
Incremento de punteros ptri++; ptrf++; ptrc++;
Ejemp-C01-17.c
... ptrc
FF0A
FF0C
... ptrc
FF0A
FF0C
...
...
...
...
...
...
...
...
...
... ptri
FF05
ptri
FF05
... ...
... ...
...
... ...
...
... ...
FF03
FF02
FF03
FF02
ptrf
FF00
...
FF01
FF00 prod
ptrf
FF00
...
FF01
FF00 prod
...
...