Fundamentos del lenguaje C: la estructura de un programa C, tipos básicos y construcción de nuevos tipos, operaciones y expresiones. Conceptos básicos del lenguaje C

Cualquier programa escrito en lenguaje C consta de una o más “funciones”, que son los módulos principales a partir de los cuales se ensambla.

Un ejemplo de la estructura de un programa C simple:

forma general

Ejemplo

directivas del pre procesador

#incluir

# definir N 10

nombre de la función principal

inicio del cuerpo de la función principal

declaraciones de variables y matrices

intx=1; cadena char[N];

declaraciones del programa

pone("Ingresar Nombre");

obtiene (cadena);

printf("\n %s, ¡eres %d mi invitado!",str,x);

Fin del cuerpo de la función principal.

      1. Directivas del pre procesador

Parte del compilador es un programa llamado preprocesador. El preprocesador trabaja antes de que el programa se traduzca de un lenguaje de alto nivel a un lenguaje de máquina, realizando su conversión preliminar. Cada directiva de preprocesador comienza con un carácter # (número) y abarca toda la línea. Las directivas que no caben en una línea pueden continuar en la siguiente línea. El signo de continuación de línea es el carácter de barra invertida (\) en la línea que continuará.

La directiva más utilizada es incluir un archivo en un programa.

# incluir < nombre>

Dónde nombre– el nombre del archivo incluido en el texto del programa.

Esta directiva se llama directiva de sustitución . Le indica al compilador que coloque el archivo en su lugar. nombre. Archivo nombre llamado encabezado. Contiene declaraciones de datos y funciones utilizadas en el programa. Por ejemplo, incluir en el programa la directiva

# incluir < matemáticas. h>

le permitirá utilizar funciones matemáticas estándar en el programa, como sin x, cos x, ln x, etc. A continuación se proporcionará una lista de funciones matemáticas estándar.

Directiva

# incluir < stdio. h>

permite utilizar funciones estándar de entrada/salida en el programa.

Otra directiva de uso común es la directiva de definición.

#definir S1 S2

Dónde S1, S2– cadenas de caracteres.

El preprocesador encuentra una cadena de caracteres en el texto del programa. S1 y lo reemplaza con la cuerda S2 . Por ejemplo, incluir en el programa la directiva

# definir PAG imprimirf

te permite escribir una letra en el teclado PAG en lugar de una palabra imprimirf.

Este reemplazo no se realiza dentro de cadenas de texto (literales), constantes de caracteres y comentarios, es decir. acción de la directiva # definir no se aplica a textos delimitados por comillas, apóstrofos y los contenidos dentro de comentarios.

      1. Función principal

Cada programa en C debe contener una declaración de función. principal(), que se llama función principal . Normalmente, esta función no tiene parámetros y no devuelve ningún valor. Para indicar este hecho se utiliza la palabra vacío. Por lo tanto, la línea con el nombre de la función principal suele verse así:

vacío principal (vacío)

vacío principal()

      1. Variables y matrices

Una matriz es un grupo de variables del mismo tipo con un nombre común. El nombre de una variable o matriz es un identificador, una secuencia formada por caracteres:

a – z, A - Z, 0 – 9,_(subrayado),

Además, el primer carácter no puede ser un número. Los caracteres minúsculas y mayúsculas del alfabeto latino se perciben como caracteres diferentes. Las palabras de función del lenguaje C no se pueden utilizar como nombre de variable o matriz. Las principales palabras funcionales del lenguaje C se dan en el Apéndice.

Los elementos de la matriz se distinguen por sus números (índices). El índice sólo puede aceptar valores enteros no negativos. El índice se escribe después del nombre de la matriz entre corchetes. Puede haber varios índices. En este caso, cada índice se escribe entre corchetes.

En el lenguaje C se pueden utilizar variables y matrices de varios tipos. Cada tipo de datos ocupa una determinada cantidad de bytes de memoria y puede tomar valores de un determinado rango. El volumen de esta memoria y, en consecuencia, el rango de valores aceptados en diferentes implementaciones del lenguaje C pueden variar. El número de bytes de memoria ocupados por una variable de cierto tipo para una implementación específica del lenguaje C se puede determinar mediante la operación tamaño de(tipo). Por ejemplo, puede determinar la cantidad de memoria asignada para una variable de tipo entero como esta:

k = tamaño de(int);

imprimirf(“Bajo una variable de tipoEn tSe asignan %d bytes de memoria”,k);

Estas pautas analizan tres tipos principales de variables y matrices y proporcionan valores típicos para la cantidad de memoria ocupada y el rango de valores (Tabla 1):

tabla 1

Especificador de tipo (palabra clave)

Significado

Tamaño

memoria (byte)

Rango de valores

Número entero

32768 . . . +32767

2147483648 . . . +2147483647

Válido

Número Real

3,4ּ10-38. . . 3,4ּ10 38

(módulo)

Simbólico

128 . . . +127

Echemos un vistazo más de cerca a la variable de tipo. carbonizarse. Como se puede ver en la tabla. 1, tipo variable carbonizarse ocupa un byte de memoria. Un byte de memoria puede contener un entero sin signo del rango o un entero con signo del rango [–128, 127]. Este número es el código de uno de 256 caracteres. El carácter correspondiente a un código determinado está determinado por la tabla de códigos utilizada. Por tanto, el valor de una variable como carbonizarse puede tratarse como un número entero o como un carácter cuyo código es igual a ese número.

Conferencia número 1

Tema: Introducción al lenguaje C++. Operadores y tipos de datos

Plan

3. Variables y sus tipos

4. Operadores y funciones matemáticas

5. Operadores de E/S en C++

6. Programa de ejemplo en C++

1. Historia del desarrollo del lenguaje de programación C++.

El lenguaje C++, que combina las propiedades del lenguaje C y la programación orientada a objetos, se convirtió en uno de los principales lenguajes de programación en los años 90 y sigue siéndolo firmemente a principios del siglo XXI. El lenguaje C++ heredó del lenguaje C cualidades tales como eficiencia, compacidad, velocidad de ejecución y portabilidad de los programas. De la programación orientada a objetos, el lenguaje C++ recibió una nueva metodología de programación que le permite hacer frente a la creciente complejidad de los problemas de programación modernos. Y las características del lenguaje, como las plantillas mejoradas, introducen otra nueva metodología de programación en C++: la programación genérica. Este triple legado es a la vez una bendición y una maldición para el lenguaje C++. Hacen que el lenguaje sea muy poderoso, pero al mismo tiempo complejo; lo que significa que los programadores tienen que aprender más.

En las últimas décadas, la tecnología informática se ha desarrollado a un ritmo asombroso. Los lenguajes de programación también han experimentado una importante evolución. En la década de 1970, lenguajes de programación como C y Pascal ayudaron a marcar el comienzo de la era de la programación estructurada, poniendo orden en un área que lo necesitaba con urgencia. El lenguaje C proporcionó al programador las herramientas necesarias para la programación estructurada, así como la creación de programas compactos y de ejecución rápida y la capacidad de abordar hardware, como la capacidad de controlar puertos de comunicación y unidades de disco magnético. Estas cualidades ayudaron a que C se convirtiera en el lenguaje de programación dominante en la década de 1980. Al mismo tiempo, durante estos años surgió un nuevo modelo de programación: la programación orientada a objetos, u OOP, plasmada en lenguajes como SmallTalk y C++.

lenguaje c

Ken Thompson, empleado de Bell Laboratories, desarrolló el lenguaje B (bi) en 1969 para crear otros sistemas de software. Sin embargo, este lenguaje fue interpretado, lo que no permitía crear archivos ejecutables independientes en él. Sin embargo, este lenguaje fue el predecesor del lenguaje S.

A principios de los años 70, Denis Ritchie de los Laboratorios Bell estaba desarrollando el sistema operativo UNIX. Para realizar este trabajo, Ritchie necesitaba un lenguaje de programación que fuera conciso y que también pudiera manejar hardware de manera eficiente y crear programas compactos y de ejecución rápida. Tradicionalmente, estas necesidades de los programadores se han satisfecho mediante el lenguaje ensamblador, que está estrechamente relacionado con el lenguaje de máquina interno de la computadora. Sin embargo, el lenguaje ensamblador es un lenguaje de bajo nivel, es decir. está vinculado a un tipo específico de procesador (o computadora). Por lo tanto, si es necesario transferir un programa en lenguaje ensamblador a un tipo diferente de computadora, se debe reescribir nuevamente en otro lenguaje ensamblador.

El sistema operativo UNIX fue diseñado para ejecutarse en una variedad de tipos (o plataformas) de computadoras. Y esto implicó el uso de un lenguaje de alto nivel. El lenguaje de alto nivel se centra en la resolución de problemas, no en hardware específico. Los programas especiales, llamados compiladores, traducen un programa en un lenguaje de alto nivel a un programa en el lenguaje interno de una computadora en particular. Por lo tanto, al utilizar un compilador independiente para cada plataforma, el mismo programa en lenguaje de alto nivel se puede ejecutar en diferentes plataformas. Ritchie necesitaba un lenguaje que combinara la eficiencia y el acceso al hardware de un lenguaje de bajo nivel con la naturaleza más general y la portabilidad de un lenguaje de alto nivel. Por lo tanto, basándose en el lenguaje de programación B existente, Ritchie desarrolló el lenguaje C. Generalmente se acepta que los autores del lenguaje son Ritchie y Thompson.

El lenguaje C, como la mayoría de los principales lenguajes de programación de nuestro tiempo, es procedimental.

lenguaje C++

Con el desarrollo de la tecnología orientada a objetos, las capacidades del lenguaje C estándar ya no eran suficientes. El resultado fue el lenguaje C++.

El lenguaje C++, al igual que el lenguaje C, es una creación de Bell Laboratories. El autor Bjarni Stroustrup desarrolló este lenguaje a principios de los años 80. En sus propias palabras, “C++ fue diseñado principalmente para que mis amigos y yo no tuviéramos que programar en ensamblador, C o varios lenguajes modernos de alto nivel. Su principal objetivo era este: hacer que a los programadores individuales les resulte más fácil y agradable escribir buenos programas".

Stroustrup creó C++ a partir del lenguaje C porque C era conciso, adecuado para la programación de sistemas, ampliamente disponible y estrechamente relacionado con el sistema operativo UNIX. La parte orientada a objetos del lenguaje C++ fue influenciada por el lenguaje de modelado Simula67. Stroustrup agregó elementos de programación orientada a objetos al lenguaje C sin cambiar significativamente el lenguaje C en sí.

El nombre C++ proviene del operador de incremento ++ del lenguaje C, que suma uno al valor de una variable. El nombre C++ implica que el lenguaje es una versión mejorada (++) del lenguaje C.

Programación generalizada

La programación genérica es otro paradigma de programación soportado por el lenguaje C++. Tiene un objetivo común con la programación orientada a objetos: simplificar la reutilización de códigos de programa. Sin embargo, mientras que la programación orientada a objetos se centra en los datos, la programación genérica enfatiza los algoritmos. Y tiene otro ámbito de aplicación. La programación orientada a objetos es una herramienta para desarrollar proyectos grandes, mientras que la programación genérica proporciona herramientas para realizar tareas generales como ordenar datos. El término genérico significa crear código de programa que sea independiente del tipo de datos. El lenguaje C++ contiene datos de varios tipos: números enteros, números con una parte fraccionaria, caracteres, cadenas de caracteres, estructuras complejas definidas por el usuario que constan de datos de varios tipos. Si, por ejemplo, necesita ordenar diferentes tipos de datos, normalmente crea una función de clasificación separada para cada tipo. La programación genérica extiende el lenguaje para que pueda escribir una función una vez para un tipo de datos genérico (es decir, indefinido) y luego usarla para una variedad de tipos de datos del mundo real. Esto se logra utilizando plantillas de lenguaje C++. (Comenzar)

2. Estructura del programa en C++

Un programa C++ se construye a partir de bloques individuales llamados funciones. Normalmente, un programa se divide en una serie de tareas grandes y luego se desarrollan funciones individuales para realizar estas tareas.

La mayoría de los programas en C++ tienen este aspecto:

sección para incluir archivos de encabezado

encabezado del programa (función)

cuerpo funcional

Título del programa

Un programa C++ consta de uno o más módulos llamados funciones. La ejecución del programa comienza con una función llamada main(), por lo que el programa debe contener una función con ese nombre. Si un programa no tiene dicha función, entonces no existe un programa completo; El compilador en este caso indica que la función main() no estaba definida.

La descripción de dicha función se realiza en la sección del encabezado del programa y se escribe en el formulario:

Es importante considerar el hecho de que el compilador de C++ distingue entre mayúsculas y minúsculas. Por lo tanto, un nombre de función escrito en mayúsculas y minúsculas diferentes (por ejemplo: Main() o MAIN()) se reconocerá como incorrecto.

Sección de conexión del archivo de encabezado

Al crear código ejecutable para programas C++, al igual que en el caso de los programas C, se utiliza un preprocesador. Este es un programa que procesa el archivo fuente antes de la compilación principal. Para llamar a este preprocesador, no es necesario hacer nada especial. Se ejecuta automáticamente cuando se compila el programa.

Cada programa C++ tiene primero una directiva de la forma:

#incluir

Esta directiva hace que el preprocesador agregue el contenido del archivo iostream al programa. Esta es una acción típica del preprocesador: agregar o cambiar texto en el código fuente antes de la compilación.

La directiva #include hace que el contenido del archivo iostream se pase al compilador junto con el contenido del archivo fuente. Básicamente, el contenido del archivo iostream reemplaza la línea #include en el programa. . El archivo fuente no se modifica y el archivo combinado creado a partir del archivo fuente y el archivo iostream se procesa en el siguiente paso de compilación.

Los archivos como iostream se denominan archivos de inclusión (porque están incluidos en otros archivos) o archivos de encabezado (porque están incluidos al principio del archivo). Los compiladores de C++ vienen con muchos archivos de encabezado, cada uno de los cuales admite una familia diferente de herramientas. Los archivos de encabezado en lenguaje C tradicionalmente tienen la extensión h, esta es la forma más sencilla de identificar un tipo de archivo por su nombre. Por ejemplo, el archivo de encabezado math.h admite varias funciones matemáticas del lenguaje C++.

Los archivos de encabezado se encuentran en la carpeta Incluir del entorno de desarrollo Turbo C++. Si, al iniciar el programa, recibe un error que indica que falta el archivo de encabezado incluido, entonces deberá configurarlo en el entorno Turbo C++. Para hacer esto, ejecute el comando Opciones – Directorios, ingrese ..\INCLUDE en el campo Incluir directorios e ingrese ..\LIB en el campo Directorios de biblioteca.

cuerpo funcional

El cuerpo de la función contiene instrucciones para la computadora, es decir. define lo que realmente hace la función.

El cuerpo de la función se ve así:

descripción de variables;

operadores;

Como puede ver, el cuerpo de la función está encerrado entre llaves. La descripción de variables se discutirá en la siguiente sección de la conferencia.

Una declaración representa instrucciones para una computadora. Para comprender el código fuente, el compilador debe saber cuándo termina una declaración y comienza otra. Algunos lenguajes de programación utilizan separadores de declaraciones. En Pascal, una declaración está separada de la siguiente por un punto y coma. En algunos casos, el punto y coma se puede omitir en Pascal, por ejemplo, después de una declaración antes de la palabra FIN, cuando las dos declaraciones no están realmente separadas. Pero en el lenguaje C++, así como en el lenguaje C, se utiliza un terminador (puntero) en lugar de un separador. Un terminador es un punto y coma que marca el final de una declaración; es parte de una declaración en lugar de un separador entre declaraciones. El resultado práctico es que en C++ nunca se debe omitir el punto y coma.

La instrucción RETURN 0 especifica que la función sale y regresa al programa que llama. Es posible que esta instrucción no esté especificada en la función main().

Se pueden utilizar comentarios en el texto del programa. En C++, los comentarios se indican con barras dobles (//). Los programas C++ pueden utilizar comentarios del lenguaje C, que están encerrados entre los símbolos /* y */.

Dado que un comentario C no termina con un carácter de final de línea, sino con un carácter */, puede continuar en varias líneas. Los programas pueden utilizar cualquiera de estos dos tipos de comentarios o ambos juntos. (Comenzar)

Suspenda AdBlock en este sitio.

Espero que ya hayas instalado algún IDE en tu computadora y hayas aprendido a compilar programas en él. Si no entonces

Todos los programas escritos en C tienen una estructura común. Del cual hablaremos en esta lección. Nuestro primer programa, escrito en el paso anterior, nos ayudará con esto.

Rellenaremos una tarjeta sencilla. Por el momento sabemos que existen programas, pero no sabemos cómo están estructurados internamente. Por lo tanto, nuestro mapa se verá así.

Fig.1 Mapa "Estructura de programas en lenguaje C". Primer nivel.

A lo largo del curso volveremos a este mapa, lo aclararemos y lo complementaremos con nuevos elementos y bloques.

Ahora atención. ¡No tengas miedo! A continuación se muestra el código fuente de tres programas simples. Tu tarea es observarlos detenidamente e intentar encontrar algún tipo de patrón en su código (algo común que tiene todo programa).

Listado 1. Programa 1. Imprime “¡Hola, mundo!”

#incluir

Listado 2. Programa 2

int principal(vacío) ( int a, b, c; a = 5; b = 10; c = a+b; devuelve 0; )

Listado 3. Programa 3

#incluir int main(void) ( ARCHIVO *fp; fp = fopen("input.txt", "w"); fprintf(fp, "¡Esto es Esparta!"); fclose(fp); devuelve 0; )

Tómate tu tiempo para ver la continuación de la lección y la respuesta correcta a este problema. Primero, intenta responderte a ti mismo. Después de eso, haga clic en el botón "¡Ver continuación!".

Entonces, la respuesta: en todos los programas anteriores existe la siguiente construcción:

Listado 4. La función principal de cualquier programa C es la función principal.

Int principal (vacío) (devuelve 0;)

¿Qué tipo de diseño es este? Esta es la declaración de la función principal. Existe una función de este tipo en cada programa escrito en lenguaje C. Ya sea un programa grande o pequeño, un juego de computadora o un programa "¡Hola, mundo!", escrito por usted o por Bill Gates, si el programa está escrito en lenguaje C. el lenguaje C: tiene una función principal. Ésta es, por así decirlo, la función principal de nuestro programa. Cuando ejecutamos un programa, podemos considerarlo como si estuviera ejecutando la función principal del programa.

Detengámonos un segundo. Parece que ya hemos descubierto algo sobre la estructura de los programas en C. Cualquier programa en C debe contener una función principal. Muestremos este hecho en nuestro mapa de conocimiento "Estructura de programas en lenguaje C".

Fig.2 Mapa "Estructura de programas en lenguaje C". Función principal.

Ahora el mapa no nos molesta con su enorme vacío. Sigamos nuestra investigación.

Déjame contarte un poco sobre la función principal y sobre funciones en general.

El nombre de la función está precedido por int, que es una abreviatura de la palabra entero, que se traduce del inglés como "entero". Esta notación significa que cuando la función principal completa su trabajo, debe devolver algún número entero al programa que la llama (en nuestro caso, el sistema operativo). Normalmente, para la función principal, este es el número cero, que notifica al sistema operativo: "Todo está bien, no ha ocurrido ningún incidente".

¿Alguna vez has visto mensajes de error en la pantalla de tu computadora? Por lo general, escriben algo como "El programa finalizó de manera anormal... bla, bla, bla... Código -314". Esto es más o menos lo mismo. La diferencia es que cuando ocurren problemas el sistema operativo nos avisa y cuando todo está bien no vuelve a molestarnos.

Después del nombre de la función, la palabra void se escribe entre paréntesis. En general, los argumentos de una función suelen escribirse entre paréntesis, pero en nuestro caso, cuando void se escribe entre paréntesis, significa que la función no tiene argumentos. Es decir, para que la función principal empiece a funcionar no necesita ningún dato adicional del exterior. Hablaremos de todo esto en detalle más adelante, pero por ahora recuerde que la palabra void en lugar de argumentos de función significa que no se requieren argumentos para esta función.

Dentro de las llaves hay una descripción de la función principal, es decir exactamente lo que se supone que debe hacer esta función.

Antes de la llave de cierre vemos el comando de retorno. Es este comando el responsable de devolver el valor de la función. Aquellos. Mira, si el programa llegó a este punto, entonces todo estuvo bien y no se produjeron errores, lo que significa que puedes devolver el valor cero.

Te preguntarás, ¿por qué exactamente cero? ¡Y el diablo lo sabe! Así es como suelen hacerlo. En principio, puede devolver algún otro número entero, por ejemplo 100 o -236. Si tan sólo fuera un número entero. ¿Recuerdas sobre int? Por tanto el todo.

Entonces descubrimos la función principal. Una cosa más. Lo que está escrito entre llaves generalmente se llama "cuerpo de la función" (o descripción de la función), y la primera parte, la que está antes de las llaves, se llama encabezado de la función.

Volvamos ahora a nuestro primer programa "Hola, mundo" y veamos qué es qué.

Listado 5. Programa Hola, Mundo

#incluir int main(void) ( printf("¡Hola, mundo!\n"); retorno 0; )

Ahora entendemos algunas cosas en este programa. Sólo quedan dos líneas sin aclarar, vayamos en orden.

Listado 6. La directiva de inclusión

#incluir

Esta línea es un mensaje para el compilador. Estos mensajes, que comienzan con el símbolo #, se denominan directivas del compilador. Literalmente: "conectar el archivo stdio.h". Durante la compilación, se insertará el contenido del archivo stdio.h en lugar de esta línea. Ahora hablemos un poco de este archivo. stdio.h (del inglés STanDart Input Output) es un archivo de encabezado que describe varias funciones estándar relacionadas con la entrada y la salida.

Surge una pregunta razonable: "¿Por qué necesitamos escribir esta línea? ¿Por qué necesitamos insertar este archivo aquí?" Esto es necesario para que en nuestro programa podamos usar la función de visualización de pantalla estándar printf().

Aquí está la cosa. Antes de que podamos usar algo en nuestro programa, primero debemos describirlo. Imagínate una situación: te pidieron que trajeras un candelabro, pero no sabes qué es. No está claro qué hacer.

También lo hace el compilador. Cuando encuentra una función, busca su descripción (es decir, qué debe hacer y qué significa) al principio del programa (desde el principio hasta el momento en que se utiliza en el programa). Entonces, la función printf() se describe en el archivo stdio.h. Por eso lo conectamos. Pero cuando lo conectemos, el compilador podrá encontrar la función printf(); de lo contrario, arrojará un error.

Por cierto, es hora de complementar nuestro mapa de conocimiento. Antes de la función principal, agregaremos un bloque más, un bloque para conectar archivos de encabezado.

Fig.3 Mapa "Estructura de programas en lenguaje C". Bloque para conectar archivos de encabezado.

Sigamos con nuestro programa.

Listado 7. Función printf()

Printf("¡Hola mundo!\n");

En esta línea llamamos a la función estándar printf(). En este caso más simple, le pasamos un parámetro, una cadena escrita entre comillas que debe mostrarse en la pantalla; en nuestro caso es ¡Hola, mundo! \norte. Pero espera, ¿qué es esto\n? No había ningún \n en la pantalla cuando se inició el programa. ¿Por qué entonces escribimos esto aquí? Esta secuencia es un carácter especial, que es un comando para pasar a la siguiente línea. Es como presionar la tecla Enter en MS Word. Hay varios caracteres especiales de este tipo, todos ellos están escritos utilizando el carácter "\", una barra invertida. Estos caracteres especiales se denominan caracteres de control. Luego te los mostraré de nuevo. De lo contrario, aparecerá en pantalla lo que escribiste entre comillas dobles.

Por cierto, tenga en cuenta que cada comando en lenguaje C termina con el símbolo ";" (punto y coma). Es como un punto al final de una frase en ruso. En el lenguaje ordinario, separamos las oraciones con un punto y en el lenguaje de programación C usamos punto y coma para separar los comandos entre sí. Por lo tanto, es obligatorio utilizar punto y coma. De lo contrario, el compilador se quejará y arrojará un error.

Para llamar a una función, debe escribir su nombre e indicar entre paréntesis los parámetros que se le han pasado. Una función puede tener uno o más parámetros. O puede que no haya ningún parámetro, en cuyo caso no es necesario escribir nada entre paréntesis. Por ejemplo, arriba llamamos a la función printf() y le pasamos un parámetro: la cadena que debe mostrarse.

Por cierto, un consejo útil. Dado que cada programa debe tener una función principal, y literalmente en cada programa necesitaremos mostrar algo en la pantalla, te recomiendo que crees inmediatamente un archivo con la siguiente plantilla, para no escribir lo mismo cada vez.

Listado 8. Plantilla estándar para programas en lenguaje C.

#incluir int principal (vacío) (devuelve 0;)

Bueno, eso parece ser todo. Con esto, la primera lección se puede considerar completa. Aunque no, hay un punto más.

Lo más importante de esta lección es, por supuesto, la estructura general del programa. Pero además, hemos aprendido a mostrar texto arbitrario en pantalla. Parece que no aprendieron nada de nada, pero incluso esto es suficiente para, por ejemplo, darle un pequeño regalo a tu madre el 8 de marzo.


El código fuente del programa de postales está en el archivo con los códigos fuente de esta lección. ¡Experimento! Tu tendrás exito.

C, como variables estáticas y locales, matrices, punteros, funciones, etc., están lo más cerca posible de la arquitectura de las computadoras reales. Entonces, un puntero es solo una dirección de memoria, una matriz es un área contigua de memoria, las variables locales son variables ubicadas en la pila de hardware, las variables estáticas están en la memoria estática. Un programador que escribe en C siempre tiene una idea bastante precisa de cómo funcionará el programa que crea en cualquier arquitectura específica. En otras palabras, el lenguaje C le da al programador un control total sobre la computadora.

El lenguaje C se concibió originalmente como un reemplazo del lenguaje ensamblador para escribir sistemas operativos. Dado que C es un lenguaje de alto nivel que no depende de una arquitectura particular, el texto del sistema operativo era fácilmente transportable de una plataforma a otra. El primer sistema operativo escrito casi íntegramente en C fue Unix. Actualmente, casi todos los sistemas operativos en uso están escritos en C. Además, herramientas de programación que Sistema operativo proporciona a los desarrolladores de programas de aplicaciones (la llamada API - Interfaz de programa de aplicación): estos son conjuntos de funciones del sistema en el lenguaje C.

Sin embargo, el alcance del lenguaje C no se limitó al desarrollo de sistemas operativos. El lenguaje C ha demostrado ser muy conveniente en programas de procesamiento de textos e imágenes, en cálculos científicos y de ingeniería. Los lenguajes orientados a objetos basados ​​en C son excelentes para programar en entornos con ventanas.

Esta sección proporcionará sólo los conceptos básicos del lenguaje C (y parcialmente de C++). Esto no sustituye la lectura de un libro de texto completo en C o C++, como los libros y .

Usaremos un compilador de C++ en lugar de C. El hecho es que el lenguaje C está casi en su totalidad incluido en C++, es decir. un programa normal escrito en C es un programa C++ válido. La palabra "normal" significa que no contiene construcciones desafortunadas que quedaron de versiones anteriores de C y que no se utilizan actualmente. El compilador de C++ es preferible al compilador de C porque Tiene un control de errores más estricto. Además, algunas construcciones de C++ que no están relacionadas con la programación orientada a objetos son muy convenientes y, de hecho, son una mejora del lenguaje C. Estos son, en primer lugar, comentarios // , la capacidad de describir variables locales en cualquier punto del programa, y ​​no solo al comienzo del bloque, así como establecer constantes sin usar el operador #define del preprocesador. Usaremos estas características de C++ mientras permanecemos esencialmente dentro del lenguaje C.

estructura del programa C

Cualquier programa C suficientemente grande (los programadores usan el término proyecto) consta de archivos. Los archivos son traducidos de forma independiente por el compilador de C y luego combinados por el programa generador de tareas, lo que da como resultado un archivo con un programa listo para ser ejecutado. Los archivos que contienen textos de programas en C se denominan original.

En el lenguaje C, existen dos tipos de archivos fuente:

  • encabezado o archivos h;
  • archivos de implementación o archivos C.

Los nombres de los archivos de encabezado tienen la extensión ".h". Los nombres de los archivos de implementación tienen la extensión ".c" para el lenguaje C y ".cpp", ".cxx" o ".cc" para el lenguaje C++.

Desafortunadamente, a diferencia del lenguaje C, los programadores no han podido ponerse de acuerdo sobre una única extensión de nombre para los archivos que contienen programas C++. Usaremos la extensión ".h" para los archivos de encabezado y la extensión ".cpp" para los archivos de implementación.

Archivos de encabezado contienen sólo descripciones. En primer lugar, se trata de prototipos de funciones. Prototipo de función describe el nombre de la función, el tipo de retorno, el número y los tipos de sus argumentos. El texto de la función en sí no está contenido en el archivo h. Además, los archivos h describen los nombres y tipos de variables externas, constantes, nuevos tipos, estructuras, etc. En general, los archivos h contienen sólo interfaces, es decir. información necesaria para utilizar programas ya escritos por otros programadores (o por el mismo programador anteriormente). Los archivos de encabezado sólo proporcionan información sobre otros programas. Al traducir archivos de encabezado, por regla general, no se crea ningún objeto. Por ejemplo, en un archivo de encabezado no se puede definir variable global. Línea descriptiva

definir una variable entera x es un error. En su lugar se debe utilizar la descripción.

lo que significa que la variable x está definida en algún lugar del archivo de implementación (que se desconoce). La palabra externa (externa) solamente informa informacion sobre una variable externa, pero no define esa variable.

Archivos de implementación, o archivos C, contienen textos de funciones y definiciones de variables globales. En pocas palabras, los archivos C contienen los programas en sí, mientras que los archivos h solo contienen información sobre los programas.

La representación de los códigos fuente en forma de archivos de encabezado y archivos de implementación es necesaria para crear proyectos grandes que tengan una estructura modular. Los archivos de encabezado se utilizan para transferir información entre módulos. Los archivos de implementación son módulos separados que se desarrollan y traducen de forma independiente entre sí y se combinan para crear un programa ejecutable.

Los archivos de implementación pueden incluir descripciones contenidas en archivos de encabezado. Los propios archivos de encabezado también pueden utilizar otros archivos de encabezado. El archivo de encabezado se incluye mediante la directiva de preprocesador #include. Por ejemplo, las descripciones de las funciones de E/S estándar se incluyen utilizando la línea

#incluir

(stdio - de las palabras entrada / salida estándar). El nombre del archivo h se escribe entre paréntesis angulares si este archivo h

Estructura del programa en lenguaje C.

Utilizar el lenguaje de programación C para resolver problemas económicos.

Programas y datos

Ventajas del lenguaje C

1) C es un lenguaje moderno, su estructura anima al programador a utilizar métodos en su trabajo: diseño de arriba hacia abajo, programación estructurada, estructura de programa modular.

2) C es un lenguaje eficiente. Los programas C son compactos y rápidos de ejecutar.

3) C – lenguaje portátil o móvil.

4) C es un lenguaje potente y flexible.

5) Los programas escritos en C se utilizan para resolver problemas en varios niveles. C tiene una serie de potentes construcciones ensambladoras.

6) C es un lenguaje conveniente, está estructurado y al mismo tiempo no limita demasiado la libertad de los programadores.

7) C es un lenguaje de tipo compilador. Debido a que C es un lenguaje estandarizado, independiente del hardware y ampliamente disponible, una aplicación escrita en C a menudo puede ejecutarse con poca o ninguna modificación en una amplia variedad de sistemas informáticos. La computadora, a pesar de su velocidad y potencia de cálculo, es un dispositivo simple que manipula números binarios. La computadora interpreta algunos números binarios como instrucciones, otros como datos. Para que una computadora haga algo útil, es necesario escribir un programa.

Programación actividades de desarrollo del programa.

Programa es una descripción de un algoritmo para resolver un problema especificado en un lenguaje informático.

Equipo un orden que define el siguiente paso.

Ejemplo equipos: C=A+B, donde A, B son operandos, + es la operación.

Operación - esto es lo que debe hacer la computadora según cada comando.

Operandos - participantes en la operación, qué y con qué se realiza la operación. Un conjunto de operaciones elementales a partir de los métodos de sus descripciones forman un sistema de comandos de un lenguaje de programación.

Ejemplo 1:

#incluir

(void main(void) //encabezado de la función principal del programa

afuera<< “Здравствуй, С!\ n”;

1 linea: conectar bibliotecas auxiliares enfocadas en la entrada y salida de datos de diferentes tipos en una secuencia.

2da línea: encabezado de la función principal del programa. Operador cout para mostrar información<< – помещение в класс данных, \n-переход к новой строке вывода.

Programa es una secuencia de instrucciones que implementan un algoritmo; un conjunto de instrucciones que determinan de forma única el contenido y la secuencia de operaciones para resolver problemas.

Uso de s.

1. Programas y datos.

2. Esquema de ejecución del programa en una computadora:

Ejemplo 1:

#incluir< stdio.h>

printf ("Estudio en BSUIR\n");

Línea 1: el comando de inclusión del preprocesador incluye el archivo stdio.h, que describe la función de la biblioteca printf.

Línea 2: definición de una función llamada main que no recibe ningún argumento. La declaración principal está encerrada entre llaves. La función principal llama a la función de biblioteca printf para imprimir la secuencia de caracteres especificada. Barra diagonal (\n): carácter de nueva línea, transición a una nueva línea.

Para ejecutar el programa en un PCEM, debe hacer lo siguiente:

1) Crear un programa en un lenguaje de programación.

2) Traducirlo al estándar de este idioma.

3) Vincularlo con los programas y funciones necesarios.

4) Cargar en la RAM.

5) Ejecutar y obtener el resultado.


ESQUEMA DE TERMINACIÓN

Un traductor es un programa de computadora para traducir un programa escrito en un lenguaje de programación a una forma comprensible para una computadora. La salida del compilador es un archivo con la extensión obj. Un archivo ejecutable, o módulo de carga, es un archivo que contiene un programa compilado y listo para ser ejecutado. Borland C++ es un entorno de desarrollo de programas que incluye un compilador y algunas otras herramientas.

Estructura de un programa en lenguaje C.

Cualquier programa en C consta de una o más funciones y elementos. A las distintas funciones se les puede dar cualquier nombre. Las funciones contienen instrucciones (comandos) que prescriben acciones en un paso de ejecución específico, y una variable almacena los valores utilizados durante estas acciones. Tales acciones pueden ser asignar valores a variables o verificar alguna condición. Una función llamada principal. La ejecución de cualquier programa comienza con la función principal.

a) Estructura general de un programa en C sin recurso a una subrutina:

b) Estructura general de un programa en C con referencia a la subrutina:

Los argumentos son uno de los mecanismos de interacción entre funciones. Una lista de argumentos entre paréntesis sigue al nombre de la función. Las llaves marcan el principio y el final de un programa. Instrucciones que componen el cuerpo del programa de operadores y operandos. En C, cada declaración y cada línea que llama a una función termina con un punto y coma. Las excepciones son los comandos del preprocesador y los nombres de funciones al comienzo de una unidad de programa. El objetivo de la mayoría de los programas es resolver un problema mediante diversas transformaciones de los datos fuente. Para ello es necesario.




Arriba