- •Тема 1. Основные этапы решения задач на эвм 5
- •Тема 2. Жизненный цикл программы. Критерии качества программы. 15
- •Тема 3. Схемы алгоритмов, данных, программ 29
- •Тема 1. Основные этапы решения задач на эвм Постановка задачи разработки программного обеспечения
- •Анализ формальной постановки задачи
- •Выбор или разработка математической модели и метода решения
- •Разработка алгоритма
- •Базовые структуры алгоритма
- •3.2. Цикл с постусловием.
- •Тема 2. Жизненный цикл программы. Критерии качества программы.
- •Техническое задание и спецификация программы
- •Разработка проекта программной системы
- •Программирование (кодирование) или программная реализация алгоритмов
- •Тестирование и отладка
- •Эксплуатация и сопровождение
- •Критерии качества программного обеспечения
- •Тема 3. Схемы алгоритмов, данных, программ
- •Символы данных
- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.Д.).
- •Символы процесса
- •Символы линий
- •Специальные символы
- •Правила применения символов в схемах
- •Правила выполнения соединений
- •Специальные условные обозначения
- •Тема 4. Язык программирования высокого уровня Си Общие сведения о языке Си
- •Алфавит языка Си
- •Грамматика для описания языка, синтаксические диаграммы
- •Структура программы на языке Си
- •Void main() //функция main
- •Имена объектов в программе
- •Выражения, операции и приоритеты
- •Тема 5. Стандартные типы данных
- •Тема 6. Составные типы данных Данные регулярного типа (массивы)
- •Int b [n]; // вектор из 10 целых элементов
- •9 Strcpy(s1,&s2[k]); //копирует правую подстроку из s2 в s1
- •9 Strncpy(s1,&s[2],n); //копирует среднюю подстроку из s2 в s1
- •Void main() /*пример функции*/
- •If(strcmp(s, "пароль"))
- •If(!strсmp("quit", s)) break;
- •Данные комбинированного типа (структуры)
- •Int month;
- •Int year;
- •Перечисления
- •Объединения
- •Указатели
- •Void *addres;
- •Int arrey[25];
- •Тема 7. Представление основных управляющих структур программирования Оператор присваивания
- •Составной оператор
- •Оператор перехода Goto
- •Условный оператор If
- •Оператор выбора switch
- •Операторы цикла while, do – while, for
- •Int I,j,imax,jmax,imin,jmin;
- •Операторы прерывания циклов
- •If (!flag) printf("Отрицательных чисел нет"); Форматированный ввод данных
- •Форматированный вывод данных
- •Преобразование типов
- •Инициализация данных
- •Тема 8. Функции
- •Определение функций в языке Си
- •Int rus (unsigned char r)
- •Void change (int X, int y)
- •Void change (int *X, int *y)
- •Вызов функций в языке Си
- •Int *fun (intx,int *y);
- •Int main()
- •Рекурсивные функции
- •Int nodWhile (int m, int n)
- •Int nodWhile (int m, int n)
- •Int main()
- •Int fCalculated[nFib];
- •Int FibDinam (int n)
- •Int main()
- •Int Summa(int n, int a[100])
- •Int main()
- •Тема 9. Файлы
- •Int fseek(file *fp, long count, int access);
- •Int ferror(file *fp);
- •Int remove(char *file_name);
- •Void rewind(file *fp);
- •Int main()
- •Тема 10. Приемы программирования. Примеры алгоритмов Алгоритмы сортировки
- •Исходный массив
- •Void SortBubble (int count, int* pArr)
- •Исходный массив
- •Void SortSelect(int count, int* pArr)
- •Int i1,temp;
- •Int jmax;
- •Void SortInsert (int count, int* pArr)
- •Int temp, j;
- •Алгоритмы поиска
- •Int bfSearch(char *s, char *p)
- •Int bmtarr[255];
- •Int bmSearch(int startpos, char *s, char *p)
- •Int BinarySearch (int lb, int ub, int key, int* pArr)
- •Динамические структуры данных
- •Линейные списки
- •Int value; // значение элемента
- •Void PrintSearchList (list head, int val)
- •If (lfound) printf("Элемент в списке найден!");
- •Стек, очередь, дек
- •Int prior(char);
- •Void main(void)
- •Int k, point;
- •Int prior(char a)
- •Деревья
- •Int info; //информационное поле
- •Приложение 1. Стандартные библиотеки языка Си
- •Приложение 2. Примеры реализации алгоритмов
- •Int main()
- •Int arr[10]; // Массив arr из 10 целочисленных элементов
- •Int I; // Счетчик для циклов
- •Int main()
- •Int main()
- •Int main()
- •Int Temp;
- •Int CurrentYear, Diff, Day1, Day2, Month1, Month2, I, Visokos;
- •Int main()
- •InsertSort(d, max); // Сортируем массив b методом вставок
- •Int number;
- •Int main()
- •Не рекурсивный алгоритм решения задачи Ханойская башня.
- •Int main()
- •Рекурсивный алгоритм решения задачи Ханойская башня.
- •Void move(int I, int j, int d)
- •Void hanoy(int I, int j, int k, int d)
- •Int main()
- •Int Cubic(double *X,double a,double b,double c);
- •Int Cubic (double *X, double a, double b, double c)
- •Void lu_backsub (double **a, int n, int *indx, double *b)
- •Void lu_invert (double **a, int n, int *indx, double **inv, double *col)
- •Int BracketRoot (double x0, double *a, double *b, double d0, double di, double dmax, double (*fun)(double));
- •Int BracketRoot (double x0, double *a, double *b, double d0,
- •Int main()
- •Int expo, I;
- •If (expo & 1)
- •Int main()
- •Приложение 3. Лабораторные работы Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораторная работа №12
- •Список литературы
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Московский государственный университет печатиразованиюийской Федерации
Попов Д.И Демидов Д.Г.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ СИ
Конспект лекций
для студентов высших учебных заведений,
обучающихся по специальности 230102.65 «Автоматизированные системы обработки информации и управления»
Москва
2009
УДК
ББК
П
Рецензенты:
Попов Д.И. Демидов Д.Г.
Программирование на языке высокого уровня Си: конспект лекций / Д.И.Попов, Демидов Д.Г. – М.: МГУП, 2009. – 202 с.
ISBN
Конспект лекций рассчитан на студентов, владеющих минимальными знаниями и навыками в области информатики и математики. В конспекте лекций представлены основные темы из Государственного образовательного стандарта по дисциплине «Программирование на языке высокого уровня» для студентов высших учебных заведений, обучающихся по специальности 230102.65 «Автоматизированные системы обработки информации и управления». Особое внимание уделяется изучению следующих разделов: основные этапы решения задач на ЭВМ, жизненный цикл и критерии качества программы, проект и спецификация программы, схемы алгоритмов и способы записи алгоритмов, структура программы на языке высокого уровня Си, стандартные типы данных, представление основных управляющих структур программирования, функции, массивы, структуры, работа с файлами, динамические структуры данных, способы реализации линейных списков, стека, деревьев, рекурсивные определения и алгоритмы, программирование рекурсивных алгоритмов.
ISBN © Попов Д.И., 2009
© Демидов Д.Г., 2009
© Московский государственный
университет печати, 2009
Тема 1. Основные этапы решения задач на эвм 5
Постановка задачи разработки программного обеспечения 5
Анализ формальной постановки задачи 6
Выбор или разработка математической модели и метода решения 7
Разработка алгоритма 8
Базовые структуры алгоритма 11
Тема 2. Жизненный цикл программы. Критерии качества программы. 15
Техническое задание и спецификация программы 16
Разработка проекта программной системы 20
Программирование (кодирование) или программная реализация алгоритмов 20
Тестирование и отладка 23
Эксплуатация и сопровождение 25
Критерии качества программного обеспечения 25
Тема 3. Схемы алгоритмов, данных, программ 29
Символы данных 30
31
Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.д.). 31
Символ отображает хранимые данные в виде, пригодном для обработки. Носитель данных не определен. В схемах алгоритмов он предназначен для обозначения ввода-вывода данных в случае использования запоминающего устройства, управляемого процесса. 31
Символы процесса 32
Символы линий 33
Специальные символы 33
Правила применения символов в схемах 34
Правила выполнения соединений 36
Специальные условные обозначения 37
Тема 4. Язык программирования высокого уровня Си 38
Общие сведения о языке Си 38
Алфавит языка Си 39
Грамматика для описания языка, синтаксические диаграммы 40
Структура программы на языке Си 42
Имена объектов в программе 44
Выражения, операции и приоритеты 47
Тема 5. Стандартные типы данных 49
Тема 6. Составные типы данных 52
Данные регулярного типа (массивы) 52
Строки 53
Данные комбинированного типа (структуры) 58
Перечисления 61
Объединения 61
Указатели 62
Тема 7. Представление основных управляющих структур программирования 66
Оператор присваивания 66
Составной оператор 67
Оператор перехода Goto 67
Условный оператор If 67
Оператор выбора switch 69
Операторы цикла while, do – while, for 71
Операторы прерывания циклов 73
Форматированный ввод данных 74
Форматированный вывод данных 76
Преобразование типов 78
Инициализация данных 81
Тема 8. Функции 82
Определение функций в языке Си 82
Вызов функций в языке Си 87
Рекурсивные функции 89
Тема 9. Файлы 100
Тема 10. Приемы программирования. Примеры алгоритмов 106
Алгоритмы сортировки 106
Алгоритмы поиска 109
Динамические структуры данных 114
Линейные списки 115
Стек, очередь, дек 121
Деревья 126
Приложение 1. Стандартные библиотеки языка Си 130
Приложение 2. Примеры реализации алгоритмов 138
Не рекурсивный алгоритм решения задачи Ханойская башня. 160
Рекурсивный алгоритм решения задачи Ханойская башня. 162
Приложение 3. Лабораторные работы 176
Лабораторная работа №1 176
Лабораторная работа №2 176
Лабораторная работа №3 176
Лабораторная работа №4 177
Лабораторная работа №5 177
Лабораторная работа №6 177
Лабораторная работа №7 178
Лабораторная работа №8 178
Лабораторная работа №9 178
Лабораторная работа №10 179
Лабораторная работа №11 179
Лабораторная работа №12 179
Список литературы 179