Файл: Обзор языков программирования высокого уровня (Современные языки программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 65

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Список использованной литературы

  1. Васильев А.Н. Java. Объектно-ориентированное программирование: Учебное пособие. - СПб.: Питер, 2013. – 400 с.
  2. Вирт Н. Алгоритмы и структуры данных. – М.: ДМК Пресс, 2010. - 272 с.
  3. Гриффитс И. Программирование на C# 5.0 – М.: Эксмо, 2014. - 1136 с.
  4. Гэлловей М. Сила Objective-C 2.0. Эффективное программирование для iOS и OS X. - СПб.: Питер, 2014. – 304 с.
  5. Кнут Д. Искусство программирования. – М.: Вильямс, 2013. - Т. 1 : 720 с.
  6. Конова Е.А., Поллак Г.А., Ткачев А.М. Структуры данных. Программирование на языке С и С++. Учебное пособие. - Челябинск: ЮУрГУ, 2004. – 106 с.
  7. Кормен Т.Х. Алгоритмы: вводный курс. – М.: Вильямс, 2014. – 208 с.
  8. Лутц М. Изучаем Python, 4-е издание. - СПб.: Символ-Плюс, 2011. – 1280 с.
  9. Молчанов А.В. Системное программное обеспечение. - СПб.: Питер, 2010. – 400 с.
  10. Монган Дж., Киндлер Н., Гижере Э. Работа мечты для программиста. Тестовые задачи и вопросы при собеседовании в ведущих IT-компаниях. - СПб.: Питер, 2014. – 368 с.
  11. Орам Э., Уилсон Г., Идеальная разработка ПО. Рецепты лучших программистов. - СПб.: Питер, 2012. – 592 с.
  12. Павловская Т. А., Щупак Ю. А. C/C++. Структурное и объектно-ориентированное программирование: Практикум. - СПб.: Питер, 2011. - 352 с.
  13. Прата С. Язык программирования С. Лекции и упражнения, 5-е издание. – М.: Вильямс, 2013. – 960 с.
  14. Седжвик Р., Уэйн К. Алгоритмы на Java, 4-е издание. – М.: Вильямс, 2013. – 848 с.
  15. Херман Д. Сила JavaScript. 68 способов эффективного использования JS. - СПб.: Питер, 2013. – 288 с.
  16. Хэзфилд Р., Кирби Л. Искусство программирования на C. Фундаментальные алгоритмы, структуры данных и примеры приложений. - Киев: ДиаСофт, 2001. – 736 с.
  17. Gabbrielli M. Martini S. Programming Languages: Principles and Paradigms. - London: Springer-Verlag, 2010. – 440 с.
  18. Mernik M. Formal and Practical Aspects of Domain-Specific Languages: Recent Developments. - Hershey: Information Science Reference, 2012. – 677 с.
  19. Parker K.R., Ottaway T.A. Criteria for the selection of a programming language for introductory courses. - Pocatello: International Journal of Knowledge and Learning, 2006.
  20. Spraul A. Think like a programmer. - San Francisco: No Starch Press, 2012. – 256 с.
  21. Stroustrup B. The C++ programming language, Fourth edition. - Ann Arbor: Addison-Wesley, 2013. – 1366 с.
  22. Поляков К.Ю. «Программирование на языке Си» 2009. [Электронный ресурс]

URL: http://kpolyakov.narod.ru/download/devcpp_4.pdf (дата обращения: 9.05.2017)

  1. List of programming languages // Wikipedia. [Электронный ресурс].

URL: http://en.wikipedia.org/wiki/List_of_programming_languages (дата обращения: 9.05.2017)

  1. TIOBE Index for February 2015 // TIOBE. [Электронный ресурс].

URL: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (дата обращения: 9.05.2017)


Приложение

#include <iostream>

#include <cstdlib>

using std::cout;

using std::cin;

using std::endl;

class LinkedList {

private:

struct Node {

int val;

Node *next;

};

// начало списка

Node *head;

// количество элементов в списке

int node_counter;

/* внутренние методы, в них не производится проверка на выход за границы

количества элементов, этим занимаются публичные методы

*/

// создание и вставка элемента

int insertNode(int index, int val) {

Node *node, *new_node;

// проверка на успешное выделение памяти

try {

new_node = new Node();

} catch(std::bad_alloc&) {

cout << "memory allocation failed" << endl;

return -1;

}

// выставление значения нового элемента

new_node->val = val;

new_node->next = NULL;

if (!index) {

// вставка в начало списка

new_node->next = head;

head = new_node;

} else {

// вставка в середину или конец списка

// поиск нужного элемента

node = head;

for (int i=0; i<index-1; i++)

node = node->next;

new_node->next = node->next;

node->next = new_node;

}

// увеличиваем счетчик количества элементов в списке

++node_counter;

return 0;

}

int getNodeValue(int index) {

Node *node = head;

// поиск нужного элемента

for (int i=0; i<index; i++)

node = node->next;

return node->val;

}

void updateNodeValue(int index, int val) {

Node *node = head;

// поиск нужного элемента

for (int i=0; i<index; i++)

node = node->next;

// обновление значения

node->val = val;

}

// возвращает индекс первого элемента, чье значение совпадает с заданным

// возращает -1, если элемент не найден

int findValue(int value) {

Node *node = head;

// если элемент найден, возвращаем его индекс

for (int i=0; node; node=node->next, i++)

if (node->val == value)

return i;

// элемент не найден

return -1;

}

void deleteNode(int index) {

Node *node, *del_node;

if (!index) {

// удаление из начала списка

node = head;

head = head->next;

delete node;

} else {

// удаление из середины или конца списка

// поиск нужного элемента

node = head;

for (int i=0; i<index-1; i++)

node = node->next;

del_node = node->next;

node->next = del_node->next;

delete del_node;

}

// уменьшение счетчика количества элементов

--node_counter;

}

// удаление всех элементов в списке

void deleteAllNodes() {

Node *node = head;

while (node) {

head = head->next;

delete node;

node = head;

}

}

public:

// конструктор

LinkedList() {

head = NULL;

node_counter = 0;

}

// деструктор, удаляем элементы в списке

~LinkedList() {

deleteAllNodes();

}

// Публичные методы работы со списком. Нумерация начинается с 1

// добавление в начало списка

void prepend(int value) {

insertNode(0, value);

}

// добавление в конец списка

void append(int value) {

insertNode(node_counter, value);

}

// добавление в указанную позицию


void insert(int pos, int value) {

if (pos < 1 || pos > node_counter+1)

cout << "неверная позиция" << endl;

else

insertNode(pos-1, value);

}

// удаление элемента на указанной позиции

void remove(int pos) {

if (pos < 1 || pos > node_counter)

cout << "неверная позиция" << endl;

else

deleteNode(pos-1);

}

// удаление элемента из конца списка и вывод его значения

void pop() {

if (!node_counter) {

cout << "список пуст" << endl;

} else {

cout << getNodeValue(node_counter-1) << endl;

deleteNode(node_counter-1);

}

}

// вывод значения элемента на указанной позиции

void get(int pos) {

if (pos < 1 || pos > node_counter)

cout << "неверная позиция" << endl;

else

cout << getNodeValue(pos-1) << endl;

}

// обновление значения элемента на указанной позиции

void update(int pos, int value) {

if (pos < 1 || pos > node_counter)

cout << "неверная позиция" << endl;

else

updateNodeValue(pos-1, value);

}

// вывод количества элементов в списке

void length() {

cout << node_counter << endl;

}

// выводит позицию первого найденного элемента по его значению

void find(int val) {

int index;

if ((index = findValue(val)) == -1)

cout << "нет элемента с таким значением " << val << endl;

else

cout << index+1 << endl;

}

// вывод всего списка

void print() {

Node* node;

if (!head) {

cout << "список пуст" << endl;

} else {

// проход по списку без использования знаний о количестве

// элементов (node_counter)

cout << "Список (" << node_counter << " элемент(а,ов)): ";

for (node=head; node; node=node->next)

cout << node->val << " ";

cout << endl;

}

}

};

int main() {

int res, pos, val;

LinkedList *list = NULL;

const char *menu =

"Операции:\n"

"1. Create list (создать список)\n"

"2. Append (добавить элемент в конец)\n"

"3. Prepend (добавить элемент в начало)\n"

"4. Insert (вставить элемент на указанную позицию)\n"

"5. Update (обновить элемент на указанной позиции)\n"

"6. Find (найти элемент по указанному значению)\n"

"7. Get (вывести элемент на указанной позиции)\n"

"8. Print (вывести все элементы)\n"

"9. Remove (удалить элемент на указанной позиции)\n"

"10. Pop (удалить последний элемент и вывести его значение)\n"

"11. Delete list (удалить список)\n"

"12. Exit (выход из программы)\n"

"Выберите номер операции: ";

for (;;) {

cout << menu;

cin >> res;

if (!cin || res < 1 || res > 12) {

cout << "неверное значение" << endl << endl;

cin.clear();

cin.ignore();

continue;

}

switch(res) {

case 12:

std::exit(0);

case 1:

// проверка наличия списка

if (list) {

cout << "список уже существует" << endl;

} else {

try {

list = new LinkedList();

} catch(std::bad_alloc&) {

cout << "memory allocation failed" << endl;

std::exit(-1);

}

}

break;

default:

// проверка наличия списка