Programación 1: introducción a C

38
Programación 1 Introducción a C Angel Vázquez-Patiño [email protected] Departamento de Ciencias de la Computación Universidad de Cuenca 3 de abril de 2017

Transcript of Programación 1: introducción a C

Page 1: Programación 1: introducción a C

Programación 1

Introducción a C

Angel Vázquez-Patiñ[email protected]

Departamento de Ciencias de la ComputaciónUniversidad de Cuenca

3 de abril de 2017

Page 2: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 2/38

Objetivos

1. Presentar C

2. Implementar programas simples en C

Page 3: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 3/38

Contenido

Antecedentes

Qué es C

Pasos para crear y ejecutar un programa en C

¡Hola mundo!

Imprimiendo texto

Suma de enteros

Aritmética

Operadores relacionales y de igualdad

Page 4: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 4/38

Antecedentes

Page 5: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 5/38

Antecedentes

Solución de problemas y programación

1) Analizar el problema

2) Diseñar un algoritmo

3) Traducir el algoritmo

4) Depurar el programa

Page 6: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 6/38

Qué es C

Page 7: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 7/38

Qué es C● Paradigma imperativo (procedural), estructurado● Apreciado por la eficiencia del código que produce● Tipos de datos estáticos, débilmente tipificado, de

medio nivel● Adopción de estándar (ISO/IEC 9899:1990) hace que

el código sea portable entre plataformas y/o arquitecturas.

Medio nivel● Dispone de las estructuras típicas de los lenguajes de

alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel

Page 8: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 8/38

Qué es C● Los compiladores suelen ofrecer extensiones al

lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos

● Vea

http://www.topprogramminglanguages.com/

http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages

Page 9: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 9/38

Qué es C

Page 10: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 10/38

Qué es C

Bibliotecas C● Una biblioteca de C es una colección de

funciones utilizadas en el lenguaje de programación C

Bibliotecas más comunes

1) Biblioteca estándar de C

2) Biblioteca del estándar ANSI C

Page 11: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 11/38

Qué es C

Consejo de rendimiento● El uso de las bibliotecas de C en vez de

escribir nuestras propias versiones puede mejorar el rendimiento porque son cuidadosamente escritas para ejecutarse eficientemente. Además, acorta del tiempo de desarrollo.

Page 12: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 12/38

Pasos para crear y ejecutar un programa en C

Page 13: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 13/38

Crear y ejecutar un programa en C

Fases

1) Edición

2) Compilación

3) Ejecución

Page 14: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 14/38

Crear y ejecutar un programa en C

Fases

Page 15: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 15/38

Crear y ejecutar un programa en C

Tipos de errores

1) Errores de compilación

2) Errores en tiempo de ejecución

3) Errores lógicos

Vea https://goo.gl/gG9Y49

Page 16: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 16/38

¡Hola mundo!

Page 17: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 17/38

¡Hola mundo!

Page 18: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 18/38

¡Hola mundo!

// necesario para utilizar printf()

#include <stdio.h>

int main(void)

{

printf("Hola Mundo");

return 0;

}

Page 19: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 19/38

Imprimiendo texto

Page 20: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 20/38

Imprimiendo texto#include <stdio.h>

// Imprime en una línea

// con múltiples sentencias

int main(void)

{

printf("¡Bienvenido al ");

printf("lenguaje C!");

return 0;

}

Page 21: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 21/38

Imprimiendo texto

#include <stdio.h>

// Imprime múltiples líneas

// con una sentencias

int main(void)

{

printf("¡Bienvenido\n a\n la\n programación\n en\n C!");

return 0;

}

Page 22: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 22/38

Secuencias de escape

Secuencia Valor

\n Nueva línea

\r Retorno de carro (carriage return). El cursor pasa a la primera posición de la línea en donde está

\t Tabulación

\\ Muestra la barra invertida

\” Muestra la comilla doble

\? Muestra un signo de interrogación

\número_octal Muestra el carácter ASCII correspondiente según el número octal que se haya especificado

\xnúmero_hexadecimal Muestra el carácter ASCII correspondiente según el número hexadecimal que se haya especificado

\' Apóstrofe o comilla simple

Page 23: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 23/38

Suma de enteros

Page 24: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 24/38

Suma de enteros#include <stdio.h>

int main(void)

{

int num1 = 0, num2 = 0, sum = 0; // inicialización

printf("Ingrese entero 1: "); // imprime en pantalla

fflush(stdout); //vacía buffer de salida

scanf("%d",&num1); // guarda valor introducido en la variable

Page 25: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 25/38

Suma de enterosprintf("Ingrese entero 2: ");

fflush(stdout);

scanf("%d",&num2);

sum = num1 + num2; // asignación de valor a variable

printf("Suma: %d", sum); // imprime la suma como entero

return 0;

}

Page 26: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 26/38

Aritmética

Page 27: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 27/38

Operadores aritméticos

Operación Operador Expresión CAdición + r = f+7Sustracción - r = p - cMultiplicación * r = b * mDivisión / r = x / yResiduo (mod) % r = r % s

Page 28: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 28/38

Precedencia de operadores

Operador Operación Orden de evaluación* Multiplicación Evaluado primero. Si hay

varios operadores de este tipo, son evaluados de izquierda a derecha

/ División% Residuo

+ Adición Evaluado a continuación. Si hay varios operadores de este tipo, son evaluados de izquierda a derecha

- Sustracción

= Asignación Evaluado al final

Page 29: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 29/38

Precedencia de operadores

Ejercicios

1) int j = 1 + 3 * 4;

2) int j = 1 + 3 - 4;

3) int j = (1 + 3) * 4;

4) int j = 6 / 3 * 2;

5) int j = 6 % 5 / 1 * 2;

6) int j = 3 * 3 % 2;

7) int j = 3 % 2 * 3;

1) 13

2) 0

3) 16

4) 4

5) 2

6) 1

7) 3

Page 30: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 30/38

Operadores relacionales y de igualdad

Page 31: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 31/38

Operadores relacionales y de igualdad

Operador algebraico Operador C Condición C de ejemplo

Operadores de igualdad

= == x == y≠ != x != y

Operadores relacionales

> > x > y< < x > y≥ >= x >= y≤ <= x <= y

Page 32: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 32/38

Precedencia y asociatividad de los operadoresOperador Asociatividad Tipo* / % Izquierda a derecha Multiplicativo+ - Izquierda a derecha Aditivo< <= > >= Izquierda a derecha Relacional== != Izquierda a derecha Igualdad= Derecha a izquierda Asignación

Page 33: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 33/38

Comparación de enteros#include <stdio.h>

int main(void)

{

int num1, num2;

printf("Número 1: ");

fflush(stdout); //vacía buffer de salida

scanf("%d", &num1);

printf("Número 2: ");

fflush(stdout);

scanf("%d", &num2);

if(num1 == num2){

printf("%d = %d\n", num1, num2);

} else

printf("%d != %d\n", num1, num2);

Page 34: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 34/38

Comparación de enterosif(num1 < num2){

printf("%d < %d\n", num1, num2);

}

if(num1 > num2){

printf("%d > %d\n", num1, num2);

}

if(num1 <= num2){

printf("%d <= %d\n", num1, num2);

}

if(num1 >= num2){

printf("%d >= %d\n", num1, num2);

}

return 0;

}

Page 35: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 35/38

Conceptos y términos importantes

Page 36: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 36/38

Conceptos y términos importantes● Lenguaje de programación fuertemente tipado● Tipos de errores● Operadores● fflush()

Page 37: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 37/38

Referencias● Is C strongly typed?, https://goo.gl/ZGzrST● C, https://goo.gl/kJz1sH● La Función fflush en Lenguaje C,

https://goo.gl/wxyJTV● printf y scanf en C/C++, https://goo.gl/WzMZLt

Page 38: Programación 1: introducción a C

03/04/17 Angel Vázquez-Patiño 38/38

Preguntas