Программирование и алгоритмизация
Методическое пособие к выполнению
Домашних работ
для студентов специальностей
140604 – Электропривод и автоматика промышленных установок и технологических комплексов
220301 – Автоматизация технологических процессов и производств
( все формы обучения)
Квалификация (степень) выпускника
Бакалавр
Одобрено редакционно-издательским советом института
Старый Оскол
Год
УДК 004
ББК 32.97
К 593
Рецензент:
Профессор кафедры системотехники Харьковского национального университета радиоэлектроники, к.т.н. С.И. Чайников
Козырь О.Ф. Программирование и алгоритмизация. Методическое пособие к выполнению домашних заданий. Старый Оскол. СТИ МИСиС, 2013г, - 24с.
Методическое пособие по курсу «Программирование и алгоритмизация».
© Козырь О.Ф.
© СТИ МИСиС
Содержание.
Введение……………………………………………………………………….……….
Домашняя работа №1. Решение задач с обработкой строк…………………………
Домашняя работа №2. Решение задач с использованием файлов………………..…
Список рекомендуемой литературы…………………………………………………..
Введение
Настоящий цикл домашних заданий разработан по дисциплине "Программирование и алгоритмизация" для студентов очной, очно-заочной и заочной форм обучения специальностей "Автоматизация технологических процессов и производств" и «Электропривод и автоматика промышленных установок и технологических комплексов». Лабораторные работы проводятся на ПК с использованием средств TurboС V3.0 или BuilderC++ V5.0 (или V6.0) или любого другого транслятора языка С++.
При подготовке к выполнению домашнего задания необходимо ознакомиться с теоретическими материалами, представленными в пособии, а также с материалами лекций, начитанных по теме домашнего задания, и с предложенной литературой. Список предлагаемой литературы представлен в конце данных методических указаний.
Кроме этого целесообразно разобрать и примеры программ для данного класса задач, которые также рассмотрены в данном пособии. Все программы снабжены комментариями и подробными объяснениями. Для выполнения домашних работ разработаны тридцать вариантов индивидуальных заданий. Вариант задания выдается преподавателем в начале семестра или перед выполнением каждой работы.
Тематика домашних работ дополняет материал лабораторных работ и помогает студентам освоить приемы работы с файлами и строками средствами языка С++. Для закрепления изученного материала и самопроверки студентами полученных знаний по каждой теме дается перечень контрольных вопросов.
Общие требования к отчетам по домашним работам таков: отчет должен содержать:
- титульный лист,
- тему выполняемой работы,
- цель и задание,
- текст программы (или несколько текстов программ), снабженный комментариями,
- результаты работы программы (скрин-шот).
Домашняя работа № 1.
РЕШЕНИЕ ЗАДАЧ С ОБРАБОТКОЙ СТРОК
Цель работы
Изучить и освоить методы составления программ на языке С++ с использованием строк.
Подготовка к работе
Необходимо знать основные особенности представления символов и строковых литералов в языке С++ [лекции 10, 14], способы их обработки, основные функции используемые для сравнения, копирования строк, вырезания и поиска подстроки (символа) в строке.
3. Теоретическая часть:
Для представления текстовой информации в языке С++ используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С++ не введено отдельного типа в отличие от некоторых других языков программирования. Строка– это последовательность символов, заключенная в двойные кавычки (" ").
Размещая строку в памяти, транслятор автоматически добавляет в ее конце символ '\0' (нулевой символ или нулевой байт, который является признаком конца строки). В записи строки может быть и один символ: "А" (заключен в двойные кавычки), однако, в отличие от символьной константы 'А' (используются апострофы), длина строки "А"равна 2 байтам.
В языке С++ строка – это пронумерованная последовательность символов (массив символов), она всегда имеет тип char[]. Все символы строки нумеруются, начиная с нуля. Символ конца строки также нумеруется – ему соответствует наибольший из номеров. Таким образом, строка считывается значением типа "массив символов". Количество элементов в таком массиве на 1 больше, чем изображение соответствующей строки, так как в конец строки добавлен нулевой символ '\0' (рис. 1).
Рис. 1. Представление строки и символа
Символьная строка в программном коде может располагаться на нескольких строках. Для переноса используется символ '\' с последующим нажатием клавиши ввод. Символ '\' игнорируется компилятором, и следующая строка считается продолжением предыдущей.
В С++ есть два вида строк:
- С-строки (символьные);
- класс стандартной библиотеки С++ string.
С-строка – это массив символов, завершающийся символом с кодом 0 (нуль-терминатором). Класс string более безопасен в использовании, но и более ресурсоемок, чем С-строки. Исходя из этого, строки можно обрабатывать двумя способами:
- как массив;
- используя строковые функции, описания которых находятся в заголовочном файле string.h (класс cstring).
Каждый из способов имеет свои достоинства и недостатки.
Порядок работы со строкой:
1) Описание строки (выделение памяти);
2) Инициализация (ввод) строки;
3) Обработка строк.
Для каждого из пунктов приведем различные варианты работы со строками, примеры использования команд и описаний строк, объясним, чем они отличаются друг от друга.
Описание строк.
Используется описатель:
char <имя_строки>[<длина>]
Длина динамической строки может быть выражением, не динамической строки – константным выражением (чаще всего константой):
const int len_s = 80;
char s[len_s]; //хранится 79 символов + 0-терминатор
При задании строки необходимо учитывать 0-терминатор.
Для размещения строки в динамической памяти:
char *p = new char[m]; // p – указатель на char
char *q = (char *)malloc(m * sizeof(char));
Инициализация (ввод) строк.
1) явная инициализация:
Строки при описании можно явно инициализировать строковыми константами:
char a[100] = “Строковая константа”;
или инициализировать как массив символов:
char str[10]={‘s’, ‘t’, ‘r’, ‘o’, ‘k’, ‘a’};
При явной инициализации строки ее размерность можно опускать, тогда компилятор сам выделит память, достаточную для размещения вводимой строки:
char a[] = “Строковая константа”; // выделено под 20 символов