Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Методические указания к лабораторным работам↑ Стр 1 из 3Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ №____ ПРОГРАММИРОВАНИЕ Часть 1. Язык СИ Методические указания к лабораторным работам для студентов I курса АВТФ (направления 220200 и 230100) Дневной формы обучения НОВОСИБИРСК Составители: Г.П.Голодных, канд. техн. наук, доцент А.В. Гунько, канд. техн. наук, доцент Г.В. Саблина, канд. техн. наук, доцент Рецензент: Л.В. Тюнина, к.т.н., доцент каф. Автоматики Работа подготовлена на кафедре Автоматики © Новосибирский государственный технический университет, 2009 г. Лабораторная работа № 1 ТЕХНОЛОГИЯ РАБОТЫ С ПРОГРАММАМИ НА ЯЗЫКЕ СИ В СИСТЕМЕ ПРОГРАММИРОВАНИЯ BORLAND C++ BUILDER. ЭЛЕМЕНТАРНЫЕ ОПЕРАЦИИ. 1. Цель работы Изучить процесс прохождения программы на языке СИ в среде программирования BORLAND C++ BUILDER. Ознакомиться с технологией отладки программ. Изучить основные конструкции операторов присваивания и директивы препроцессора. 2. Краткие теоретические сведения 2.1. Среда программирования C++Builder Borland (далее BC) представляет собой современный программный комплекс, включающий в себя редактор проектов, текстовый редактор, компиляторы с языков С, С++, Ассемблер, компоновщик, средства отладки программ и библиотеки функций, программных и графических компонентов. Вход в среду выполняется через меню «Программы»-«Borland Developer Studio 2006»-«C++Builder», после чего для выполнения лабораторных работ данного курса создается новый консольный проект командами «File»-«New»-«Other». В открывшемся окне «New Items» выбирается приложение «Console Application», язык (С, С++) и, при необходимости, указывается путь к файлам проекта (Specify project source). После нажатия кнопки «OK» в текстовом редакторе открывается файл c именем unit1.c, содержащий пустую функцию main, внутрь которой вводится текст программы. 2.2. Компиляция, сборка и запуск программы на выполнение производится командой меню «Run»-«Run» или нажатием клавиши <F9> на клавиатуре. Пошаговая отладка (при отсутствии других функций в программе) производится командами меню «Run»-«Step over» или нажатием клавиши <F8> на клавиатуре. Контроль значений переменных производится в окне, вызываемом командами меню «Run»-«Add watch», или нажатием клавиш <Ctrl+F5> на клавиатуре. Справочная информация о среде программирования, библиотечных функциях и операторах языка может быть получена через команду меню «Help» или нажатием клавиши клавиатуры <F1> при нахождении курсора в операторе языка или имени библиотечной функции. 2.3. В процессе работы для ввода-вывода следует использовать функции printf и scanf. Основные форматы, используемые в этих функциях: %d - ввод/вывод чисел типа int; %o - то же, но в восьмеричном виде; %f - ввод/вывод чисел типа float и double; %с - ввод/вывод одного символа (char); %s - ввод/вывод строки (массив char); Дополнительно при выводе данных после знака % можно указывать длину поля вывода и количество знаков после запятой (только для %f). Например: %5d - вывод целого числа в поле длиной 5 позиции; %7.3f - вывод числа float в поле 7 позиций, 3 знака после запятой; %20s - вывод строки в поле 20 позиций. Данные при выводе выравниваются по правой границе. Для выравнивания по левой границе после «%» дополнительно указывается знак " - ", например «%-7.3f». В форматной строке можно использовать управляющие константы: \n - новая строка; \t - табуляция; \а - звуковой сигнал; \b - возврат на шаг. 3. Методические указания 3.1. При выполнении работы следует стремиться максимально упростить выражения в операциях присваивания. Для этого следует использовать операции инкремента и декремента, а также операторы «+=», «*=» и т. п. 3.2. Все константы, используемые в программе, должны быть описаны директивами препроцессора #define. 3.3. Для использования функций ввода/вывода printf() и scanf() необходимо включить в программу файл stdio.h директивой #include <stdio.h> 3.4. Все программы должны быть отлажены в пошаговом режиме с выводом информации о значениях переменных в окно отладки 4. Порядок выполнения работы 4.1. Написать программу, выполнявшую арифметические и логические операции над целыми переменными А, В, С, D по вариантам (табл.1.1). Использовать глобальные статические переменные и инициализацию при компиляции. Вывести значения переменных с помощью функции printf() в заданном формате (рис.1.1). Переменные С и D печатать в восьмеричном виде. 4.2. Модифицировать программу, описав переменные как локальные и задав их значения с помощью прямого присваивания. Сравнить результаты с п. 4.1. 4.3. Изменить программу, применив для ввода значений переменных функцию scanf(). Сравнить результаты. 4.4. Описать переменные как автоматические. Вывести их значения до присваивания. Объяснить полученные результаты. 4.5. Повторить п.4.1, разместив все описания в отдельном файле. 4.6. Повторить п.4.1, использовав вместо переменных А, В, С, D статический массив.
Таблица 1.1
Исходные данные: A = 12 B = 8 C = 34 D = 123
Результат: A = 23 B = 334 C = 45 D = 177
Рис.1.1 Пример вывода результатов 5. Содержание отчета.
5.1. Цель работы. 5.2. Задание. 5.3. Тексты программ. 5.4. Полученные результаты. 5.5. Выводы.
6. Контрольные вопросы
6.1. Какие классы памяти существуют в языке СИ? 6.2. Можно ли инициализировать автоматическую переменную? 6.3. Какая операция имеет больший приоритет: «+» или «++»? 6.4. Какая операция имеет больший приоритет: «&&» или «&»? 6.5. В каком случае размерность массива при его описании можно не указывать? 6.6. Какая логическая операция используется для обнуления группы двоичных разрядов? 6.7. Особенности выполнения операции арифметического сдвига вправо. 6.8. Чем определяется область видимости и время жизни переменной? 6.9. Когда при описании переменной надо явно указывать, что она static? auto? Лабораторная работа №2. ОПЕРАТОРЫ IF, IF-ELSE, SWITCH, УСЛОВНАЯ ОПЕРАЦИЯ. 1.Цель работы.
Ознакомиться с основными конструкциями условных операторов языка СИ.
2. Краткие теоретические сведения.
В общем случае условный оператор if в языке СИ записывается в виде
if (выражение) оператор1; else оператор2; или if (выражение) оператор1; Проверяется значение выражения. Если оно не равно 0, выполняется оператор1, в противном случае оператор2. Далее в любом случае выполняется следующий оператор.
Оператор switch имеет вид:
switch (выражение) { case конст1: оператор1; case конст2: оператор2; case констЗ: оператор3; … default: оператор4; } Значение выражения в switch поочередно сравнивается с константами конст1, конст2, конст3. В случае равенства выполняется соответствующий оператор (группа операторов) до конца switch или до оператора break. Если ни одна из констант не равна значению выражения, выполняются операторы, начиная с метки default. Если default отсутствует, не выполняется никаких действий. Условная операция совмещает в себе операций проверки условия и присваивания. Она записывается в виде (выражение)? выражение1: выражение2; Если выражение не равно 0, операция возвращает значение выражения1, иначе выражения2. 3. Методические указания 3.1. Для ввода текстовой строки используйте функцию gets(): char str[50]; gets(str); 3.2. При написании программы цикл следует организовать с помощью операторов if и goto. Операторы циклов применять не следует. Признаком конца строки является символ ‘\0’. 4. Порядок выполнения работы 4.1. Написать программу, выполняющую действия со строкой символов по вариантам (табл.2.1). Для модификации символов использовать условную операцию. Вывести исходную и модифицированную строки. 4.2. Повторить п. 4.1., использовав для реализации п.1 задания оператор if, а для п.2 - конструкцию if-else. Сравнить результаты. 4.3. Повторить п.4.1., применив для выполнения п.2 задания оператор switch. Сравнить результаты.
Таблица 2.1
5. Содержание отчета 5.1. Задание. 5.2. Листинги программ по пп.4.1, 4.2 и 4.3. 5.3. Тестовый пример (исходная и модифицированная строки).
6. Контрольные вопросы 6.1. Пояснить логику работы оператора if – else. 6.2. Какой оператор используется для выхода из оператора switch? 6.3. Для чего используется метка default в операторе switch? 6.4. Реализовать с помощью условной операции функцию x = max(a,b) 6.5. Возможны ли вложенные операторы if? 6.6. Можно ли использовать выражения для задания констант в операторе switch? 6.7. Можно ли в теле оператора switch использовать вложенные операторы switch? 6.8. В каких случаях целесообразно использовать оператор goto? 6.9. Какова структура таблицы ASCII?
Лабораторная работа №3 ЦИКЛИЧЕСКИЕ СТРУКТУРЫ В ЯЗЫКЕ СИ. ОПЕРАТОРЫ FOR, WHIIE, DO-WHILE 1. Цель работы Ознакомиться с правилами оформления и использования операторов цикла в языке СИ
2. Краткие теоретические сведения В языке СИ возможны три основных конструкции операторов цикла. Оператор for имеет вид: for (оператор1; выражение; оператор2) оператор; например: for (i=0; i<=100; i++) a[i]=0; Оператор1 выполняется перед началом цикла (инициализация). Выражение является условием продолжения цикла. Если оно не равно 0, выполняется оператор (тело цикла). Затем выполняется оператор2 (модификация). Процесс повторяется до тех пор, пока выражение не станет равным 0. Оператор whilе имеет вид: while (выражение) оператор; например: while (x > 0) s += a[x]; В этом случае оператор повторяется до тех пор, пока выражение не равно 0 (условие истинно). Проверка условия производится до выполнения оператора. Цикл do-while имеет вид: do оператор; while (выражение); например: do { s[i]=0; i++; } while (i < 5); Такая конструкция отличается от вышеописанной только тем, что значение выражения проверяется после выполнения оператора (тела цикла). Во всех трех конструкциях циклов операторы могут быть составными. Для выхода из цикла до его нормального завершения используется оператор break. Он передает управление оператору, следующему за циклом. Оператор continue вызывает переход к началу цикла, т.е. к следующей итерации. 3. Методические указания В лабораторной работе используются все вышеописанные конструкции циклов. В табл. 3.1. указано, какие из них вы должны использовать при выполнении тех или иных пунктов задания. При написании программы с циклическими алгоритмами рекомендуется использовать фигурные скобки для явного указания тела цикла. Это уменьшает вероятность ошибок и делает понятной структуру программы. При вводе строк используйте функцию gets(), так как функция scanf() воспринимает пробелы в строке как разделители. Вывод строки на экран удобно выполнять функцией puts(). 4. Порядок выполнения работы Написать программу, выполняющую следующие действия: 4.1. Ввести две строки текста с подсказками при вводе; 4.2. Определить и вывести на экран длины строк (без конечного нулевого байта); 4.3. Объединить две строки в одну, удалив все пробелы; 4.4. Выполнить обработку строки (см. табл. 3.1). Обработку прекратить, если количество изменений будет больше четырех; 4.5. Вывести результирующую строку на экран.
Таблица 3.1
ПРИМЕЧАНИЕ: в таблице обозначены: 1 - оператор for; 2 - оператор while; 3 - оператор do-while. 5. Содержание отчета 5.1. Задание. 5.2. Листинг программы. 5.3. Тестовый пример (исходная и измененная строки).
6. Контрольные вопросы 6.1. Написать цикл while, эквивалентный циклу for. 6.2. Изобразить алгоритм работы цикла do-while. 6.3. В какой из трех конструкций циклов гарантируется хотя бы однократное выполнение тела цикла? 6.4. Какой оператор прерывает выполнение цикла? 6.5. Назначение оператора continue. 6.6. Как записать цикл с бесконечным числом повторений (бесконечный цикл) для каждого из операторов цикла? 6.7. Нарисовать блок-схему цикла while. 6.8. Привести пример вложенного цикла. 6.9. Чему равно значение переменной цикла при его нормальном завершении? Прерывании? 6.10. Можно ли в теле цикла менять переменную цикла?
Лабораторная работа № 4
УКАЗАТЕЛИ, ФУНКЦИИ
1. Цель работы Освоить правила написания и использования функций в языке СИ. Научиться использовать указатели при обработке массивов данных.
2. Краткие теоретические сведения
Функции в языке СИ оформляются следующим образом:
/* прототип функции */ long func(int, int, int*);
/ * описание функции * / Тело функции *с=3; // возврат результата по ссылке Main() { ... r = func (i, j, &k); // вызов }
Указатель в СИ – переменная, содержащая адрес другой переменной. Указатели должны быть описаны в виде: int *ip; // указатель на int float *fp; // указатель на float При работе с указателями используются унарные операции * - обращение по адресу; & - получение адреса;
Таким образом, можно записать
int x, *ip; // описания переменных ip=&x; // присвоение адреса *ip=3; // обращение по адресу
Если указателю присвоен адрес элемента массива, его можно использовать так же, как и имя массива. Следующие обращения к третьему элементу массива s полностью эквивалентны:
int s[10], *p; p=s; s[3]=0; // вариант 1 p[3]=0; // вариант 2 *(p+3)=0; // вариант 3 Операции инкремента (++) и декремента (--) изменяют указатель так, что он будет указывать на соседний элемент данных такого же типа. Например, если fp – указатель на float, операция fp++ увеличит fp на 4, т. е. на количество байт, занимаемых элементом типа float. 3. Методические указания. В ходе выполнения лабораторной работы потребуется выполнить сортировку массива строк. Для ускорения этой операции обычно используется дополнительный массив указателей. В этом случае вместо перестановки двух строк с помощью функции strcpy() используется перестановка указателей обычным присваиванием. Формирование массива указателей можно совместить с вводом строк. 4. Порядок выполнения работы 4.1. Написать программу сортировки массива строк по вариантам (табл. 4.2.). Ввод данных, сортировку и вывод результатов оформить в виде функций. Входные и выходные параметры функции сортировки указаны в таблице. Входные и выходные параметры функций для ввода-вывода приведены в таблице 4.1. 4.2. Модифицировать программу п.1., применив в функциях передачу параметров и возврат результатов по ссылке (с использованием указателей). Сравнить результаты.
Таблица 4.1
Таблица 4.2
5. Содержание отчета 5.1. Задание. 5.2. Листинги программ. 5.3. Тестовый пример.
6. Контрольные вопросы 6.1. Правила описания указателей. 6.2. Как связаны указатели и массивы? 6.3. Назначение прототипа функции. 6.4. Структура описания функции. 6.5. Какие операции допустимы с адресами? 6.6. Массивы указателей – описание и использование. 6.7. Привести пример описания двумерного массива. 6.8. Привести пример доступа к элементу двумерного массива через указатель на него.
Лабораторная работа № 5
СТРУКТУРЫ В ЯЗЫКЕ СИ
1. Цель работы Ознакомиться с понятием структур. Научиться использовать структуру для организации простейших баз данных. 2. Краткие теоретические сведения Структура в языке СИ объединяет логически связанные данные разных типов. Состав структуры определяется описанием шаблона: Struct ELEM // имя шаблона { Лабораторная работа № 6.
ИНТЕРФЕЙС С ОПЕРАЦИОННОЙ СИСТЕМОЙ. ФАЙЛОВЫЕ ОПЕРАЦИИ
1. Цель работы. Ознакомиться со стандартными функциями языка СИ, используемыми для организации доступа к файлам. 2. Краткие теоретические сведения. Для каждого из одновременно открытых файлов в программе на языке СИ должны быть описаны указатели на структуру FILE, содержащую информацию о соответствующем файле. Эта структура заполняется операционной системой при открытии файла и используется затем при вызове функций, выполняющих операции чтения - записи. Типовая последовательность действий при файловых операциях может быть следующей: FILE *fp; ... fp=fopen(……); // открыли файл ... fprintf(fp,……); // запись в файл fputs(fp,……); // аналогично ... Fclose(fp); // закрыли файл После закрытия файла указатель fp может быть использован для открытия другого файла. Примеры использования стандартных функций, оперирующих с файлами, приведены ниже. FILE *fp; int x; char buf[30], b; fp=fopen(«ABC.TXT», «rt»); //открыли файл для чтения // fp=NULL – ошибка fscanf(fp, «%d», &x); //считали значение переменной х n=fgets(buf, 30, fp); // считали строку из файла // n=0 – конец файла b=getc(fp); // считали символ //b=EOF – конец файла fprintf(fp, «x=%d», x); // записали значение переменной Fclose(fp); // закрыли файл При написании программ на языке СИ часто используют передачу параметров в программу непосредственно при ее запуске, например: Name input.txt output.txt где name - имя исполняемого файла задачи (name.exe). При этом функция main() должна быть оформлена в виде: main(int argc,char* argv[]) { … При запуске программы с командной строкой параметр argc получает значение, равное количеству параметров в строке (включая имя задачи), а элементы массива argv – адреса строк - параметров. Например, для вышеприведенного примера argс = 3; argv[0] = "name"; argv[1] = "input.txt"; argv[2] = "output.txt"; 3. Методические указания В лабораторной работе требуется написать две программы для обработки текстовых файлов. Одна из них выполняет построчную, другая посимвольную обработку. Ввод параметров должен быть организован в командной строке запуска программы. Исходный файл должен быть создан с помощью любого текстового редактора. При обработке текста рекомендуется использовать функции из стандартной библиотеки СИ для работы со строками, преобразования и анализа символов. 4. Порядок выполнения работы 4.1. Написать программу, обрабатывающую текстовый файл и записывающую обработанные данные в файл с таким же именем, но с другим типом (табл. 6.1) 4.2. Написа<
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-08; просмотров: 550; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.101.250 (0.013 с.) |