viernes, 11 de junio de 2021

P1-Introducción al lenguaje en C

 Estructura de un programa en C

Creación de un proyecto

 La forma mas practica para la creación de un nuevo proyecto en la aplicación mas comúnmente utilizada (DEV-C) es:

Archivo -> Nuevo -> Proyecto

Donde aparecerá un recuadro con 5 opciones:

-> Windows Application: para crear aplicaciones para Windows (por defecto se crea un archivo de nombre main.cpp que contiene algunas órdenes básicas que deberían ir incluidas en un programa que se va a ejecutar en un entorno Windows)

 -> Console Application: para crear aplicaciones que abren una consola de MSDOS al terminar su ejecución (por defecto se crea un archivo main.cpp que contiene algunas órdenes básicas que permiten mostrar una consola de MSDOS)

 -> Static Library: creación de una librería estática (archivo .a).

 ->DLL: para crear DLL’s (Dynamic Link Library, "Biblioteca de vínculos dinámicos", es un archivo que contiene funciones que se pueden llamar desde aplicaciones u otras DLL) en C o C++.

 ->Empty Project: para proyectos que el usuario va a definir completamente.

 En el campo Nombre del Proyecto podemos elegir la denominación que le daremos a nuestro proyecto. En caso contrario, Dev-C++ le asignará un nombre automáticamente. 
Así mismo podemos determinar el lenguaje a utilizar, ya sea C/C++.


C++ es un lenguaje de programación orientado a objetos híbrido. Esto quiere decir que permite realizar programas estructurados sin la orientación a objetos y programas orientados a objetos.
En este punto veremos la estructura de un programa que no utiliza orientación a objetos. P
osteriormente estudiaremos la estructura de un programa C++ orientado a objetos.

La estructura general de un programa C++ es la siguiente:

/*Comentarios*/
Directivas del preprocesador //librerías
Declaración de variables globales y funciones
int main( )   // Función principal main
{
Declaraciones locales de la función principal
Instrucciones de la función principal
}
Otras funciones:
funcion1(.....)
{
Declaraciones locales de la función 1
Instrucciones de la función 1
}
funcion2(.....)
{
Declaraciones locales de la función 2
Instrucciones de la función 2
}
.....


Archivos de cabeceras de la biblioteca ANSI C

<assert.h> Contiene la macro assert (aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la depuración de un programa.

<complex.h> Conjunto de funciones para manipular números complejos (nuevo en C99).

<ctype.h> Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del conjunto de caracteres (típicamente ASCII o alguna de sus extensiones).

<errno.h> Para analizar los códigos de error devueltos por las funciones de biblioteca.

<fenv.h> Para controlar entornos en coma flotante (nuevo en C99).

<float.h> Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).

<inttypes.h> Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99).

<iso646.h> Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).

<limits.h> Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).

<locale.h> Para la función setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuración regional).

<math.h> Contiene las funciones matemáticas comunes.

<setjmp.h> Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales.

<signal.h> Para controlar algunas situaciones excepcionales como la división por cero.

<stdarg.h> Posibilita el acceso a una cantidad variable de argumentos pasados a una función.

<stdbool.h> Para el tipo booleano (nuevo en C99).

<stdint.h> Para definir varios tipos enteros (nuevo en C99).

<stddef.h> Para definir varios tipos de macros de utilidad.

<stdio.h> Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función printf).

<stdlib.h> Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de señalización (??), de ordenación y búsqueda.

<string.h> Para manipulación de cadenas de caracteres.

<tgmath.h> Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99).

<time.h> Para tratamiento y conversión entre formatos de fecha y hora.

<wchar.h> Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o más bytes por carácter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).

<wctype.h> Para clasificar caracteres anchos (nuevo en NA1).


Secuencia de escape 

Las secuencias de escape se utilizan en los lenguajes de programación C y C ++ , y también en muchos más idiomas (con algunas variaciones) como Java y C # . Una secuencia de escape es una secuencia de caracteres que no se representa a sí misma cuando se utiliza dentro de un carácter o cadena literal , sino que se traduce en otro carácter o una secuencia de caracteres que pueden ser difíciles o imposibles de representar directamente. En C, todas las secuencias de escape constan de dos o más caracteres, el primero de los cuales es la barra invertida, \ ; Los caracteres restantes determinan la interpretación de la secuencia de escape.

Secuencia

Valor

\n
Nueva línea (new line). El cursor pasa a la primera posición de la línea siguiente
\r
Retorno de carro (carriage return). El cursor pasa a la primera posición de la línea donde nos encontremos.
\t
Tabulador. El cursor pasa a la siguiente posición de tabulación.
\a
Alerta. Crea un aviso bien de forma visible o bien mediante sonido.
\b
Espacio atrás (backspace). Hace retroceder el cursor una posición a la izquierda.
\f
Alimentación de página (form feed). Crea una nueva página.
\\
Muestra la barra invertida.
\”
Muestra la comilla doble.
\?
Muestra un interrogante.
\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.
\v
Tabulación vertical.
\'
Apóstrofo o comilla simple.


Conceptos básicos 

Tipos de datos
C++ tiene los siguientes tipos fundamentales:
Caracteres: char (también es un entero), wchar_t
Enteros: short, int, long, long long
Números en coma flotante: float, double, long double
Booleanos: bool
Vacío: void
El modificador unsigned se puede aplicar a enteros para obtener números sin signo (por omisión los enteros contienen signo), con lo que
se consigue un rango mayor de números naturales.

Los datos primitivos (simples) se caracteriza por ocupar unas sola casilla de memoria, es por eso que una variable simple solo hace referencia a un único valor, dentro de este grupo tenemos a los enteros (1, 2, -2, 45, 5, 7…), reales (1.54, 5.45…) y caracteres(a, b, c…z, A, B, C…Z).

Los datos compuestos se caracterizan por el hecho de que con un nombre se hace referencia a un grupo de casillas de memora, en este grupo están: los Arreglos, cadena de caracteres, registros, y archivos (que se verán mas adelante).

Los tipos de datos se usan para declarar variables, constantes, funciones, etiquetas, clases, etc. Acá tenemos un cuadro con el tamaño de los principales tipos de datos primitivos en c++.


Constantes

Las constantes mantienen su valor a lo largo de todo el programa.

Para indicar al compilador que se trata de una constante, usaremos la directiva #define:

#define <identificador> <valor>

Observa que no se indica el punto y coma de final de sentencia ni tampoco el tipo de dato.

La directiva #define no sólo nos permite sustituir un nombre por un valor numérico, sino también por una cadena de caracteres.

El valor de una constante no puede ser modificado de ninguna manera.

Lectura – Escritura de datos

C dispone de una colección de funciones de biblioteca para la entrada/lectura y salida/escritura entre el ordenador y los periféricos E/S. Se encuentran declaradas en la librería del sistema stdio.h. Para ello se coloca en la cabecera de los programas la directiva #include <stdio.h>

Transferencia de caracteres sueltos – 
      getchar - lectura – putchar - escritura
• Transferencia de caracteres, valores numéricos y cadenas de caracteres – 
      scanf - lectura con formato – printf - escritura con formato
• Transferencia de cadenas de caracteres – 
      gets - lectura – puts - escritura

Entrada de datos función scanf()

• Función que permite la lectura de cualquier tipo de
dato especificado por un formato.
• Usa llamada por referencia en los argumentos de las
variables leídas.
• Devuelve el número de variables emparejadas
correctamente durante la lectura o EOF si se
encuentra un final de fichero.
• Sintaxis:
scanf(cad_control, arg1, arg2,..,argn)

 La cadena de control contiene información sobre el formato
de entrada los argumentos que le siguen.

• El formato se especifica por el carácter % y un carácter de
conversión.
 Es recomendable iniciar con un espacio en blanco la cadena
de control y separar con espacios en blanco los grupos de
formato.
• Los argumentos deben coincidir con el número de grupos de
formato y deben estar precedidos del carácter &, excepto las cadenas (arrays) de caracteres.

 Salida de datos – función printf()

Sirve para escribir cualquier combinación de valores numéricos, caracteres y cadenas de caracteres.

• Transfiere datos de la memoria del ordenador al dispositivo de salida estándar (pantalla).

• Devuelve un entero que representa el número de caracteres que se imprimen.

• Sintaxis:

printf(cad_ctrl, arg1, arg2,...,argn);

  Especificación de formato

La cadena de control contiene dos tipos de objetos: caracteres ordinarios, que se imprimen directamente, y especificadores de conversión que indican el formato de
salida de los argumentos que siguen a la cadena de control.
• El formato se especifica por el carácter % y un carácter de conversión que indica el tipo de dato correspondiente.
• Los argumentos pueden ser constantes, variables, arrays, expresiones o funciones.
• Los argumentos deben coincidir con el número de especificadores de formato.

 Especificadores

TIPO DE CARACTER

VALOR ESPERADO

FORMATO DE SALIDA

Para valores numéricos:

d

Entero

Entero en base decimal con signo (p.e.: 723, -39, etc.)

i

Entero

Igual que con d

u

Entero

Entero en base decimal sin signo (p.e.: 529, 319, etc.)

o

Entero

Entero en base octal sin signo (p.e.: 456, 714, etc.)

x

Entero

Entero en base hexadecimal sin signo, empleando las letras a,b,c,d,e,f (p.e.: ab7f, 63ce, etc.)

X

Entero

Entero en base hexadecimal sin signo, empleando las letras A,B,C,D,E,F (p.e.: AB7F, 63CE, etc.)

f

Punto Flotante

Valor de punto flotante con signo de la forma [-]d.dddddd (p.e.: 456.498245, -34.714001, etc.)

e

Punto Flotante

Valor de punto flotante con signo en notación científica (p.e.: 4.564982e2)

E

Punto Flotante

Igual que con e, pero con exponente E (p.e.: 4.564982E2, etc.)

g

Punto Flotante

Valor de punto flotante similar al formato e ó f, pero de la forma [-]d.ddd (p.e.: 456.498)

G

Punto Flotante

Igual que con g, pero con E por exponente si el formato e es empleado.

a

Punto Flotante

Valor de punto flotante en formato hexadecimal (p.e.: 0x1.d527f0p+7)

A

Punto Flotante

Igual que con a, pero empleando mayúsculas (p.e.: 0x1.D527F0P+7)

Para caracteres:

c

Carácter

Un carácter simple

s

La dirección de una cadena

Imprime los caracteres desde la dirección dada hasta encontrar un carácter nulo

%

Ninguno

Imprime el carácter %

Para punteros:

p

Puntero

Imprime el la dirección de un puntero


Operadores de asignación


Operadores Aritméticos

No hay comentarios.:

Publicar un comentario

P6-Estructuras

 Estructuras en C Las estructuras son colecciones de variables relacionadas bajo un nombre. Pueden contener variables de muchos tipos difere...