Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

ПРЕДИСЛОВИЕ. Правила выполнения лабораторных работ. Порядок выполнения отчета по лабораторной работе. Лабораторная работа № 1-2




ПРЕДИСЛОВИЕ

       Методические указания для студентов по выполнению лабораторных работ  адресованы студентам очной, заочной и заочной с элементами дистанционных технологий формы обучения.

       Методические указания созданы в помощь для работы на занятиях, подготовки к лабораторным работам, правильного составления отчетов.

       Приступая к выполнению лабораторной работы, необходимо внимательно прочитать цель работы, ознакомиться с требованиями к уровню подготовки в соответствии с федеральными государственными стандартами (ФГОС), краткими теоретическими сведениями, выполнить задания работы, ответить на контрольные вопросы для закрепления теоретического материала и сделать выводы.

       Отчет о лабораторной работе необходимо выполнить и сдать в срок, установленный преподавателем.

       Наличие положительной оценки по лабораторным работам необходимо для допуска к экзамену, поэтому в случае отсутствия студента на уроке по любой причине или получения неудовлетворительной оценки за лабораторную работунеобходимо найти время для ее выполнения или пересдачи.

 

Правила выполнения лабораторных работ

       1. Студент должен прийти на лабораторное занятие подготовленным к его выполнению.

       2. После проведения лабораторной работы студент должен представить отчет о проделанной работе.

       3. Отчет о проделанной работе следует выполнять в журнале лабораторных работ на листах формата А4 с одной стороны листа.

 

Оценку по лабораторной работе студент получает, если:

- студентом работа выполнена в полном объеме;

- студент может пояснить выполнение любого этапа работы;

- отчет выполнен в соответствии с требованиями к выполнению работы;

- студент отвечает на контрольные вопросы на удовлетворительную оценку и выше.

       Зачет по выполнению лабораторных работ студент получает при условии выполнения всех предусмотренных программой работ после сдачи журнала с отчетами по работам и оценкам.

 

Внимание! Если в процессе подготовки к лабораторным работам или при решении задач возникают вопросы, разрешить которые самостоятельно не удается, необходимо обратиться к преподавателю для получения разъяснений или указаний в дни проведения дополнительных занятий.

Обеспеченность занятия (средства обучения):

1. Учебно-методическая литература:

- Архитектура и проектирование программных систем: монография / С. В. Назаров. — 2-е изд., перераб. и доп. — М. : ИНФРА-М, 2017. — 374 с. — (Научная мысль). — www. dx. doi. org/ 10. 12737/18292.

- Проектирование информационных систем: Учебное пособие / Н. Н. Заботина. - М.: НИЦ ИНФРА-М, 2014. - 331 с.: 60x90 1/16 + ( Доп. мат. znanium. com). - (Высшее образование: Бакалавриат). (переплет) ISBN 978-5-16-004509-2, 100 экз.

- Архитектура ЭВМ и вычислительных систем: учебник / Н. В. Максимов, Т. Л. Партыка, И. И. Попов. — 5-е изд., перераб. и доп. — М. : ФОРУМ: ИНФРА-М, 2017. — 511 с. — (Среднее профессиональное образование).

 

2. Справочная литература:

- справочник по Borland C

3. Технические средства обучения:

- персональный компьютер.

4. Программное обеспечение: Borland C

5. Отчет по выполнению лабораторных работ.

 

Порядок выполнения отчета по лабораторной работе

1. Ознакомиться с теоретическим материалом по лабораторной работе.

2. Записать краткий конспект теоретической части.

3. Выполнить предложенное задание согласно варианту по списку группы.

4. Продемонстрировать результаты выполнения предложенных заданий преподавателю.

5. Записать алгоритм в виде блок-схемы, псевдокода и кода программы в отчет.

6. Ответить на контрольные вопросы.

7. Записать выводы о проделанной работе.

 

 

Лабораторная работа № 1-2

 «Использование символьных строк при разработке программного кода»

Цель работы: закрепление практических навыков при работе с функциями и указателями языка Си, обеспечение функциональной модульности.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен

уметь:

- осуществлять разработку кода программного модуля на современных языках программирования;

- создавать программу по разработанному алгоритму как отдельный модуль.

знать:

       -основные этапы разработки программного обеспечения;

- основные принципы технологии структурного и объектно-ориентированного программирования.

Краткие теоретические и учебно-методические материалы

по теме лабораторной работы

Символьная строка в языке C представляется в памяти как массив символов, в конце которого находится байт с кодом 0 - признак конца строки. Строку, как и любой другой массив можно обрабатывать либо традиционным методом - как массив, с использованием операции индексации, либо через указатели, с использованием операций адресной арифметики. При работе со строкой как с массивом нужно иметь в виду, что длина строки заранее неизвестна, так что циклы должны быть организованы не со счетчиком, а до появления признака конца строки.

Передача параметров может осуществляться по значению и по ссылке. Переменные, в которых сохраняются параметры, передаваемые функции, также являются локальными для этой функции. Эти переменные создаются при вызове функции и в них копируются значения, передаваемые функции в качестве параметров. Эти переменные можно изменять, но все изменения этих переменных будут " забыты" после выхода из функции. Рассмотрим это на примере следующей функции, " меняющей" значения двух переданных ей переменных:

#include< iostream> using namespace std; void swap(int a, int b){int t; t=b; b=a; a=t; }int main(){int p=3, q=5; swap(p, q); cout< < p< < " " < < q< < endl; return 0; }

При вызове функции swap создаются новые переменные a и b, им присваиваются значения 3 и 5. Эти переменные никак не связаны с переменными p и q и их изменение не изменяет значения p и q. Такой способ передачи параметров называется передачей параметров по значению.

Чтобы функция могла изменять значения переменных, объявленных в других функциях, необходимо указать, что передаваемый параметр является не просто константной величиной, а переменной, необходимо передавать значения по ссылке. Для этого функцию swap следовало бы объявить следующим образом:

void swap(int & a, int & b)

Указатель - это переменная, которая содержит адрес некоторого объекта в памяти компьютера. Простейшая операция над указателями - это операция &, что означает " взять адрес". Существует еще одна операция над указателями. Она обозначается символом звездочка *. Смысл этой операции таков: " значение, расположенное по указанному адресу". Хотя знак звездочка * соответствует обычной операции умножения, но никак нельзя перепутать эти две операции. Ведь арифметическая операция умножения имеет два операнда. Иначе говоря, при умножении должны быть указаны, как данные, два числа, участвующие в умножении. Поэтому и говорят, что умножение - это бинарная операция. Операция * над указателями, в отличие от арифметического умножения, - это унарная операция. То есть, другими словами, она использует всего один операнд (одно данное).

 

Пример: Написать программу Функция - substr(s, n, l). Назначение - выделение из строки s подстроки, начиная с позиции n, длиной l.

Определим состав параметров функции:

        int substr (src, dest, num, len); где src - строка, с которой выбираются символы; dest - строка, в которую записываются символы; num - номер первого символа в строке src, с которого начинается подстрока (нумерация символов ведется с 0); len - длина выходной строки. Возможные возвращаемые значения функции установим: 1 (задание параметров правильное) и 0 (задание не правильное). Эти значения при обращениях к функции можно будет интерпретировать как " истина" или " ложь".

Обозначим через Lsrc длину строки src. Тогда возможны такие варианты при задании параметров:

num+len < = Lsrc - полностью правильное задание;

num+len > Lsrc; num < Lsrc - правильное задание, но длина выходной строки буде меньше, чем len;

num > = Lsrc - неправильное задание, выходная строка будет пустой;

num < 0 или len < = 0 - неправильное задание, выходная строка будет пустой.

Программа состоит из одного программного модуля - файл LAB1. C. В состав модуля входят три функции - main, substr_mas и subs_ptr. Общих переменных в программе нет. Макроконстантой N определена максимальная длина строки - 80.

Функция main является главной функцией программы, она предназначена для ввода исходных данных, вызова других функций и вывода результатов. В функции определены переменные:

ss и dd - входная и выходная строки соответственно;

n - номер символа, с которого должна начинаться выходная строка;

l - длина выходной строки.

Функция запрашивает и вводит значение входной строки, номера символа и длины. Далее функция вызывает функцию substr_mas, передавая ей как параметры введенные значения. Если функция substr_mas возвращает 1, выводится на экран входная и выходная строки, если 0 - выводится сообщение об ошибке и входная строка. Потом входная строка делается пустой и то же самое выполняется для функции substr_ptr.

Функция substr_mas выполняет поставленное задание методом массивов. Ее параметры: - src и dest - входная и выходная строки соответственно, представленные в виде массивов неопределенного размера; num и len. Внутренние переменные i и j используются как индексы в массивах.

Если признак конца в первых num символах не найден, выполняется цикл, в котором индекс входного массива начинает меняться от 1, а индекс выходного - от 0. В каждой итерации этого цикла один элемент входного массива пересылается в выходной. Если пересланный элемент является признаком конца строки, то функция немедленно заканчивается, возвращая 1. Если в цикле не встретится конец строки, цикл завершится после len итераций. В этом случае в конец выходной строки записывается признак конца и функция возвращает 1.

Функция substr_ptr выполняет поставленное задание методом указателей. Ее параметры: - src и dest - входная и выходная строки соответственно, представленные в виде указателей на начала строк; num и len.

Если признак конца не найден, выполняется цикл, подобный первому циклу while, но по счетчику len. В каждой итерации этого цикла символ, на который показывает src переписывается по адресу, задаваемому dest, после чего оба указателя увеличиваются на 1. Цикл закончится, когда будет переписано len символов или встретится признак конца строки. В любом варианте завершения цикла по текущему адресу, который содержится в указателе dest, записывается признак конца строки и функция завершается, возвращая 1.

Код программы

/*********************** Файл LAB1. C **************************/

#include < stdio. h>

#define N 80

/***************************************************************/

/*     Функция выделения подстроки (массивы)         */

/***************************************************************/

int substr_mas(char src[N], char dest[N], int num, int len){

int i, j;

/* проверка случая 4 */

if ( (num< 0)||(len< =0) ) {

dest[0]=0; return 0; }

/* выход на num-ый символ */

for (i=0; i< =num; i++)

/* проверка случая 3 */

if ( src[i]=='\0') {

dest[0]=0; return 0; }

/* перезапись символов */

for (i--, j=0; j< len; j++, i++) {

dest[j]=src[i];

/* проверка случая 2 */

if ( dest[j]=='\0') return 1; }

/* запись признака конца в выходную строку */

dest[j]='\0';

return 1; }

/*  Функция выделение подстроки (адресная арифметика) */

/***************************************************************/

int substr_ptr(char *src, char *dest, int num, int len) {

/* проверка случая 4 */

if ( (num< 0)||(len< =0) ) return dest[0]=0;

/* выход на num-ый символ или на конец строки */

while ( num-- & & *src++ );

/* проверка случая 3 */

if (! num ) return dest[0]=0;

/* перезапись символов */

while ( len-- & & *src ) *dest++=*src++;

/* запись признака конца в выходную строку */

*dest=0;

return 1; }

/***************************************************************/

main()

{ char ss[N], dd[N];

int n, l;

clrscr();

printf(" Вводите строку: \n" );

gets(ss);

printf(" начало=" );

scanf(" %d", & n);

printf(" длина=" );

scanf(" %d", & l);

printf(" Массивы: \n" );

if (substr_mas(ss, dd, n, l)) printf(" > > %s< < \n> > %s< < \n", ss, dd);

else printf(" Ошибка! > > %s< < \n", dd);

dd[0]='\0';

printf(" Адресная арифметика: \n" );

if (substr_ptr(ss, dd, n, l)) printf(" > > %s< < \n> > %s< < \n", ss, dd);

else printf(" Ошибка! > > %s< < \n", dd);

getch(); }

Задания для лабораторной работы:

Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка Cи, но не применять их в своей функции. Предусмотреть обработку ошибок в задании параметров и особые случаи. Разработать два варианта заданной функции - используя традиционную обработку массивов и используя адресную арифметику.

1 Функция - Copies(s, s1, n). Назначение - копирование строки s в строку s1 n раз

2 Функция - Words(s). Назначение - подсчет слов в строке s

3 Функция - Concat(s1, s2). Назначение - конкатенация строк s1 и s2

4 Функция - Parse(s, t). Назначение - разделение строки s на две части: до первого вхождения символа t и после него

5 Функция - Center(s1, s2, l). Назначение - центрирование - размещение строки s1 в середине строки s2 длиной l

6 Функция - Delete(s, n, l). Назначение - удаление из строки s подстроки, начиная с позиции n, длиной l

7 Функция - Left(s, l). Назначение - выравнивание строки s по левому краю до длины l.

8 Функция - Right(s, l) Назначение - выравнивание строки s по правому краю до длины l.

9 Функция - Insert(s, s1, n). Назначение - вставка в строку s подстроки s1, начиная с позиции n (аналогичная библиотечная функция есть в Pascal).

10 Функция - Reverse(s). Назначение - изменение порядка символов в строке s на противоположный.

11 Функция - Pos(s, s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr).

12 Функция - LastPos(s, s1). Назначение - поиск последнего вхождения подстроки s1 в строку s.

13 Функция - WordIndex(s, n). Назначение - определение позиции начала в строке s слова с номером n.

14 Функция - WordLength(s, n). Назначение - определение длины слова с номером n в строке s.

15 Функция - SubWord(s, n, l). Назначение - выделение из строки s l слов, начиная со слова с номером n.

16 Функция - WordCmp(s1, s2). Назначение - сравнение строк (с игнорированием множественных пробелов).

17 Функция - StrSpn(s, s1). Назначение - определение длины той части строки s, которая содержит только символы из строки s1.

18 Функция - StrCSpn(s, s1). Назначение - определение длины той части строки s, которая не содержит символы из строки s1.

19 Функция - Overlay(s, s1, n). Назначение - перекрытие части строки s, начиная с позиции n, строкой s1.

20 Функция - Replace(s, s1, s2). Назначение - замена в строке s комбинации символов s1 на s2.

21 Функция - Compress(s, t). Назначение - замена в строке s множественных вхождений символа t на одно.

22 Функция - Trim(s). Назначение - удаление начальных и конечных пробелов в строке s.

23 Функция - StrSet(s, n, l, t). Назначение - установка l символов строки s, начиная с позиции n, в значение t.

23 Функция - Space(s, l). Назначение - доведение строки s до длины l путем вставки пробелов между словами.

24 Функция - Findwords(s, s1). Назначение - поиск вхождения в строку s заданной фразы s1.

25 Функция - StrType(s). Назначение - определение типа строки s.

26 Функция - Compul(s1, s2). Назначение - сравнение строк s1 и та s2 с игнорированием различий в регистрах.

27 Функция - Translate(s, s1, s2). Назначение - перевод в строке s символов, которые входят в алфавит s1, в символы, которые входят в алфавит s2.

28 Функция - Word(s). Назначение - выделение первого слова из строки s.

29 Функция - Strcat(s1, s2). Назначение - конкатенация строк s1 и s2.

30 Функция - StrType(s). Назначение - определение типа строки s (возможные типы - строка букв, десятичное число, 16-ричное число, двоичное число и т. д. ).

31 Функция - StrType(s). Назначение - определение типа строки s, тип - строка букв.

32 Функция - StrType(s). Назначение - определение типа строки s, тип - десятичное число.

33 Функция - StrType(s). Назначение - определение типа строки s, тип - 16-ричное число.

34 Функция - StrType(s). Назначение - определение типа строки s, тип - двоичное число.

35 Функция - Findwords(s, s1). Назначение - поиск вхождения в строку s заданной последовательности слов s1.

Примечание: под " словом" везде понимается последовательность символов, которая не содержит пробелов.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...