Раздел: Задачи / Простейшие /
Использование модулей и заголовочных файлов
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 0.3.
Задача 0.3
Создать модуль (подключаемый файл) с функциями из задачи 0.2. Использовать этот модуль в простой программе, которая генерирует одно слово (набор символов).
В задаче 0.2 я показал вам, как можно программно создавать наборы символов и составлять из них предложения. Как я уже говорил, такие наборы символов могут пригодиться при решении задач по программированию.
Сегодня предлагаю оформить функции, разработанные при решении задачи 0.2, в отдельный модуль (подключаемый файл), чтобы этот модуль можно было использовать в других программах, и не загромождать исходный код этих программ “лишними” строками.
Итак, набор функций (и прочий программный код) можно сохранить в отдельном файле. Такой файл называется модулем в Паскале и подключаемым (заголовочным) файлом в С++. Подробнее о модулях см. здесь, а о подключаемых файлах здесь.
Больше рассказывать особо нечего - просто посмотрите примеры исходных кодов ниже.
ПРИМЕЧАНИЕ
Создать модуль можно из среды разработки. Или просто создать обычный текстовый файл, присвоить ему имя с расширением PAS (в Паскале) или CPP/H (в С++). Более подробно об этом см. по указанным выше ссылкам.
Примеры программ на Паскале и С++.
Модуль unit gensim; {$mode objfpc}{$H+} interface uses Classes, SysUtils; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const MAX_WORDS = 16; //Наибольшее количество слов в предложении MAX_SIMBOLS = 8; //Наибольшее количество символов в слове MIN_SIMBOLS = 1; //Наименьшее количество символов в слове MIN_ASCII = 97; //Наименьшее значение ASCII-кода MAX_ASCII = 122; //Наибольшее значение ASCII-кода //**************************************************************** // ТИПЫ ДАННЫХ //**************************************************************** //Слово type TWordString = string[MAX_SIMBOLS]; //Предложение type TSentenceWords = array[1..MAX_WORDS] of TWordString; //**************************************************************** // ОБЪЯВЛЕНИЕ ФУНКЦИЙ И ПРОЦЕДУР //**************************************************************** function CreateWord : TWordString; function CreateSentence : string; function CreateSentenceWords : TSentenceWords; function WordsToSentence(M : TSentenceWords) : string; procedure ArrayToScreen(M : TSentenceWords); //**************************************************************** // ИСПОЛНЕНИЕ ФУНКЦИЙ И ПРОЦЕДУР //**************************************************************** implementation //**************************************************************** // Создаёт слово //**************************************************************** function CreateWord : TWordString; var i, j, n : byte; str : TWordString; begin str := ''; //Количество букв в слове n := Random(MAX_SIMBOLS) + MIN_SIMBOLS; for i := 1 to n do //Создать слово из случайных символов begin j := MIN_ASCII + Random(MAX_ASCII - MIN_ASCII + 1); str := str + Chr(j); end; Result := str; end; //**************************************************************** // Создаёт предложение (строку) //**************************************************************** function CreateSentence : string; var i, n : byte; str : string; begin str := ''; n := Random(MAX_WORDS) + 1; //Количество слов в предложении for i := 1 to n do //Создать предложение из случайных слов begin if i = 1 then //Первое слово begin str := CreateWord; str[1] := UpCase(str[1]); end else str := str + ' ' + CreateWord; end; Result := str + '.'; end; //**************************************************************** // Создаёт предложение (массив слов) //**************************************************************** function CreateSentenceWords : TSentenceWords; var i, n : byte; str : TSentenceWords; begin for i := 1 to MAX_WORDS do str[i] := ''; n := Random(MAX_WORDS) + 1; //Количество слов в предложении for i := 1 to n do //Создать массив случайных слов str[i] := CreateWord; Result := str; end; //**************************************************************** // Преобразует массив слов в предложение //**************************************************************** function WordsToSentence(M : TSentenceWords) : string; var i : byte; str : string; begin str := ''; for i := 1 to MAX_WORDS do begin if M[i] = '' then Break; if i = 1 then //Первое слово begin str := M[i]; str[1] := UpCase(str[1]); end else str := str + ' ' + M[i]; end; Result := str + '.'; end; //**************************************************************** // Выводит массив слов на экран //**************************************************************** procedure ArrayToScreen(M : TSentenceWords); var i : byte; begin for i := 1 to MAX_WORDS do begin if M[i] = '' then Break; WriteLn(M[i]); end; end; //**************************************************************** // Исполняемый код //**************************************************************** begin Randomize; end. Программа program mytask; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin WriteLn(CreateWord); //Создать и вывести слово WriteLn('The end. Press ENTER...'); ReadLn; end.
Модуль #include <cstdlib> #include <iostream> using namespace std; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const unsigned char MAX_WORDS = 16; //Наибольшее количество слов в предложении const unsigned char MAX_SIMBOLS = 8; //Наибольшее количество символов в слове const unsigned char MIN_SIMBOLS = 1; //Наименьшее количество символов в слове const unsigned char MIN_ASCII = 97; //Наименьшее значение ASCII-кода const unsigned char MAX_ASCII = 122; //Наибольшее значение ASCII-кода //**************************************************************** // ТИПЫ ДАННЫХ //**************************************************************** //Слово typedef string TWordString; //Предложение typedef TWordString TSentenceWords[MAX_WORDS]; //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** TWordString WordString; TSentenceWords WordsArray; //**************************************************************** // ИСПОЛНЕНИЕ ФУНКЦИЙ //**************************************************************** //**************************************************************** // Создаёт слово //**************************************************************** string CreateWord() { unsigned char i, j, n; string str; str = ""; WordString.clear(); n = (rand() % MAX_SIMBOLS) + MIN_SIMBOLS; for (i = 0; i < n; i++) //Создать слово из случайных символов { j = MIN_ASCII + (rand() % (MAX_ASCII - MIN_ASCII + 1)); str = str + char(j); } return(str); } //**************************************************************** // Создаёт предложение (строку) //**************************************************************** string CreateSentence() { int i, n; char chLetter('a'); string str; str = ""; n = (rand() % MAX_WORDS) + 1; for (i = 0; i < n; i++) //Создать предложение из случайных слов { if (0 == i) //Первое слово { str = CreateWord(); chLetter = str[0]; chLetter = chLetter - 32; str[0] = chLetter; } else str = str + " " + CreateWord(); } return(str + "."); } //**************************************************************** // Создаёт предложение (массив слов) //**************************************************************** void CreateSentenceWords() { int i, n; for (i = 0; i < MAX_WORDS; i++) WordsArray[i] = ""; n = (rand() % MAX_WORDS) + 1; for (i = 0; i < MAX_WORDS; i++) //Создать массив случайных слов WordsArray[i] = CreateWord(); return; } //**************************************************************** // Преобразует массив слов в предложение //**************************************************************** string WordsToSentence() { char chLetter('a'); string str; str = ""; for (int i = 0; i < MAX_WORDS; i++) { if ("" == WordsArray[i]) break; if (0 == i) //Первое слово { str = WordsArray[i]; chLetter = str[0]; chLetter = chLetter - 32; str[0] = chLetter; } else str = str + " " + WordsArray[i]; } return(str + "."); } //**************************************************************** // Выводит массив слов на экран //**************************************************************** void ArrayToScreen() { for (int i = 0; i < MAX_WORDS; i++) { if ("" == WordsArray[i]) break; cout << WordsArray[i] << endl; } return; } Заголовочный файл #include "getsim.cpp" //**************************************************************** // ОБЪЯВЛЕНИЕ ФУНКЦИЙ //**************************************************************** string CreateWord(); string CreateSentence(); void CreateSentenceWords(); string WordsToSentence(); void ArrayToScreen(); Программа #include <cstdlib> #include <iostream> #include "getsim.h" #include <ctime> //!!! Подключить этот модуль, //если ругается на srand using namespace std; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** int main(int argc, char *argv[]) { srand(time(0)); //Запустить генератор случайных чисел //Создать и вывести слово cout << CreateWord() << endl; system("PAUSE"); return EXIT_SUCCESS; }
В современном Паскале также вместо модулей можно создавать подключаемые файлы с помощью директив компилятора.
ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги
“Основы программирования” и
“Основы С++”.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |