Учебное_пособие_заочное (брошюра)
.pdfУчебное издание
Казьмин Александр Васильевич Губина Людмила Викторовна
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Учебное пособие
Технический редактор: Иванова Н.И.
Компьютерный набор: Губина Л.В.
Корректор: Иванова Н.И.
Подписано к печати_______________________Бумага для множительной техники Формат___________Усл. печ. листов_________Тираж_______экз. Заказ_________
Отпечатано с авторского оригинала в отделе оперативной печати Старооскольского технологического института
Старый Оскол, микрорайон Макаренко, 40
152
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ ИМ. А.А. УГАРОВА (филиал) федеральногогосударственногоавтономного образовательного учреждения высшегопрофессионального образования «Национальный исследовательский технологический университет «МИСиС»
А.В. Казьмин, Л.В. Губина
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Учебное пособие
Одобрено редакционно-издательским советом СТИ НИТУ МИСиС в качестве учебного пособия для студентов бакалавров заочной формы обучения по всем направлениям и профилям
Старый Оскол
2013
УДК 004
ББК 32.81 К 148
Рецензент:
кандидат физико-математических наук, доцент А.П.Михайлов.
Казьмин А.В., Губина Л.В.
К 148 Основы алгоритмизации и программирования: учебное пособие / Казьмин А.В., Губина Л.В. – Старый Оскол: СТИ НИТУ МИСИС, 2013. – 152с.
В учебном пособии содержатся теоретические сведения, необходимые для выполнения лабораторных работ и домашних заданий по основам алгоритмизации и программирования на языке Си и базам данных. Приведены варианты и указания для выполнения пяти лабораторных работ и двух домашних заданий. Очень полезными для студентов окажутся примеры выполнения домашних заданий.
Учебное пособие предназначено для студентов бакалавров всех направлений и профилей заочной формы обучения.
УДК 004
ББК 32.81
© Казьмин А.В., Губина Л.В., текст, 2013
2
|
ОГЛАВЛЕНИЕ |
Введение |
..............................................................................................3 |
1.ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ..5
|
1.1. |
Понятие алгоритма................................................................ |
5 |
|
1.2. |
Схемы алгоритмов................................................................. |
7 |
|
1.3. |
Системы программирования................................................. |
10 |
|
1.4. Основы программирования на языке Си............................... |
12 |
|
2. |
БАЗЫ ДАННЫХ .......................................................................... |
45 |
|
|
2.1. Информационные системы и базы данных........................... |
45 |
|
|
2.2. Типы СУБД и архитектура клиент-сервер............................ |
46 |
|
|
2.3. |
Модели данных...................................................................... |
48 |
|
2.4. |
Реляционная модель данных................................................. |
50 |
|
2.5. |
Проектирование баз данных.................................................. |
52 |
|
2.6. |
Целостность БД..................................................................... |
56 |
|
2.7. Языки запросов QBE и SQL.................................................. |
56 |
|
|
2.8. Структурированный язык запросов SQL .............................. |
57 |
|
3. |
ЛАБОРАТОРНЫЙ ПРАКТИКУМ............................................... |
65 |
|
|
3.1. Лабораторная работа 1. Функции ввода/вывода. Вычисление |
||
|
|
выражений............................................................................. |
67 |
|
3.2. Лабораторная работа 2. Сочетание циклов и разветвлений.. |
70 |
|
|
3.3. Лабораторная работа 3. Одномерные массивы..................... |
73 |
|
|
3.4. Лабораторная работа 4. Вложенные циклы и разветвления в |
||
|
|
матричных задачах................................................................ |
77 |
|
3.5. |
Лабораторная работа 5. Работа с базой данных.................... |
81 |
4.ДОМАШНИЕ ЗАДАНИЯ…...................................................... 108
|
4.1. |
Выбор варианта задания..................................................... |
108 |
|
4.2. |
ЗАДАНИЕ 1........................................................................ |
108 |
|
4.3. Пример выполнения задания 1........................................... |
111 |
|
|
4.4. |
ЗАДАНИЕ 2........................................................................ |
121 |
|
4.5. Пример выполнения задания 2........................................... |
123 |
|
5. |
ПРИЛОЖЕНИЯ......................................................................... |
141 |
|
|
5.1. |
Библиотечные функции языка Си...................................... |
141 |
|
5.2. |
Словарь англоязычных терминов....................................... |
144 |
6. |
ЛИТЕРАТУРА........................................................................... |
150 |
151
6. Литература
Основная литература.
1.Карпухина Н.В., Светозарова Г.И. Информатика. Основы алгоритмизации и программирования. Учебное пособие. -
Москва: 2005. - 17с. Сайт http://www.iqlib.ru
2.Ашарина И.В. Основы программирования на языках С и С++. М.: Горячая линия –Телеком, 2002. - 207с.
3.Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных. Учебник для ВУЗов. Под ред. проф. А.Д. Хомоненко. СПб.: Корона-принт, 2004. – 736с.
Дополнительная литература.
1.В. В. Подбельский, С. С. Фомин. Программирование на языке С. М.: Финансы и статистика, 2000.- 600с.
2.Гусева Е.Н., Ефимова И.Ю., Коробков Р.И., Коробкова К.В., Мовчан И.Н., Савельева Л.А. Информатика. Учебное пособие ISBN / ISSN: 978-5-9765-1194-1 Москва: Флинта, 2011. 260с. Сайт http://www.iqlib.ru
3.Казьмин А.В., Губина Л.В. Информатика. Учебное пособие.
– 3-е издание, перераб. и доп. Старый Оскол: ТНТ, 2009.- 188с.
4.Казьмин А. В. «Информатика» Язык программирования Си (конспект лекций). СТИ., Старый Оскол, 2000.- 60с
5.Советов Б.Я., Цехановский В.В. Информационные технологии. Учебник для студентов вузов. М.: Высшая школа, 2006. - 263с.
6.Максимов Н.В., Попов И.И. Компьютерные сети. Учебное пособие. М.: ИНФРА-М, 2005. – 336 с.
150
ВВЕДЕНИЕ.
Дисциплина ”Основы алгоритмизации и программирования” является первой частью модуля “Информатика”. Изучение дисциплины имеет следующие цели и задачи:
-ознакомить с основами современных информационных технологий и тенденциями их развития;
-ознакомить с основами алгоритмизации и программирования;
-сформировать практические навыки использования информационных систем и технологий при изучении естественнонаучных, обще-профессиональных и специальных дисциплин и в дальнейшей профессиональной деятельности;
-подготовить студентов к самообразованию и непрерывному профессиональному самосовершенствованию.
Освоение дисциплины «Основы алгоритмизации и программирования» помогает решать профессиональные задачи при разработке курсовых и дипломных проектов и формирует общекультурные и профессиональные компетенции ФГОС.
Студент, успешно освоивший этот курс, должен
уметь:
-разрабатывать алгоритмы и программы с использованием структурного подхода,
-устранять пробелы в знаниях с использованием современных образовательных и информационных технологий,
-работать с компьютером как средством обработки информации,
3
-работать с информацией в глобальных компьютерных сетях,
-выполнять основные операции с базами данных;
владеть:
-логикой и культурой мышления,
-навыками работы в сетях под управлением современных операционных систем,
-основными методами, способами и средствами получения, хранения, переработки информации,
-навыками обработки информации в рабочей интерактивной среде, создаваемой различными программами.
Перевод термина |
Назначение термина |
|
|
VALUES - значения |
используется для внесения |
|
данных в таблицы языка SQL |
|
|
VARCHAR - сокращение от |
используется для определения |
слов VARYING и CHAR |
типа символьной строки |
|
переменной длины языка SQL |
|
|
VARYING - переменный |
используется для определения |
|
типа двоичной строки |
|
переменной длины языка SQL |
|
|
WHERE - где |
используется для определения |
|
условия отбора в выборке данных |
|
языка SQL |
4 |
149 |
Перевод термина |
Назначение термина |
|
|
NUMERIC - числовой |
используется для определения |
|
числового типа языка SQL |
|
|
OR - или |
используется для обозначения |
|
логической операции языка SQL |
ORDER BY - сортировать |
используется для определения |
по |
атрибута сортировки в выборке |
|
данных языка SQL |
|
|
PRIMARY KEY - |
используется для определения |
первичный ключ |
атрибута первичного ключа |
|
языка SQL |
ROLLBACK WORK – |
используется в операторе |
обратить действие |
управления транзакциями языка |
|
SQL |
SELECT - выбрать |
используется в операторе |
|
выборки данных языка SQL |
|
|
SET - установить |
используется в операторе |
|
обновления данных языка SQL |
|
|
SUM (summa) - сумма |
используется для обозначения |
|
агрегатной функции языка SQL |
|
|
TABLE - таблица |
используется для определения |
|
таблицы языка SQL |
|
|
TIME - время |
используется для определения |
|
типа времени языка SQL |
TRUE - истинно |
используется для обозначения |
|
результата предиката сравнения |
|
языка SQL |
|
|
UNKNOWN - неопределено |
используется для обозначения |
|
результата предиката сравнения |
|
языка SQL |
UPDATE - обновить |
используется в операторе |
|
обновления данных языка SQL |
|
|
|
148 |
1. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ.
1.1. Понятие алгоритма.
Алгоритм – формальное описание вычислительной процедуры. Исходные данные, передаваемые процедуре, называются входом алгоритма. Результат работы процедуры есть выход алгоритма.
Алгоритм является корректным, если на любом входе, допустимом для данной задачи, он выдает выход, удовлетворяющий задаче. Алгоритм должен обладать следующими свойствами:
результативностью;
определенностью;
массовостью.
Под результативностью понимается возможность получения выхода за конечное число операций. Свойство определённости обеспечивает неизменный выход независимо от используемых программных и технических средств. Массовость позволяет использовать алгоритм для различных входов.
Алгоритм может быть записан самыми различными
способами: в виде блок-схем, текста программ и т.п. |
|
Блок-схемы оформляются в соответствии |
с ГОСТ |
10.002-80 ЕСПД и ГОСТ 10.003-80 ЕСПД, где |
операции |
обозначаются в виде блоков, большая часть которых вписана в прямоугольники размером a b .
При этом минимальный размер a равен 10 мм, увеличение a осуществляется с шагом 5 мм, а величина b определяется как 1,5 a. Для отдельных блоков допускается соотношение между a и b один к двум. При переносе блоков используется соединитель
– окружность диаметром 0,5 a.
5
Линии, соединяющие блоки, указывают на последовательность связей между ними. Стрелка в конце линии может не ставиться, если линия направлена слева направо или сверху вниз. В блок может входить несколько линий. Из блока (кроме логического) может выходить только одна линия. Все блоки нумеруются.
Виды и назначение основных блоков приведены в таблице
1.1.1
Таблица 1.1.1.
Основные блоки алгоритма.
Обозначение Наименование
Процесс
Ввод-вывод
Решение
Предопределенный процесс
Подготовка, модификация
Документ
Магнитный диск
Пуск-останов
6
Перевод термина |
Назначение термина |
|
|
FALSE - ложно |
используется для обозначения |
|
результата предиката сравнения |
|
языка SQL |
FOREIGN KEY – внешний |
используется для определения |
ключ |
атрибута внешнего ключа языка |
|
SQL |
FROM - из |
используется для определения |
|
таблицы в выборке данных языка |
|
SQL |
GROUP BY - сгруппировать |
используется для определения |
по |
группировочного атрибута в |
|
выборке данных языка SQL |
|
|
HAVING - имеющий |
используется для определения |
|
условия отбора в группе данных |
|
языка SQL |
IN - в |
используется в предикате языка |
|
SQL |
INSERT INTO - вставить в |
используется для внесения |
|
данных в таблицы языка SQL |
|
|
IS NULL - есть пустой |
используется в предикате языка |
|
SQL |
LIKE - подобно, похоже |
используется в предикате языка |
|
SQL |
MAX ( maximum) - |
используется для обозначения |
максимальный |
агрегатной функции языка SQL |
|
|
MIN ( minimum) - |
используется для обозначения |
минимальный |
агрегатной функции языка SQL |
|
|
NOT - не |
используется для обозначения |
|
логической операции языка SQL |
|
|
NULL - пустой |
используется в предикате языка |
|
SQL |
|
147 |
Перевод термина |
Назначение термина |
|
|
AS - как, каким образом |
используется для определения |
|
псевдонима в выборке данных |
|
языка SQL |
|
|
AVG (average) - средний |
используется для обозначения |
|
агрегатной функции языка SQL |
|
|
BETWEEN - между |
используется в предикате языка |
|
SQL |
BIT - двоичный |
используется для определения |
|
типа двоичной строки языка SQL |
|
|
CHAR - сокращение от |
используется для определения |
слова |
типа символьной строки |
character – символ |
фиксированной длины языка SQL |
|
|
CHECK - контроль |
используется для определения |
|
ограничения языка SQL |
|
|
COLUMN - столбец |
используется для добавления или |
|
удаления столбца таблицы языка |
|
SQL |
COMMIT WORK - |
используется в операторе |
совершить работу |
управления транзакциями языка |
|
SQL |
COUNT - счет |
используется для обозначения |
|
агрегатной функции языка SQL |
|
|
CREATE - создать |
используется для определения |
|
таблицы языка SQL |
DATE - дата |
используется для определения |
|
типа даты языка SQL |
|
|
DELETE - стирать |
используется в операторе |
|
удаления данных языка SQL |
DROP – удалять, |
используется для удаления |
выбрасывать |
таблицы или столбца таблицы |
|
языка SQL |
|
146 |
Соединитель
Межстраничный соединитель
Комментарий
1.2. Схемы алгоритмов.
Любой алгоритм может быть представлен в виде комбинации трех элементарных алгоритмических структур:
линейной;
ветвления;
цикла.
Простейший алгоритм линейной структуры представляет собой линейную последовательность операций. При этом каждая операция выполняется вне зависимости от результата другой
(рис. 1.2.1).
Рисунок 1.2.1. Алгоритм линейной структуры.
Алгоритм является ветвящимся, если для его реализации используется несколько ветвей направлений.
Выбор ветви определяется некоторым признаком, принимающим два или более значения. Обычно это логические значения – истина и ложь (рис. 1.2.2)
7
Рисунок 1.2.2. Алгоритм структуры ветвления.
Циклический алгоритм (рис.1.2.3) представляет собой многократно повторяющийся фрагмент, содержащий следующие элементы:
1)инициализация цикла;
2)тело цикла;
3)модификация параметра цикла;
4)проверка условия окончания цикла.
Указанный порядок элементов соответствует циклу с постусловием, когда проверка условия окончания выполняется после выполнения тела цикла.
Порядок выполнения указанных элементов цикла может быть различным. Если пункт 4 предшествует пункту 2, то такой цикл называется циклом с предусловием (рис. 1.2.4).
Циклы также бывают:
1.детерминированные (число повторений тела цикла определено заранее)
2.итерационные (число повторений тела цикла зависит от параметров цикла)
8
Перевод термина |
Назначение термина |
|
|
if - если |
используется в условном |
|
операторе языка Си |
include - включить |
используется в директиве |
|
препроцессора языка Си |
int – сокращение от слова |
используется в объявлении целых |
integer - целый |
переменных языка Си |
list - список |
обозначает список вводимых или |
|
выводимых переменных |
|
|
main - главный |
используется в любой программе |
|
языка Си для обозначения |
|
главной функции |
printf - сокращение от слов |
используется в функции вывода |
print – печать и format - |
на стандартное устройство языка |
формат |
Си |
return - возвратиться |
используется в операторе |
|
возврата из функции языка Си |
|
|
scanf - сокращение от слов |
используется в функции ввода со |
scan – сканировать и format |
стандартного устройства языка |
- формат |
Си |
switch - переключатель |
используется в операторе |
|
ветвления программы языка Си |
|
|
while - до тех пор, пока |
используется в операторе цикла |
|
языка Си |
ADD - присоединять |
используется для добавления |
|
столбца таблицы в операторе |
|
языка SQL |
ALTER - перестроить, |
используется для изменения |
изменить |
структуры таблицы языка SQL |
|
|
AND - и |
используется для обозначения |
|
логической операции языка SQL |
|
|
|
145 |
5.2. Словарь англоязычных терминов.
Перевод термина |
Назначение термина |
|
|
break - прервать |
используется в операторе |
|
прерывания языка Си для |
|
прерывания выполнения |
|
операторов while, switch, for, do |
case - случай |
используется в операторе |
|
ветвления программы языка Си |
|
|
char – сокращение от слова |
используется в объявлении |
character – символ |
символьных переменных языка |
|
Си |
continue - продолжать |
используется в операторе языка |
|
Си для прерывания выполнения |
|
текущей итерации операторов |
|
цикла |
default – значение по |
используется в операторе |
умолчанию |
ветвления программы на языке |
|
Си |
do - выполнять |
используется в операторе цикла |
|
языка Си |
else - иначе |
используется в условном |
|
операторе языка Си |
|
|
float -плавающий |
используется в объявлении |
|
переменных с плавающей |
|
запятой |
for - для |
используется в операторе цикла |
|
языка Си |
format - формат |
обозначает форматную строку |
|
для функций ввода-вывода языка |
|
Си |
goto - перейти к |
используется в операторе |
|
безусловной передачи |
|
управления языка Си |
|
144 |
Рисунок 1.2.3. Циклический алгоритм с постусловием.
Рисунок 1.2.4. Циклический алгоритм с предусловием.
9
Пример 1.2.1.
Вычислить и напечатать значение функции y(x) = sin2(x) cos2(x) в произвольной точке отрезка [0;π].
Блок-схема для решения данной задачи приведена на рисунке
1.2.5.
Пуск
a=0; b=3,14;
Ввод х
x<a или |
да сообщение |
|
x>b |
|
об ошибке |
нет
y=sin2x-cos2x
Вывод x,y
Останов
Рисунок 1.2.5. Комбинация линейного алгоритма и алгоритма ветвления.
1.3. Системы программирования.
ЭВМ выполняет вычисления на машинном языке программирования, представляющим собой набор элементарных инструкций данной вычислительной системы. В общем случае, инструкции содержат коды инструкций и данные или адреса данных.
Например,
000100FF 9F 01A00006 9F C0
где C0 – код инструкции.
10
Функция |
Назначение |
Заголо |
|
|
воч- |
|
|
ный |
|
|
файл |
void nosound (void) |
прекращает звуковой сигнал |
dos.h |
|
|
|
143