Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 4.doc
Скачиваний:
20
Добавлен:
13.03.2016
Размер:
404.99 Кб
Скачать

ГЛАВА 4. ПРОГРАММИРОВАНИЕ НА СИ (СИ++)

4.1. Ведение

Язык СИ был разработан в 1972 году Денисом Ритчи при создании операционной системы UNIX. Язык был создан как инструмент для программистов-практиков.

Достоинства языка СИ:

  1. Он включает в себя те управляющие структуры, которые рекомендуются теоретическим и практическим программированием. Его структура побуждает программиста использовать в своей работе нисходящее проектирование, структурное программирование и пошаговую разработку модулей. Результатом такого подхода является надёжная и читаемая программа.

  2. Это эффективный язык. Программы на языке СИ отличаются компактностью и быстротой исполнения.

  3. Переносимый язык.

  4. Мощный и гибкий язык. На нём можно писать программы для решения задач вычислительного характера, экономических, создание ОС и трансляторов с языков программирования.

Структура программы. Любая программа на языке СИ/СИ++ представляет собой совокупность функций. Одна из функций является главной. Именно с главной функции начинается выполнение программы (см. рис. 1).

Пример программы.

//директивы препроцессора

#include <stdio.h>

#include <math.h>

// функция вычисления длины отрезка

float dl(float x1, float y1,float x2, float y2)

{ float l, a, b;

a=x1-x2; a=a*a;

b=y1-y2; b=b*b;

l=sqrt(a+b);

return l;

}

Рис. 4.1. Структура программы на СИ

//основная программа

void main( )

{

float xa, ya, xb, yb, xc, yc;

float ab, bc, ac, p, S;

printf(“/n Введите координаты вершин треугольника”);

scanf(“%f%f%f%f%f%f”,&xa,&ya,&xb,&yb,&xc,&yc);

ab=dl(xa,ya,xb,yb); bc=dl(xb,yb,xc,yc); ac=dl(xa,ya,xc,yc);

p=0.5*(ab+bc+ac);

S=sqrt(p*(p-ab)*(p-bc)*(p-ac));

printf(“/nПлощадь треугольника равна %6.2f”,S);

}

Этапы работы с программой в системе программирования (рис.2 — прямоугольниками изображены системные программы, а блоками овальной формы — файлы на входе и выходе этих программ).

Рис. 4.2. Этапы работы с программой

С помощью текстового редактора создаётся текст программы и сохраняется в файле с расширением .cpp. Этот файл называется исходным. Например, решение задачи нахождения площади треугольника, заданного координатами вершин, рассмотренного выше можно сохранить в файле primer.cpp. Затем этот файл обрабатывается препроцессором. В результате такой обработки происходят препроцессорные подстановки и подключения заголовочных файлов. В нашем примере подключаются стандартная библиотека ввода-вывода и математическая библиотека. После препроцессорной обработки расширенный текст программы поступает на компиляцию. В результате компиляции в тексте программы могут быть обнаружены синтаксические ошибки, которые должен устранить разработчик, а в случае успешной компиляции создаётся объектный код программы. В нашем примере будет создан файл primer.obj. Объектный код поступает на вход компоновщика (Linker) — этот этап еще называют редактированием связей. На данном этапе к программе подключаются библиотечные функции и создаётся исполняемая программ — файл с расширением .exe. В нашем примере будет создан файл primer.exe.

4.2. Состав языка

В естественных языках различают символы, из которых состоят слова. Слова составляют словосочетания, из слов и словосочетаний строятся предложения. В алгоритмических языках выделяют символы, лексемы, выражения, операторы.

Символы (алфавит) — это основные неделимые знаки, с помощью которых пишутся все тексты.

Лексема — минимальная единица языка, имеющая самостоятельный смысл.

Выражение задаёт правило вычисления некоторого значения.

Оператор задаёт законченное описание некоторого действия.

Группа операторов составляю блок или составной оператор. В этом случае эта группа операторов рассматривается как один оператор.

Все операторы делятся на исполнимые и неисполнимые. Исполнимые операторы задают действия над данными. Неисполнимые операторы — операторы описания.

Рис. 4.3. Структурные единицы программы

Алфавит. В алфавит языка СИ/С++ входят

  • большие и маленькие латинские буквы;

  • цифры;

  • специальные символы: “ { } , . | [ ] ( ) + - / % \ ; ‘ : ? < = > _ ! & # ~ ^ * пробел;

  • комбинация символов: ++ -- == || << >> <= >= += -= *= |= ?: |* */ // интерпретируется как один символ.

Из символов алфавита формируются лексемы. В языке 6 классов лексем:

  • идентификаторы — последовательность латинских букв, цифр, символов подчёркивания ( _ ), начинающаяся с буквы или символа подчёркивания, например: KOM_6, __abc, A_B_C, MAX, Max.

Заглавные и маленькие буквы различаются. Поэтому МАХ и Мах — это два различных идентификатора. Рекомендуется выбирать имя идентификатора так, чтобы оно несло смысловую нагрузку. Длина идентификатора может быть любой. Компилятор различает первые 31 символ (в некоторых реализациях только первые 8 символов).

  • служебные (ключевые) слова — это идентификаторы, зарезервированные в языке программирования. Полный список служебных слов зависит от реализации языка. Ядро служебных слов состоит более чем из 50 слов. Существуют служебные слова, начинающиеся с одного или двух знаков подчёркивания, поэтому программисту не рекомендуется начинатьсвои идентификаторы с это знака.Служебные слова нельзя использовать в качестве свободно выбираемых идентификаторов.

      • константы;

      • строковые константы;

      • операции (знаки операций);

      • разделители (знаки пунктуаций).

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