Конспект лекций. Технология программирования

Технология программирования

Полетаев Д.И.

Список литературы

Пример на анализ каталога через очереди

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

Половинное деление

int Find(int *array, int size, int x)

{

int a = 0,b = size-1,t;

do

{

t = (b+a)/2;

if (m[t] == x)return t;

if (m[t]>x) b = t;

else a = t;

}while (b-a>1);

if (m[a] == x) return a;

if (m[b] == x) return b;

return -1;

}

Сортировка пузырьком

int t;

char flag;

do

{

flag = 0;

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

if (m[i]>m[i+1]) {t=m[i];m[i]=m[i+1];m[i+1]=t;flag=1;}

}while(flag)

Обход дерева

struct Node

{

Node *parent,*left,*right;

};

void Action(Node *node)

{

if (node == NULL) return;

//action;

Action(node->left);

Action(node->right);

}

void Action2(Node *node)

{

queue<Node*> q;

q.push(node);

do

{

node = q.front();

q.pop();

//action

if (node->left!=NULL) q.push(node->left);

if (node->right!=NULL) q.push(node->right);

}

while(!q.empty) // action

}

size_t first = 0; /* Номер первого элемента в массиве */

size_t last = n; /* Номер элемента в массиве, СЛЕДУЮЩЕГО ЗА последним */

/* Если просматриваемый участок непустой, first<last */

size_t mid;

if (n == 0)

{

/* массив пуст */

}

else if (a[0] > x)

{

/* не найдено; если вам надо вставить его со сдвигом - то в позицию 0 */

}

else if (a[n - 1] < x)

{

/* не найдено; если вам надо вставить его со сдвигом - то в позицию n */

}

while (first < last)

{

/* ВНИМАНИЕ! В отличие от более простого (first+last)/2, этот код стоек к переполнениям.

Если first и last знаковые, возможен код (unsigned)(first+last) >> 1. */

mid = first + (last - first) / 2;

if (x <= a[mid])

{

last = mid;

}

else

{

first = mid + 1;

}

}

/* Если условный оператор if(n==0) и т.д. в начале опущен - значит, тут раскомментировать! */

if (/* last<n &&*/ a[last] == x)

{

/* Искомый элемент найден. last - искомый индекс */

} else

{

/* Искомый элемент не найден. Но если вам вдруг надо его вставить со сдвигом, то его место - last. */

}

void PathAction(char* path)

{

FolderInfo files = GetFilesInFolder(path);

for(int i=0;i<files.count();i++)

if (files[i].isDirectory)

PathAction(files[i].fullname);

else Action(files[i].fullname);

}

void PathAction(char* path)

{

Queue queue;

queue.Push(path);

while(!queue.isEmpty())

{

FolderInfo files = GetFilesInFolder(queue.Pop());

for(int i=0;i<files.count();i++)

if (files[i].isDirectory) queue.Push(files[i].fullname);

else Action(files[i].fullname);

}

}

1. Иванова Г.С. Технология программирования: Учебник для вузов. – М.: МГТУ им. Н.Э.Баумана, 2002.

2. Подбельский В.В. Язык С++: Учебн. пособие. – М.: Финансы и статистика, 1995.

3. Г. Майерс. Надёжность программного обеспечения. 1976 // Перев. на русский язык под ред. И.А.Махован и др. – М.: Мир, 1980.

4. В. В. Шураков. Надежность программного обеспечения систем обработки данных: учеб. для вузов. Изд. 2-е, пеpеpаб. и доп. — М.: Финансы и статистика, 1987.— 272 с

5. Электронная энциклопедия ru.wikipedia.org


[1] https://ru.wikipedia.org/wiki/C

[2] Квадратные скобки не являются частью записи формата, а указывают на необязательность аргумента


Часть 1. Языки программирования «С», «С++».

Краткая характеристика [1]

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.

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

Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, после компиляции каждой элементарной составляющей программы соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже откомпилированному тексту. Поэтому использованию функции должно предшествовать её объявление. Код на Си можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам.

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: