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
03/04/17 Angel Vázquez-Patiño 2/38
Objetivos
1. Presentar C
2. Implementar programas simples en 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
03/04/17 Angel Vázquez-Patiño 4/38
Antecedentes
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
03/04/17 Angel Vázquez-Patiño 6/38
Qué es 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
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
03/04/17 Angel Vázquez-Patiño 9/38
Qué es 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
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.
03/04/17 Angel Vázquez-Patiño 12/38
Pasos para crear y ejecutar un programa en 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
03/04/17 Angel Vázquez-Patiño 14/38
Crear y ejecutar un programa en C
Fases
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
03/04/17 Angel Vázquez-Patiño 16/38
¡Hola mundo!
03/04/17 Angel Vázquez-Patiño 17/38
¡Hola mundo!
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;
}
03/04/17 Angel Vázquez-Patiño 19/38
Imprimiendo texto
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;
}
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;
}
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
03/04/17 Angel Vázquez-Patiño 23/38
Suma de enteros
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
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;
}
03/04/17 Angel Vázquez-Patiño 26/38
Aritmética
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
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
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
03/04/17 Angel Vázquez-Patiño 30/38
Operadores relacionales y de igualdad
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
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
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);
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;
}
03/04/17 Angel Vázquez-Patiño 35/38
Conceptos y términos importantes
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()
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
03/04/17 Angel Vázquez-Patiño 38/38
Preguntas
Top Related