Зертханалық сабақтардың жоспарлары


Зертханалық сабақтардың жоспарлары
№1-Зертханалық жұмыс. Қарапайым типтік есептер
Жұмыс мақсаты: Қарапайым типтік есептерді есептеу, тестілеу және шығаруға үйрену. Ереже бойынша, осындай есептің қойылымында оны шешудің алгоритмі анықталған. Осы алгоритмді Pascal және С тілінің негізгі нұсқауларын пайдалана отырып жазу қажет. Бағдарлама жұмысының дұрыстығын тексеру үшін қажетті тестілік мәліметтер көрсетілуі керек.
Зертханалық жұмысты орындаудың әдістемелік ұсыныстар. Тапсырманы орындауда төмендегілерді білу керек:
Pascal тілі бойынша:
ReadLn пернетақтадан алғашқы мәліметтерді енгізу үшін арналған функция;
Write функциясы монитор экранына айнымалылар мәнін шығару мен хабарлауды қамтамасыз етеді;
WriteLn функциясы монитор экранына айнымалылар мәнін шығару мен хабарлауды қамтамасыз етеді, сонымен қоса жана жолға көшіреді;
var – айнымалыларды сипаттау
begin – бағдарламаның басы
end – бағдарламаның соңы
Кез келген бағдарлама Program сөзінен басталады.
uses сөзінен кейін керек дереккорларға(библиотека) қосылуға болады.
С тілі бойынша:
printf функциясы монитор экранына айнымалылар мәнін шығару мен хабарлауды қамтамасыз етеді;
printf функциясының бірінші параметрі; атауы функцияның қалған параметрлері ретінде көрсетілген, айнымалылар мәнін шығару форматы мен шығарылған мәтінді анықтайтын шығару жолы болып табылады
айнымалылар мәнін шығару форматы түрлендіру спецификаторы-% символынан басталатын символдар тізбегінің көмегімен беріледі;
сандық мәндерді шығаруда келесі спецификаторлар жиірек қолданылады: бүтіндерді белгісімен шығару үшін -%і немесе %d, таңбасыз бүтіндерді шығару үшін-%u, жылжымалы нүктесімен берілген сан бөлшектерді шығару үшін-%f, бекітілген нүктелі форматта бөлшектерді шығару үшін-%n.mf, мұндағы n – бүтін бөліктің цифр саны, m – бөлшек бөліктің цифр саны.
Кейбір символдар шығару жолында басқа кәдімгі символдардың тізбегі ретінде ғана орналасуы мүмкін: \n-жаңа жол, \t – табуляция, \” – тырнақша, \\ - символ \ ;
printf функциясымен қатар, мәтінді шығарғаннан кейін курсорды автоматты түрде келесі жолдың басына апаратын, экранға хабарлама шығару үшін puts функциясы қолданылады;
пернетақтадан алғашқы мәліметтерді енгізу үшін scanf функциясы арналған;
scanf функциясының бірінші параметрі болып басқарушы жол табылады, ал қалған параметрлер-мәні енгізілуі тиіс, айнымалылар адресі болады;
басқарушы жол екі жағынан тырнақшаға алынған спецификаторлар тізімі болып есептеледі: таңбасы бар бүтін сандарды енгізу үшін %i; таңбасыз бүтіндерді енгізу үшін %u, бөлшек сандарды енгізу үшін %f, символды енгізу үшін %с, жолды енгізу үшін %s;
scanf функциясының параметрі ретінде айнымалының адресін емес, атын қолдану компилятор таппайтын жаңадан басталған прогроммистердің әдеттегі қатесі болып табылады;
бағдарламаның жұмысы аяқталғаннан кейін, бағдарлама жұмыс істеп тұрған терезе автоматты түрде басқа терезелермен қайтадан жабылып қалмас үшін, бағдарламаның соңына келесі екі нұсқауды қою керек:
printf (“Аяқтау үшін <Enter>” пернесін басыңыз);
getch( );
тестілік мәліметтерді құрылған алгоритмнің барлық тармақтарының жұмысын қадағалауды таңдап алу қажет;
бағдарламалардың орындалу кезіндегі ұсынылған экран түрі:
- зертханалық жұмыстардың атаулары;
- алғашқы деректерді енгізуге шақыру;
- алғашқы деректерді шақыру;
- түсіндірме мәтін және бағдарлама жұмысының нәтижесі.
№1 зертханалық жұмысқа барлығы 4 есеп беріледі. 2 есеп Pascal және 2 есеп С тілінді орындалу керек. Әр студент өз нұсқасымен жұмыс жасайды.
Зертханалық жұмыс тапсырмалары.
1.1 Составить блок-схему и программу вычисления значений функции при заданных значениях аргумента. На языке Pascal
1) 2)
3) 4)
5) 6)
7) 8)
9) 10)
11) 12)
13) 14)
15) 16)
17) 18)
19) 20)
21) 22)
23) 24)
25) 26)
27) 28)
29) 30)
Составить программу вычисления выражения в правой части. Все значения для вычисления ввести с клавиатуры. На языке Pascal
Y=
Y=
Y=
Y=
Y=
Y=
Y=
Y=
Y=
Y=)
Y=
Y=
Y=
Y=
Y=
1.3 Тұрақты және енгізетін аргументер берілген y функциясының мәнін есептейтін бағдарлама құру. С тіліде

варианта Арифметическое выражение Входные переменные Константы (const)
1 a, b c
2 x, z a
3 x, z a
4 a, b c
5 x, z a
6 a, b x
7 x, z a
8 x, z b
9 a, b x
10 a, b x
11 x, z a
12 x, z b
13 x, z b
14 x, z b
15 x, z a
16 a, b x
17 x, z b
18 a, b x
19 a, b x
20 x, z a
21 x, z a
22 x, z a
23 a, b x
24 a, b c
25 a, b x
26 a, b x
27 a, b x
28 x, z a
29 a, b c
30 x, z a
1.4 х аргументі берілген y=f(x) функциясының мәнін есептейтін С тіліде бағдарлама құру.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Әдебиет: 4 нег.[53-67] 3 қос.[19-20].
Бақылау сұрақтары.
1. Айнымалы мәнінің форматтық шығаруы қалай беріледі?
2. Шығарудың ең жиі қолданылатын спецификаторын көрсетіңіз.
3. С және Pascal тіліндегі бағдарламаның құрылымы қандай?
№2 Зертханалық жұмыс. Тармақталған алгоритмді бағдарламалау
Жұмыстың мақсаты: Тармақталған алгоритмді бағдарламалауды үйрену
Зертханалық жұмысты орындаудың әдістемелік ұсыныстар. Шартты оператор есептеу процесінің тармақталу құралы болып табылады.
Шартты оператордың құрылымы келесі көрініске ие:
IF <шарт> <оператор1>;
ELSE <оператор2>;
Шартты оператор келесі алгоритм бойынша орындалады. Алғашында <шарт> орындалады. Егер нәтиже TRUE (АҚИҚАТ) болса, онда <оператор1> орындалады, ал <оператор2> қарастырылмайды; егер нәтиже FALSE (ЖАЛҒАН) болса, онда керісінше, <оператор1> қарастырылмайды, ал <оператор1> орындалады. Егер шартты оператордың бір бөлігінде else сөзінен басталатын сөз болмаса, онда, шарттан кейін тұрған операторға басқару беріледі
Зертханалық жұмыс тапсырмалары. Берілген аргументінің мәні бойынша функцияны есептеудің блок-схема түріндегі алгоритмін және бағдарламасын құру. Функциясының мәні шартты оператор көмегімен есептелінеді.
Тапсырма нұсқалары:
2.1
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30
2.2 Составить программу решения задачи, используя оператор выбора
Определить время года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
Определить квартал текущего года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
Вводится ответ на вопрос "Язык общения? русский (р) / английский (а)". Если введено "р", то вывести "Привет!", если введено "а", то вывести "Hello!". В остальных случаях вывести "Повторите ввод".
Вводится ответ на вопрос "Продолжить работу? да (1) / нет (0)". Если введено "1", то вывести "Я готов к работе", если введено "0", то вывести "Работа завершена".
Вводится целое число. Если введено "1", то вывести "понедельник". Если введено "2", то вывести "вторник" и т.д. В остальных случаях - "Повторите попытку ввода".
Вводится целое число от 2 до 5. Если введено "2", то вывести "неудовлетворительно". Если введено "3", то вывести "удовлетворительно" и т.д. В остальных случаях - "Такой оценки не существует".
Вводится символ. Если этот символ равен "***", то вывести "Осадки в виде снега". Если - ":::", то - "Осадки в виде дождя". В остальных случаях - "Безоблачно".
Ввести целое число. Если введено "0", то вывести "незачет", если введено "1", то вывести "зачет". В остальных случаях вывести "Повторите ввод".
По вводимому номеру вывести название ноты: 1-"до", 2-"ре", 3-"ми", 4-"фа", 5-"соль", 6-"ля", 7-"си". В остальных случаях - "Нота не определена".
По вводимому номеру вывести название цвета: 1-"красный", 2-"оранжевый", 3-"желтый", 4-"зеленый", 5-"голубой", 6-"синий", 7-"фиолетовый". В остальных случаях - "Цвет не определен".
По вводимому номеру вывести название времени года: 1-"зима", 2-"весна", 3-"лето", 4-"осень". В остальных случаях - "Время года не определено".
Вывести название месяца, если вводится его номер. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
Вводится целое число от 1 до 10. Если введено "1", то вывести "Средний возраст учеников - 7 лет". Если введено "2", то вывести "Средний возраст учеников - 8 лет" и т.д.
Даны два числа. Ввести целое число n. Если n=1, то найти минимум этих двух чисел. Если n=2, то найти максимум этих чисел. В остальных случаях повторить ввод n.
Вводится символ. Если этот символ равен "я", то вывести "январь". Если - "ф", то - "февраль". Если - "д", то - "декабрь". В остальных случаях - "Зимний месяц не определен".
Вводится символ. Если этот символ равен "с", то вывести "сентябрь". Если - "о", то - "октябрь". Если - "н", то - "ноябрь". В остальных случаях - "Осенний месяц не определен".
Вводится целое число n (1n5), выводится n звездочек (*). В остальных случаях повторить ввод n.
По вводимому значению n (1n5) вывести наименование геометрической фигуры 1-"точка", 2-"прямая", 3-"треугольник", 4-"квадрат", 5-"пентагон". В остальных случаях повторить ввод n.
По вводимому номеру вывести название дня недели 1-"понедельник", 2-"вторник", 3-"среда", 4-"четверг", 5-"пятница", 6-"суббота", 7-"воскресенье". В остальных случаях повторить попытку ввода.
По вводимому номеру вывести наименование пальцев руки 1-"мизинец", 2-"безымянный", 3-"средний", 4-"указательный", 5-"большой". В остальных случаях повторить попытку ввода.
По вводимому номеру вывести результаты спортивных соревнований 1-"золотая медаль", 2-"серебряная медаль", 3-"бронзовая медаль", 4-"утешительный приз". В остальных случаях повторить попытку ввода.
По вводимому номеру вывести наименование типов темперамента 1-"сангвиник", 2-"флегматик", 3-"меланхолик", 4-"холерик". В остальных случаях повторить попытку ввода.
По вводимому номеру вывести наименование пяти чувств 1-"зрение", 2-"слух", 3-"обоняние", 4-"осязание", 5-"вкус". В остальных случаях повторить попытку ввода.
В зависимости от количества участников вывести название музыкальных ансамблей 1-"соло", 2-"дуэт", 3-"трио", 4-"квартет", 5-"квинтет", 6-"сикстет", 7-"октет". В остальных случаях повторить попытку ввода.
По вводимому номеру вывести наименование одного из институтов КазНТУ. В остальных случаях повторить попытку ввода.
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Если пользователь укажет недопустимый номер, то повторить попытку ввода.
Написать программу, которая подводит итоги экзамена. При вводе кода 0 вывести "неявка"; 1 - "неудовлетворительно"; 2,3,4 -"удовлетворительно"; 5,6,7 - "хорошо"; 8,9 -"отлично"; 10 -"не допущен". В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.
Введите количество посадочных мест. Напечатайте соответствующий этому количеству вид транспорта: «велосипед», «мотоцикл», «легковой автомобиль», «микроавтобус», «автобус».
Составьте программу, которая выводит на экран различные приветствия в зависимости от введенного времени. Договоримся, что утро длится с 8 до 12 часов, день – с 12 до 17 часов, вечер – с 17 до 23 часов и ночь – все остальное время. Задачу решить двумя способами: с помощью условного оператора и оператора выбора.

Әдебиет: 4 нег. [88-114], 3 қос. [120-132].
Бақылау сұрақтары.
1.if өрнектің сандық мәнін тексеретін болғандықтан, шартты кейде қысқартылған түрде жазуға болады. Осындай жазбалардың мысалын келтіріңіз.
2.if – конструкциясының бір-біріне қойылуынан мәнсіздіктің болуының әртүрлі тәсілдерін көрсетіңіз.
3.switch нұсқауында аталған case және default сөздерімен орналасқан тармақтардың реті қандай?
4. Шарт ретінде логикалық өрнектерді қолдану
№3 Зертханалық жұмыс. Қайталау алгоритмдерін бағдарламалау. Бір өлшемді массив типіндегі мәліметтермен жұмыс
Жұмыстың мақсаты: Циклдік құрылымдағы алгоритмдерді бағдарламалауды және есепті шешуде бір өлшемді массив типті мәліметтер құрылымын қолданып бағдарламалауды үйрену.
Зертханалық жұмысты орындаудың әдістемелік ұсыныстар. С тілінде 3 түрлі қайталау операторлары бар. Олардың көмегімен циклдік құрылымдағы алгоритмдерді бағдарламалауға болады. Олар туралы нақты мәліметтер осы оқу әдістемелік кешеннің бесінші дәрісінде анық көрсетілген және мысалдар келтірілген.
Массивтер – бұл бірдей типтегі элементтер жиыны (double, float, int ). Массивті жариялағанда компилятор массив элементтерінің типі және олардың саны туралы ақпарат алуы керек. Массив сипатталуының түрі:
спецификатор-тип сипаттаушы [константа - өрнек];
Сипаттаушы - массив идентификаторы.
Спецификатор-тип массивтің элементтерінің типі.
Константа-өрнек массив элементтерінің саны.
С тілінде массивтің бірінші элементінің индексі 0-ге тең.
Зертханалық жұмыс тапсырмалары. Бір өлшемді массивтерді өңдеу тапсырмаларын шешетін блок-схема түріндегі алгоритм мен бағдарлама құру. Төменде көрсетілген тапсырмаларды бағдарламалауда циклдік операторлардың әр түрін қолдану ұсынылады.
Тапсырма нұсқалары:
3.1
Дано вещественное число А и массив Х(10). Определить номер элемента, равного А. Если такого члена нет, то ответом должен быть 0.
Вывести на печать первый отрицательный элемент массива Х(10) и его порядковый номер.
Переписать положительные элементы массива Y(10) подряд в массив Z.
Разделить последовательность А(10) на два массива, записать в один из них элементы с четными номерами, а в другой - с нечетными.
Вычислить сумму положительных элементов массива Z(10).
Для целочисленного массива Х(9) найти произведение его элементов с четными индексами и выяснить является ли оно нечетным числом.
Вычислить среднее арифметическое положительных элементов массива Y(10), имеющих нечетные индексы. Если таких элементов нет, то вывести на печать признак “0”.
Найти количество положительных чисел вещественного вектора Y(10).
Вычислить Z(j)=A(j)+B(j), где
А(j)=j, если j- нечетные иА(j)=j/2, если j- четные;
В(j)=j, если j- нечетныеиВ(j)=j, если j - четные.
Для целочисленного массива Х(10) найти сумму его элементов, выяснить является ли результат четным числом.
Записать “1” вместо положительных элементов массива Х(12) и “0” - вместо отрицательных.
Дан массив Х(10). Все числа меньше 2 заменить “0” и вывести на печать их количество и порядковые номера.
Дан целочисленный массив А(10), получить последовательность В(10), которая отличается от исходной тем, что все нечетные элементы удвоены.
Найти произведение положительных элементов вектора А(15).
Вывести на экран отрицательные элементы массива Х(10).
Даны массивы А(10) и В(10). Получить вектор Z(10), где Z(j)=A(j)-B(j).
Вычислить произведение отрицательных элементов массива Z(10).
Записать в массив А(15) первые 5 элементов “0”, затем 5 элементов “2” и последние 5 - “3”.
Переписать массив А(10) в массив В(10) так, чтобы последний элемент стал первым, предпоследний - вторым и т.д.
Удвоить все элементы целочисленного вектора А(10), являющиеся четными числами и утроить все оставшиеся.
В массиве А(15) определить количество элементов, равных 5.
Найти количество нулевых элементов в массиве В(12).
Даны два вектора А(10) и В(10). Вычислить суммы и разности соответствующих элементов массивов. Результаты поместить в два вектора X(10) и Y(10).
В массиве C(13) определить количество элементов, равных 13.
В массиве X(11) определить количество элементов, меньших 5.
Вычислить сумму отрицательных элементов массива Z(10).
Вычислить произведение отрицательных элементов массива А(10).
Вычислить среднее арифметическое отрицательных элементов массива Y(10)
Найти количество неотрицательных элементов вектора В(12).
Даны два вектора А(10) и В(10). Вычислить произведение соответствующих элементов массивов. Результат поместить в вектор X(10).
3.2
Найти наибольший отрицательный элемент среди элементов массива А(10), имеющих четные номера.
Найти наибольшее значение функции Z=Ax+Bx+C в интервале изменения аргумента Х от 1 до 7 с шагом 0,5. Значения функции записать в массив В.
Даны два массива Х(10) и Y(10). Найти среднее арифметическое i-ых элементов (i= 1,10) и записать их в массив Z. Среди элементов массива Z найти наибольший.
Найти наименьшее значение функции Y=Sin(X2 + 5X)Cos(3X-X) в интервале изменения аргумента Х от 0 до 8 с шагом 0.4. Значение функции записать в массив А.
Найти наименьший положительный элемент среди элементов массива Х(10), имеющих нечетные номера.
Найти наибольшее значение Х(I)+Y(I) для массивов Х, Y.
Среди элементов массива А(10) найти наибольший.
Найти наименьший из положительных элементов массива А(10).
Найти наименьший положительный элемент среди элементов с четными номерами в массиве А(10).
Даны четыре массива размерностью 5. Найти суммы элементов в каждом массиве и запомнить их в массиве Z. Среди сумм определить наибольшую.
Даны три массива размерностью 6. Найти суммы положительных элементов каждого массива, запомнить их в массиве А и найти среди них наименьшую.
Дан массив Х(20) и число А. среди элементов массива Х, расположенных до элемента А найти наибольший, а после него - наименьший. Если элемента А в массиве нет, выдать об этом сообщение.
Даны два одномерных массива А(10) и В(10). Получить массив С(10), элемент которого равен произведению соответствующих элементов массивов А и В. Среди элементов массива С найти наименьший.
В векторе Х(10) заменить нулем все отрицательные элементы, предшествующие его наибольшему элементу.
Среди четных номеров элементов массива В(10) найти наибольший. Элементы с нечетным номером обнулить.
В одномерном массиве С(20) просуммировать первый элемент с последним, второй с предпоследним и т.д. Результат записать в массив В(10) и в нем найти наибольший элемент.
Все элементы массива А(10), являющиеся четным числом, удвоить, а нечетным - возвести в квадрат. В полученном массиве найти наименьший элемент.
Из массива А(10) четные положительные числа записать в массив Х подряд. В новом массиве найти наименьший элемент.
Даны два одномерных массива. Найти суммы их элементов с четными номерами и среди сумм определить наибольшую.
Найти наименьший элемент среди элементов массива В(30), имеющих номера элементов кратные 3.
Среди элементов массива В(10) найти наименьший.
В массиве С(12) все элементы, стоящие до наибольшего обнулить.
В массиве С(9) все элементы, стоящие после наименьшего обнулить.
Найти наибольший среди элементов массива А(10), остальные обнулить.
Среди элементов массива В(10) найти наименьший положительный.
Наибольший элемент массива Х(12) удвоить, остальным элементам присвоить значение 1.
Поменять местами наибольший и наименьший элементы вектора А(10).
Все элементы массива А(10), являющиеся положительным числом, удвоить, а отрицательным - возвести в квадрат. В полученном массиве найти наименьший элемент.
Поменять местами наибольший отрицательный и наименьший положительный элементы вектора А(10).
Дан вектор Х(10). Найти количество элементов, стоящих после максимального по значению элемента.
Әдебиет: 4 нег. [137-163], 3 қос. [133-135].
Әдебиет: 4 нег. [247-306], 3 қос.[21-24] .
Бақылау сұрақтары.
for операторының орындалуы
while операторы
do while операторы
Бір өлшемді массив дегеніміз не?
Бір өлшемді массив элементіне қатынас жасау тәсілі.
Бір өлшемді массивте инициализация қалай жүзеге асады?
Енгізу-шығару нұсқаулары және бір өлшемді массивтерді өңдеу.
№4 Зертханалық жұмыс. Екі өлшемді массив типіндегі мәліметтермен жұмыс
Жұмыстың мақсаты: Есепті шешуде екі өлшемді массив типті мәліметтер құрылымын қолданып бағдарламалауды үйрену.
Зертханалық жұмысты орындаудың әдістемелік ұсыныстар.
Массивтер – бұл бірдей типтегі элементтер жиыны (double, float, int ). Массивті жариялағанда компилятор массив элементтерінің типі және олардың саны туралы ақпарат алуы керек. Массив сипатталуының түрі:
спецификатор-тип сипаттаушы [константа - өрнек][константа - өрнек];
Сипаттаушы - массив идентификаторы.
Спецификатор-тип массивтің элементтерінің типі.
Константа-өрнек массив элементтерінің саны.
С тілінде массивтің бірінші элементінің индексі 0-ге тең.
Зертханалық жұмыс тапсырмалары.
Екі өлшемді массивті қолданатын есепті шешуге арналған блок схема түріндегі алгоритмді және бағдарламаны құру. Тапсырманы бағдарламалауда массивті өңдейтін циклдік операторлардың әртүрін қолдану жоспарланады.
Тапсырма нұсқалары:
4.1
1. Дана целочисленная прямоугольная матрица. Определить:
1) количество столбцов, содержащих хотя бы один нулевой элемент;
2)номер строки, в которой находится самая длинная серия одинаковых элементов.
2. Дана целочисленная квадратная матрица. Определить:
произведение элементов в тех строках, которые не содержат отрицательных элементов;
максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
3. Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
4. Дана целочисленная прямоугольная матрица. Определить:
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
номера строк и столбцов всех седловых точек матрицы.
ПРИМЕЧАНИЕ:
Матрица А имеет седловую точку Аij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце.
5. Для заданной матрицы размером 8 на 8:
1) найти такие k, что k-я строка матрицы совпадает с k-м столбцом;
2) найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
6. Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов.
1) переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик;
2) найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
7. Соседями элемента Аij в матрице назовем элементы Аi-1,j-1. Аi-1,j, Аi-1,j+1, Аi,j-1, Аi,j+1, Аi+1,j-1. Аi+1,j, Аi+1,j+1Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.
1) построить результат сглаживания заданной вещественной матрицы размером 10 на 10 ;2) в сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
8. Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей.
1)подсчитать количество локальных минимумов заданной матрицы размером 10 на 10;
2) найти сумму модулей элементов, расположенных выше главной диагонали.
9. Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы.
1) с помощью допустимых преобразований привести систему к треугольному виду;
2) найти количество строк, среднее арифметическое элементов которых меньше заданной величины.
10. Дана действительная квадратная матрица порядка n.
1) уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями;
2) найти номер первой из строк, содержащих хотя бы один положительный элемент.
11. Дана действительная квадратная матрица порядка n.
1) осуществить циклический сдвиг элементов прямоугольной матрицы на п элементов вправо или вниз (в зависимости от введенного режима). n может быть больше количества элементов в строке или столбце;
2) найти номер последней из строк, содержащих хотя бы один ненулевой элемент.
12. Дана действительная квадратная матрица порядка n.
1) осуществить циклический сдвиг элементов квадратной матрицы размерности МхN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично;2) найти сумму положительных элементов нечетных строк.
13. Дана целочисленная прямоугольная матрица.
1) определить номер первого из столбцов, содержащих хотя бы один нулевой элемент;
2) характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.
14. Дана целочисленная прямоугольная матрица.
1) упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.
2) найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
15. Дана квадратная вещественная матрица.
1)путем перестановки элементов матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине - в позиции (2,2),
следующий по величине - в позиции (3,3) и т. д., заполнив таким образом всю главную диагональ.
2) найти номер первой из строк, не содержащих ни одного положительного элемента.
16. Дана целочисленная прямоугольная матрица. Определить:
количество строк, содержащих хотя бы один нулевой элемент;
номер столбца, в которой находится самая длинная серия одинаковых элементов.
17. Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех строках, которые не содержат отрицательных элементов;
минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
18. Дана целочисленная прямоугольная матрица. Определить:
1)количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент;
2)номера строк и столбцов всех седловых точек матрицы.
4.2
Характерные приемы программирования при работе с матрицей
В матрице А(3,5) найти количество элементов, значения которых принадлежат промежутку (2,7)
Найти сумму положительных элементов матрицы А(3,5).
В матрице А(3,3) найти количество нулевых элементов.
В матрице С(3,5) найти произведение положительных элементов.
В матрице А(4,3) необходимо определить количество элементов, больших 1.
Найти среднее арифметическое элементов матрицы В(3,3) .
Найти количество отрицательных элементов матрицы Х(4,4).
Найти сумму отрицательных элементов матрицы Х(3,3).
Вычислить количество нулей и количество единиц в матрице А(3,4).
Определить номер первого нулевого элемента матрицы А(5,6).
Дана матрица А(5,5). Найти сумму положительных и количество нулевых элементов матрицы.
В целочисленной матрице А(3,4) посчитать количество элементов, значение которых равно 3. Если таких элементов нет, то вывести об этом сообщение.
Дана матрица А(4,3). Переписать все ее элементы в вектор В.
Из матрицы В(4,4) все положительные элементы записать в вектор С.
В матрице А(3,5) найти среднее арифметическое элементов, значения которых принадлежат промежутку (1,5).
Найти среднее арифметическое положительных элементов матрицы В(5,5).
Дана матрица А(4,3). Найти количество элементов, равных 5.
Найти произведение отрицательных элементов матрицы Х(3,3).
Найти среднее арифметическое отрицательных элементов матрицы С(4,4).
В матрице Х(3,4) все элементы 3 Хi 7 просуммировать, а элементы 1 Хi 2 перемножить.
Матрица А(5,5) делится на две части столбцом 3. Найти сумму каждой части.
Матрица А(5,5) делится на две части строкой 3. Найти сумму каждой части.
Дана матрица А(5,5). Найти сумму положительных, произведение отрицательных и количество нулевых элементов матрицы.
В матрице А(3,5) найти сумму элементов, значения которых принадлежат промежутку (0,5).
В матрице В(4,5) найти произведение элементов, значения которых принадлежат промежутку [1,3].
Из матрицы В(4,4) все отрицательные элементы записать в вектор С.
Матрица А(5,5) делится на две части третьим столбцом. Найти среднее геометрическое сумм элементов каждой части.
В целочисленной матрице А(3,4) посчитать количество элементов, значение которых меньше 3.
В целочисленной матрице А(3,4) посчитать количество четных по значению элементов.
В целочисленной матрице А(4,4) посчитать количество нечетных по значению элементов.
4.3 Программирование алгоритмов работы с частями матрицы
Дана матрица А(5,5) . Все элементы ниже главной диагонали обнулить, выше - заменить на“3”, а элементы главной диагонали заменить на “7”.
Найти произведение элементов главной диагонали матрицы Х(5,5).
Найти количество положительных элементов, расположенных ниже главной диагонали матрицы Y(5,5).
Переписать элементы главной диагонали матрицы В(5,5) в вектор X(5).
Вычислить произведение отрицательных элементов матрицы А(5,5), расположенных ниже главной диагонали.
Найти количество нулевых элементов матрицы В(4,4), расположенных выше главной диагонали.
Дана действительная квадратная матрица D(4,4). Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.
Вычислить среднее арифметическое элементов матрицы А(5,5), расположенных выше главной диагонали.
Вычислить среднее арифметическое элементов матрицы А(5,5), расположенных ниже главной диагонали.
Найти сумму элементов главной диагонали матрицы Х(5,5).
Найти произведение положительных элементов главной диагонали матрицы Х(5,5).
Найти произведение элементов побочной диагонали матрицы Х(6,6).
Найти сумму элементов побочной диагонали матрицы Х(5,5).
Переписать элементы побочной диагонали матрицы В(5,5) в вектор X(5).
Дана матрица А(5,5). Сформировать вектор из элементов, расположенных выше главной диагонали.
Дана матрица А(5,5). Сформировать вектор из элементов, расположенных ниже главной диагонали.
Дана матрица А(5,5). Найти максимальный по значению элемент среди элементов главной диагонали.
Вычислить сумму отрицательных элементов матрицы А(5,5), расположенных ниже главной диагонали.
Вычислить произведение положительных элементов матрицы Х(6,6), расположенных ниже главной диагонали.
Дана матрица В(5,5). Найти количество элементов, больших 5, среди элементов главной диагонали.
Дана матрица С(6,6). Найти количество элементов, меньших 5, среди элементов побочной диагонали.
Вычислить сумму положительных элементов матрицы Х(6,6), расположенных ниже главной диагонали.
Вычислить сумму положительных элементов матрицы А(5,5), расположенных выше главной диагонали.
Матрица А(5,5) делится на две части главной диагональю. Найти среднее геометрическое сумм элементов каждой части.
Матрица А(5,5) делится на две части побочной диагональю. Найти среднее арифметическое сумм элементов каждой части.
Вычислить сумму отрицательных элементов матрицы Х(6,6), расположенных выше главной диагонали.
Вычислить сумму отрицательных элементов матрицы А(5,5), расположенных выше главной диагонали.
Найти количество неотрицательных элементов главной диагонали матрицы Х(5,5).
Найти количество неотрицательных элементов побочной диагонали матрицы А(6,6).
Найти количество нулевых элементов матрицы В(4,4), расположенных ниже главной диагонали.
4.4
Программирование алгоритмов работы со строками и столбцами матрицы
Найти сумму элементов каждой строки матрицы А(5,5). Результат записать в вектор S(5).
Найти сумму элементов каждого столбца матрицы А(5,5). Результат записать в вектор S(5).
Найти количество отрицательных элементов каждого столбца матрицы Х(5,6). Результат записать в вектор К(6).
Найти количество положительных элементов каждого столбца матрицы В(5,6). Результат записать в вектор К(6).
Найти количество отрицательных элементов каждой строки матрицы Х(6,5). Результат записать в вектор К(6).
Дана матрица А(5,6). Найти сумму положительных элементов каждого четного столбца и произведение отрицательных элементов каждого нечетного столбца.
Найти среднее арифметическое элементов каждого столбца матрицы Х(3,4). Результат записать в вектор SA(4).
Найти среднее арифметическое элементов каждой строки матрицы Х(4,4). Результат записать в вектор SA(4).
Найти произведение элементов каждой строки матрицы А(5,5). Результат записать в вектор Р(5).
Найти произведение элементов каждого столбца матрицы А(5,5). Результат записать в вектор Р(5).
Дана матрица А(5,5) Найти такое К (1 К 5), чтобы элементы К-ой строки совпадали с элементами К-ого столбца.
Дана квадратная матрица порядка n. Исключить из нее строку и столбец, на пересечении которых расположен максимальный элемент главной диагонали.
Дана матрица С(5,6) в строках с отрицательным элементом на главной диагонали найти сумму всех элементов. Если на главной диагонали отрицательных элементов нет, то выдать об этом сообщение.
Найти произведение положительных элементов каждой строки матрицы А(6,5). Результат записать в вектор Р(6).
Найти произведение положительных элементов каждого столбца матрицы А(5,5). Результат записать в вектор Р(5).
Дана матрица С(5,6) в строках с положительным элементом на побочной диагонали найти сумму всех элементов. Если на побочной диагонали положительных элементов нет, то выдать об этом сообщение.
Дана матрица А(5,5) в столбцах с отрицательным элементом на главной диагонали найти сумму всех элементов. Если на главной диагонали отрицательных элементов нет, то выдать об этом сообщение.
Дана целочисленная матрица М(5,4), найти номера строк, все элементы которых равны. Если таких строк нет, то выдать об этом сообщение.
Дана квадратная матрица порядка n. Исключить из нее строку и столбец, на пересечении которых расположен минимальный элемент главной диагонали.
Найти среднее арифметическое положительных элементов каждого столбца матрицы Х(3,5). Результат записать в вектор SA(5).
Найти среднее арифметическое положительных элементов каждой строки матрицы Х(4,5). Результат записать в вектор SA(4).
Найти среднее арифметическое отрицательных элементов каждого столбца матрицы Х(3,4). Результат записать в вектор SA(4).
Найти среднее арифметическое отрицательных элементов каждой строки матрицы Х(4,4). Результат записать в вектор SA(4).
Найти количество неотрицательных элементов каждой строки матрицы Х(6,5). Результат записать в вектор К(6).
Найти среднее арифметическое неотрицательных элементов каждой строки матрицы А(5,5). Результат записать в вектор SA(5).
Дана матрица В(5,4), упорядочить элементы каждой строки матрицы по возрастанию.
Дана целочисленная матрица М(5,4), найти номера столбцов, все элементы которых равны. Если таких столбцов нет, то выдать об этом сообщение.
Дана матрица В(5,5), упорядочить элементы каждого столбца матрицы по возрастанию.
Найти количество нулевых элементов каждой строки матрицы Х(6,5). Результат записать в вектор К(6).
Найти количество нулевых элементов каждого столбца матрицы Х(5,6). Результат записать в вектор К(6).
Әдебиет: 4 нег. [247-306], 3 қос.[21-24] .
Бақылау сұрақтары.
Екі өлшемді массив дегеніміз не?
Екі өлшемді массив элементіне қатынас жасау тәсілі.
Екі өлшемді массивте инициализация қалай жүзеге асады?
Енгізу-шығару нұсқаулары және екі өлшемді массивтерді өңдеу.
№5 Зертханалық жұмыс. Символдық мәліметтермен жұмыс
Жұмыстың мақсаты: С тілінің стандартты функциясын қолданумен символдық ақпараттарды, мәтіндерді өңдеу.
Зертханалық жұмысты орындаудың әдістемелік ұсыныстар. Жолдармен жұмыс істейтін функциялар:
- strcat
Синтаксисі: char *strcat (char * Жол1, const char* Жол2 )
Жол1 және Жол2 жолдарын біріктіреді және нәтижені Жол1-ге жолға жазады.
- strcpyСинтаксисі: char* strcpy (char*Жол1,const char* Жол 2)
Жол1 жолын Жол2 жолына көшіреді.
- strlenСинтаксисі: int strlen (const char* Жол)
Жолдың ұзындығын қайтарады. Нөлдік символ ескерілмейді.
- strcmpСинтаксисі: int strcmp (const char* Жол1,const char* Жол2)
Жол1 мен Жол2 жолдарын салыстырады. Егер жолдар тең болса, 0-ді қайтарады, егер Жол1< Жол2 болса, сан нөлден кіші, егер Жол1> Жол2 болса, сан нөлден үлкен.
- strlwrСинтаксисі: char* strlwr (char* Жол)
Жолдың кіші әріптерін үлкен әріптерге түрлендіреді (тек латын алфавитінің өңдейді).
- struprСинтаксисі:char * strupr (char* Жол)
Жолдың үлкен әріптерін кіші әріптерге түрлендіреді (тек латын алфавитінің өңдейді). – strset Синтаксисі: char*strset (char*Жол, char Жол)
Функцияны шақырады жолды көрсетілген символмен толтырады.
- strchr
Синтаксисі: char*strchr (const char*Жол, int Жол)
Жолда символды іздеуді орындайды және көрсеткішті бірінші табылған символға немесе егер символ табылмаса – NULL қайтарады.
- strtokСинтаксисі:char*strtok (char*Жол, const char*Бөлгіштер_ Жол)
Адрестелген Жол жолды Бөлгіштер_Жолын көрсететін, әрқайсысы жолдың символдарымен анықталатын лексем тізбектеріне бөледі. Бірінші шақыруда strtok функциясы бірінші аргумент ретінде Жол мәніне ие болады, келесі барлық шақыруларда бірінші параметр ретінде нөлінші көрсеткіш, яғни NULL беріледі. Басты файл:<string.h>
Зертханалық жұмыс тапсырмалары. Символдар жолының алгоритмін құру және Бағдарламалау.
Тапсырма нұсқалары:
Обработка символьных данных.
Методические рекомендации: При составлении программ использовать стандартные процедуры и функции для работы с символьными переменными. Составить блок-схему алгоритма и написать программу обработки строки согласно варианту.
Варианты заданий:
Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из этой строки имя файла.
Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов "\"). Если файл содержится в корневом каталоге, то вывести символ "\".
Дана строка-предложение на русском языке и число k (0 < k < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на k-й позиции после шифруемой буквы (например, для k = 2 "А" перейдет в "В", "а" — в "в", "Б" — в "Г", "я" — в "б" и т.д.). Букву "ё" в алфавите не учитывать, знаки препинания и пробелы не изменять.
Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 3) и его расшифрованный первый символ C. Определить кодовое смещение k и расшифровать предложение.
Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка "Программа" превратится в "ргамамроП"). Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1.
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать эту же последовательность слов, но удалив из нее повторные вхождения слов.
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова, которые встречаются в последовательности по одному разу.
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность.
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова в алфавитном порядке (в порядке возрастания).
Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1.
 Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.
Дана строка. Подсчитать количество содержащихся в ней прописных букв.
Дана строка. Подсчитать количество содержащихся в ней цифр.
Дана строка. Преобразовать все строчные латинские буквы в прописные.
Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.
Дано целое число. Вывести набор символов, содержащий цифры этого числа в обратном порядке.
Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова в порядке убывания.
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: перенести первую букву в конец слова.
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: перенести последнюю букву в начало слова.
последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова первую букву.
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова последнюю букву.
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова все последующие вхождения первой буквы.
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова все предыдущие вхождения последней буквы.
1. Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: оставить в слове только первые вхождения каждой буквы.
2. Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: если слово нечетной длины, то удалить его среднюю букву.
3. Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: если слово нечетной длины, то удалить его первую букву.
4. Дана строка, изображающая двоичную запись целого числа. Вывести строку, изображающую десятичную запись этого же числа.
5. Дана строка, изображающая целое число. Вывести сумму цифр этого числа.
6. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка).
7. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.
8. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0.
9. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.
10. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S.
11. Даны строки S1, S2 и символ C. Перед каждым вхождением символа C в строку S1 вставить строку S2.
12. Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.
13. Даны три строки: S1, S2, S3. Заменить в строке S1 последнее вхождение строки S2 на S3.
14. Дана строка. Вывести подстроку, расположенную между первой и второй точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку.
15. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке.
16. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые начинаются и заканчиваются одной и той же буквой.
17. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы "А".
18. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длины самого короткого и длинного слов.
19. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом "." (точка). В конце точку не ставить.
20. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.
21. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все последующие вхождения первой буквы этого слова (количество пробелов между словами не изменять).
22. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.
23. Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.
24. Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке знаков препинания и гласных букв.
25. Дана строка-предложение на русском языке. Вывести самое короткое и длинное слово в предложении (если таких слов несколько, то вывести последнее из них).
Әдебиет: 4 нег. [369-407], 3 қос. [21-24].
Бақылау сұрақтары.
Жолдармен жұмыс істеудің стандартты функциялары
Мәліметтер символын өңдеудің стандартты функцияларыstrtok функциясы қалай жұмыс істейді?
Жолдарды салыстыру функциясын шартта қолдану6 – ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС.
ФАЙЫЛДАРМЕН ЖҰМЫС ІСТЕУДІ ҰЙЫМДАСТЫРУ.

Лабораторлық жұмыстың мақсаты – программалаудың енгізу-шығару интерфейсінің негізгі дағдыларын игеру мен бекіту. Енгізу-шығарудың кез-келген операциялары барлық сыртқы құрылғылар, пернетақта мен экранды қоса алғанда, файлдық жүйенің объектілері ретінде қарастырылатындықтан файлдарды оқу және жазу құралымен орындалады. Яғни бұл программа мен сыртқы құрылғылардың арасындағы байланыс бірыңғай біртекті интерфейс шеңберінде жүзеге асырылатынын білдіріді.

Лабораториялық жұмыстың орындалуының методикалық әдістемесі:
Си тілінде алдын-ала анықталған ешқандай файлдар құрылымы қарастырылмаған (тізбектелген немесе тура қатынасу файлдары сияқты): барлық файлдар байттар ағынының тізбегі ретінде қарастырылады;
Файл үшін қатынас жасау іске асатын, ағымдық позициясны анықтайтын маркер анықталған (оқу/жазу көрсеткіші);
Байттар ағынына қатынасу көрсеткіш көмегімен жүзеге асады. Файлдың көрсеткіш келесі түрде сипатталады: FILE*fp;
FILE типі – бұл typedef құралының көмегімен <stdio.h>-да анықталған және файл туралы біраз ақпараттан тұратын құрылым: мысалы, файл күйі, буфер өлшемі буферге көрсеткіш жалаулары және т.б. Сипатталған көрсеткішті берілген файлдың ашылу кезінде нақты файлмен байланыстыруға болады. Бұл функция көмегімен жүзеге асады.
fopen («файлға қатынас», «қатысу типі»), қате болған жағдайда файлға көрсеткішті немесе NULL-ді қайтарады.
Мысалы, fp=fopen (“my_file.txt”, “w”) операторының орындалу нәтижесінде;
my_file.txt файлы жазу үшін ашылған, ал программада осы файлға fp көрсеткішінің көмегімен сілтеме жасауға болады (яғни fopen ( ) функциясы файлдың сыртқы көрнісін береді – оның физикалық атын – және оған әріқарай программада қолданылатын ішкі логикалық атты сәйкес қоямыз);
Негізгі типтерге қатынас жасау ретінде келесі параметрлер көрсетіледі:
«w» - бар файл жазу үшін ашылады, бұдан оның ескі ішіндегілері өшіріледі. Файлдың маркері оның басын көрсетеді. Егер файл болмаса, онда ол құрылады (егер бұл мүмкін болса);
«r» - бар файл оқу үшін (басынан бастап) ашылады. Егер файл болса – бұл қате;
«a» - файл оның соңын жазғанда дейін ашылады;
Файлдармен жұмысты аяқтағанша ол жабылуы тиіс. Бұл үшін fclose (файлды – көрсету) функциясы қолданылады;
Файлда мәліметтерді оқу/жазу үшін, бұрыннан енгізу-шығару функцияларына ұқсас функциялар бар: fprintf (), fscanf (), fputs (), fgets (), getc (), putc (), fgetc (), fputc ();
getc ()/fgetc (), putc ()/fputc () функциялары өзінің әрекет етулерімен ұқсас, айырмашылығы тек getc () және putc () макроанықтамалар ретінде, ал fgetc () және fputc () нағыз функциялар ретінде жұмыс істейді;
барлық файлдық функциялардың прототипі, сондай-ақ қажетті тұрақтылар <stdio.h> файлында орналасқан;
Си тілі файлдармен массив сияқты жұмыс істеуге мүмкіндік береді: тікелей, кез-келген анықталған байтқа жетуге болады. Файлды позициялау үшін fseek функциясы қызмет етеді (файлға_көрсеткіш,_бас. нүктеден_бастап_жылжытып қою, бас. нүкте), мұндағы бас. нүкте – файлдағы бастапқы нүктенің жағдайын анықтайтын параметр. Егер параметр = 0 – бұл файлдың басы, егер параметр = 1 – бұл ағымдық позиция, және егер параметр = 2 – бұл файлдың соңын білдіреді. fseek функцияның қалған параметрлері анық. Ондай болған жағдайда, функция 0-ді қайтарады, егер қате болса, онда – 1-ді қайтарады.
Файлдармен негізгі функциялардың жұмысын ұйымдастыру мысалы.
# include <stdio.h>
void main ()
{ int n;
char str [50], s1 [50], ch;
FILE*fp;
// файлды толтырамыз
fp=fopen (“my_file.txt”,”w”);
putс («Бүтін санды енгіз»);
scanf (“%d”, &n);
fprintf (fp, “%d\n”, n);
putс («Символды енгіз»);
ch=getchar ();
puts (ch, fp);
puts («Жоолды енгіз»); gets (str);
fputs (str, fp);
fclose (fp);
//файлдан оқимыз
if ((fp=fopen(“my_file.txt, “r”))!=NULL)
{ fscanf(fp, “%d”, &n);
printf (“n=%d\n”, n);
ch=getc (fp);
putchar (ch);
fgets (s1, 50, fp); puts (s1);
fclose (fp);
}
else printf (“\n файлды оқу үшін ашуға болмайды!”);
}
fgets () – функциясының екінші параметрі - ‘\0’ символын қоса алғанда, есептелген N символының саны. Бұл функция жұмысыты N-1 символды оқығаннан кейін аяқтайды. Кез-келген жағдайда жолдың соңына ‘\0’ қосылады. fgets () функциясы ашылған жолдың адресін, немесе қате болған жағдайда немесе файлдың бітуінде NULL-ді қайтарады.
Файлдың бітуі немесе қате болған жағдайда getc () функциясы EOF-ты қайтарады.
putc () функциясы жазылған файлға литердің немесе (қате болған жағдайда) EOF-ты қайтарады.
fputs ()функциясы соңғы оқыған символдың кодын қайтарады, егер барлығы дұрыс болса, қате болған жағдайда, EOF-ты қайтарады. Бұл функция жолды автоматты түрде ауыстырмайды.
fread ()/fwrite () функциясы қолдану мысалы.
typedef struct { char author [30];
char title [50];
int pages;
} BOOK;
BOOK b1={“Kernighan”, “C Language”, 256}, b2;
FILE*fp;
void main ()
{ …
fp = fopen (“struct.txt”, “w+”); // файл бір уақытта оқуға және жазуға ашылады
fwrite (&b1, sizeof (BOOK), 1, fp);
fseek(fp, 0, 0); // маркерді файлдың басына қайтарады
fread (&b2, sizeof (BOOK), 1, fp);
printf (“Автор - %s, кітаптың аты - %s, беттің саны - %d\n”, b2.author, b2.title, b2.pages);
}
Құрылым файлмен жұмыс істеуде мынадай форматы бар fread (ptr, size, N, fp); fread () және fwrite () функцияларын қолдану ыңғайлы.
fp файлдан ptr адресімен берілген жадының әр облысында, size өлшемімен N элементтер (құрылым) саналады. Сәтті болған жағдайда саналған байттар саны қайтарылады. Қате болғанда немесе файлдың соңында – EOF функциясы қайтарылады.
Сол сияқты fwrite () функциясы әрекет етеді:
fwrite(ptr, size, N, fp);
fp файлына ptr адресінен бастап, әрқайсысы жады аймағында орналасқан, size байты бойынша N элементтер (құрылым) жазылады.
Программалау тапсырмалары:
Файлда нақты сандар бар. Шамасы берілген файлдың барлық элементтерінің орташа арифметикасынан кіші, файл элементтерінің санын анықтау керек.
Дүкендегі аяқ-киімдер ассортименті туралы мәліметтерден тұратын файл құру керек. Жазбаның құрылымы: артикул, атауы, өлшемі, жұптардың саны, бір жұптың бағасы берілген. D әріпінен басталатын артикул – қыздардікі, ал M-нан – ұлдардікі, С-дан – балалар аяқ киімі.
Келесі ақпаратты беретін, программаны жазу керек:
XX артикулды аяқ-киімнің бағасы;
Атымен көрсетілген, тапсырылған өлшемдегі қыздардың аяқ-киімінің және бар әр моделдің жұптар санының тізімі.
Қоймада сақталған тауарлар жайлы мәліметтерден тұратын файл құру керек: шифры, тауардың атауы, бірлік мөлшері, бірлік бағасы берілген. Барлық жазбалар тауардың шифрының өсу ретімен сұрыпталуы керек.
Енгізілген кодтар бойынша түзету мүмкіндіктері:
а) XXX шифрымен тауар туралы жазбаны өзгерту/қосу;
б) XXX шифрымен берілген тауар туралы жазбаны өшіру;
в) атауында тапсырылған кілті бар, барлық тауарлар жайлы ақпаратты алу.
Ұсынылған 5 пәннің қайсысы студент тыңдағысы келетіні туралы мәліметтерден тұратын файл құру.
Жазба құрылымы:
студент фамилиясы;
топ №;
орташа балл;
5 пән, мұнда ‘*' таңдалған пәнді көрсетеді.
XX пәнді тыңдағысы келетіндердің мәліметтерінен тұратын файл құру керек. Егер тыңдағысы келетіндердің саны 10-нан көп болса, онда кімнің балы орташа балдан жоғары болса, сол студенттерді теріп алу керек.
Екі файлды салыстыру программасын жазу керек: олардың айырмашылығы бар бірінші жол басылып шығуы керек. Егер файлдар ұқсас болса, онда хабарлама беру керек.
«Динамо» және «Спартак» хоккейлі командалардың ойындары туралы мәліметтерден тұратын 2 файл құру керек. Файлдарды жазу құрылымы:
ойыншының фамилиясы, аты;
лақтырылған шайбаның саны;
ұпай берілгендердің саны.
Осы мәліметтер бойынша екі команданың ең жақсы ойнаған алты ойыншыларының мәліметтерінен тұратын жаңа файл құру керек.
Командалық жолда кіру файлының аты және N бүтін сан берілген. Көрсетілген файлдың соңғы N жолын басып шығару керек.
F1 мәтіндік файл берілген. Әр жол нүктемен аяқталатын, егер олардың арасында нүкте болмаса, 40 литерден тұратындай жолдарды бөліп, F2-ге көшіру керек.
Мәтіндік файлда бір әріппен басталып және сондай әріппен аяқталатын жолдың санын есептеу керек.
Төмендегідей өрістерімен берілген автомашиналарды тіркеу үшін, құрылым массивінің элементтерін файлдан оқу және файлға жазу программасын жазу керек:
Машина маркасы;
Шыққан жылы;
цветі;
нөмері.
Файл нақты сандардан тұрады. Файл элементтерінің ең ұзын өскен тізбек санының мөлшерін анықтау керек.
Мәтіндік файлда «f» әріпімен басталатын жол санын есептеу керек.
Жынысы, ФИО, жасы өрістерімен берілген құрылымды қолдана отырып, қандай-да бір атпен берілген қыздардың санын және 19-дан жоғары қыздардың атын басып шығару керек (Мәліметтер файлда бар).
Студент ұғымын анықтайтын құрылымды қолдана отырып (ФИО, курс, тобы, сессиядағы бағасы өрістерінен тұрады), бірінше курстағы өте жақсы оқитындардың атын, фамилясын және олардың өте жақсы оқитындардың санынан үлесін басып шығару. (мәліметтер файлда бар).
Мәтіндік файлдағы бос жолдардың санын есептеу.
Файлда СИ тіліндегі мәтін программасы бар. Программаның мәтінінен түсініктемелерді алып тастай отырып, алғашқы файлдың мазмұны көшіріп жазатын шығу файлын құру.
Файлдың әр жолы келесі мәліметтерден тұрады: жынысы, аты, бойы. Әйел адамдардың орташа бойын және файлдың мәліметтері бойынша ең ұзын ер адамның атын басып шығару. Адам ұғымын сипаттау үшін құрылымды қолдану.
Мәтіндік файлға әр жол 80 символдар ұзындығынан тұратын бос орынды қою керек (бос орындар жолға біркелкі қойылуы керек).
Мәтіндік файлда ең ұзын жолды табу керек және осындай ұзындықтағы файлдың барлық жолдарын басып шығару керек.
Файлдың әр жолы таулы шыңның атынан және оның биіктігінен тұрады. Шың ұғымын сипаттау үшін құрылымды қолдана отырып, файлда берілгендер бойынша ең биік шыңның атын алу керек.
НЕГІЗГІ ӘДЕБИЕТ – 14[155-158], 3[175-183], 4[138-146], 5[243-274], 7[62-67].
БАҚЫЛАУ СҰРАҚТАРЫ
Си-де файлдарды қалай қарастыруға болады?
Байттар ағынына қатынас жасау қалай жүзеге асады?
Файлдармен жұмыс істеудің стандартты функциялары қандай?

Приложенные файлы

  • docx 14786826
    Размер файла: 249 kB Загрузок: 0

Добавить комментарий