Introduccin al Lenguaje de Programacin C III: Funciones, Instrucciones y Variables - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

Introduccin al Lenguaje de Programacin C III: Funciones, Instrucciones y Variables

Description:

... debe escribirse ninguna expresi n o variable, pero los par ntesis deben aparecer. ... una funci n, la declaraci n debe aparecer anterior a la definici n de ... – PowerPoint PPT presentation

Number of Views:295
Avg rating:3.0/5.0
Slides: 48
Provided by: FelipeC2
Category:

less

Transcript and Presenter's Notes

Title: Introduccin al Lenguaje de Programacin C III: Funciones, Instrucciones y Variables


1
Introducción al Lenguaje de Programación C
(III)Funciones, Instrucciones y Variables
  • Clase 5
  • Introducción a la Programación
  • Marcos Sepúlveda(marcos_at_ing.puc.cl)

2
Resumen clase anterior
  • Tipos de Datos
  • Expresiones aritméticas
  • Expresiones lógicas
  • Además, han ejercitado
  • Ayudantía
  • Estudio
  • Tarea 1

3
Qué es una función?
  • Funciones matemáticas
  • Toman parámetros y retornan un resultado
  • C ya trae definidas algunas
  • Ejs sin, cos, exp, logNOTA para usarlas debe
    incluir la librería matemática, escribiendo en
    la primera línea del programaincludeltmath.hgt
  • El programador también puede definir sus propias
    funciones

4
Funciones
  • Conjunto de instrucciones (posiblemente
    acompañadas de algunos datos temporales) que
    llevan a cabo una subtarea dentro de un programa
    más complejo.
  • Reciben datos de entrada
  • Generan datos de salida

5
Funciones
  • Parámetros de entrada
  • Materia prima con la que trabajará la función
  • Valor de retorno
  • Resultado del procesamiento llevado a cabo por la
    función
  • Tanto los parámetros de entrada como el valor de
    retorno tienen un tipo de datos asociado.

6
Sintaxis para la definición de funciones
  • lttipo_retornogt ltnombre_funcióngt(ltlista_parámetros
    gt)
  • ltdeclaración_de_variables_localesgt
  • ltcuerpo_de_la_funcióngt
  • return (ltvalor_retornogt)
  • Procedimientos
  • Funciones que no devuelven ningún valor.
  • Se utiliza como tipo de retorno la palabra
    reservada void.

7
Ejemplos definición de funciones
  • int Celsius(int fahrenheit)
  • return((fahrenheit-32.0)(5.0/9.0))
  •  
  • int Fahrenheit(int celsius)
  • return((celsius9.0/5.0)32.0)
  •  
  • float AreaCirculo(float radio)
  • float area
  • area 3.14 radio radio
  • return area

8
Llamadas a funciones
  • Puede ser llamada desde cualquier parte del
    programa, luego de ser definida.
  • Por eso las funciones se definen al principio.

9
Sintaxis para llamar a las funciones
  • ltvariablegt   ltnombre_funcióngt(ltlista_parámetrosgt
    )
  • ltlista_paramétrosgt
  • Representan valores que se entregan como entrada
    a la función.
  • Lista de variables denotadas por variables o
    constantes asociadas a un  tipo, o expresiones de
    un tipo.
  • Deben corresponder en cuanto a cantidad, posición
    y tipos a las variables que se definieron como
    parámetros de entrada en la definición de la
    función.
  • Si en la definición de la función no se usó
    parámetro alguno, entonces en la llamada tampoco
    debe escribirse ninguna expresión o variable,
    pero los paréntesis deben aparecer.

10
Ejemplos llamadas a funciones
  • int grados_celsius
  • grados_celsius celsius(68) / llamada /
  • int grados_farenheit
  • grados_farenheit fahrenheit(31) / llamada
    /
  •  
  •  
  • float radio 5.56
  • float calculo_area
  • calculo_area AreaCirculo(5.56) / llamada /
  • calculo_area AreaCirculo(radio) / llamada /

11
Para qué sirven las funciones
  • No repetir lo mismo varias veces en el código
  • Ordenar el código
  • Comprender más fácilmente el código
  • Separar trabajo entre programadores
  • Realizar trabajos más complejos
  • La idea de las funciones es generar modularidad,
    cajas negras, sólo conocen sus interfaces y no
    cómo operan por dentro
  • Las funciones son MUY importantes!

12
Ejercicios
  • Desarrollar las siguientes funciones
  • Retorne 0 si un numero es par o 1 si es impar
  • Retorne el área de un triángulo dado b y h

13
Ejemplo Procedimiento
  • Imprime la tabla de un numero

void ImprimeTabla(int n) printf("d x 0
0\n", n) printf("d x 1 d\n", n, n)
printf("d x 2 d\n", n, n2) printf("d x
3 d\n", n, n3) printf("d x 4 d\n",
n, n4) main() int numero
printf("Que tabla quieres saber ")
scanf("d", numero) printf("La tabla del d
es", numero) ImprimeTabla(numero)
14
Instrucciones
  • Órdenes que reconoce un computador mientras se
    encuentra ejecutando un programa.
  • Los programas están escritos en un lenguaje de
    programación, el cual define el conjunto de
    instrucciones válidas que podemos utilizar al
    escribirlos.

15
Instrucciones
  • Secuenciales
  • Declaraciones de variables
  • Asignaciones
  • Llamado a funciones
  • Control de flujo (o decisión)
  • If
  • switch
  • Iteración
  • for
  • while
  • do-while

16
Instrucciones
  • Sintaxis
  • Toda instrucción debe ir terminada por un punto y
    coma, de la siguiente manera
  • ltinstrucciongt
  • Bloque de instrucciones
  • ltinstruccion1gt
  • ltinstruccion2gt
  • ...
  • ltinstruccionNgt

17
Declaración de Variables
  • Sintaxis
  • lttipo1gt ltlista_de_variablesgt
  • lttipo2gt ltlista_de_variablesgt
  • ...
  • lttipoNgt ltlista_de_variablesgt
  • ltlista de variablesgt
  • Serie de identificadores válidos, separados por
    comas
  • ltident1gt, ltidentif2gt, ..., ltidentMgt
  • Dar valor inicial a las variables al declararlas
  • lttipogt ltidentificadorgt ltvalor_inicialgt

18
Declaración de Variables
  • Ejemplos
  • int suma, producto
  • int acumulado0
  • static float interes

19
Vida útil (o ámbito) de las variables
  • Las variables sólo existen dentro de la función
    en que son creadas.
  • Sin embargo, y con cuidado, esta regla se puede
    saltar, vía dos mecanismos
  • Variables globales
  • Variables estáticas

20
Vida útil (o ámbito) de las variables
  • Ámbito global
  • Nivel más alto del programa (fuera de toda
    función)
  • Variables son visibles en todo el programa,
    incluyendo todas las funciones
  • Se llaman variables globales
  • Ámbito local
  • Nivel interno a cada función
  • Variables son visibles sólo dentro de la función
    en que son declaradas
  • Se llaman variables locales
  • Valores almacenados no perduran para posteriores
    llamados a la función en que está declarada
  • Alternativa variables estáticas

21
Vida útil (o ámbito) de las variables
  • Ámbito local (static)
  • static lttipogt ltidentificadorgt
  • Se crea una única vez y el valor guardado
    permanece durante toda la ejecución del programa.

22
Vida útil (o ámbito) de las variables
  • La redefinición, dentro de una función, de una
    variable previamente definida en el nivel
    exterior, provoca que la definición anterior se
    oculte durante la ejecución de la función, por lo
    que sólo la variable local podrá ser
    referenciada.
  • Para poder referenciar una variable global dentro
    de una función, la declaración debe aparecer
    anterior a la definición de la función.

23
Vida útil (o ámbito) de las variables
24
Ejemplo vida útil de las variables
  • int global 0
  • void cuenta()
  • static int contador 0
  • int temporal 0
  • printf("El contador (static) vale d\n",
    contador)
  • printf("La temporal (no static) vale d\n",
    temporal)
  • printf("La variable global vale d\n",
    global)
  • contador
  • temporal
  • global
  • main()
  • int contador 5
  • cuenta()
  • printf("La global vista desde main d\n",
    global)
  • printf("El contador local de main d\n\n",
    contador)

25
Ejemplo vida útil de las variables (I1 2001)
  • int b 0
  • int g (int m, int d)
  • static int c -1
  • b
  • d
  • m
  • printf("d d d d ", b, c, d, m)
  • return(c--)
  • int h (int f, int i)
  • int e 5
  • int b 0
  • b
  • f
  • printf("d d d \n",b,f,i)

26
La función principal main y los programas en C
  • Un programa en C está formado por varias
    instrucciones.
  • Estas instrucciones son escritas dentro de
    funciones.
  • Algunas instrucciones son escritas fuera de las
    funciones
  • Directivas como include y define
  • Declaración de variables
  • Definición de funciones
  • Orden de ejecución
  • Directivas (include y define)
  • Declaraciones de variables globales
  • Llamado a la función main

27
Estructura de un programa
  • directiva include
  • Incluye librerías o bibliotecas de funciones
    predefinidas
  • Ejemplos
  • include ltstdio.hgt / funciones de entrada y
    salida /
  • include ltstdlib.hgt / funciones básicas /
  • include ltmath.hgt  / funciones matemáticas
    básicas /
  • include ltstring.hgt / funciones para manejar
    cadenas /

28
Estructura de un programa
  • directiva define
  • Definición de constantes simbólicas
  • Consiste en asignar a un identificador un valor
    que permanecerá constante durante su uso en el
    programa
  • Ejemplo
  • define CONSTANTE_PI 3.1415

29
Estructura de un programa - resumen
include ltlibreríasgt  define ltidentificadorgt
ltconstantegt typedef ltdefinición_de_nuevos_tipos_
de_datosgt ltvariables_globalesgt ltdefinición_de_fu
ncionesgt lttipogt main()      
ltcuerpo_de_la_función_principalgt
  • Inclusión de librerías
  • Constantes
  • Definición de tipos
  • Variables globales
  • Definición de funciones
  • Programa principal

por ver
30
Algunas recomendaciones
  • Hacer código ordenado
  • 1 instrucción por línea
  • Utilizar nombres de variables autoexplicativos
  • Indentar el código
  • Comentar el código

31
Ejemplos con tipos numéricos
  • Haga un programa que
  • Calcule el tiempo que falta para llegar un
    destino (input velocidad en km/h y distancia
    restante, output tiempo en hhmm).
  • Use funciones!

32
Entrada y Salida
  • Las de mayor uso son las orientadas a la entrada
    y salida de datos con formato (biblioteca
    stdio.h)
  • printf
  • Salida con formato
  • scanf
  • Entrada de datos con formato
  • Basadas en una serie de caracteres de conversión

33
Salida con formato printf
  • Sintaxis
  • printf( "cadena-de-formato", ltlista_de_argumentosgt
    )
  • Cadena de formato
  • Debe ir delimitada por comillas dobles
  • Debe incluir una especificación de conversión por
    cada argumento en la lista de argumentos.
  • Texto aparecerá durante el despliegue, y cada
    especificación de conversión será reemplazada por
    el correspondiente argumento.
  • La lista de argumentos consiste de una secuencia
    de expresiones que se desean desplegar.

34
Especificaciones de Conversión
  • Los caracteres de conversión de mayor uso son
  • d número entero en notación decimal (base 10)
  • c caracter
  • s cadena de caracteres (string)
  • e número con decimales, expresado en notación
    exponencial o de punto flotante (mantisa y
    exponente)
  • f número con decimales, expresado en notación de
    punto fijo (parte entera, punto, parte decimal)

35
Especificaciones de Conversión
  • Pueden incluir
  • Un signo menos, que indica que el campo debe
    ajustarse a la izquierda.
  • Un número entero, que indica el tamaño mínimo que
    deberá ocupar el campo al desplegarse.
  • Un punto seguido de un número entero, que indica
    las posiciones decimales que deben desplegarse.
    De ser necesario, se agregan ceros al final.
  • Secuencias especiales
  • para imprimir un símbolo de
  • \n para provocar que el cursor cambie de línea
  • \t para producir una tabulación en el despliegue
  • \ASCII despliega el caracter con el código ASCII
    suministrado

36
Ejemplos
  • printf("El valor de la variable x es d\n", x)
  • El valor de la variable x es 100
  • Si x contenía un valor igual a 100. Avanzará a
    la siguiente línea luego del despliegue
  • printf("El valor de dos cinco es d\n", 25)
  • El valor de dos cinco es 7
  • Avanzará a la siguiente línea luego del
    despliegue
  • printf("El area de un circulo con radio .2f es
    .2f\n",
  • radio, area)
  • El area de un circulo con radio 1.00 es 3.14

37
Ejemplos
  • printf("Este es el numero 2 con formato 5d
    5d", 2)
  • Este es el numero 2 con formato 5d 2
  • printf("Numero 2 con formatos -5d y d -5d
    d",
  • 2, 2)
  • Numero 2 con formatos -5d y d 2 2
  • printf("Este es el caracter c cuyo codigo ASCII
    es d",
  • 'A', 'A')
  • Este es el caracter A cuyo codigo ASCII es 65

38
Ejemplo Diversos Formatos de Conversión
  • / Impresion de los valores de la variable x con
    distintos
  • formatos. /
  • main()
  • float x 0.001234
  • / 1 Notacion exponencial /
  • printf("x formateado como e ....... e\n",
    x)
  • / 2 Notacion con punto decimal /
  • printf("x formateado como f ....... f\n",
    x)
  •  
  • / 3 Notacion con punto decimal, empleando 10
    espacios /
  • printf("x formateado como 10f ..... 10f\n",
    x)
  •  
  • / 4 Notacion con punto decimal, empleando 10
    espacios
  • de los cuales 3 estan despues del punto.
    /
  • printf("x formateado como 10.3f ...
    10.3f\n", x)

39
Entrada con formato scanf
  • Sintaxis
  • scanf ( "cadena_de_control", lista_de_argumentosgt
    )
  • La lista de argumentos consiste de una secuencia
    de punteros a variables, en las cuales se
    almacenarán las entradas dadas por el usuario.

40
Contenido de cadena de control
  • Espacios en blanco, tabuladores o finales de
    línea, los cuales no se tomarán en cuenta.
  • Caracteres ordinarios (distintos de ), los
    cuales se espera que coincidan con el próximo
    caracter , distinto de blanco del flujo de
    entrada.
  • Especificaciones de conversión
  • Un campo de entrada se define como una cadena de
    caracteres delimitada por espacios en blanco
    (incluyendo tabulador y fin de línea).

41
Caracteres de conversión
  • d número entero argumento debe ser puntero a
    int.
  • h número entero argumento debe ser puntero a
    short int.
  • lx número entero argumento debe ser puntero a
    long int.
  • c carácter argumento debe ser puntero a char.
    Para leer el primer caracter distinto de blanco
    debe emplearse 1s.
  • s cadena de caracteres argumento debe ser un
    puntero a caracter, o el nombre de un vector de
    caracteres.
  • f número con decimales argumento debe ser
    puntero a float. Entrada puede ser en notación de
    punto fijo (parte entera, punto, decimales), o de
    punto flotante (mantisa, E, exponente).
  • lf número con decimales argumento debe ser
    puntero a double.

42
Ejemplos
  • scanf("d", edad)
  • Espera entero que será almacenado en la variable
    edad.
  • scanf("4d", agno)
  • Espera el año actual (4 dígitos). Si se ingresan
    más de 4 dígitos, los restantes se descartarán, o
    se dejarán para la siguiente llamada a scanf.
  • scanf("d f", edad, salario)
  • Espera un número entero y uno con decimales.
  • scanf("s", nombre)
  • Espera una cadena de caracteres (string).
    Entrada se almacenará en el vector nombre, y se
    delimitará con un ASCII(0) al final.

43
Ejemplo lectura de números enteros
  • main()
  • int a, b, c
  • printf("Ingrese los valores de a b c ")
  • scanf("d d d", a, b, c)
  • printf("Los valores de a, b y c son d d
    d\n", a, b, c)

44
Algunos detalles sobre el lenguaje C
  • Conversiones de tipos
  • Problema de intercambiar dos variables
  • Operadores y --

45
Conversiones de tipos
  • Conversiones automáticas
  • De entero a flotante
  • a 4 4.0 ? 4.0 4.0 ? 8.0
  • De flotante a entero
  • b 3.5 3 ? 3.5 3.0 ? 6.5 ? 6
  • Conversiones manuales (casting de tipos)
  • (float)1 ? 1.0
  • (int)1.5 ? 1.0

Para los ejemplos float a int b
46
El problema de intercambiar dos variables
  • En C

tmpA AB Btmp
47
El problema de intercambiar dos variables
  • main()
  • int var1, var2 / Variables enteras que
    seran intercambiadas /
  • int aux / Variable auxiliar
    necesaria para hacer
  • el intercambio /
  • var1 10 / Asigna valores a las
    variables /
  • var2 30
  • / Imprime el valor antes del intercambio /
  • printf("var1 contiene d y var2 contiene
    d\n", var1, var2)
  • aux var1
  • var1 var2
  • var2 aux
  • / Imprime el valor luego del intercambio /
  • printf("var1 contiene d y var2 contiene
    d\n", var1, var2)

48
Operadores y --
  • Veamos cual es el resultado del siguiente
    programa
  • include ltstdio.hgt
  • int main()
  • int b, x
  • x 5
  • printf("Inicialmente b es indefinido y x es
    d\n", x)
  • printf("Probemos b x\n")
  • b x
  • printf("-gt b es d y x es d\n", b, x)
  • printf("Probemos b x\n")
  • b x
  • printf("-gt b es d y x es d\n", b, x)

49
Operadores y --
  • Interpretación correcta
  • b x
  • notación postfija (asigna a b el valor antes del
    incremento)
  • b x
  • notación prefija (asigna a b el valor después del
    incremento)
Write a Comment
User Comments (0)
About PowerShow.com