Introducción Al Lenguaje C

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 65

UNIVERSIDAD NACIONAL DE ASUNCIÓN

FACULTAD POLITÉCNICA
Construyendo el futuro

Presentación de la
asignatura e
Introducción a C
Programación - Departamento de Informática
Objetivos de la Presentación
• Presentación de la asignatura: objetivos, contenido y
bibliografía
• Motivar al estudiante al aprendizaje sobre lenguajes de
programación (en especial C) a través de aplicaciones en la
vida moderna.
• Familiarizar al estudiante con el entorno de programación
sugerido, y que pueda aplicarlo para sus primeros programas
en C.

Facultad Politécnica - UNA 2


Contenido de la Presentación
• Presentación de la asignatura
• Motivación – Uso de algoritmos/programación en
aplicaciones conocidas
• ¿Por qué aprender C?
• Nuestro primer programa en C – Elementos básicos
• Tipos de datos y variables
• Expresiones y operadores
• Instrucciones de entrada y salida
de datos
• Ejercicios propuestos
Agradecimientos al Prof. Cristian Cappo por los materiales de referencia.
Facultad Politécnica - UNA 3
Objetivos - Programación
• Emplear las herramientas de programación del lenguaje C para la
resolución de algoritmos.
• Utilizar las operaciones básicas de entradas y salidas para realización de
programas en C.
• Analizar herramientas de programación estructurada para el desarrollo de
programas más complejos.

Facultad Politécnica - UNA 4


Contenido
1. Elementos de un programa en lenguaje C.
1. identificadores y palabras claves.
2. Tipos de datos simples.
3. Constantes.
4. Variables.
5. Declaraciones.
6. Sentencias.
7. Expresiones y operadores.
8. Funciones.
9. Comentarios.
10. Directivas del procesador de C.

2.Operaciones básicas de entrada por teclado y salida por


pantalla.
1. La función printf().
2. La función scanf().
3. Otras funciones de entrada.
Facultad Politécnica - UNA 5
Contenido
3. Sentencias de control.
1. La sentencia if.
2. La sentencia switch.
3. La sentencia while.
4. La sentencia do-while.
5. La sentencia for.
6. Bucles anidados.
1. La sentencia break
2. La sentencia continue.
3. La sentencia goto.

4. Punteros.
1. Declaración de punteros.
2. Operaciones con punteros.

Facultad Politécnica - UNA 6


Contenido
5. Funciones.
1. Definición de una función
2. Llamada a una función
3. Declaración de una función
4. Paso de parámetros a una función
5. Reglas de ámbito de variables.

6. Arrays y cadenas de caracteres.


1. Arrays unidimensionales.
2. Arrays bidimensionales.
3. Arrays multidimensionales.
4. Cadenas de caracteres.
5. Paso de arrays a funciones.

Facultad Politécnica - UNA 7


Contenido
7. Estructura de Datos.
1. Estructuras.
2. Uniones.
3. Variables definidas por el programador.
4. Arrays de estructuras.
5. Punteros a estructuras.
6. Enumeraciones.
7. Uso de TYPEDEF.
8. Uso de SIZEOF.

8. Archivos.
1. Introducción
2. Apertura de un archivo
3. Cierre de un archivo
4. Control de final de archivo.
5. Escritura y lectura de un archivo.
6. Acceso secuencial
7. Acceso directo.
Facultad Politécnica - UNA 8
Bibliografía
1“THE C PROGRAMING LANGUAGE” Kermighan y Ritchie – Prentice – Hall, Segunda
Edición;
2“FUNDAMENTOS DE PROGRAMACIÓN: ALGORITMOS, ESTRUCTURAS DE DATOS Y
OBJETOS” Luis Joyanes Aguilar – McGraw – Hill – Cuarta Edición.
3 “COMO PROGRAMAR EN C/C++ Y JAVA” Deitel, Deitel – Prentice – Hall – Cuarta
Edición;

tinyurl.com/ProgFPUNA

Facultad Politécnica - UNA 9


Información de la cátedra
Evaluaciones:
• Exámenes: 70%
• Trabajos: 30%
• Observación: Las prácticas serán distribuidas en actividades
prácticas (tareas semanales) durante el semestre. La presentación
de los mismos será considerada como parte del examen parcial

Recomendaciones:
• Buscar un grupo de estudio.
• Mucha práctica!! Es la mejor forma de aprender. No tener miedo a
equivocarse ni asustarse con los errores marcados por el compilador.

Herramientas:
• Para las prácticas de lenguaje C utilizaremos un
entorno de distribución gratuita Dev-C++ o
Codeblocks. Facultad Politécnica - UNA 10
Algoritmo

“Un algoritmo es un procedimiento computacional bien definido


que toma un conjunto de valores como entrada y produce un
conjunto de valores como salida.”
- Cormen et al. (2001)

“Conjunto de pasos para


resolver un problema”

Facultad Politécnica - UNA 11


Algoritmo – Casos de éxito

Alumnos de doctorado
en Princeton!!

Facultad Politécnica - UNA 12


Documental recomendado

https://www.youtube.com/watch?v=kiFfp-HAu64
Facultad Politécnica - UNA 13
Ejemplo: Google Maps

Facultad Politécnica - UNA 14


Ejemplo: Tráfico aéreo

*Rutas de United Airlines Facultad Politécnica - UNA 15


Ejemplo: Enrutamiento en redes

Facultad Politécnica - UNA 16


Algoritmo – Formas de expresión
• Seudocódigo • Lenguaje de Programación
(semi hablado) (comunicación con la computadora)

Ejemplo: Suma de dos números Ejemplo: Suma de dos números en lenguaje C

Entrada: a,b → números #include<stdio.h>


Salida: s, la suma de a y b #include<conio.h>
void main(void)
{
inicio int a, b, s;
leer (a,b) printf("Ingrese el primer número ");
s=a+b scanf("%d",&a);
escribir (s) printf("\n\nIngrese el segundo numero ");
fin scanf("%d",&b);
s=a+b;
printf("\n\nEl resultado de la adicion es: %d",s);
getch();
}
Facultad Politécnica - UNA 17
Lenguajes de programación
Nos permiten comunicarnos con la computadora!
Ejemplo de lectura de archivos en PERL

Facultad Politécnica - UNA 18


Hay para elegir…

Facultad Politécnica - UNA 19


Lenguajes C/C++
El lenguaje C fue desarrollado por Dennis Ritchie (1941-2011) en
los años 70. Es un lenguaje de programación de propósito general.
Fue producto de la recodificación del S.O. Unix para posibilitar su
portabilidad.

Estandarizado en el año 1989 por ANSI (American National Standards


Institute). Actualmente el estándar es C11 (publicado en 2011) que contiene
algunas características para compatibilizar con C++.

C++ es un lenguaje de programación diseñado a mediados de los


años 1980 por Bjarne Stroustrup. La intención de su creación fue
el extender al lenguaje de programación C para permitir la
manipulación de objetos.

Facultad Politécnica - UNA 20


Lenguajes C/C++
Características específicas
de programación Otras características
orientada a objetos específicas de C++
Lenguaje C++

Lenguaje C

Características
comunes entre C y C++

Facultad Politécnica - UNA 21


¿Porqué aprender C ?
Su popularidad

https://www.tiobe.com/tiobe-index/
Facultad Politécnica - UNA 22
The Top Programming Languages 2017 y 2018
IEEE Spectrum magazine
http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017
http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018

2017 2018

Facultad Politécnica - UNA 23


The Top Programming Languages 2019
IEEE Spectrum magazine
http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019

Facultad Politécnica - UNA 24


HackerRank Developer Skills Report 2019
https://research.hackerrank.com/developer-skills/2019#intro
Lenguajes conocidos por los programadores (70000+)

Facultad Politécnica - UNA 25


Dato interesante…
https://research.hackerrank.com/developer-skills/2019#intro

Facultad Politécnica - UNA 26


¿Por qué aprender C?
• C es uno de los principales lenguajes de programación
en Tecnología de la Información y Comunicación y en
Ciencias de la Computación.
• Es uno de los más populares en la industria.
• Utilizado para programación de sistemas embebidos y
mecatrónicos con interface de hardware (electrónica,
electricidad, aeronáutica, etc).
• Es uno de los más comunes (y obligatorios) enseñados
en todas las universidades del mundo.
• Es base de muchos lenguajes actuales.
• Es estandarizado (algunos no lo son como PHP, Python,
etc)
https://en.wikipedia.org/wiki/List_of_C-family_programming_languages

Facultad Politécnica - UNA 27


Características generales de C
• Lenguaje de programación estructurada
• Relativamente simple
• Genera código de máquina muy eficiente
• Es muy flexible con poca comprobación de errores
• Mucha libertad al programador
• Ampliamente usado en programación de sistemas
(sistemas operativos, base de datos, librerías gráficas,
telecomunicaciones, drivers, etc).
• Mucho, mucho código escrito mundialmente en todas
las áreas. Muchas librerías disponibles.

Facultad Politécnica - UNA 28


Programa simple en C - Hola Mundo

#include<stdio.h>

int main() {
printf("Hola mundo!! (Programacion)");
return 0;
}

Facultad Politécnica - UNA 29


Programa simple en C - Hola Mundo

Facultad Politécnica - UNA 30


Programa simple en C - Hola Mundo

Facultad Politécnica - UNA 31


Error más común: olvidar el ;

Facultad Politécnica - UNA 32


¿Cuál compilador y entorno utilizar?
https://en.wikipedia.org/wiki/List_of_compilers#C_compilers

Más de 60 opciones posibles: para Windows, Unix, MacOS, DOS, IBM mainframe,
Tipo de licencias: Propietarias, LGPL, GPL, Freeware, etc

Entornos de desarrollo integrados (IDEs)


- Eclipse, Netbeans, MVC, Code::Blocks, GNAT Programming Studio, CodeLite, Qt
Creator, DevC++, Anjuta, MonoDevelop, y muchísimos más

Para una comparación de entornos de programación:


https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environment
s#C.2FC.2B.2B

Facultad Politécnica - UNA 33


DevC++

Facultad Politécnica - UNA 34


Code::Blocks

Facultad Politécnica - UNA 35


CodeLite (desde Linux)

Facultad Politécnica - UNA 36


Virtual-C

Facultad Politécnica - UNA 37


Programa simple en C (2)
• Imprimir la suma de dos variables enteras que se
leen por teclado
#include <stdio.h>

int main() {
int a, b;
printf(“Introduzca dos variables enteras “);
scanf(“%d%d”, &a, &b);
printf(“La suma es %d\n”, a + b);
return 0;
}

Facultad Politécnica - UNA 38


Modelo de compilación en C
C es un lenguaje compilado La generación de código ejecutable es
específico para la plataforma ( máquina
Fuente C + sistema operativo ),
test.c por ejemplo: Intel/Linux

math.h Preprocesador
stdio.h
Código expandido
Archivos cabecera Compilador
Código ensamblado

Ensamblador Código objeto


test.o Archivos objeto
libc.lib
Enlazador o linker
Ejecutable
Librerías
Código ejecutable test.exe
Facultad Politécnica - UNA 39
Estructura de un programa en C
Directivas del preprocesador
#include<stdio.h>
Ej: #include<stdio.h>
Definiciones globales

Prototipos

Definición de Funciones int main() {


Todo ejecutable debe tener una función printf("Hola mundo!!");
main() return 0;
}

Facultad Politécnica - UNA 40


Comentarios: // y /*…*/
Los comentarios son ignorados por el compilador, pero son útiles para los
programadores, pues pueden proporcionar información sobre el código.

//: Todo lo que viene después (en la línea) es ignorado por el compilador.
/**/: Todo lo que está en medio es ignorado por el compilador

Facultad Politécnica - UNA 41


Tipo de datos básicos
dependientes de la plataforma
• char
– Entero de 8 bits. Modificadores signed y unsigned. Ejemplos de
constantes: ‘A’, ‘B’, ‘c’ (entre comillas simples)
• int
– Entero de 16 o 32 bits. Modificadores: signed, unsigned, short y
long (32 bits). Constantes: 34L, 20000, 3000
• float
– Punto flotante IEEE 754 de 32 bits. Constantes: 12.34F, 4.34e-3F
• double
– Punto flotante IEEE 754 de 64 bits. Modificador: long.
Constantes: 12.23, 0.000034, 0.12323L
• void
– Ausencia de tipo

Facultad Politécnica - UNA 42


Tipo char char b=’a’; ó char b=97;
http://www.theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png

Facultad Politécnica - UNA 43


Literales o constantes
Nombre Descripción Ejemplos
Decimal Entero en base 10 1234
Hexadecimal Entero en base 16 0x1234
Octal Entero en base 8 01234
Carácter Byte en ASCII ‘A’
Punto flotante Número real 1.2
3.4e6
3.456-2
Cadena Texto literal “hola Futuros Ingenieros”

Facultad Politécnica - UNA 44


Valor lógico y cadenas
• En C no existe un tipo de dato “lógico”. En C se
considera:
– El valor entero 0 (cero) como falso
– Todo lo que no sea cero (!0), verdadero
• En C no existe el tipo de dato cadena, solo
arreglo (vector) de tipo char.

* En el estándar C11 ya existe un tipo _Bool , puede utilizarse para hacer más claro
el código pero su uso no es obligatorio.

Facultad Politécnica - UNA 45


Declaración de variables
• C requiere que cada variable sea declarada,
junto a su tipo, antes de su primer uso. Esto
informa al compilador el espacio a reservar en
memoria para esta variable, y también cómo
interpretar su valor.

• La sintaxis para “declarar” una nueva variable en C es directa: simplemente


se escribe su tipo, seguido por su nombre (identificador). Por ejemplo:

int a; // declara la variable a de tipo int (entero)


float real; // declara la variable real de tipo float (punto flotante)
char letra; // declara la variable letra de tipo char (caracter)
int b,c,d; // declara las tres variables b,c,d de tipo int (entero)

Facultad Politécnica - UNA 46


Consideraciones sintácticas
• Existe diferencia entre minúsculas y mayúsculas.
• Todas las palabras reservadas están en
minúsculas
• Todas las sentencias terminan en ; (punto y
coma).
• El valor inicial de las variables esta indefinido.
• La declaración de variables es:
<tipo_dato> lista_variables;
Ejemplo:
int a, b, c;

Facultad Politécnica - UNA 47


Reglas para los identificadores
1.Un identificador se forma con una secuencia de letras (minúsculas de la a a
la z; mayúsculas de la A a la Z; y dígitos del 0 al 9).
2. El carácter subrayado o guión bajo (_) se considera como una letra más.
3. Un identificador no puede contener espacios en blanco, ni otros
caracteres distintos de los citados, como por ejemplo (*,;.:-+, etc.).
4.El primer carácter de un identificador debe ser siempre una letra o un
(_), es decir, no puede ser un dígito.
5. Se hace distinción entre letras mayúsculas y minúsculas. Así, Masa es
considerado como un identificador distinto de masa y de MASA.
6. ANSI C permite definir identificadores de hasta 31 caracteres de longitud.

Ejemplos de identificadores válidos son los siguientes:


• tiempo, distancia1, caso_A, PI, velocidad_de_la_luz
Por el contrario, los siguientes nombres no son válidos (¿Por qué?)
• 1_valor, tiempo-total, dolares$, %final
Facultad Politécnica - UNA 48
Operadores más comunes
• Aritméticos:
o Suma: +
o Resta: -
o Multiplicación: *
o División: /
o Resto: %

• Asignación:
o Operador de igualdad: =
o Operadores +=, -=, *= y /= . Es lo mismo poner a+=1; que a=a+1; (y
análogamente para los demás casos).
o Operadores incrementales (++ y --)
▪ i = 2;
▪ j = 2;
▪ m = i++; // después de ejecutarse esta sentencia m=2 e i=3
▪ n = ++j; // después de ejecutarse esta sentencia n=3 y j=3
Facultad Politécnica - UNA 49
Operadores más comunes
• Relacionales:
o Igual que: ==
o Menor que: <
o Mayor que: >
o Menor o igual que: <=
o Mayor o igual que: >=
o Distinto que: !=

• Lógicos:
o And: &&
o Or: ||
o Operador negación lógica (!): Este operador devuelve un cero
(false) si se aplica a un valor distinto de cero (true), y devuelve
un 1 (true) si se aplica a un valor cero (false). Su forma general
es: !expresion
Facultad Politécnica - UNA 50
Resumen de precedencia de algunos
operadores

Facultad Politécnica - UNA 51


Expresiones
• No se detectan desbordamientos de números
ni de los arreglos (importante!).
• En las divisiones, si los operandos son enteros,
se devuelve sólo el cociente entero (sin
decimales).
• Las operaciones booleanas devuelven cero o
uno para indicar falso o verdadero (recordar
que no existe variables de tipo lógico)

Facultad Politécnica - UNA 52


Asignación
• Es la operación que permite acceder a cierta posición de memoria y
cambiar el valor allí guardado.
• El operador de asignación está definido por el símbolo “=”. A la izquierda
debe aparecer una variable y a la derecha una expresión.
• Ejemplo: a = 10 + 5 . Indica que a la variable de nombre “a” se le asignará
el resultado de evaluar 10 + 5.
• La asignación en C es una operación (no una sentencia) que puede
participar en una expresión.
int a,b,s;
a=5; // asigna el número 5 a a
b=3; // asigna el número 3 a b
s=a+b; // asigna a s la suma de a y b
int c=100; // declara la variable c y le asigna el número 100

c = (d = 10) * 2; ??
Facultad Politécnica - UNA 53
Entrada/Salida
Se realizan a través de funciones pre-incorporadas
de tipo estándar

printf : imprime en la salida estándar


scanf : lee desde la entrada estándar

Ambas funciones recibe una cadena de formato y


una lista de expresiones (printf) o direcciones de
variables (scanf).

Facultad Politécnica - UNA 54


Salida
printf(<cadena formato>,<expr1>,<expr2>, .. <exprn>)

Cadena de formato: es un literal de arreglo de caracteres


(cadena) con especificación %## que indican donde
reemplazar por el valor de la expresión. A continuación
algunos formatos usuales

Formato Interpretación
%d Decimal entero
%f Float
%c Carácter
%s Cadena
%lf Double

Facultad Politécnica - UNA 55


Salida
Ejemplos:
printf(“Entero %d”, 100 );
Entero 100
printf(“Float %f”, 0.0023);
Float 0.0023
printf(“Float %.3f”, 0.0023);
Float 0.002 (3 decimales)
printf(“Cadena %s”, “Hola mundo”);
Cadena Hola mundo
printf(“Carácter %c”, ‘A’);
Carácter A
printf(“Suma de %d+%d = %d”,10,20,10+20);
Suma de 10+20 = 30
Facultad Politécnica - UNA 56
Entrada
scanf(<cadena formato>,<dir1>,<dir2>, .. <dirn>)

Cadena de formato: es un literal de arreglo de


caracteres (cadena) con especificación %##
que indica como interpretar lo que se lee
desde la entrada (por ejemplo teclado):
Fijarse que dir1, dir2, .., dirn indican direcciones
de memoria donde colocar el valor leído desde
la entrada estándar.

Facultad Politécnica - UNA 57


Entrada
Ejemplo de funcionamiento de scanf
int a;
scanf( “%d”, &a);
Memoria

3500
int a

&a = dirección
de la variable a

3500\n scanf (“%d”,&a)


scanf interpreta el buffer
Buffer del teclado
Facultad Politécnica - UNA 58
Ejemplo
Suma de dos números
En C++: En C:
#include<iostream> #include<stdio.h>
using namespace std;

int main() int main()


{ {
int a,b,s; int a, b, s;
cout<<"Ingrese el 1er numero: "; printf("Ingrese el primer numero ");
cin>>a; scanf("%d",&a);
cout<<"Ingrese el 2do numero: "; printf("Ingrese el segundo numero ");
cin>>b; scanf("%d",&b);
s=a+b; s=a+b;
cout<<"\nLa suma es: "<<s<<endl; printf("\n\nEl resultado de la adicion es: %d",s);
return 0; return 0;
} }
Facultad Politécnica - UNA 59
Otros métodos de entrada
• getchar()
Permite la introducción de un carácter por teclado, está incluida en stdio.h. Un
aspecto importante es que se toma el enter como un carácter.
int a,b;
a=getchar();
b=getchar();
printf(“%c %c”,a,b);

• getch() y getche()
Están incluidos en conio.h (Console input and output). Introducen caracteres sin la
necesidad de un “enter” al final. La diferencia entre ambas es que con getch() lo
ingresado por teclado no aparece en pantalla, pero con getche() sí.

Facultad Politécnica - UNA 60


Otros métodos de entrada
#include<stdio.h>

int main(){
char test = getchar();
getchar(); //por el enter
printf("\n(1): %c\n",test);
test = getch();
printf("\n(1): %c\n",test);
test = getche();
printf("\n(2): %c",test);
return 0;
}
Facultad Politécnica - UNA 61
Definiendo constantes
Usando #define Usando const
#include <stdio.h> #include <stdio.h>

#define LARGO 10 int main() {


#define ANCHO 5 const int LARGO = 10;
#define SALTO '\n' const int ANCHO = 5;
const char SALTO = '\n';
int main() { int area;
int area;
area = LARGO * ANCHO;
area = LARGO * ANCHO; printf("Area : %d", area);
printf("Area : %d", area); printf("%c", SALTO);
printf("%c", SALTO);
return 0;
return 0; }
}
Facultad Politécnica - UNA 62
Ejercicios
1- Supongamos que F es un entero que indica la temperatura en
grados Fahrenheit, y queremos transformarla en grados Celsius,
almacenando el valor en el entero C. ¿Son equivalentes las
siguientes expresiones?:
• C=5*(F-32)/9;
• C=5/9*(F-32);

2Luego de ingresar el radio por teclado, hallar la circunferencia y


el área de un círculo.

3Escribir un programa que permita la introducción por teclado


(mediante getchar) de dos valores enteros de una cifra y que
calcule e imprima por pantalla el producto de ellos.

Facultad Politécnica - UNA 63


Ejercicios
4Calcular la suma y el promedio de 5 valores introducidos por
teclado.

5Leer un número de 5 cifras e imprimir el dígito de las


centenas.

6Escribir un programa que lea una letra minúscula y que la


muestre en mayúsculas en pantalla.

7 (Opcional) Resolver la ecuación de segundo grado 𝑎𝑥2 + 𝑏𝑥 +


𝑐 = 0, suponiendo que tiene siempre raíces reales. Los valores
de 𝑎,𝑏 y 𝑐 se ingresan por teclado.

Facultad Politécnica - UNA 64


Gracias por la atención

Facultad Politécnica - UNA 65

También podría gustarte