Introducción a los entornos de programación

26
Lenguaje C Lenguaje C Ing. Fernando Solis Ing. Fernando Solis

Transcript of Introducción a los entornos de programación

Lenguaje C Lenguaje C

Ing. Fernando SolisIng. Fernando Solis

HISTORIAHISTORIA

CC es un es un lenguaje de programación creado en creado en 1972 por por Ken Thompson y y Dennis M. Ritchie en los en los Laboratorios Bell como evolución del como evolución del anterior lenguaje anterior lenguaje B, a su vez basado en BCPL. , a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la concretamente Unix. C es apreciado por la eficiencia del código que produce y es el eficiencia del código que produce y es el lenguaje de programación más popular para lenguaje de programación más popular para crear software de sistemas, aunque también crear software de sistemas, aunque también se utiliza para crear aplicaciones. se utiliza para crear aplicaciones.

CaracterísticasCaracterísticas Un núcleo del lenguaje simple, con Un núcleo del lenguaje simple, con

funcionalidades añadidas importantes, funcionalidades añadidas importantes, como funciones matemáticas y de manejo como funciones matemáticas y de manejo de ficheros, proporcionadas por bibliotecas. de ficheros, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los programar con múltiples estilos. Uno de los más empleados es el estructurado . más empleados es el estructurado .

Un sistema de tipos que impide Un sistema de tipos que impide operaciones sin sentido. operaciones sin sentido.

Acceso a memoria de bajo nivel mediante Acceso a memoria de bajo nivel mediante el uso de punteros. el uso de punteros.

Un conjunto reducido de palabras clave. Un conjunto reducido de palabras clave.

Estructura de un programa en CEstructura de un programa en C

Todos los Todos los programas programas en C en C consisten en consisten en una o mas una o mas funciones, la funciones, la única función única función que debe que debe estar siempre estar siempre presente es: presente es: main()main()

<Comandos de preprocesador><Comandos de preprocesador> <Definición de tipos><Definición de tipos> <Prototipos de funciones><Prototipos de funciones> <Variables globales><Variables globales> <Funciones><Funciones> Nota: <> puede o no ir, Nota: <> puede o no ir, Cada función tiene la siguiente Cada función tiene la siguiente

estructura:estructura: <Tipo> Nombre de la <Tipo> Nombre de la

Función(<Declaración de Función(<Declaración de parámetros>)parámetros>)

{<Declaraciones locales>{<Declaraciones locales> <Sentencias><Sentencias> }}

Ejemplo 1Ejemplo 1

/* Programa : HOLA MUNDO *//* Programa : HOLA MUNDO */

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

void main() {void main() {

printf ("\nHola mundo"); printf ("\nHola mundo");

} }

BibliotecaBiblioteca

Es un conjunto de archivos Es un conjunto de archivos pequeños, que contienen funciones pequeños, que contienen funciones para llevar a cabo las tareas para llevar a cabo las tareas necesarias más comunes.necesarias más comunes.

Ejemplo:Ejemplo: Las operaciones de E/S, funciones Las operaciones de E/S, funciones

matemáticas,etc. matemáticas,etc.

EnlazadorEnlazador

Es un programa que enlaza funciones Es un programa que enlaza funciones compiladas por separado para compiladas por separado para producir un solo programa, también producir un solo programa, también combina las funciones de la combina las funciones de la biblioteca estándar de C con el biblioteca estándar de C con el código que se haya escrito. Las código que se haya escrito. Las salida del enlazador es un programa salida del enlazador es un programa ejecutable.ejecutable.

Compilación de un ProgramaCompilación de un Programa

1.- 1.- Creación del Programa.Creación del Programa.(editor, .c o .cpp)(editor, .c o .cpp)

2.- 2.- Compilación. Compilación. Comprobará si el Comprobará si el programa tiene algun error, el programa tiene algun error, el compilador traducirá el programa compilador traducirá el programa fuente a lenguaje máquina, fuente a lenguaje máquina, almacenándolo en un archivo almacenándolo en un archivo ejecutable. ejecutable.

3.- Enlazado del Programa3.- Enlazado del Programa

Programas LegiblesProgramas Legibles Con un programa legible se consigue que Con un programa legible se consigue que

dicho programa sea fácil de comprender, dicho programa sea fácil de comprender, corregir o modificar. Para lo cual se debe corregir o modificar. Para lo cual se debe cumplir:cumplir:

Escribir el programa en forma estructuradaEscribir el programa en forma estructurada Escoger nombres de los identificadores de Escoger nombres de los identificadores de

funciones, variables y constantes, funciones, variables y constantes, apropiadas de a cuerdo a sus función. apropiadas de a cuerdo a sus función.

Usar una sentencia por línea.Usar una sentencia por línea. Poner comentarios Poner comentarios Emplear líneas en blanco para separar las Emplear líneas en blanco para separar las

funciones o bloques de código.funciones o bloques de código.

EL lenguaje C sigue el paradigma de la EL lenguaje C sigue el paradigma de la programación estructurada: programación estructurada:

Algoritmos+estructuras de datos = programas. Algoritmos+estructuras de datos = programas.

Tipos de datos básicos (Estructuras):Tipos de datos básicos (Estructuras): Entero: preciso y limitado en tamaño.Entero: preciso y limitado en tamaño. Real: impreciso y limitado en tamaño.Real: impreciso y limitado en tamaño. Lógico: valor de verdad.Lógico: valor de verdad. Cadena: secuencia finita de caracteres.Cadena: secuencia finita de caracteres. Lista: secuencia finita de datos enumerados.Lista: secuencia finita de datos enumerados. Diccionario: secuencia finita de datos indexados.Diccionario: secuencia finita de datos indexados.

Elementos de un programa:Elementos de un programa:

Constantes: datos cuyo valor no cambia durante Constantes: datos cuyo valor no cambia durante la ejecución del programa.la ejecución del programa.

Variables: datos cuyo valor puede cambiar Variables: datos cuyo valor puede cambiar durante ladurante la

ejecución del programa.ejecución del programa. Expresiones: Combinación de operadores y Expresiones: Combinación de operadores y

operandos.operandos. Operandos: constantes, variables u otras Operandos: constantes, variables u otras

expresiones.expresiones. Operadores: aritméticos, relacionales, lógicos y Operadores: aritméticos, relacionales, lógicos y

de tipo de dato.de tipo de dato. Funciones: aceptan unos argumentos y producen Funciones: aceptan unos argumentos y producen

un resultado.un resultado.

Tipos de Datos Tipos de Datos

Los datos en C han de tener un Los datos en C han de tener un tipotipo. Las . Las variablesvariables contienen datos, y se han de declarar contienen datos, y se han de declarar del tipo adecuado a los valores que van a del tipo adecuado a los valores que van a contener. contener.

El C dispone de estos tipos básicos:El C dispone de estos tipos básicos:

Datos de tipo enteroDatos de tipo entero

Un Un dato de tipo enterodato de tipo entero ( (intint) es aquel que puede tomar ) es aquel que puede tomar por valor un número perteneciente al conjunto de los por valor un número perteneciente al conjunto de los números enteros (números enteros (ZZ), el cual está formado por los números ), el cual está formado por los números naturales, su opuestos (números negativos) y el cero.naturales, su opuestos (números negativos) y el cero.

ZZ = { ..., -3, -2, -1, 0, 1, 2, 3, ... } = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Ejemplo 1:Ejemplo 1: La edad de una persona y el año en que nació, La edad de una persona y el año en que nació, son dos datos de tipo entero:son dos datos de tipo entero:

   Edad...: 29   Edad...: 29   Año....: 1976   Año....: 1976

Datos de tipo realDatos de tipo real

Un Un dato de tipo realdato de tipo real ( (floatfloat o  o doubledouble) es aquel ) es aquel que puede tomar por valor un número que puede tomar por valor un número perteneciente al conjunto de los números reales perteneciente al conjunto de los números reales ((RR), el cual está formado por los números ), el cual está formado por los números racionales e irracionales.racionales e irracionales.

Ejemplo 2:Ejemplo 2: El peso de una persona (en  El peso de una persona (en kilogramos) y su altura (en centímetros), son kilogramos) y su altura (en centímetros), son datos que pueden considerarse de tipo real.datos que pueden considerarse de tipo real.

   Peso.....: 75,3   Peso.....: 75,3   Altura...: 172,7   Altura...: 172,7

Datos sin valorDatos sin valor

Un Un dato sin valordato sin valor ( (voidvoid) es un dato ) es un dato que no puede tomar por valor nigún que no puede tomar por valor nigún valor, es decir, es un dato vacío valor, es decir, es un dato vacío (nulo). (nulo).

Datos de tipo lógicoDatos de tipo lógico

En programación, un En programación, un dato de tipo lógicodato de tipo lógico es aquel que es aquel que puede tomar por valor sólo uno de los dos siguientes:puede tomar por valor sólo uno de los dos siguientes:

{ { verdaderoverdadero, , falsofalso } }

Ejemplo 4:Ejemplo 4: El estado de una barrera de paso de trenes es un  El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lógico, por ejemplo, dato que puede considerarse de tipo lógico, por ejemplo, asociando asociando verdaderoverdadero a que esté subida y a que esté subida y falsofalso a que esté a que esté bajada.bajada.

   Estado...:    Estado...: falsofalso (indica que la barrera está bajada) (indica que la barrera está bajada)

Datos de tipo cadenaDatos de tipo cadena

De todos los tipos de datos que no son básicos se dice que De todos los tipos de datos que no son básicos se dice que son derivados, ya que, están basados en alguno que sí lo son derivados, ya que, están basados en alguno que sí lo es. Por ejemplo, los es. Por ejemplo, los datos de tipo cadenadatos de tipo cadena son aquellos son aquellos que pueden tomar por valor una secuencia de caracteres.que pueden tomar por valor una secuencia de caracteres.

En C, el valor de un dato de tipo cadena se debe En C, el valor de un dato de tipo cadena se debe representar entre comillas dobles (").representar entre comillas dobles (").

Ejemplo 5:Ejemplo 5: El título de un libro y el nombre de su autor,  El título de un libro y el nombre de su autor, son datos de tipo cadena.son datos de tipo cadena.

   Título...: "La Odisea" (cadena de 9 caracteres)   Título...: "La Odisea" (cadena de 9 caracteres)   Autor....: "Homero" (cadena de 6 caracteres)   Autor....: "Homero" (cadena de 6 caracteres)

Datos de tipo carácterDatos de tipo carácter

Un Un dato de tipo carácterdato de tipo carácter ( (charchar) es aquel que ) es aquel que puede tomar por valor un carácter perteneciente puede tomar por valor un carácter perteneciente al conjunto de los caracteres que puede al conjunto de los caracteres que puede representar el ordenador.representar el ordenador.

En C, el valor de un dato de tipo carácter se debe En C, el valor de un dato de tipo carácter se debe representar entre comillas simples (').representar entre comillas simples (').

Ejemplo 3:Ejemplo 3: En un examen con preguntas en las  En un examen con preguntas en las que hay que seleccionar la respuesta correcta que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas respuesta correcta de cada una de las preguntas es un dato de tipo carácter.es un dato de tipo carácter.

Nombres de variables Nombres de variables (identificadores) (identificadores)

Un Un identificadoridentificador es un nombre que define a una variable, es un nombre que define a una variable, una función o un tipo de datos. una función o un tipo de datos.

Un identificador válido ha de empezar por una letra o por el Un identificador válido ha de empezar por una letra o por el carácer de subrayado carácer de subrayado __, seguido de cualquier cantidad de , seguido de cualquier cantidad de letras, dígitos o subrayados. letras, dígitos o subrayados.

OJO: Se distinguen mayúsculas de minúsculas. OJO: Se distinguen mayúsculas de minúsculas.

No se pueden utilizar palabras reservadas como No se pueden utilizar palabras reservadas como intint, , charchar o o whilewhile..

Muchos compiladores no permiten letras acentuadas o Muchos compiladores no permiten letras acentuadas o eñes. eñes.

Ejemplos válidos: Ejemplos válidos:

char letra; char letra; int Letra; int Letra; float CHAR; float CHAR; int __variable__;int __variable__; int cantidad_envases;int cantidad_envases; double precio123; double precio123; int __; int __;

Ejemplos no válidos: Ejemplos no válidos: int 123var; /* Empieza por dígitos */ int 123var; /* Empieza por dígitos */ char int; /* Palabra reservada */ char int; /* Palabra reservada */ int una sola; /* Contiene espacios */ int una sola; /* Contiene espacios */ int US$; /* Contiene $ */ int US$; /* Contiene $ */ int var.nueva; /* Contiene el punto / int var.nueva; /* Contiene el punto / int eñe; /* Puede no funcionar */ int eñe; /* Puede no funcionar */

VariablesVariables Las Las variablesvariables se utilizan para guardar datos dentro del programa. se utilizan para guardar datos dentro del programa.

Hay que Hay que declarar declarar las variables antes de usarlas. las variables antes de usarlas.

Cada variable tiene un Cada variable tiene un tipotipo..

Declaración:Declaración:

tipo nombre tipo nombre ;;

Ejemplo:Ejemplo:

int pepe; int pepe;

Las variables globales se declaran justo antes de Las variables globales se declaran justo antes de main()main()..

Ejemplo :Ejemplo : Para declarar varias variables del  Para declarar varias variables del mismo tipo de dato se puede escribir:mismo tipo de dato se puede escribir:

      intint edad edad;;      intint numero_de_hijos numero_de_hijos;;

O también, en la misma línea separadas por el O también, en la misma línea separadas por el carácter carácter comacoma ( (,,):):

      intint edad edad, , numero_de_hijosnumero_de_hijos;;

Si se desea declarar una variable para almacenar Si se desea declarar una variable para almacenar un número entero y que, inicialmente, contenga un número entero y que, inicialmente, contenga el valor el valor 3535, se debe escribir:, se debe escribir:

      intint numero  numero = = 3535;;

A continuación, se muestra la A continuación, se muestra la declaración de una variable declaración de una variable para almacenar una letra del para almacenar una letra del alfabeto y que, inicialmente, alfabeto y que, inicialmente, contenga el valor contenga el valor 'Z''Z'::

charchar letra  letra = '= 'ZZ';';

Ejemplo :Ejemplo : Para declarar una  Para declarar una variable que pueda almacenar variable que pueda almacenar el nombre de una persona y el nombre de una persona y que, inicialmente, contenga el que, inicialmente, contenga el valor valor "Isabel""Isabel", escribiremos:, escribiremos:

      charchar nombre nombre[[77]] = "= "IsabelIsabel";";

Constantes (1/2)Constantes (1/2) En C, una constante puede ser de tipo entero, En C, una constante puede ser de tipo entero,

real, carácter, de cadena o enumerado., se real, carácter, de cadena o enumerado., se pueden expresar de dos formas diferentes:pueden expresar de dos formas diferentes:

    1. Por su valor.    1. Por su valor.    2. Con un nombre (identificador).    2. Con un nombre (identificador).

Ejemplo :Ejemplo : Las siguientes contantes de tipo  Las siguientes contantes de tipo entero están expresadas por su valor:entero están expresadas por su valor:

      --55   10   10

Constantes (2/2)Constantes (2/2) Para declarar una constante simbólica, en C, se Para declarar una constante simbólica, en C, se

utiliza una nueva directiva del preprocesador:utiliza una nueva directiva del preprocesador:

#define#define <nombre_de_la_constante> <nombre_de_la_constante> <secuencia_de_caracteres><secuencia_de_caracteres>

Ejemplo :Ejemplo : Dos constantes muy habituales son: Dos constantes muy habituales son:

      #define#define PI 3 PI 3..141592141592      #define#define NUMERO_E 2 NUMERO_E 2..718281718281