29
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

Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

Embed Size (px)

Citation preview

Page 1: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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

Page 2: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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

Page 3: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 4: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 5: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 6: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 7: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 8: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 9: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 10: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 11: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 12: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 13: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 14: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 15: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 16: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 17: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 18: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 19: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 20: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 21: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 22: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 23: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 24: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 25: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 26: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 27: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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”

Page 28: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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

Page 29: Teoría 8 Lenguaje C : Introduccióndirinfo.unsl.edu.ar/.../materiales/7f2b3-tr8-cintro-1c-2018.pdf · 3 Algoritmo Lenguaje del Problema Lenguaje de Diseño Lenguaje de Programación

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.