Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 02

.pdf
Скачиваний:
13
Добавлен:
19.05.2015
Размер:
313.46 Кб
Скачать

Кафедра автоматизации технологических процессов Тверского государственного технического университета

Разработчик: доцент В. Г. Васильев

ЛЕКЦИЯ № 2

«Структура программ на языке С/С++. Этапы сборки программы»

по курсу «Структуры и алгоритмы обработки данных»

(для специальности «Управление в технических системах»)

СОДЕРЖАНИЕ:

2.1.Структура программы.

2.2.Второй пример программы на языке С/ С++

2.1. Структура программы на языке С++.

Программа на Cи++ представляет собой последовательность ACSIIсимволов, представляющих собой ее исходный текст.

Алфавит языка состоит из следующих символов:

Заглавные и строчные латинские буквы A-Z, a-z и символ подчеркивания. Цифр от 0 до 9. Специальных символов + - * / = > < . ; , : [ ] { } ( ) # $.

Символы пробел, табуляция, перевод строки, возврат каретки называются пробельными.

Идентификаторы. Имена, которые присваиваются константам, типам данных, переменным и функциям называются идентификаторами. В Си следующие правила создания идентификаторов: они должны начинаться с букв (a...z,A...Z) или с подчеркивания (_), остальная часть идентификатора должна состоять из букв, подчеркиваний и/или цифр(0...9).

Ключевые слова. В таблице 1 перечислены 32 ключевых слова, определенные стандартом С89. Они же являются ключевыми словами языка С как подмножества C++. В табл. 1.3 приведены ключевые слова, добавленные стандартом С99. Набор ключевых слов вместе с формальным

синтаксисом С составляет язык программирования С.

Таблица 1

Ключевые слова стандарта C89

 

 

 

 

 

 

 

auto

 

double

 

int

 

struct

 

 

 

 

 

 

 

 

 

 

 

 

 

break

 

else

 

long

 

switch

 

 

 

 

 

 

 

case

 

enum

 

register

 

typedef

 

 

 

 

 

 

 

char

 

extern

 

return

 

union

 

 

 

 

 

 

 

const

 

float

 

short

 

unsigned

 

 

 

 

 

 

 

continue

 

for

 

signed

 

void

 

 

 

 

 

 

 

default

 

goto

 

sizof

 

volatile

 

 

 

 

 

 

 

do

 

if

 

static

 

while

 

 

 

 

 

 

 

. Ключевые слова, добавленные стандартом C99

 

 

 

 

 

_Bool

 

_Imaginary

 

restrict

 

 

 

 

 

_Complex

 

inline

 

 

 

 

 

 

 

Кроме стандартных ключевых слов, многие компиляторы для лучшего функционирования в среде программирования разрешают дополнительно использовать некоторые нестандартные ключевые слова. Например, несколько компиляторов, рассчитанных на создание кода, выполняемого в моделях памяти, поддерживаемых процессорами семейства 8086, с целью поддержки взаимодействия программ, написанных на разных языках, а также для обеспечения доступа к прерываниям дополнительно вводят следующие ключевые слова:

asm

_ds

huge

pascal

cdecl

_es

intrrupt

_ss

_cs

far

near

 

В языке С различаются верхний и нижний регистры символов: else — ключевое слово, a ELSE — нет. В программе ключевое слово может быть использовано только как ключевое слово, то есть никогда не допускается его использование в качестве переменной или имени функции.

Функции. Любая программа на языке С/С++ представляет собой одну или несколько функций. В любой программе обязательно должна быть одна функция main() (для консольных приложений).

main() и не является ключевым словом. Однако к нему следует относиться как к ключевому. Не следует использовать main как имя переменной, так как это может нарушить работу компилятора.

Правилом хорошего тона в программировании является разбиение задачи на подзадачи, и в главной функции чаще всего должны быть операторы вызова других функций. Общую структуру любой программы на языке Си можно записать следующим образом.

Объявление глобальных переменных

Тип_ результата main (Список_переменных)

{

Операторы

}

Тип_результата f1(Список_переменных)

{

Операторы

}

Тип_результата f2(Список_переменных)

{

Операторы

}

...

Тип_результата fn(Список_переменных)

{

Операторы

}

Здесь Тип_результата - тип возвращаемого функцией значения. В простейшем случае программа на языке Си состоит из одной функции main, в этом случае структура программы будет такой.

int main()

{

Операторы

}

2.2. Второй пример программы на языке С

Перед тем, как перейти к подробному изложению основ языка, рассмотрим еще пример программы на С.

Задача. Известны длины двух катетов прямоугольного треугольника. Найти длину гипотенузы, площадь прямоугольника и величины его углов.

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

{

float a,b,c, alf,bet,s; printf("A="); scanf("%f",&a); printf("B="); scanf("%f",&b); s=a*b/2; c=pow(a*a+b*b,0.5); alf=atan(a/b); bet=3.14159/2-alf;

printf("\n A=%5.2f \t B=%5.2f \t C=%5.2f \n",a,b,c); printf("\nS=%5.2f \t alf=%3.0f \t bet=%3.0f\n", s,alf*180/3.14159,bet*180/3.14159);

}

Рассмотрим подробно текст программы.

Строки 1-2. Указывают компилятору (а точнее препроцессору), что надо использовать функции из библиотек, stdio.h и math.h. В данном случае они необходимы для выполнения операторов ввода scanf и вывода printf (stdio.h) и математических функций возведения в степень pow и вычисление арктангенса atan (math.h).

Строка 5. Описание вещественных переменных a,b,c,alf,bet,s. Строка 6. Оператор вывода строки символов А=.

Строка 7. Оператор ввода вещественного числа a. В этом операторе (а точнее

вфункции scanf) должны быть два параметра:

строка, в которой указывают типы вводимых переменных, перед кодом типа должен быть символ %; символ f используется для указания вещественного типа, d – для целого типа;

список адресов вводимых переменных, для вычисления адреса переменной используется символ &.

Строка 8. Оператор вывода строки символов B=. Строка 9. Оператор ввода вещественного числа b.

Строка 10. Оператор присваивания для вычисления площади треугольника

по формуле. В операторе присваивания могут использоваться знаки операций: +, -, *, /.

Строка 11. Оператор присваивания для вычисления гипотенузы с использованием теоремы Пифагора. Функция pow(x,y) используется в Си для вычисления xy. Строка 12-13. Операторы присваивания для вычисления углов α и β по

формулам

.

Строки 14-15. Функции вывода результатов на экран. В функции вывода printf должны быть два параметра:

строка вывода, в которой вместо выводимых переменных указываются их типы, между символом % и кодом формата можно указывать формат вывода, который в случае вывода вещественных чисел имеет вид m.n (m - количество позиций в числе, n – количество позиций в дробной части числа); в строке вывода могут использоваться можно поставить знаки: \n перевод строки, \t – табуляция.

список выводимых переменных.

Строка комментариев в Си начинается символами //. Комментариями также называются символы, стоящие между /* и */.

Мы рассмотрели простейшую программу на языке С, состоящую из операторов ввода данных, операторов присваивания (в которых происходит расчет по формулам) и операторов вывода. Рассмотренные в первой программе операторы ввода-вывода являются операторами классического C, в дальнейшем мы рассмотрим и операторы С++.

Рассмотрим основные этапы обработки программы на языке С и формирования машинного кода.

1.Сначала программа обрабатывается препроцессором, который выполняет директивы препроцессора, в нашем случае это директивы включения заголовочных файлов (файлов с расширением h) - текстовых файлов, в которых содержится описание используемых библиотек. В результате формируется полный текст программы, который поступает на вход компилятора.

2.Компилятор разбирает текст программ на составляющие элементы, проверяет синтаксические ошибки и в случае их отсутствия формирует объектный код (файл с расширением obj).

3.Компоновщик подключает к объектному коду программы объектные модули библиотек и других файлов (если программа состоит из нескольких файлов) и генерирует исполняемый код программы (файл с расширением exe), который уже можно запускать на выполнение.

Итак, для всех программ написанных на языке С/С++ структура общая. В ней можно выделить несколько блоков:

блок заголовочных файлов. Тут подключаются различные заголовочные файлы и библиотеки, функции из которых нам понадобятся в нашей программе.

блок описания пользовательских функций. В данном блоке программист описывает свои функции нужные ему для решения каких то задач. Данный блок может отсутствовать, как, например, в программе рассмотренной выше.

блок описание главной функции. В этом блоке находится сама логика всей программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]