Задания к лабораторной работе № 2x

advertisement
Министерство образования Республики Беларусь
ПОЛОЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра технологий программирования
Задания по лабораторной работе № 2
по курсу «Основы алгоритмизации
и программирования»
«Знакомство со средой
программирования PellesC»
Преподаватель: Войтехович
Агния Витольдовна
Полоцк, 2015
ЦЕЛЬ РАБОТЫ
Познакомить студентов со средой разработки DEV-C++. Научить
создавать новый проекти писать простейшие программы на языке
программирования Си в данной среде разработки.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1. Работа в среде PellesC
Интегрированная среда разработки «Pelles C» предназначена для создания
программного обеспечения на основе алгоритмического языка программирования
«С» стандарта ANSI С99. Понятие интегрированной среды разработки
подразумевает наличие следующих компонент:
 средства управление проектом;
 текстовый редактор программных файлов;
 компилятор (compiler) и компоновщик (linker) программ;
 средство отладки программ - отладчик (debugger).
Запуск среды «Pelles C» осуществляется путем запуска файла poide.exe из
рабочего каталога (того каталога, куда был установлен «Pelles C»). Как правило
на рабочем столе или меню программ ОС Windows располагается ярлык данной
среды разработки. После запуска программы на экране появится окно программы
(рисунок 1).
Рисунок 1 - Окно среды разработки «Pelles C»
Для начала разработки программы в среде «Pelles C» необходимо создать
проект. Это выполняется в окне создания проекта, которое вызывается из
главного меню программы: File → New → Project. На открывшемся окне
(рисунок 6) необходимо выбрать тип программы: Console Application wizard и
указать название проекта (например myprog). Среда разработки создаст каталог с
таким именем куда будут записываться все файлы проекта. Сам каталог будет
располагаться в каталоге, указанном в поле Location (при необходимости его тоже
следует указать). После нажатия на кнопку «OK» появится следующее окно
(рисунок 7) в котором необходимо указать начальное содержимое главного файла
с исходным текстом программы (рекомендуется указать: A simple program) и
нажать кнопку «Далее». На следующем окне мастер создания проекта укажет
какие файлы были созданы для проекта (обычно main.c). Для завершения мастера
просто нажмите «Готово».
Рисунок 6 - Создание проекта
Рисунок 7 - Указание начального содержания
После того, как проект создан в главном окне среды разработки «Pelles C»
появится окно инспектора проекта (рисунок 8), в котором будут отображены все
файлы проекта (изначально здесь содержится только файл main.c). Двойной клик
левой кнопкой мыши по имени файла приведет к открытию редактора текста
программы для этого файла (рисунок 9).
Как видно из рисунка 9 среда разработки «Pelles C» автоматически создает
описание функции main и подключает библиотеку стандартного ввода и вывода
stdio.h. Программисту остается только подключить необходимые библиотеки и
написать код функции main. После написания самой программы ее необходимо
скомпилировать и запустить. Компиляция программы осуществляется путем
вызова команды из главного меню программы: Project → Compile имя файла.
Если программа написана с ошибками, то компилятор выдаст соответствующие
сообщения в нижнем поле на вкладке Project. Если компиляция программы
прошла успешно, то можно осуществить построение выполняемого файла:
команда Project → Build имя проекта. Запуск программы осуществляется
командой: Project → Execute имя проекта или горячими клавишами: Ctrl+F5.
Рисунок 8 - Главное окно «Pelles C» с инспектором проекта
Запуск программы в режиме отладки осуществляется командой Project →
Debug имя проекта или горячей клавишей F5. Режим отладки обладает базовой
функциональностью: продолжить выполнение (F5), завершить отладку (Shift+F5),
начать заново, шаг через (F10), шаг в (F11). Все эти команды вызываются из
пункта Debug главного меню «Pelles C». В правом нижнем углу окна среды
разработки в режиме отладки отображается панель
2. Программирование на языке Си
Язык С был разработан в 1972 г. ДэнисомРитчи и Кеном Томпсоном из
AT&T Laboratories в рамках разработки ОС UNIX. В 60е годы Томпсон
разрабатывал ОС UNIX. Основной идеей являлась то, что ядро операционной
системы и она сама, писались на языке высокого уровня. В начале для этой цели
был использован BCPL. Но он не имел динамической поддержки и на его основе
был разработан язык B. В этом языке было разработано минимальное
подмножество языка BCPL для системного уровня. Это было сделано для
возможности работы на компьютере PDP-7 с 8 килобайтами памяти. В 1970 году
для проекта UNIX был приобретен компьютер PDP-11 с памятью в 24 Кб. В язык
В были добавлены понятие структуры и некоторые дополнительные операторы.
Новый язык и стал известен как язык С.
В настоящее время С - универсальный язык, обладающий чертами как
прикладного, так и системного языка. Язык С первоначально приобрел
наибольшую популярность в университетах, использующих ОС UNIX. Затем он
начал распространяться и на другие операционные системы, становясь
коммерческим продуктом. В 1989 году был издан первый стандарт языка ANSI C
(C89), а в 1990 он был принят в качестве международного стандарта ISO/IES 9899.
В дальнейшем стандарт пересматривался в 1999 году (стандарт С99).
Язык С оказал значительное влияние на развитие таких языков
программирования как С++, Java, С#.
В отличие от языка программирования Pascal язык С не имеет жестко
заданной структуры программы со всеми блоками и разделами. В целом
программа состоит из функций, главной из которых является функция main. При
запуске программы управление передается этой функции. С точки зрения языка
Pascal эта функция эквивалентна главному блоку BEGIN…END.
Так как язык С сам по себе является довольно простым языком
программирования и не содержит даже операторов ввода и вывода, то основную
часть языка С составляют его библиотечные функции.
Для того чтобы использовать функции необходимо подключить
соответствующую библиотеку. Это осуществляется с помощью директивы
препроцессора #include<имя библиотеки>. Более подробно данная директива
рассматривается в главе 10. Подключение библиотек осуществляется в самом
начале программы. Наиболее часто используемыми библиотеками языка С
являются:
 stdio.h - библиотека стандартного ввода и вывода,
 math.h - библиотека математических функций,
 stdlib.h - библиотека стандартных функций,
 и другие, названия и содержание которых будет рассматриваться в процессе
изучения остальных разделов.
Часто библиотеки перекрывают друг друга: содержат одни и те же функции.
Таким образом, структуру простейшей программы можно представить в
следующем виде: она состоит из двух частей. Первая часть - это радел
подключений библиотек, а вторая часть - функция main, содержащая саму
программу. Тело функции main заключается в фигурные скобки, которые играют
роль ключевых слов BEGIN и END в языке Pascal.
Например, простейшая программа «Привет мир!», с которой начинают
изучение всех языков программирования, имеет вид:
В строке 1 осуществляется подключение библиотеки стандартного ввода и
вывода. В строке 3 осуществляется описание заголовка функции main, забегая
вперед можно сказать, что данная запись означает, что функция main возвращает
целочисленное значение и принимает два параметра: целочисленный argc и
массив строк argv. Данное описание регламентируется стандартом С99 и является
обязательным, в отличие от более раннего стандарта С89. В строке 4
осуществляется открытие тела функции main с помощью символа открывающей
фигурной скобки. Само тело функции main (строка 5) состоит из одного
оператора вызова функции стандартного вывода printf. В строке 6
осуществляется закрытие тела функции main с помощью символа закрывающей
фигурной скобки.
2.1 Типы данных
Прежде чем рассматривать операторы объявлений типов и переменных,
необходимо рассмотреть систему базовых типов языка С.
Тип - это описание диапазона значений, которые может принимать
переменная, указанного типа. Каждый тип данных характеризуется своим
размером (количество байт занимаемых значением данного типа в памяти
компьютера) и диапазоном принимаемых значений.
Любой язык программирования высокого уровня характеризуется набором
своих типов. Все типы данных можно разделить на следующие виды:
 простые (скалярные) и сложные (векторные) типы;
 базовые (системные) и пользовательские типы.
К простым типам данных языков программирования высокого уровня
обычно относятся: целые и вещественные числа, символы, строки, булевы типы.
К сложным типам данных относятся: массивы, множества, перечисления,
структуры, объединения, поля бит.
Базовые (системные) типы данных изначально заложены в языке
программирования. Совокупность всех базовых типов данных языка
программирования называют системой базовых типов. Пользовательские типы
данных - типы, создаваемые пользователем языка (программистом) путем
модификации базовых типов средствами самого языка программирования.
В языке С систему базовых типов образуют четыре типа данных:
 символьный,
 целочисленный,
 вещественный одинарной точности,
 вещественный двойной точности.
Символьный тип (char) предназначен для описания символьных или
целочисленных значений. Размер значения данного типа составляет 1 байт,
диапазон принимаемых значений от -128 до 127. Может рассматриваться как
символ и как число (специфика языка программирования), т.е. не требует
преобразования как в языке Pascal.
Целочисленный тип (int) предназначен для описания целочисленных
значений. Размер значения данного типа зависит от разрядности системы (среды
разработки) и составляет:
 в 16-ти разрядных системах - 2 байта (диапазон принимаемых значений от 32768 до 32767);
 в 32-ух разрядных системах - 4 байта (диапазон принимаемых значений от 2147483648 до 2147483647).
ПРИМЕЧАНИЕ: Так как 16-ти разрядные системы устарели, то в
дальнейшем будем рассматривать только 32-ух разрядное представление целого
числа.
Вещественный тип одинарной точности (float) предназначен для описания
вещественных значений одинарной точности. Размер значения данного типа
составляет 4 байта (23 бита - мантисса, 8 бит - порядок, 1 бит - знак числа),
диапазон принимаемых значений ±3.4Е±38. Точность - до 7 знаков после запятой
Вещественный тип двойной точности (double) предназначен для описания
вещественных значений двойной точности. Размер значения данного типа
составляет 8 байт (52 бита - мантисса, 11 бит - порядок, 1 бит - знак числа),
диапазон принимаемых значений ±1.7Е±308. Точность - до 17 знаков после запятой.
2.2 Функции ввода/ вывода
Правила хорошего стиля программирования предъявляют следующие
требования к форматированию операторов объявлений переменных:
 объявление переменных нового типа всегда начинается с новой строки;
 имя переменой должно быть информативным, т.е. из имени переменной
должно быть понятно ее назначение;
 имя переменной не должно быть слишком длинным;
 после объявления переменной в этой же строке или на предыдущей строке в
комментарии желательно дать краткое описание назначения переменной;
 необходимо разделять имена переменных пробелами (в разумных пределах).
ПРИМЕЧАНИЕ:Здесь и далее будут даваться рекомендации по стилю
оформления текстов программ, которых следует придерживаться в процессе
выполнения лабораторных работ и вообще при написании программ.
Символьные константы записываются в одинарных кавычках (переменная ch
из примера). Кроме того, в языке С присутствуют специальные символы:
‘\’’ - одинарная кавычка,
‘\”’ - двойная кавычка,
‘\\’ - обратный слеш,
‘\?’ - знак вопроса,
‘\a’ - звуковой сигнал,
‘\b’ - пробел,
‘\f’ - прокрутка страницы,
‘\n’ - перевод строки,
‘\r’ - возврат каретки,
‘\t’ - горизонтальная табуляция,
‘\v’ - вертикальная табуляция.
В языке С оператор вызова функций, в принципе, выделен условно (во
многих книгах по языкуC он вообще не рассматривается как оператор). Оператор
вызова функций просто определяет синтаксис описания вызова любой функции в
тексте программы:
имя_функции(параметры);
Сначала указывается имя функции, затем, в круглых скобках, указываются
параметры функции. Завершается оператор вызова функций точкой с запятой.
ПРИМЕЧАНИЕ: В языке С, если функция не имеет параметров, то пустые
круглые скобки все равно должны присутствовать.
Функция scanf предназначена для форматного ввода данных и имеет
следующий заголовок:
intscanf(const char * restrict format [,addresses,…]);
Первым параметром функции является строка формата ввода (строки в
языке С заключаются в двойные кавычки). В данной строке содержится перечень
спецификаторов типов данных, ввод которых ожидается, в определенном порядке.
Далее указываются адреса, по которым будут располагаться вводимые данные.
Функция возвращает фактическое число считанных и записанных значений или -1
- если достигнут конец потока ввода. Пример ввода двух переменных переменные
целого типа и переменной вещественного типа:
inta,b;
doublex;
…
scanf(“%d %d %lf”,&a,&b,&x);
В данном примере сначала вводятся два значения целого типа в
переменные a и b, а затем вещественного типа в переменную x. %d указывает на
то, что вводимые данные являются целыми числами, %lf - вещественным типа
double. Перед именами переменных в параметрах функции scanf необходимо
указывать символ ‘&’, который в языке С, в данном случае, обозначает операцию
взятия адреса переменной.
В таблице 2.2 приведен перечень типов и соответствующие им
спецификаторы.
Функция printf предназначена для форматного вывода данных и имеет
следующий заголовок:
intprintf(const char * restrict format [,variables,…]);
Первым параметром функции является строка формата вывода. В данной
строке содержится перечень спецификаторов типов данных, вывод которых
ожидается, в определенном порядке. Далее указываются переменные, значения
которых будут выводиться. Функция возвращает фактическое число выведенных
символов. Пример вывода двух переменных целого типа и переменной
вещественного типа:
inta,b;
doublex;
…
printf(“%d %d %5.2lf”,a,b,x);
В данном примере сначала выводятся два значения целого типа (переменные
a и b), а затем вещественного типа (переменная x).
Как и в функции scanf, сочетание %d или любое другое называется
спецификатором типа. В общем случае он имеет следующий формат:
% [flag] [WIDTH][.PREC] [h|hh|l|ll|L] символ_типа
flag - для чисел указывает на необходимость вывода знака ‘+’ для
положительных чисел, для строк управляет форматированием - по левому или по
правому краю.
WIDTH - задает длину поля.
.PREC - задает количество символов после запятой для вещественных чисел
и минимальное количество знаков для целых чисел.
h, hh, l, ll, L - аналогично функции scanf.
Перечень типов и соответствующих им спецификаторов приведен в таблице
2.2.
Пример: даны два вещественных числа, организовать их ввод в формате:
(х,у) и вывести на экран в формате Х = значение, У = значение.
#include<stdio.h>
intmain(intargc, char *argv[])
{
doublex,y;
scanf(“(%lf,%lf)”,&x,&y);
printf(“X = %5.2lf, Y = %5.2lf”,x,y);
return 0;
}
Для ввода и вывода строковой информации можно использовать функции
форматированного ввода и вывода (printf и scanf). Для этого в строке формата
при вводе или выводе строковой переменной необходимо указать спецификатор
типа %s. Например, ввод и последующий вывод строковой переменной будет
иметь вид:
charstr[31] = “”;
printf(“Введитестроку: ”);
scanf(“%s”,str);
printf(“Выввели: %s”,str);
В первой строке осуществляется объявление строковой переменной str
максимальной длиной 30 символов и инициализацией пустой строкой. Далее
выводится приглашение к вводу строки и, затем, осуществляется непосредственно
ввод. Следует обратить внимание на то, что в функции scanf имя переменой
strуказано без знака амперсанда. Такое допустимо только при вводе строк, так как
имя строковой переменной является именем массива, а имя массива в языке С
является указателем на сам массив (указатели будут рассматриваться в
следующее главе). Следовательно, имя строки, по сути, является указателем на
эту строку и знак амперсанда можно не указывать. В последней строке
осуществляется вывод введенного значения.
ЗАДАНИЯ ДЛЯ ЛАБОРАТОРНЫХ РАБОТ
1. Запустить среду разработки.
2. Создать новый проект.
3. Написать программу, которая будет выводить на экран надпись
«HelloWorld!».
4. В окне вывода нарисовать рисунок с помощью псевдографики.
5. * Написать программу, которая будет выводить на экран надпись
«Привет, (введенное ранее имя)».
6. ** Вывести число в десятичной, восьмеричной и шестнадцатеричной
системах исчисления.
ВАРИАНТЫ ДЛЯ 6 ЗАДАНИЯ
Вариант
Рисунок
Вариант
1
10
2
11
Рисунок
3
12
4
13
5
14
6
15
7
16
8
17
9
18
Download