Upload
truongtuyen
View
234
Download
0
Embed Size (px)
Citation preview
1
Teoría 8
Lenguaje “C”: Introducción
Primer Cuatrimestre - 2018
Int. a la Computación- Int. a la Programación – Fund. De la Informática
2
4- Volver hacia atrás: perfeccionar la solución 4 Ejecutar el algoritmo bosquejado.
Etapas en el proceso de resolver un problema:
1- Comprender el problema: lograr una abstracción
4 Descomposición del problema.
2- Bosquejar una solución:
4 Determinar un Algoritmo.
4 Codificar ese algoritmo.
←
← 4 Codificar ese algoritmo.
Lenguaje “C”
Int. a la Computación- Int. a la Programación – Fund. De la Informática
3- Ejecutar el plan:
4 Comprobar cada uno de los pasos. 4 Énfasis en la habilidad de ejecutar el plan trazado y no en realizar los cálculos en sí.
3
Algoritmo Lenguaje del Problema
Lenguaje de Programación Lenguaje de Diseño
Codificación
“C” Implica: 4 determinar los objetos con los que se trabaja. 4 determinar como se operan los objetos. 4 las estructuras de control que se pueden expresar. 4 la simbología asociada a ellos.
Codificación
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
4
OBJETOS
variables constantes
Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar.
Variables
4 un nombre que la identifica. Deben comenzar con una letra o el signo “subrayado” (_) y luego seguir con cualquier combinación de letras (mayúsculas, minúsculas),dígitos o signo de subrayado.
4 un tipo que describe los valores que puede tomar la variable y las operaciones que se pueden realizar con la misma.
4entero 4real 4carácter 4lógico
Lenguaje de diseño Lenguaje “C” 4entero
4real (flotante) 4caracter 4?
int float char
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
5
El tipo entero, consiste de un conjunto finito de valores de los números enteros. La cardinalidad del conjunto depende de las capacidades del procesador. En general el rango de valores es -32768 a 32767. El tipo real (flotante), consiste de un conjunto finito de valores de los números reales. La cardinalidad del conjunto depende de las capacidades del procesador. En general el rango de valores es -3.4E+38 a 3.4E+38. El tipo caracter, permite representar caracteres individuales. El conjunto de caracteres posibles se encuentra detallado en una tabla denominada ASCII. Ejemplos
factorial: entero
factorial: real
letra: caracter
int factorial
float factorial
char letra
int i int I
Son dos variables diferentes
Lenguaje de Diseño Lenguaje “C”
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
6
Constantes
4 un nombre que la identifica. Deben comenzar con una letra o el signo “subrayado” (_) y luego seguir con cualquier combinación de letras (mayúsculas, minúsculas),dígitos o signo de subrayado. Por convención los nombres de constantes se escriben en MAYUSCULAS.
4 un tipo que describe los valores que puede tomar la constante y las operaciones que se pueden realizar con la misma.
Ejemplo Lenguaje de diseño Lenguaje “C” valores expresados directamente en el código
const int V_ENTERO = 15 const float V_REAL = 15.0 const char LETRA = ‘a’ Conta 4
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
4 Relacionales 4 Lógicas
7
Operaciones entre objetos Tipos:
+ suma - resta * producto / división % módulo
Operadores Aritméticos
operador descripción
Operadores Relacionales < menor
> mayor <= menor o igual >= mayor o igual == igual != distinto
operador descripción Operadores Lógicos
operador descripción && and || or ! not
4 Aritméticas. 4 Relacionales 4 Lógicas
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
8
Operador de Asignación Las variables reciben un valor a través de una operación de asignación
Ejemplos Lenguaje de Diseño Lenguaje “C” v_entero = 10
c = (a + 1) + b a = b d = c%4
v_entero 10 c (a + 1) + b a b d c//4
El operador de asignación en C es el símbolo = Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
int v_entero float v_real int v_resul v_entero = 2 v_real = 7 / v_entero v_real = 7 / 2.0 v_resul = v_entero + 3 v_real = (v_entero * 1.0) + 3.2 v_entero = v_real + 3
Resultado a almacenar
9
Combinando Flotantes con Enteros Se debe tener cuidado cuando se mezclan enteros con flotantes pues se puede obtener resultados inesperados
3.0
5
8
3.5
5.2
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
10
Tabla ASCII 0 NUL 32 space 64 @ 96 `
1 SOH 33 ! 65 A 97 a2 STX 34 " 66 B 98 b3 ETX 35 # 67 C 99 c4 EOT 36 $ 68 D 100 d5 ENQ 37 % 69 E 101 e6 ACK 38 & 70 F 102 f7 BEL 39 ' 71 G 103 g8 BS 40 ( 72 H 104 h9 HT 41 ) 73 I 105 i10 LF 42 * 74 J 106 j11 VT 43 + 75 K 107 k12 FF 44 ´ 76 L 108 l13 CR 45 - 77 M 109 m14 O 46 . 78 N 110 n15 SI 47 / 79 O 111 o16 DLE 48 0 80 P 112 p17 DC1 49 1 81 Q 113 q18 DC2 50 2 82 R 114 r19 DC3 51 3 83 S 115 s20 DC4 52 4 84 T 116 t21 NAK 53 5 85 U 117 u22 SYN 54 6 86 V 118 v23 ETB 55 7 87 W 119 w24 CAN 56 8 88 X 120 x25 EM 57 9 89 Y 121 y26 SUB 58 : 90 Z 122 z27 ESC 59 ; 91 [ 123 {28 FS 60 < 92 \ 124 |29 GS 61 = 93 ] 125 }30 S 62 > 94 ^ 126 ~31 US 63 ? 95 _ 127 DEL
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
11
Combinando Caracteres con Enteros Internamente, no existe una diferencia real entre los caracteres y los enteros. El tipo char es un caso particular de un entero, enteros en el rango 0 al 127 (128 en total). Cada caracter de la tabla ASCII tiene asociada una posición numérica en ella. Se podría utilizar entonces su número de posición para poder referenciar un caracter en particular. int v_entero char letra letra = ´A’ v_entero = letra * 2 v_entero = letra + ‘$’ letra = ‘A’ + ‘$’ letra = ‘A’ + 5
Resultado a almacenar
130
101
e
F
Lenguaje “C”
12
Estructuras de Control
• Secuencial
• Condicional
• Repetición o Iteración
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
13
Estructuras de Control: Secuencial
tarea i
tarea i+1
En “C” la secuencia de dos acciones (sentencias) se expresa por medio del símbolo ; (punto y coma)
int v_entero; char letra; letra = ´A’; v_entero = letra * 2; v_entero = letra + ‘$’; letra = ‘A’ + ‘$’; letra = ‘A’ + 5;
;
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
14
Estructuras de Control: Condicional (Selección)
tarea i tarea j
condición V F
tarea j
condición V F if (<condición>) { <sentencias> }
if (<condición>) {
<sentencias> } else {
<sentencias> }
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
15
Ejemplo:
a- Dados dos valores enteros si el primero es mayor que el segundo, intercambiarlos. int v_ent1; int v_ent2; int aux; v_ent1 = 30; v_ent2 = 20; aux = 0; if (v_ent1 > v_ent2) { aux = v_ent1; v_ent1 = v_ent2; v_ent2 = aux; }
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
16
Ejemplo: b - Dados dos valores enteros si el primero es mayor que el segundo, intercambiarlos, caso contrario dejar indicado en la variable auxiliar que no se hizo ningún cambio.
int v_ent1; int v_ent2; int aux; v_ent1 = 30; v_ent2 = 20; aux = 0; if (v_ent1 > v_ent2) { aux = v_ent1; v_ent1 = v_ent2; v_ent2 = aux; } else { aux = -1; }
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
17
tarea i
Cond?
Estructuras de Control: Repetición (Iteración)
F
V
while (<condición>) { <sentencias> }
La/s sentencia/s se ejecutará/n mientras la condición sea verdadera. Puede suceder que si la condición es falsa en la primer evaluación la/s sentencia/s no se ejecuten nunca.
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
18
Ejemplo: a- Dados un valor entero, calcular su factorial.
(en Lenguaje “C”)
int numero; int factorial; int agrego; numero = 4; factorial = 1; agrego = 1; while (agrego <= numero) { factorial = factorial * agrego; agrego = agrego + 1; }
NUMERO, FACTORIAL, AGREGO: entero NUMERO 4 FACTORIAL 1 AGREGO 1 MIENTRAS AGREGO <= NUMERO HACER FACTORIAL FACTORIAL * AGREGO AGREGO AGREGO + 1 FINMIENTRAS
(en Lenguaje de Diseño)
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
19
Repetición: While versus For
while (<condición>) { <sentencias cuerpo> <sentencia iteración> }
for (<sentencia inicial>; <condición>;<sentencia iteración>) { <sentencias cuerpo> }
i = 1; while (i <= 10) { <sentencias cuerpo>; i = i+1; } for (i =1; i <=10; i=i+1) { <sentencias cuerpo>; }
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
int numero; int factorial; int agrego; numero = 4; factorial = 1; agrego = 1; while (agrego <= numero) { factorial = factorial * agrego; agrego = agrego + 1; }
20
Ejemplo:
(código del cálculo de factorial con “while”)
(código del cálculo de factorial con “for”)
int numero; int factorial; int agrego; numero = 4; factorial = 1; for (agrego = 1; agrego <= numero;
agrego = agrego +1) { factorial = factorial * agrego; }
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
21
Estructura del programa
La/s sentencia/s que se ejecutará/n deben estar reunidas u organizadas de manera que el procesador sepa donde comienza y donde termina un programa en lenguaje “C”.
int main() { ...Sentencias ejecutables... return (0); }
ALGORITMO “<nombre>” COMENZAR ...Sentencias ejecutables... FIN
(en Lenguaje de Diseño)
(en Lenguaje “C”)
La instrucción return(0) debe ser la última instrucción del programa. Esta instrucción sirve como ayuda para conocer si la ejecución del algoritmo terminó exitosamente. Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
22
Ejemplo:
ALGORITMO “Factorial de n” COMENZAR NUMERO, FACTORIAL, AGREGO: entero NUMERO 4 FACTORIAL 1 PARA AGREGO DESDE 1 HASTA NUMERO CONPASO 1 HACER FACTORIAL FACTORIAL * AGREGO FINPARA FIN
(en Lenguaje de Diseño)
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
23
(en Lenguaje “C”)
int main() { int numero; int factorial; int agrego; numero = 4; factorial = 1; for (agrego = 1; agrego <= numero;
agrego = agrego +1) { factorial = factorial * agrego; } return(0); }
Ejemplo:
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
24
Salida de Información La salida de información en “C” no se realiza a través de una acción primitiva, sino a través de una función denominada printf. Las funciones son instrucciones que realizan una tarea en particular (el mismo concepto al de subalgoritmo visto en el lenguaje de diseño) Sintáxis
Expresiones cuyo resultado se desea imprimir luego de ser calculadas. Pueden ser simplemente el contenido de una variable.
Texto asociado a los valores a ser impresos. Puede ocurrir que no se desee asociar ningún valor al texto.
Restricción Dado que existen diversos tipos de datos y la función es de uso general, se debe especificar el tipo (formato) de la información que se va a mostrar. En general el formato coincide con el tipo resultante de la expresión.
printf(<formato>, expresion1, expresion2, ...)
Lenguaje “C”
25
Ejemplos:
a)
int numero; numero = 4; printf(“El valor es %d”, numero);
printf(“Esto es un cartel”)
Formato: solo es un cartel, sin expresiones asociadas.
b)
Expresión: es simplemente el nombre de una variable. Formato: cartel junto con la
especificación de cómo debe mostrarse el valor almacenado en “numero”.
int numero; numero = 4; printf(“El doble de %d es %d”, numero, numero*2);
c)
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
26
Especificaciones de Formato
caracter significado %d entero decimal %f flotante %c caracter
Ejemplo:
#include <stdio.h> int main() { int numero; int factorial; int agrego; numero = 4; factorial = 1; for (agrego = 1; agrego <= numero;
agrego = agrego +1) { factorial = factorial * agrego; } printf(“El Factorial de %d es %d”, numero, factorial); return(0); }
Lugar donde se encuentra el código de la función
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
27
Salida en pantalla:
El Factorial de 4 es 24
El número ingresado es: 4 Su Factorial es: 24
Variantes:
printf(“El número ingresado es: %d \n”, numero); printf(“Su Factorial es: %d”, factorial);
printf(“El Factorial de %d es %d”, numero,factorial);
Int. a la Computación- Int. a la Programación – Fund. De la Informática
Lenguaje “C”
int main() { char palabra[10]; palabra[0] = ‘c’; palabra[1] = ‘a’; palabra[2] = ‘s’; palabra[3] = ‘a’; palabra[4] = ‘\0’; printf(“%s”, palabra); return(0); }
Ejercicio: Escribir un programa en Lenguaje de Diseño que permita el ingreso de 10 caracteres y determine qué porcentaje de vocales ingresó.
ALGORITMO “VOCALES” COMENZAR Acar: arreglo [1..5] de carácter Vocales, I, J: entero Porcentaje: real Ingreso: caracter Acar[1] ß ‘a’ Acar[2] ß ‘e’ Acar[3] ß ‘i’ Acar[4] ß ‘o’ Acar[5] ß ‘u’ PARA I DESDE 1 HASTA 10 CON PASO 1 HACER ESCRIBIR “Ingrese un carácter” LEER Ingreso PARA J DESDE 1 HASTA 5 CON PASO 1 HACER SI Ingreso = Acar[J] ENTONCES Vocales ß Vocales + 1 FINSI FINPARA FINPARA Porcentaje ß(Vocales * 10)/ 100 FIN
Codificar este programa en Lenguaje C
29
Referencias: - Tutorial del Lenguaje “C”, Dpto. de Informática. - Practical “C” Programming, Steve Oualline. - El Lenguaje de Programación “C”, C. Brian, W. Kerningan and D. Ritchie.