You are on page 1of 38

1

UNT FACET - DEEC

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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin
3

Carreras:
Ingeniera Elctrica Ingeniera Electrnica
Ingeniera en Computacin

UNT - FACET - DEEC - Programacin I - 2012

Introduccin
4

Condiciones para cursar: Informtica (QQB): Regular Condiciones para rendir: Informtica (QQB): Aprobada

UNT - FACET - DEEC - Programacin I - 2012

Introduccin
5

Rgimen de cursado
Teora (2 horas semanales):
Jueves de hs. 08:00 a 10:00 Anfiteatro B1

Prctica (4 horas semanales):


Los alumnos deben elegir 2 turnos de 2 hs. c/u Gabinete 1 DEEC (1-3-08)
(Block 1 Piso 3 Aula 8)
UNT - FACET - DEEC - Programacin I - 2012

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.

UNT - FACET - DEEC - Programacin I - 2012

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

Breve historia del lenguaje C

'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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Bibliografa, historia del lenguaje C
8

Sito Web de la asignatura : www1.herrera.unt.edu.ar/prog1 Usuario: Password: alumno prog12012

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

UNT - FACET - DEEC - Programacin I - 2012

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

// Declaraciones globales (funciones)


// Funcin principal

int main (int


{

argc, char

*argv[])

/*declaraciones locales y sentencias*/

return 0; }
5.// Definicin de las funciones declaradas en el punto 3.Ejemp-C01-01.c

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Tipos primitivos de datos
11

Tipos primitivos de datos


Tipo char int/long int bits 8 32 rango -128 a127 -2,147,483,648 a 2,147,483,647 3.4 E-38 a 3.4 E+38 (7 dgitos)

float
double

32
64

1.7E-308 a 1.7E+308 (15 dgitos)

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

Identificador: Nombre que se les da a las constantes, variables y/o


funciones. Est formado por una secuencia de caracteres alfanumricos. NO puede tener espacios ni smbolos especiales. DEBE comenzar con un caracter alfabtico. C es sensible al tipo de letra, diferencia entre maysculas y minsculas. Se recomienda usar letras minsculas.

Ejemplo: var aos var_1 7dias suma var 1

Vlido Identificador no vlido (smbolo ) Vlido Identificador no vlido (el primer caracter numrico) Vlido Identificador no vlido (tiene espacio en blanco)

UNT - FACET - DEEC - Programacin I - 2012

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

UNT - FACET - DEEC - Programacin I - 2012

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:

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Constantes
15

2.- definidas o simblicas:


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

UNT - FACET - DEEC - Programacin I - 2012

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;

const int DIAS = 365; const float R = 0.082;


Ejemp-C01-03.c

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Asignacin
17

Asignacin es la accin mediante la cual una variable toma un valor determinado. El smbolo Sintaxis:

representa la asignacin en lenguaje C.

variable Ejemplos:

expresin;

var = 'h'; cont = 15; promedio = cont / 4;

Se puede asignar valor a una variable cuando se declara: int suma = 0;

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Operadores
18

Operadores aritmticos suma resta multiplicacin divisin mdulo

*
mayor que mayor o igual que

/
menor que

%
menor que

Operadores de relacin igual distinto que que

==
Operadores lgicos

!=

>
O (or)

>=

<
Y (and)

<=

NO (not)

!
UNT - FACET - DEEC - Programacin I - 2012

||

&&

Introduccin al lenguaje C
Operadores unarios
19

Son operadores que se aplican a un solo operando


direccin indireccin incremento unitario decremento unitario

&
&x *p

++

--

direccin de la variable x contenido de la variable a la que apunta p

++x x++ --x x--

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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Otros operadores de asignacin
20

En lenguaje C la asignacin:

variable = variable OPERADOR expresin


es equivalente a:

variable OPERADOR = expresin


Operador Forma abreviada Forma no abreviada

+= -= *= /= %=
UNT - FACET - DEEC - Programacin I - 2012

z += ( x + y ) z -= ( x + y ) z *= ( x + y ) z /= ( x + y ) z %= ( x + y )

z=z+(x+y) z=z(x+y) z=z*(x+y) z=z/(x+y) z=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:

printf ( "cadena de control" [ , lista de argumentos] );


Los corchetes indican "opcional", la funcin puede o no utilizar argumentos.
UNT - FACET - DEEC - Programacin I - 2012

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

Justifica a la izquierda Inserta signo + Completa con ceros a la izquierda

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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Entrada y salida de datos
24

Ingreso de datos por teclado


scanf ("cadena de control", lista de direcciones de memoria); cadena de control: contiene el especificador del tipo de dato a leer. lista de direcciones de memoria: direcciones de memoria correspondientes a las variables a las que se les asignar el valor ledo. Ejemplo: scanf ("%i", &x); esto se interpreta: "leer desde el teclado un valor entero y guardarlo en en el domicilio de memoria de la variable x"
Ejemp-C01-07.c

UNT - FACET - DEEC - Programacin I - 2012

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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
26

Seleccin doble if (expresin) { // bloque de cdigo V }

else
{

// bloque de cdigo F }
Ejemp-C01-09.c

UNT - FACET - DEEC - Programacin I - 2012

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

UNT - FACET - DEEC - Programacin I - 2012

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

case valor_N: //bloque de cdigo_N break; [default : //bloque de cdigo_default break;] }


UNT - FACET - DEEC - Programacin I - 2012

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

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
30

Repeticin : Estructura while ...


while (expresin) { // bloque de cdigo }
Ejemp-C01-12.c

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
31

Repeticin : Estructura while ...


Si la expresin arroja resultado verdadero se ejecutan las sentencias del "bloque de cdigo". Caso contrario el flujo del programa contina con la sentencia siguiente del programa. La expresin contiene una variable denominada "variable de control". A esta variable se le debe asignar un valor antes del inicio de la estructura. En el bloque de cdigo de la estructura while ... debe existir una sentencia donde se modifique el valor de la variable de control. Si esta no es modificada el ciclo ser infinito. Es posible que nunca se ejecute el bloque de cdigo. La expresin arroja el valor falso en la primera evaluacin.
UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
32

Repeticin: do ... while ... do { // bloque de cdigo } while (expresin);


Ejemp-C01-13.c

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
33

Repeticin: do ... while ...


En esta estructura siempre se ejecutan, al menos una vez, las sentencias del bloque de cdigo. Luego de la ejecucin evala la expresin, mientras esta arroje el valor verdadero volver a ejecutar el bloque de cdigo. Si el valor devuelto por la expresin es falso el flujo del programa contina con la sentencia siguiente del programa. La expresin contiene una variable denominada "variable de control". A diferencia de la estructura while ... esta variable puede ser inicializada antes del inicio de la estructura o dentro del bloque de cdigo. Debe existir una sentencia donde se modifique el valor de la variable de control. Si esta no es modificada el ciclo ser infinito.
UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Estructuras de Control
34

Repeticin: for ( ; ; ) ... for (valor inicial; condicin; incremento) {

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

UNT - FACET - DEEC - Programacin I - 2012

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

UNT - FACET - DEEC - Programacin I - 2012

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;

Operadores: - direccin: & - indireccin: *


UNT - FACET - DEEC - Programacin I - 2012

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 = &prod;
Ejemp-C01-16.c

UNT - FACET - DEEC - Programacin I - 2012

Introduccin al lenguaje C
Punteros en C
38

int val, *ptri; float prod, *ptrf; char car, *ptrc; ptri = &val; ptrf = &prod; ptrc = &car;
Incremento de punteros ptri++; ptrf++; ptrc++;
Ejemp-C01-17.c

... ptrc
FF0A

FF0C

... ptrc
FF0A

FF0C

...

FF0B FF0A car FF09


FF08 FF07 FF06 FF05 val FF04
Incremento de punteros

...

FF0B FF0A car FF09


FF08 FF07 FF06 FF05 val FF04

...
...

...
...

...
...

...
... ptri
FF05

ptri
FF05

... ...

... ...

...
... ...

...
... ...

FF03
FF02

FF03
FF02

ptrf
FF00

...

FF01
FF00 prod

ptrf
FF00

...

FF01
FF00 prod

...

...

UNT - FACET - DEEC - Programacin I - 2012

You might also like