Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
В. Л. Бусько, А. Г. Корбит, И. Н. Коренская, Т. М. Кривоносова, В. И. Убийконь↑ Стр 1 из 8Следующая ⇒ Содержание книги
Поиск на нашем сайте
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
по программированию в 2-х частях Часть 2 Дополненное и исправленное
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА АЛГОРИТМИЧЕСКОМ ЯЗЫКЕ С Под общей редакцией В.Л. Бусько
Минск 2002
УДК 681.3.06 (075) ББК 32.973 я 73 Л 12
Авторы: В.Л.Бусько, А.Г.Корбит, И.Н.Коренская, Т.М.Кривоносова, В.И.Убийконь Лабораторный практикум по программированию. Ч.2. Дополненное и исправленное. Основы программирования на алгоритмическом языке С: /В.Л.Бусько, А.Г.Корбит, И.Н.Коренская, Т.М.Кривоносова, В.И.Убийконь Мн.: БГУИР, 2002. - c. ISBN 985-444-266-3 (ч.2) В практикуме приведены краткие теоретические сведения по основам программирования на алгоритмическом языке С и даны по 30 индивидуальных заданий к каждой лабораторной работе. Во вторую часть практикума вошло 8 лабораторных работ. Предназначен практикум для студентов 1-2 курсов всех специальностей и всех форм обучения.
В.Л.Бусько (написаны лабораторные работы 3-5, 8), А.Г.Корбит (написаны лабораторные работы 5-7), И.Н.Коренская (написаны лабораторные работы 1, 2), Т.М.Кривоносова (написаны лабораторные работы 6,7), В.И.Убийконь (написаны лабораторные работы 1-4, 6)
Часть 1. Методические указания по курсу “Вычислительная техника и программирование” для студентов всех специальностей Ч.1. / Сост.В. Л. Бусько, А. Б. Долгий, А. Р. Живицкий. Мн.: МРТИ, 1992.
Под общей редакцией В.Л. Бусько
ISBN 985-444-269-1 ISBN 985-444-268-3 (ч.3) Коллектив авторов, 2002 СОДЕРЖАНИЕ
ЛАБОРАТОРНАЯ РАБОТА № 1 Линейные и разветвляющиеся вычислительныые процессы
ЛАБОРАТОРНАЯ РАБОТА № 2 Программирование циклических вычислительных процессов
ЛАБОРАТОРНАЯ РАБОТА № 3 Программирование циклических процессов с использованием одномерных массивов и строк
ЛАБОРАТОРНАЯ РАБОТА № 4 Программирование циклических процессов с использованием многомерных массивов, указатели, динамическое распределение памяти
ЛАБОРАТОРНАЯ РАБОТА № 5 Программирование алгоритмов с использованием функций пользователя
ЛАБОРАТОРНАЯ РАБОТА № 6 Программирование алгоритмов с использованием структур
ЛАБОРАТОРНАЯ РАБОТА № 7 Программирование с использованием файлов
ЛАБОРАТОРНАЯ РАБОТА № 8 Использование графического режима
ПРИЛОЖЕНИЕ
ЛИТЕРАТУРА
Лабораторная работа №1 Линейные и разветвляющиеся вычислительные процессы
Цель работы: Изучить правила составления текстов программ на языке С: базовые типы данных, ввод-вывод данных, основные математические функции; операторы безусловного перехода и разветвлений (оператор выбора по условию if, оператор-переключатель switch). Научиться программировать линейные и разветвляющиеся алгоритмы. Краткие теоретические сведения Язык С отражает возможности современных компьютеров. Программы на С отличаются компактностью и быстротой исполнения. Структура языка С побуждает программиста использовать в своей работе нисходящее программирование, структурное программирование, пошаговую разработку модулей. Большинство трансляторов языка C - компиляторы. Система программирования языка включает препроцессор, компилятор, редактор связей, библиотекарь, редактор текста, отладчик и интегрированную управляющую среду.
Алфавит языка С В языке С используются наборы символов: 1) строчные (A,B,C,…….,Y,Z) и прописные (a,b,c,………,y,z) буквы латинского алфавита; 2) арабские цифры от 0 до 9; 3) специальные символы: + (плюс), - (минус), * (звездочка), / (дробная черта), = (равно), > (больше), < (меньше),; (точка с запятой), & (амперсанд), [ ] (квадратные скобки), { } (фигурные скобки), () (круглые скобки), _ (знак подчеркивания), (пробел),. (точка),, (запятая),: (двоеточие), # (номер), % (процент), ~ (поразрядное отрицание),? (знак вопроса),! (восклицательный знак), \ (обратный слэш).
Классификация данных В языке C применяются данные двух категорий: простые (скалярные) и сложные (составные) типы данных. К основным (базовым) типам данных относятся целый, вещественный и символьный типы. В свою очередь, данные целого типа могут быть короткими (short), длинными (long) и беззнаковыми (unsigned). Приведем размеры и возможные диапазоны базовых типов данных (таблица 1): Таблица 1
Сложные типы данных подразделяются на массивы, структуры (struct), объединения или смеси (union), перечисления (enum). Более подробно они рассмотрены в других лабораторных работах данного практикума.
Декларирование объектов Все объекты (переменные, массивы и т.д.), с которыми работает программа в С, необходимо декларировать. При декларировании объекты можно инициализировать (задать начальные значения). Например: int j=10, m=3, n; float c=-1.3, l=-10.23, n; При декларировании объектов в языке С используются их идентификаторы, которые могут включать цифры (0...9), латинские прописные (A...Z) и строчные (a...z) буквы, символ подчеркивания (_). Первый символ идентификатора не может быть цифрой. В языке С буквы нижнего регистра (a….z) отличаются от букв верхнего регистра (A ….Z), т.е. PI, Pi и pi – различные идентификаторы. Принято использовать в идентификаторах переменных строчные буквы, а в именованных константах – прописные. Например: const float PI=3.1415926; float pi=3.14; Длина идентификатора определяется реализацией транслятора C и редактора связей (компоновщика). Современная тенденция - снятие ограничений длины идентификатора. Разделители идентификаторов объектов: - пробелы; - символы табуляции, перевода строки и страницы; - комментарии (играют роль пробелов). Комментарий - любая последовательность символов, начинающаяся парой символов /* и заканчивающаяся парой символов */ или начинающаяся // и до конца текущей строки.
Структура программы Программа, написанная на языке С, состоит из директив препроцессора, объявлений глобальных переменных, одной или нескольких функций, cреди которых одна главная (main) функция управляет работой всей программы. Общая структура программы на языке С имеет вид: <директивы препроцессора> <определение типов пользователя – typedef> <прототипы функций> <определение глобальных объектов> <функции> Функции, в свою очередь, имеют структуру: <класс_памяти> <тип> <имя функции> (<объявление параметров>) { - начало функции <определение локальных объектов> <операции и операторы> } - конец функции
Работа с функциями пользователя рассматривается в лабораторной работе № 5. Кратко рассмотрим основные части общей структуры программы. Перед компиляцией программы на языке С автоматически выполняется предварительная (препроцессорная) обработка текста программы. С помощью директив препроцессора задаются необходимые действия по преобразованию текста программы перед компиляцией. Директивы записываются по следующим правилам: - все препроцессорные директивы должны начинаться с символа #; - все директивы начинаются с первой позиции; - сразу за символом # должно следовать наименование директивы, указывающее текущую операцию препроцессора. Наиболее распространены директивы #include и #define. Директива #include используется для подключения к программе заголовочных файлов (обычных текстов) с декларацией стандартных библиотечных функций. При заключении имени файла в угловые скобки < > поиск данного файла производится в стандартной директории с этими файлами. Если же имя файла заключено в двойные кавычки ” ”, то поиск данного файла осуществляется в текущем директории. Например: #include <stdio.h> - подключение файла с объявлением стандартных функций файлового ввода-вывода; #include <conio.h> - функции работы с консолью; #include <graphics.h> - графические функции; #include <math.h> - математические функции. Директива #define (определить) создает макроконстанту и ее действие распространяется на весь файл. Например: #define PI 3.1415927 В ходе препроцессорной обработки программы идентификатор PI заменяется значением 3,1415927. Пример программы: #include <stdio.h> #include < conio.h> /* Директивы препроцессора */ #define PI 3.1415927 void main() // Заголовок главной функции { // Начало функции int num; // Декларирование переменной num num=13; // Операция присваивания clrscr(); // Очистка экрана printf(" \n Число pi=%7.5f\n %d - это опасное число \n”, PI, num); } // Конец функции В первых двух строках программы указаны директивы препроцессора #include, по которым происходит подключение заголовочныхфайлов, содержащих декларации функций ввода-вывода (stdio.h) для функции printf() и работы с консолью (conio.h) для функции clrscr(). Следующая директива создает макроконстанту PI и подставляет вместо ее имени значение 3,1415927 по всему тексту программы. В главной функции main декларируется переменная целого типа num. Далее этой переменной присваивается значение 13. Функция printf выводит на экран строки: Число pi =3.1415927 13 – это опасное число Как видно, функция представляет собой набор операций и операторов, каждый из которых оканчивается символом; (точка с запятой). В тексте программы использованы комментарии между парой символов /* */ и после пары символов //.
Функции вывода информации Для вывода информации в языке С используются следующие функции: Функция putchar() обеспечивает вывод одиночного символа без перехода на новую строку. Функция puts() используется для вывода строки символов с переходом на начало новой строки. Функция printf() предназначена для форматированного вывода данных. Ее формат: рrintf (<управляющая строка>, <список аргументов>); Управляющая строка заключается в кавычки и указывает компилятору вид выводимой информации. Она может включать спецификации преобразования и управляющие символы. Спецификация преобразования имеет вид: % < флаг > < размер поля. точность > спецификация где флаг может принимать следующие значения: - выравнивание влево выводимого числа (по умолчанию выполняется выравнивание вправо); + выводится знак положительного числа; размер поля – задает минимальную ширину поля, т.е. длину числа. При недостаточной ширине поля выполняется автоматическое расширение; точность – задает точность числа, т. е. количество цифр в его дробной части; спецификация указывает вид выводимой информации. Ниже приведены основные форматы функции печати: Таблица 2
Для длинных чисел (long, double) – используется дополнительный формат l. Например: % ld - длинное целое, % lf – вещественное число с удвоенной точностью. При необходимости вывода символа % его нужно указать 2 раза. Например: printf("Только %d%% предприятий не работало.\n",5); Получим: Только 5% предприятий не работало. Управляющая строка может содержать следующие управляющие символы: \n – переход на новую строку; \t – горизонтальная и \v – вертикальная табуляция; \b – возврат назад на один символ; \r – возврат в начало строки; \f – прогон бумаги до начала новой страницы; \a – звуковой сигнал; \ddd – 8-ричный ASCII-код; \xhhh – 16-ричный- -код; \? – знак вопроса. Список аргументов - печатаемые объекты (константы, переменные или выражения), вычисляемые перед выводом. Количество аргументов и их типы должны соответствовать спецификациям преобразования в управляющей строке. Пример: #include <stdio.h> #define PI 3.1415926 main() { int number =5, cost=11000, s=-777; float bat =255, x=12.345; printf ("%d студентов съели %f бутербродов.\n", number, bat); printf ("Значение числа pi равно%f.\n", pi); printf ("Любовь и голод правят миром.\n"); printf ("Стоимость этой вещи %d%s.\n", cost,"Руб."); printf ("x=%-8.4f s=%5d%8.2f ", x, s, x); } В результате выполнения последней функции printf () на экране будет выведено: х=12.3450 s= -777 12.34
Функции ввода информации Функция getch () используется для ввода одиночных символов. Функия gets () обеспечивает ввод строки символов до нажатия клавиши ENTER. Функция scanf предназначена для форматированного ввода информации любого вида. Общий вид функции: scanf (<управляющая строка>, < список адресов>); Для нее, как и для функции printf (), указывается управляющая строка. Однако функция scanf(), в отличие от функции printf (), использует в списке адресов указатели на переменные, т.е. их адреса. Для обозначения указателя перед именем переменной записывается символ &, обозначающий адрес переменной. Для ввода значений строковых переменных символ & не используется. При использовании формата %s строка вводится до первого пробела. Вводить данные можно как в одной строке через пробел, так и в разных строках. Данную особенность иллюстрирует следующий участок программы: int course; float grant; char name[20]; printf ("Укажите ваш курс, стипендию, имя \n"); scanf ("%d%f", &course, &grant); scanf ("%s", name); /* & отсутствует при указании массива символов */
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 281; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.249.124 (0.009 с.) |