Разработка комплексов программ на языке С для решения прикладных задач. Учебное пособие
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ТАМБОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Г.Р. ДЕРЖАВИНА»
Д.С. Соловьев, И.А. Соловьева
РАЗРАБОТКА КОМПЛЕКСОВ ПРОГРАММ НА ЯЗЫКЕ С ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ
Учебное пособие
Тамбов 2019
1
УДК 519.6 ББК 22.193
С60
Рекомендовано к печати Учебно-методическим советом ТГУ имени Г.Р. Державина
Р е ц е н з е н т ы :
доктор технических наук, профессор, профессор кафедры «Прикладная геометрия и компьютерная графика» ФГБОУ ВО «ТГТУ» С.И. Лазарев;
доктор технических наук, доцент, профессор кафедры «Математическое моделирование и информационные технологии» ФГБОУ ВО «ТГУ им. Г.Р. Державина» С.В. Ковалев
Соловьев, Д.С.
С60 Разработка комплексов программ на языке С для решения прикладных задач [Электронный ресурс] : учебное пособие / Д.С. Соловьев, И.А. Соловьева ; М-во науки и высш. обр. РФ, ФГБОУ ВО «Тамб. гос. ун-т им. Г.Р. Державина». – Электрон. дан. (1 файл), – Тамбов, 2019. – Режим доступа: https://elibrary.tsutmb.ru/dl/docs/elib535.pdf. ограниченный. – Загл.
с экрана.
ISBN 978-5-00078-263-7
Учебное пособие направлено на изложение основ программирования на языке С, а также на формирование навыков применения базовых алгоритмов для решения прикладных задач. Учебное пособие не предполагает у студентов предварительных знаний по программированию и дает в достаточно полном объеме информацию, необходимую для получения базовых знаний по программированию.
Пособие предназначено для бакалавров направления 01.03.02 – Прикладная математика и информатика, а также будет полезно начинающим программистам и тем, кто хочет самостоятельно научиться программировать и освоить язык программирования С.
|
УДК 519.6 |
|
ББК 22.193 |
ISBN 978-5-00078-263-7 |
© Соловьев Д.С., Соловьева И.А., 2019 |
|
© ФГБОУ ВО «Тамбовский государственный |
|
университет имени Г.Р. Державина», 2019 |
|
2 |
Содержание
Введение............................................................................................ |
4 |
|
1. |
Простые типы данных.................................................................. |
6 |
2. |
Структурированные типы данных ............................................ |
17 |
3. |
Функции ...................................................................................... |
39 |
4. |
Файлы .......................................................................................... |
51 |
5. |
Объектно-ориентированное программирование ..................... |
63 |
6. |
Ввод-вывод.................................................................................. |
74 |
Заключение...................................................................................... |
82 |
|
Глоссарий ........................................................................................ |
83 |
|
Литература ...................................................................................... |
86 |
|
3
ВВЕДЕНИЕ
Программирование является важнейшей составляющей в подготовке высококвалифицированных специалистов не только в сфере информационных технологий, но и в других областях науки и техники.
Процесс программирования составляют алгоритмизация и реализация алгоритма на одном из языков программирования. Первый этап программирования – алгоритмизация. Алгоритмизация начинается с нахождения по формулировке задачи метода ее решения (математической модели) с последующей разработкой алгоритма, который преимущественно должен быть общим для определенного класса задач с возможностью его применения более чем в одном случае. Затем разработанный алгоритм реализуется на любом императивном (процедурном) языке программирования, который является алгоритмическим – формальным языком, используемым для записи и реализации алгоритмов.
В данном пособии для реализации алгоритмов используется язык программирования высокого уровня С, разработанный в 1969–1973 гг. сотрудником Bell Laboratories (американской,
а ныне франко-американской корпорации, крупного исследовательского центра в области телекоммуникаций, электронных и компьютерных систем) Деннисом Ритчи при создании (совместно с Кеном Томпсоном) операционной системы Unix.
В настоящее время язык С – один из универсальных языков программирования, удобный для создания как системного и инструментального программного обеспечения, так и прикладного. Важным преимуществом языка С является мобильность разработанных на нем программ, так как их можно достаточно легко переносить из одной вычислительной среды, основную часть которой образует операционная система, в другую. Кроме того, существует возможность получения программного кода, сравнимого по скорости выполнения с программами, написанными на низкоуровневом языке ассемблера. С 1989 г. язык Си регламентируется стандартом ANSI C, а с 2000 г. – современным
4
стандартом ISO/IEC (International Organization for
Standardization/International Electrotechnical Commission – Меж-
дународная организация по стандартизации/Международная электротехническая комиссия). В 2011 г. был принят новый стандарт языка С (ISO/IEC), основным свойством которого является поддержка многопоточности.
Надмножество языка С – язык программирования высокого уровня C++, разработанный к 1983 г. специалистом в области информатики из Дании (ныне профессором Техасского университета) Бьерном Страуструпом. Язык С++ является универсальным языком, поддерживающим объектно-ориентированное программирование.
Цель настоящего пособия – создание методики квалифицированного подхода к разработке программного обеспечения на основе алгоритмизации и последующего программирования на языке С. Пособие предназначено для теоретической и практической помощи обучающимся при выполнении лабораторных работ и практических заданий.
Каждый раздел пособия содержит теоретический материал, подробно разобранные примеры разработки алгоритмов решения задач и их реализации на языке С, контрольные вопросы для самопроверки усвоения материала.
5
1.ПРОСТЫЕ ТИПЫ ДАННЫХ
1.1.Простейшая программа на языке С
Создадим простейшую программу на языке С, выводящую на экран некоторую информацию:
#include <stdio.h> #include <stdlib.h>
int main (int argc, char **argv)
{
system ("chcp 1251"); int num;
num = 2;
printf ("Моя первая программа\n");
printf ("Во %d-м семестре я изучаю язык С\n",num); system ("PAUSE");
return 0;}
Рассмотрим ее содержание:
1.#include <stdio.h> – подключить заголовочный файл
stdio.h.
2.#include <stdlib.h> – подключить заголовочный файл stdlib.h.
3.int main(int argc, char **argv) – имя функции. Любая про-
грамма на языке С состоит из одной или нескольких функций.
Вприведенном примере функция одна. Функция c именем main обязательно должна быть в любой исполняемой программе.
4./* простая программа */ – пример оформления комментария.
5.{ } – операторные скобки ({ – начало функции; } – конец функции).
6.system ("chcp 1251"); – вызов функции system для смены кодировки страницы консоли; используется для корректного вывода символов кириллицы.
7.int num; – переменная num описана как переменная целого типа.
6
8.; – указывает, что в этой строке есть оператор языка С (в отличие от других языков программирования является частью оператора, а не разделителем операторов).
9.num = 2; – оператор присваивания. Переменной num присвоено значение 2.
10.printf ("Моя первая программа\n"); – выводит на экран строку и переводит курсор в начало следующей строки, на что указывает \n – управляющий символ.
11.printf ("Во %d–м семестре я учу язык С",num); – на экран выведется строчка – «Во 2-м семестре я учу язык С.» Спецификатор %d показывает, что в этом месте должно быть выведено целое число, после строки указывается имя переменной, значение которой должно быть выведено, в данном случае используется переменная num.
12.system("PAUSE"); – вызов функции system для организации паузы; на экране появится надпись Press any key to continue….
1.2. Элементы языка C
Символы
Используются: a..z
A..Z 0..9
специальные символы: . , : ; „ “ #
{ } [ ] ( )
<>& | ^ ! _ + – / * % =
управляющие символы:
\a – сигнал тревоги (щелчок);
\b – backspace;
\f – переход на следующую страницу; \n – переход на следующую строку;
\r – return;
\t – горизонтальная табуляция;
7
\v – вертикальная табуляция; \0(ноль) – пустой символ;
\ddd – код символа в 8-ой (восьмеричной) с/c;
\xdd – код символа в 16-ой (шестнадцатеричной) с/c.
Идентификаторы
Идентификаторы – это слова, которые используются как имена переменных, функций, типов данных. Идентификатор состоит из букв, цифр, подчѐркиваний и не может начинаться с цифры. Длина его произвольна.
Прописные и строчные буквы различаются.
Для разделения идентификаторов служат пробелы, табуляции, “на новую строку”, “на новую страницу”.
Инструкции (Statements)
Любое синтаксически правильно составленное предложение языка С, которое заканчивается символом „ ; „, называется инструкцией.
Любое число инструкций, объединѐнных в { }, называется блоком.
Комментарии
однострочные: //
многострочные: /*…*/ Комментарии не могут быть вложенными.
Типы данных
Базовые типы данных, используемые в языке С, представлены в таблице 1.
|
|
Таблица 1 |
|
Базовые типы данных |
|
|
|
|
Тип |
Длина в байтах |
Диапазон |
char |
8 |
-128..127 |
int |
16 |
-32768..32767 |
float |
32 |
3.4*10-38..3.4*1038 |
double |
64 |
1.7*10-308..1.7*10308 |
В языке C существует тип данных, который обозначает пустое значение: void. Он используется для 2-ух целей:
8
для определения функций, которые не возвращают значения;
для создания родовых (generic) указателей, то есть указателей на выделенную программой память. В дальнейшем этот указатель может быть преобразован в другой тип.
Для более точного выбора типов данных используются модификаторы типов:
модификаторы знака: signed – со знаком, unsigned – без знака;
модификаторы длины: short – короткие, long – длинные. С типом char используются только модификаторы знака (см.
таблицу 2).
Таблица 2
Модификаторы, используемые с типом данных char
signed char (=char) |
8 |
-128..127 |
unsigned char |
8 |
0..255 |
Ас типом int используются как модификаторы знака, так
имодификаторы длины (см. таблицу 3).
|
|
Таблица 3 |
|
Модификаторы, используемые с типом данных int |
|||
|
|
|
|
Тип |
Длина в байтах |
Диапазон |
|
short int |
|
|
|
short |
8 или 16 |
Со знаком |
|
signed short int |
|||
|
|
||
signed short |
|
|
|
unsigned short int |
8 или 16 |
Без знака |
|
unsigned short |
|||
|
|
||
signed int |
|
|
|
signed |
16 |
Cо знаком |
|
int |
|
|
|
long int |
|
|
|
long |
32 или 16 |
-2147483648 |
|
signedlongint |
..2147483647 |
||
|
|||
signedlong |
|
|
|
9
C типом float модификаторы не работают.
С типом double используется только модификатор long (см. таблицу 4).
Таблица 4
Модификаторы, используемые с типом данных double
Тип |
Длина в байтах |
Диапазон |
long double |
80 |
3.4*10-4932.. 3.4*104932 |
Константы
Не изменяющиеся данные определѐнного типа называются константами.
Замечание: любой символ может быть представлен последовательностью 3-х восьмеричных цифр или 2-мя шестнадцатеричными.
Замечание: целые константы могут определяться в восьмеричной системе счисления и шестнадцатеричной системе счисления:
8-ая с/с: 0dd...d 012 = 1010
16-ая c/c: 0xdd...d 0x12 = 1810
Переменные
Переменная – это поименованная область памяти, в которой хранятся данные определѐнного типа.
Синтаксис:
<тип><список идентификаторов> Пример:
float d; int i, j, k;
При своѐм объявлении значение переменной может быть инициализировано:
Пример: int i = 1;
Модификаторы доступа
10
