Vous êtes sur la page 1sur 23

Estructura de Datos

y Algoritmos
ELO 320 - Clase 01
¡Bienvenid@s!
“Introducción a la programación en C”

Dr. Ioannis Vourkas


07 de marzo, 2018, Valparaíso, Chile
sobre ELO 320
Evaluación
El ramo se evaluará con base en: 3 certámenes (70%), 3 tareas obligatorias (30%), y
tutorías.
• Deberían rendirse tres (3) certámenes según calendario publicado. El promedio
de los 3 certámenes debe ser mínimo 45 para poder aprobar.
• La entrega de tres (3) tareas es obligatoria para aprobar el ramo.
• Las tutorías se realizan en grupos de 2 personas. El entregable debe ser subido a
la plataforma AULA, en un solo envío por grupo. Del total de 6 tutorías del
semestre, se necesita un mínimo de 4 con nota 100 para poder aprobar la
asignatura. La evaluación de las tutorías es binaria:
• Nota 100 si el trabajo enviado es sustancial y coherente con lo solicitado.
• Nota 0 si el archivo no fue enviado, o bien no contiene trabajo sustancial o
coherente.

Contacto con el profesor


Depto. de Electrónica, oficina B 320
Horario: se indicará horario específico
Email: ioannis.vourkas@usm.cl
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 2
The 7 Most In-Demand
Programming Languages of 2018
Y eso que me
dijeron que
C era
importante…

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 3
Sin embargo…

1978, Brian Kernighan and


Dennis Ritchie

Desde su desarrollo original por Dennis Ritchie entre 1969 y 1973 en


Bell Labs, C se ha convertido en uno de los lenguajes de programación
más utilizados de todos los tiempos.

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 4
Introducción a C
Datos generales
• C es un lenguaje de programación de propósito general e imperativo (a
diferencia de los lenguajes de programación declarativos), que respalda la
programación estructurada
• Fue diseñado:
 … para desarrollar el sistema operativo UNIX
 para para manejar actividades de bajo nivel (en la memoria)
 para proporcionar construcciones de lenguaje que se correlacionan
eficientemente con instrucciones de máquina, (osea, producir programas
eficientes)
• por lo tanto ha encontrado un uso largo/duradero en aplicaciones que
anteriormente se habían programado usando lenguaje ensamblador (assembly),
incluyendo sistemas operativos, así como varios programas para computadoras
que van desde supercomputadoras hasta sistemas embebidos.
• Se aprende fácilmente (y no lo digo solo yo esto…)
• Se puede compilar en una variedad de plataformas (informáticas)
• Linux OS y la mayoría del software del estado de arte se ha implementado en C
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 5
Introducción a C
Comenzando desde “cero” (from scratch)
• Lo primero que hace falta es asegurarse de tener un compilador. ¿Qué es un
compilador, se preguntarán?
 Es un programa que convierte el programa que escriben en un archivo
ejecutable que su computadora puede realmente entender y ejecutar.
 El más utilizado y gratuito disponible es el compilador GNU gcc
• Uds. conocen Python, ¿cierto?  Python no necesita compilación
 Programas en C usan “traductor”, mientras que en Python usan “intérprete”
• Veamos primero un mínimo de la • Cada programa C comienza dentro
estructura de un programa en C: de una función llamada “main".
• Un programa de C consiste • Una función es una colección de
básicamente de: comandos que hacen "algo".
• Comandos del preprocesador • La función “main“ siempre se llama
• Funciones cuando el programa se ejecuta por
• Variables primera vez.
• Declaraciones y expresiones • Para acceder a las funciones estándar
• Comentarios que vienen con su compilador, debe
incluir el encabezado correspondiente
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 6
Introducción a C
Comenzando desde “cero” (from scratch)
• Lo primero que hace falta es asegurarse de tener un compilador. ¿Qué es un
compilador, se preguntarán?
 Es un programa que convierte el programa que escriben en un archivo
ejecutable que su computadora puede realmente entender y ejecutar.
 El más utilizado y gratuito disponible es el compilador GNU gcc
• Uds. conocen Python, ¿cierto?  Python no necesita compilación
 Programas en C usan “traductor”, mientras que en Python usan “intérprete”
• Veamos primero un mínimo de la #include <stdio.h>
estructura de un programa en C: int main( ) {
• Un programa de C consiste /* mi primer
básicamente de: programa en C */
• Comandos del preprocesador int edad = 32;
• Funciones printf (“Tengo %d años. \n“, edad);
• Variables getchar ( );
• Declaraciones y expresiones // comentario en una solo línea
• Comentarios return 0;
}
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 7
Introducción a C
entendiendo los bloques de construcción básicos
• #include es una directiva de "preprocesador" que le dice al compilador que
ponga el código del encabezado (aquí llamado stdio.h) en nuestro programa.
• int main ( ) : le dice al compilador que hay una función llamada main, y que no
recibe ningún parámetro pero devuelve un entero
• Las "llaves" { y } señalan el comienzo y el final de las funciones y otros bloques
de código.
• La función printf es la forma estándar C de mostrar la salida en la pantalla.
• La secuencia \ n se trata como un solo carácter que representa una nueva línea
• el punto y coma ; le dice al compilador que estás al final de un comando
• getchar ( ) : es otra llamada a función: lee en un solo carácter y espera que el
usuario presione Enter antes de leer el caracter.
• Finalmente, al final del programa, devolvemos un valor de main al sistema
operativo utilizando return.
• Para crear un comentario en C, rodee el texto con / * y luego * / para bloquear
todo como un comentario.

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 8
Introducción a C
entendiendo los bloques de construcción básicos
Identificadores
• Un identificador C es un nombre usado para identificar una variable, función o
cualquier otro elemento definido por el usuario. Comienza con una letra de la A
a la Z, de la a a la z, o con un guion bajo '_' seguido de cero o más letras, guiones
bajos y dígitos (del 0 al 9).
• C no permite caracteres como @, $ y % dentro de los identificadores y es “case-
sensitive” (i.e. sensible a mayúsculas y minúsculas.) Por lo tanto, Ioannis y
ioannis son identificadores diferentes en C. Aquí van algunos ejemplos de
identificadores aceptables:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
Keywords
• La siguiente lista muestra las palabras reservadas en C que no se pueden usar
como constantes o variables ni como ningún otro nombre de identificador:
auto else long switch break enum register typedef case
extern return union char float short for const unsigned
signed void goto sizeof volatile continue default if static
while do int struct Packed double
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 9
Introducción a C
Usando variables
Usando variables
• En la programación, los datos se almacenan en variables y hay varios tipos
diferentes de ellas. Cuando le dice al compilador que está declarando una
variable, debe incluir el tipo de datos junto con el nombre de la variable.
 Varios tipos básicos incluyen char, int y float.
• Algunas variables también usan más memoria para almacenar sus valores.
• Antes de que pueda usar una variable, debe informarle al compilador al
respecto, declarándola y diciéndole cuál es su "tipo".
 Para declarar una variable, usa la sintaxis <tipo> <nombre>;
int myVariable;
• Se permite declarar múltiples variables del mismo tipo en la misma línea
pero cada una debe estar separada por una coma.
char a, b, c, d;
• No se puede tener múltiples variables con el mismo nombre, tampoco tener
variables y funciones con el mismo nombre.

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 10
Introducción a C
Usando variables
• Algunas variables también usan más memoria para almacenar sus valores.
• Para obtener el tamaño exacto de un tipo o una variable en una plataforma
particular, se usa el operador sizeof. Las expresiones sizeof (type) producen
el tamaño de almacenamiento en bytes del tipo u objeto entre ( ).

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 11
Introducción a C
Usando variables
• Algunas variables también usan más memoria para almacenar sus valores.
• Para obtener el tamaño exacto de un tipo o una variable en una plataforma
particular, se usa el operador sizeof. Las expresiones sizeof (type) producen
el tamaño de almacenamiento en bytes del tipo u objeto entre ( ).

#include <stdio.h>
#include <limits.h>

void main( ) {
// Imprimir tamaños de almacenamiento
printf("Storage size for char : %d bytes \n", sizeof (char));
printf("Storage size for int : %d bytes \n", sizeof (int));
printf("Storage size for long int : %d bytes \n", sizeof (long int));
printf("Storage size for float : %d bytes \n", sizeof (float));
printf("Storage size for double : %d bytes \n", sizeof (double));
printf("Storage size for long double : %d bytes \n", sizeof (long double));
return;
}

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 12
Introducción a C
A ver si hemos aprendido algo hasta ahora…
¿El siguiente código se ejecutará sin errores? Miremos ahora este programa…

#include <stdio.h> #include <stdio.h>


void main (void) {
int main (void) int a = 195;
{ char c = 65;
/*ejemplos de errores*/ char ac = a + c;
int a = 0; printf ("ac = %d \n", ac); // 1
printf (“b = %d \n”, b); printf ("c = %d \n", c); // 2
int b = a + b; // equivalente a: b += a ; printf ("c = %c \n", c); // 3
return; int div = c/a;
} printf ("div = %d \n", div); // 4
float f = c/a;
1. ¿Qué retorna la función main? printf ("f = %f \n", f); // 5
printf (“valor = %5.3f \n", 1.2345); // 6
2. ¿Está declarada correctamente la var. b?
return;
3. ¿Qué imprime la función printf? }
1. ¿Qué valor tiene la variable ac?
2. ¿Qué se imprime en // 1, 2, …, 6?
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 13
Introducción a C
Más ejemplos…
#define preprocessor directive Leer datos de la entrada (teclado)

#include <stdio.h> #include <stdio.h>

#define LENGTH 10 int main( )


#define WIDTH 5 {
#define NEWLINE '\n' int a_number;

int main( ) { printf ( "Please enter a number: " );


int area; scanf ( "%d", &a_number );
printf ("You entered %d", a_number );
area = LENGTH * WIDTH; getchar( ); // Press enter key
printf ("value of area : %d", area);
printf ("%c", NEWLINE); return 0;
}
return 0;
}
Mas detalles sobre el uso de & veremos en
las próximas clases…

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 14
Introducción a C
Operators
No importa qué tipo use, las variables carecen de interés sin la posibilidad de
modificarlas. El lenguaje C tiene varios operadores integrados, es decir, símbolos que
le dicen al compilador que realice funciones específicas ya sea matemáticas o lógicas.
Operadores Aritméticos
Asumiendo que A = 10 y B = 20:

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 15
Introducción a C
Operators
No importa qué tipo use, las variables carecen de interés sin la posibilidad de
modificarlas. El lenguaje C tiene varios operadores integrados, es decir, símbolos que
le dicen al compilador que realice funciones específicas ya sea matemáticas o lógicas.
Operadores Relacionales
Asumiendo que A = 10 y B = 20:

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 16
Introducción a C
Operators
No importa qué tipo use, las variables carecen de interés sin la posibilidad de
modificarlas. El lenguaje C tiene varios operadores integrados, es decir, símbolos que
le dicen al compilador que realice funciones específicas ya sea matemáticas o lógicas.
Operadores Lógicos
Asumiendo que A = 1 y B = 0 (cualquier valor ≠ 0 significa verdadero):

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 17
Introducción a C
Operators
No importa qué tipo use, las variables carecen de interés sin la posibilidad de
modificarlas. El lenguaje C tiene varios operadores integrados, es decir, símbolos que
le dicen al compilador que realice funciones específicas ya sea matemáticas o lógicas.
Operadores de Asignación

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 18
Introducción a C
Toma de decisiones
Las estructuras de toma de decisiones requieren que el programador especifique
una o más condiciones para ser evaluadas por el programa, junto con una o más
declaraciones que se ejecutarán si la condición se determina verdadera y,
opcionalmente, otras que se ejecutarán si la condición se determina que es falsa.

Una instrucción if consiste en una expresión booleana


seguida de una o más declaraciones. Puede ser seguida por
una declaración else opcional. Ud. puede usar una
instrucción dentro de otra (nested statements)

if (boolean_expression) {
/* statement(s) to be executed if true */
} else {
/* statement(s) to be executed if false */
}
if ( boolean_expression 1) {
/* Executes when expression 1 is true */
if (boolean_expression 2) {
/* Executes when expression 2 is true */
}
}
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 19
Introducción a C
Toma de decisiones
Las estructuras de toma de decisiones requieren que el programador especifique
una o más condiciones para ser evaluadas por el programa, junto con una o más
declaraciones que se ejecutarán si la condición se determina verdadera y,
opcionalmente, otras que se ejecutarán si la condición se determina que es falsa.

#include <stdio.h>
int main( ) {
int age;
printf( "Please enter your age" );
scanf( "%d", &age );
if ( age < 35 ) {
printf (“Interesting \n" );
}
else if ( age < 45 ) {
/* do something*/
}
else {
printf( "You are really old for this\n" );
}
return 0;
}
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 20
Introducción a C
Bucles (Loops)
En general, las sentencias se ejecutan secuencialmente. Sin embargo, los lenguajes
de programación proporcionan varias estructuras de control que permiten rutas de
ejecución más complicadas. Una instrucción de bucle nos permite ejecutar una
sentencia o un grupo de ellas varias veces.

• Un bucle se convierte en un bucle infinito si una


condición nunca se convierte en falsa.

#include <stdio.h>
int main ( ) {

for( ; ; ) {
printf ("This loop will run forever.\n");
}

while (1) {
printf (“Esto no se ejecutará \t nunca! \n\a\a\a");
}

return 0;
}
Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 21
Introducción a C
Tutoriales útiles en www

• https://www.cprogramming.com/tutorial/c-tutorial.html

• https://www.tutorialspoint.com/cprogramming/index.htm

• Videos W. Creixell, YouTube canal “ELO 320 Estructura de Datos y Algoritmos UTFSM”

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 22
Fin de la Clase

Gracias por
su asistencia y atención

¿ Preguntas ?

Dr. Ioannis Vourkas, UTFSM - Estructura de Datos y Algorítmos - Clase 01 07 Mar. 2018 23

Vous aimerez peut-être aussi