Описание специальных алгоритмов
Оглавление
Введение. 2
Раздел 1. 3
1.1. Постановка задачи. 3
1.2. Структура данных с указанием типов. 3
1.3. Структурная схема программы.. 4
1.4. Описание работы программы.. 4
1.5. Описание специальных алгоритмов. 5
1.6. Листинг программы.. 9
1.7.Результаты сортировки. 25
Заключение. 27
Список литературы.. 28
Введение
Целью данной курсовой работы является углубить теоретические знания по языку программирования С\С++ и применение их на практике при создании рабочего проекта, расширить кругозор студентов в вопросах возможности применения ЭВМ в конкретной практической деятельности, овладевания навыками структурного программирования на языке С. В этой работе для выполнения всех требований преподавателя к функциональности рабочего приложения мне будут необходимы знания по всему курсу «Алгоритмизация и программирование на языке «С/С++». При выполнении курсовой работы предстоит:
· изучить теорию и технологию работы со средой программирования С\С++;
· изучить и проанализировать соответствующую литературу;
· провести сравнительный анализ языков программирования этого класса, выявить достоинства и недостатки;
· привести элементы методической работы в виде разработки вариантов заданий.
Таблица 1 - Экспериментальная база реле:
№ | Марка реле | R нормальное, Ом | U рабочее, В | I рабочее, А | Масса, г |
1 | P1 | 690 | 220 | 1 | 100 |
2 | P3 | 690 | 220 | 1 | 110 |
3 | PTK-X(M) | 720 | 220 | 1 | 110 |
4 | DSH-15 | 720 | 220 | 1 | 100 |
5 | ТАМ 112-1М | 770 | 250 | 6 | 140 |
6 | ТАМ 103 | 750 | 340 | 3 | 450 |
7 | ТАМ 123 | 900 | 380 | 5 | 500 |
8 | Т425 | 650 | 110 | 1 | 100 |
9 | МРТ 110 | 700 | 220 | 10 | 220 |
10 | ТАМ 126 | 720 | 250 | 3 | 150 |
11 | BI-1-М | 150 | 24 | 5 | 400 |
12 | PТСВ | 250 | 24 | 4 | 800 |
13 | PТ-СМ-Ех | 300 | 24 | 2 | 400 |
14 | TAB102 | 320 | 110 | 5 | 15 |
15 | Т4М013 | 800 | 380 | 8 | 150 |
16 | ТАМ 127 | 720 | 380 | 10 | 240 |
17 | ТАМ133-2М-46 | 400 | 250 | 6 | 140 |
18 | МРТ 12 | 150 | 220 | 10 | 220 |
19 | ТРE 974 | 500 | 220 | 5 | 500 |
20 | ТРE108 | 650 | 220 | 10 | 100 |
|
|
Раздел 1.
Постановка задачи
1. Создание справочника в памяти (Ввод данных) с использованием функций С.
2. Вывод справочника на экран (с использованием функций С++).
3. Удаление записи в справочник.
4. Сортировка методом Шелла по полю строкового типа (по алфавиту).
5. Сортировка методом быстрой сортировки по числовому полю (на усмотрение разработчика).
6. Сортировка методом Шелла по числовому полю (на усмотрение разработчика).
|
|
7. Поиск записи в справочнике по части названия марки радиодетали.
8. Сохранение справочника в файле с использованием функций языка С++.
9. Открытие справочника из файла с использованием функций языка С++.
10. Выход из программы.
Каждая запись должна состоять из 5 полей: марка (строковой тип); остальные 4 поля выбираются самостоятельно из справочников и должны представлять реальные параметры радиодеталей. При работе с программой также должны вводиться реальные марки и соответствующие им параметры деталей. Таблица с параметрами должна быть приведена в приложении.
При разработке программы создать собственный заголовочный файл, включающий директивы препроцессора, определение структуры данных, прототипы используемых функций. Каждый пункт меню, кроме выхода из программы, должен быть реализован в виде пользовательской функции, определяемой в отдельном файле. В программе использовать двоичный ввод/вывод в файлы. При запуске программы из командной строки в качестве аргумента командной строки должно передаваться имя файла-базы данных. При отсутствии аргумента при запуске программы имя файла-базы данных должно вводиться пользователем программы.
|
|
Предусмотреть защиту программы от ввода пользователем некорректных данных.
Курсовая работа выполняется с помощью компилятора gcc.
Структура данных с указанием типов
struct rele s[20] – структура, содержащая информацию о 20 реле;
float U – рабочее напряжение на реле, вещественный тип данных;
char marka[15] – наименование реле, символьный массив, максимальное количество символов в котором равно 15;
int R,I,massa – номинальное сопротивление, рабочая сила тока, масса, целочисленный тип данных;
int i – глобальная переменная целочисленного типа, используется как количество вводимых реле.
Структурная схема программы
Прототипы функций:
void vvod()– функция, использующаяся для ввода данных о реле в справочник, хранится в модуле vvod.с;
void vivod()- функция, использующаяся для вывода на экран информации о всех введенных в справочник реле, хранится в модуле vivod.c;
void shell()-функция, предназначенная для сортировки реле по их маркам по полю строкового типа методом Шелла, хранится в модуле shell.c;
void q_sort(int l, int r)- функция, предназначенная для сортировки реле по числовому полю (I) методом быстрой сортировки, хранится в модуле q_sort.c;
void shell_str()-функция, предназначенная для сортировки реле по числовому полю (U) методом Шелла, хранится в модуле shell_str.c;
|
|
void save(char *)- функция, предназначенная для сохранения справочника в файле, хранится в модуле save.c;
void open(char *)- функция, предназначенная для открытия справочника из файла, хранится в модуле open.c;
void del()-функция, предназначенная для удаления записи из справочника, хранится в модуле del.c.
void search()-функция, предназначенная для поиска записи в справочнике по части названия марки реле, хранится в модуле search.c;
Описание работы программы
Программа начинается с цикла, который завершится только если переменная “х” получит не нулевое значение, что и происходит при выборе от а до q пункта меню и выполнится оператор continue;
Далее при помощи конструкции
switch(x)
{
case a:…
case b:…
}
В программе реализованы следующие функции:
a- Создание справочника в памяти(ввод данных) с использованием функция языка С.
b- Вывод справочника на экран с использованием потоковых классов языка С++
c -Удаление записи из справочника
d- Сортировка методом Шелла по полю строкового типа
e- Быстрая сортировка по числовому полю (I)
f -Сортировка методом Шелла по числовому полю (U)
g- Поиска записи в справочнике по части названия марки
s- Сохранение справочника в файле с использованием потоковых классов С++
o- Открытие справочника из файла с использованием потоковых классов С++
q- Выход из программы
Описание специальных алгоритмов
Сортировка Шелла:
Конкретная последовательность шагов может быть и другой. Единственное правило состоит в том, чтобы последний шаг был равен 1. Например, такая последовательность:
9, 5, 3, 2, 1
дает хорошие результаты и применяется в показанной здесь реализации сортировки Шелла.
void shell(char *items, int count) {
register int i, j, gap, k;
char x, a[5];
a[0]=9; a[1]=5; a[2]=3; a[3]=2; a[4]=1;
for(k=0; k < 5; k++) {
gap = a[k];
for(i=gap; i < count; ++i) {
x = items[i];
for(j=i-gap; (x < items[j]) && (j >= 0); j=j-gap)
items[j+gap] = items[j];
items[j+gap] = x;
}
}
}
Вы могли заметить, что внутренний цикл for имеет два условия проверки. Очевидно, что сравнение x<items[j] необходимо для процесса сортировки. Выражение j>=0 предотвращает выход за границу массива items. Эти дополнительные проверки в некоторой степени понижают производительность сортировки Шелла.
В слегка модифицированных версиях данного метода сортировки применяются специальные элементы массива, называемые сигнальными метками. Они не принадлежат к собственно сортируемому массиву, а содержат специальные значения, соответствующие наименьшему возможному и наибольшему возможному элементам. Это устраняет необходимость проверки выхода за границы массива. Однако применение сигнальных меток элементов требует конкретной информации о сортируемых данных, что уменьшает универсальность функции сортировки.
Анализ сортировки Шелла связан с очень сложными математическими задачами, которые выходят далеко за рамки этой книги. Примите на веру, что время сортировки пропорционально
при сортировке n элементов. Тем не менее, не стоит чрезмерно восхищаться сортировкой Шелла — быстрая сортировка еще лучше.
Быстрая сортировка:
Быстрая сортировка построена на идее деления. Общая процедура заключается в том, чтобы выбрать некоторое значение, называемое компарандом (comparand)[10], а затем разбить массив на две части. Все элементы, большие или равные компаранду, перемещаются на одну сторону, а меньшие — на другую. Потом этот процесс повторяется для каждой части до тех пор, пока массив не будет отсортирован. Например, если исходный массив состоит из символов fedacb, а в качестве компаранда используется символ d, первый проход быстрой сортировки переупорядочит массив следующим образом:
Начало f e d a c b
Проход 1 b c a d e f
Затем сортировка повторяется для обеих половин массива, то есть bса и def. Как вы видите, этот процесс по своей сути рекурсивный, и, действительно, в чистом виде быстрая сортировка реализуется как рекурсивная функция.
Значение компаранда можно выбирать двумя способами — случайным образом либо усреднив небольшое количество значений из массива. Для оптимальной сортировки необходимо выбирать значение, которое расположено точно в середине диапазона всех значений. Однако для большинства наборов данных это сделать непросто. В худшем случае выбранное значение оказывается одним из крайних. Тем не менее, даже в этом случае быстрая сортировка работает правильно. В приведенной ниже версии быстрой сортировки в качестве компаранда выбирается средний элемент массива.
/* Функция, вызывающая функцию быстрой сортировки. */
void quick(char *items, int count){
qs(items, 0, count-1);
}
/* Быстрая сортировка. */
void qs(char *items, int left, int right){
register int i, j;
char x, y;
i = left; j = right;
x = items[(left+right)/2]; /* выбор компаранда */
do {
while((items[i] < x) && (i < right)) i++;
while((x < items[j]) && (j > left)) j--;
if(i <= j) {
y = items[i];
items[i] = items[j];
items[j] = y;
i++; j--;
}
} while(i <= j);
if(left < j) qs(items, left, j);
if(i < right) qs(items, i, right);
}
В этой версии функция quick() готовит вызов главной сортирующей функции qs(). Это обеспечивает общий интерфейс с параметрами items и count, но несущественно, так как можно вызывать непосредственно функцию qs() с тремя аргументами.
Необходимо упомянуть об одном особенно проблематичном аспекте быстрой сортировки. Если значение компаранда в каждом делении равно наибольшему значению, быстрая сортировка становится "медленной сортировкой" со временем выполнения порядка n2. Поэтому внимательно выбирайте метод определения компаранда. Этот метод часто определяется природой сортируемых данных. Например, в очень больших списках почтовой рассылки, в которых сортировка происходит по почтовому индексу, выбор прост, потому что почтовые индексы довольно равномерно распределены — компаранд можно определить с помощью простой алгебраической функции. Однако в других базах данных зачастую лучшим выбором является случайное значение. Популярный и довольно эффективный метод — выбрать три элемента из сортируемой части массива и взять в качестве компаранда значение, расположенное между двумя другими.
Листинг программы
Makefile
- служит для компиляции всех функций, используемых в программе в один исполняемый файл rele.exe
rele: vvod.o menu.o vivod.o shell_str.o save.o open.o q_sort.o shell.o del.o search.o
g++ -o rele vvod.o menu.o vivod.o shell_str.o save.o open.o q_sort.o shell.o del.o search.o
menu.o: menu.c rele.h
g++ -c menu.c
vvod.o: vvod.c rele.h
g++ -c vvod.c
vivod.o: vivod.cpp rele.h
g++ -c vivod.cpp
save.o: save.cpp rele.h
g++ -c save.cpp
open.o: open.cpp rele.h
g++ -c open.cpp
shell.o: shell.c rele.h
g++ -c shell.c
shell_str.o: shell_str.c rele.h
g++ -c shell_str.c
q_sort.o: q_sort.c rele.h
g++ -c q_sort.c
del.o: del.c rele.h
g++ -c del.c
search.o: search.c rele.h
g++ -c search.c
clean:
rm -rf *.o rele
Rele.h
- заголовочный файл, в который включены библиотеки ввода-вывода, библиотеки, для работы со строковыми типами данных, а также объявлены функции, глобальные переменные, структура данных, и массив структуры, используемые в программе.
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
/*прототип функций*/
void vvod();
void vivod();
void shell();
void q_sort(int l, int r);
void shell_str();
void save(char *);
void open(char *);
void del();
void search();
/* объявление структуры*/
struct rele{
float U;
char marka[15];
int R,I,massa;
};
Menu.c
- menu.c содержит функцию main(int argc,char *argv[]), в которой реализуется буквенное меню справочника реле, и вызов всех, необходимых функций, по запросу пользователя.
#include "rele.h"
int i=0;
struct rele s[20];
/* argc-количество аргументов командной строки при запуске программы*/
/*argv[]-массив указателей на строки*/
int main(int argc, char *argv[]){
system("clear");
char x;
char c[100];
if(argc==1){
printf( "\nИмя файла не было указано при запуске!\n\n"
"Укажите его сейчас: ");
scanf("%90s",c);
while(getchar()!= '\n');
}else{
strcpy(c,argv[1]);
}
while(1){
printf("Справочник РЕЛЕ \n\n");
printf(" A.Ввод данных с использованием функций С\n");
printf(" B.Вывод данных c использованием функций С++\n");
printf(" C.Удаление записи из справочника\n");
printf(" D.Сортировка методом Шелла по полю строкового типа\n");
printf(" E.Быстрая сортировка по числовому полю (I)\n");
printf(" F.Сортировка методом Шелла по числовому полю (U) \n");
printf(" G.Поиск записи в справочнике по части названия марки\n");
printf(" S.Сохранение справочника в файле с использованием потоковых классов С++\n");
printf(" O.Открытие справочника из файла с использованием потоковых классов С++\n");
printf(" Q.Выxод\n");
printf("\nВведите необходимый пункт меню: ");
x = tolower(getchar());
while ( getchar() != '\n' );
switch(x){
case 'a': vvod(); break;
case 'b': vivod(); break;
case 'c': del(); break;
case 'd': shell_str(); break;
case 'e': q_sort(0,i-1);
if(i>1) printf("\n\nСортировка прошал успешно!\n\n");
break;
case 'f': shell();
break;
case 'g': search();
break;
case 's': save(c);break;
case 'o': open(c);break;
case 'q': printf("Выход из программы\n"); return 0;
default:{
printf( "\n\nНеправильно выбран пункт меню.\n");
printf( "Попробуйте выбрать снова\n");
continue;
}
}
}
}
Vvod.c
- В файле vvod.c описана функция vvod (), выполняющая ввод данных в справочник с помощью стандартных функций ввода языка С. При вводе данных в справочник проверяется корректность вводимой информации.
#include"rele.h"
/*указывает компилятору на необходимость поиска определяющих объявлений в другом файле*/
extern int i;
extern struct rele s[20];
void vvod(){
char c;
int n;
system("clear");
while(1){
if(i==20){
system("clear");
printf("\n\nСправочник заполнен!\n\n");
return;
}
printf("Введите марку %d реле: ",i+1);
fgets(s[i].marka,20,stdin);
for (n = 0; s[i].marka[n] != '\n'; n++);
s[i].marka[n] = '\0';
if(strlen(s[i].marka) == 0){
printf("\nВведите данные\n");
continue;
}
while(1){
printf("Введите номинальное сопротивление (R,Ом) %d реле: ",i+1);
if(!(scanf("%d",&s[i].R)) || s[i].R <= 0){
while(getchar()!='\n');
system("clear");
printf("Введены некорректные данные!\n");
}
else{
while(getchar()!='\n');
break;
}
}
while(1){
printf("Введите рабочее напряжение (U,в) %d реле: ",i+1);
if(!(scanf("%f",&s[i].U)) || s[i].U <= 0){
while(getchar()!='\n');
system("clear");
printf("Введены некорректные данные!\n");
}
else{
while(getchar()!='\n');
break;
}
}
while(1){
printf("Введите рабочую силу тока(I,mA) %d реле: ",i+1);
if(!(scanf("%d",&s[i].I)) || s[i].I <= 0){
while(getchar()!='\n');
system("clear");
printf("Введены некорректные данные!\n");
}
else{
while(getchar()!='\n');
break;
}
}
while(1){
printf("Введите массу (г) %d реле: ",i+1);
if(!(scanf("%d",&s[i].massa)) || s[i].massa <= 0){
while(getchar()!='\n');
system("clear");
printf("Введены некорректные данные!\n");
}
else{
while(getchar()!='\n');
break;
}
}
i++;
printf("\n\nХотите ввести ещё данные?(Y/N): ");
c=getchar();
if(c=='\n'){
system("clear");
break;
}
while(getchar()!='\n');
if(c=='N' || c=='n'){
system("clear");
break;
}else
if(c=='Y' || c=='y'){
system("clear");
continue;
}else{
system("clear");
printf("Введён неизветсный оператор! Переход в главное меню\n");
break;
}
}
return;
}
Vivod.cpp
- в файле vivod.cpp находится описание функции вывода созданного справочника на экран с помощью потоков языка С++.
#include "rele.h"
void vivod(){
extern struct rele s[20];
extern int i;
system("clear");
if(i==0){
cout << "\n\nОшибка!!!!\n\nСправочник пуст\n\n";
return;
}
cout << "Справочник РЕЛЕ\n";
cout.setf(ios::right);
cout << "===============================================================\n";
cout << "| N|Марка РЕЛЕ |R номинальное|U рабочее |I рабочее| масса |\n";
cout << "===============================================================\n";
for (int a=0;a<i;a++){
cout << "|";
cout.width(2);
cout << a + 1 << "|";
cout.width(15);
cout << s[a].marka << "|";
cout.width(13);
cout << s[a].R<< "|";
cout.width(10);
cout << s[a].U << "|";
cout.width(9);
cout << s[a].I << "|";
cout.width(7);
cout << s[a].massa << "|\n";
}
cout<<"===============================================================\n";
}
Save.cpp
- в файле save.cpp описана функция сохранения справочника в дисковом файле с помощью функций языка С++.
#include "rele.h"
void save(char * file){
system("clear");
extern struct rele s[20];
extern int i;
if(i == 0){
cout << "\nСправочник пуст\n";
return;
}
ofstream os(file, ios::binary);
os.write((char *)s, i*sizeof(rele));
if(!os)
cout << "\nНевозможно сохранить файл\n";
os.close();
cout << "\nЗапись выполнена\n";
return;
}
Open.cpp
-в файле open.cpp описана функция, предназначенная для открытия справочника из файла с помощью функций языка С++.
#include "rele.h"
void open(char * file){
system("clear");
extern int i;
extern struct rele s[20];
ifstream is(file, ios::in | ios::binary);
if(!is){
cout << "\nНевозможно открыть файл\n";
return;
}
i = 0;
while(1){
is.read((char*)(&s[i]), sizeof(rele));
if(!is)
break;
i++;
}
cout << "\nСправочник загружен" << "\n";
return;
}
Shell.c
- в файле shell.c описана функция, предназначенная для сортировки реле по их маркам по полю строкового типа методом Шелла с помощью потоков языка С.
#include "rele.h"
void shell(){
system("clear");
extern struct rele s[20];
struct rele temp;
extern int i;
if(i<2){
printf("Справочник пуст либо присутствует только 1 запись\n");
return;
}
int a=0,j;
int step = i / 2;
while (step > 0){
for (a=0;a<(i-step);a++){
j=a;
while ((j >= 0) && (s[j].U > s[j + step].U)){
temp = s[j];
s[j] = s[j + step];
s[j + step] = temp;
j--;
}
}
step = step / 2;
}
printf("\n\nСортировка прошла успешно\n\n");
return;
}
Shell_str.c
- в файле shell_str.c описана функция, предназначенная для сортировки реле по числовому полю (U) методом Шелла.
#include "rele.h"
void shell_str(){
system("clear");
extern struct rele s[20];
struct rele temp;
extern int i;
if(i<2){
printf("Справочник пуст либо присутствует только 1 запись\n");
return;
}
int f=0,j;
int step = i / 2;
while (step > 0){
for (f = 0; f < (i - step); f++){
j = f;
while ((j >= 0) && (strcmp(s[j].marka , s[j + step].marka))>0){
temp = s[j];
s[j] = s[j + step];
s[j + step] = temp;
j--;
}
}
step = step / 2;
}
printf("\n\nСортировка прошла успешно\n\n");
}
Q_sort.c
- в файле q_sort.c описывается функция, предназначенная для сортировки реле по числовому полю (I) методом быстрой сортировки.
#include "rele.h"
void q_sort (int l, int r) {
system ("clear");
if(r<1){
printf("\nСправочник пуст либо присутствует только 1 запись\n\n");
return;
}
extern struct rele s[20];
struct rele swap;
if (l>=r)
return;
int i = l, j = r;
int x = s[(r+l)/2].I;
do{
while (s[i].I < x) i++;
while (s[j].I > x) j--;
if (i<=j){
swap = s[i];
s[i] = s[j];
s[j] = swap;
i++;
j--;
}
} while(!(i>j));
q_sort(l, j);
q_sort(i, r);
return;
Del.c
- в файле del.c описывается функция, предназначенная для удаления записи из справочника.
#include "rele.h"
extern int i;
extern struct rele s[20];
void del(){
int a,j;
char c;
system("clear");
while(1){
if(i==0){
printf("\n\nСправочник пуст\n\n");
return;
}
printf("\nВведите номер удаляемой записи (всего %d записей): ",i);
if(scanf("%d",&a)!=1){
system("clear");
printf("Неккоректный ввод.повторите\n");
while(getchar()!='\n');
continue;
}else
if(a < 1 || a > i){
printf("\n\nЗапись N%d отсутствует\n\n",i);
continue;
}
while(getchar()!='\n');
i--;
for(j=a-1;j<i;j++){
s[j]=s[j+1];
}
system("clear");
printf("\nЗапись успешно удалена\n");
printf("\nХотите ещё удалить данные?(Y/N): ");
c=getchar();
if(c=='\n'){
printf("\nПереход в главное меню\n\n");
return;
}
while(getchar()!='\n');
if(c=='N' || c=='n'){
system("clear");
break;
}else
if(c=='Y' || c=='y'){
system("clear");
continue;
}else{
printf("Введён неизвесный оператор\nПереход в главное меню\n");
while(getchar()!='\n');
system("clear");
break;
}
}
return;
}
Search.c
- в файле search.c описывается функция, предназначенная для поиска записи в справочнике по части названия марки реле.
#include"rele.h"
extern struct rele s[20];
extern int i;
void search(){
system("clear");
if(i==0){
printf("\n\nСправочник пуст\n");
return;
}
int a,r[i],j=0;
char g[16];
printf("Введите часть марки детали: ");
fgets(g,15,stdin);
for(a = 0 ; g[a] != '\n'; a++);
g[a] = '\0';
for(a=0;a<i;a++)
if(strstr(s[a].marka,g)!=NULL){
r[j]=a;
j++;
}
if(j==0){
printf("Нет данных содержащих \"%s\"\n",g);
return;
}
printf("Записи содержащие подстроку \"%s\"\n",g);
printf("===============================================================\n");
printf("| N|Марка РЕЛЕ |R номинальное|U рабочее |I рабочее| масса |\n");
printf("===============================================================\n");
for(a=0;a<j;a++)
printf("|%2d|%15s|%13d|%10.1f|%9d|%7d|\n",a+1,s[r[a]].marka,s[r[a]].R,s[r[a]].U,s[r[a]].I,s[r[a]].massa);
printf("================================================================\n");
return;
}
Результаты сортировки
Исходный справочник:
Сортировка методом Шелла по полю строкового типа:
Сортировка методом быстрой сортировки по числовому полю (I):
Сортировка методом Шелла по числовому полю (U):
Заключение
В ходе выполнения курсовой работы было произведено более глубокое изучение и анализ языка программирования С, после проработки ряда учебных и методических изданий, а также практических задач. Была проделана работа по разработке метода сортировки по алфавитному порядку и по числовому полю, был разработан текстовый интерфейс пользователя. Приобрели навыки составления законченной программы с пользовательским интерфейсом и коррекцией ошибок.
При разработке курсового проекта были закреплены навыки программирования консольных приложений на языка С/С++, а именно:
- файловый ввод-вывод на языке С;
- ввод-вывод на консоль на языке С++:
- работа с массивами и структурами данных;
- изучены различные алгоритмы сортировок.
Си — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. В языке C++ соединены воедино три различных принципа программирования: процедурное программирование (представленное языком С), объектно-ориентированное программирование (представленное таким понятием, как класс, что повышает мощность языка C++ по сравнению с языком С) и обобщенное программирование (представленное шаблонами языка C++). Одна из причин применения языка C++ — это возможность использовать преимущества объектно-ориентированного программирования. Для этого необходимо прочное знание стандартного языка С, так как основные типы данных, операции, управляющие структуры и синтаксические правила были позаимствованы из этого языка.
Список литературы
1. Х.М.Дейтел, П.Дж.Дейтел./ Как программировать на С/С++. Издательство «Бином» 2005г.
2. Стивен Прата./ Язык программирования С- М. Издательство "Диасофт", 2002. - 896 с
3. Брайан Керниган, Деннис Ритчи. Язык программирования C — Москва: Вильямс, 2006.
4. Глушаков, Коваль, Смирнов «Язык программирования C++. Стандарт NSI/ISO» Издательства « АСТ, Фолио» 2001 г.
5. Шилдт Г. Справочник программиста по С/С++, 3-е изд.: Пер. с англ. — М.: Издательский дом «Вильямс», 2003.— 432с.
Дата добавления: 2018-04-05; просмотров: 301; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!