Мысал Берілген жолдан барлық сандарды өшіретін бағдарлама құрыңыз. Жол программада беріледі.
Бағдарлама мәтіні
package triangle_figure;
importjava.util.*;
publicclass Arifmetics_10 {
publicstaticvoid main(String[] args) {
StringdataString = "Программистың логикалық мәдениеті - 2014";
StringBuilder sb = new StringBuilder();
for(char ch : dataString.toCharArray()) {
if(!isDigit(ch)) {
sb.append(ch);
}
}
System.out.println("Результат: " + sb.toString());
}
privatestaticboolean isDigit(char ch) {
return ch >= '0' && ch <= '9';
}}
Тапсырмалар
1. Массивтың біркелкі элементтерің циклді түрде екі элементке солға жылжыту.
2. Массивтың біркелкі элементтерің циклді түрде бес элементке онға жылжыту.
3. Матрицаның тақ жолдарындағы А - ны ‘x’ - қа ауыстыру.
4. нүктесінде берілген дәрежелі көпмүшесінің туындысының мәнін көрсететін рекурсиялы бағдарламаны құрыңыз. Көпмүшенің коэффициенттері бүтін сандар және массивінде дәрежесінің кемуі ретінде сақталады. , өлшемдерін және массивының элеменеттерін бағдарламада өзгертуге болмайды.
Нұсқау
берілсін.
теңдігінқатысты дифференцияалдайық және кейін қояйық.
Біз келесі қатынастарды аламыз:
, .
Осыларды және формулаларды қолдана отырып
, .
Теріс емес бүтін аргументтың рекурсивты функциясын анықтауға болады
, .
5. Бүтін санды теріс емес бүтін дәрежеге шығаратын бағдарлама құрыңыз. Бағдарламаға қажетті алдын-ала және кейінгі шарттар келесідей:
, .
Бағдарламаны жазу барысында және шамаларын өзгертуге болмайды,
инвариантын қолдануға және шектеу функциясын қолданаған жөн.
6. бір мезгілде екеуі нөлге тең емес екі бүтін теріс емес санның ең үлкен ортақ бөлгішін есептейтін бағдарлама құрыңыз. Ең үлкен ортақ бөлгіштің келесі қасиетін қолданыңыз (дәлелдеңіз):
Мұндағы операциясы –ты -ке бөлгендегі қалдығын есептейді.
7. Бүтін санды теріс емес дәрежеге шығаратын бағдарлама құрыңыз.
,
Бағдарлама жазу барысындажәнешамаларын өзгертуге рұқсат етілмейді.
функциясы арқылы берілетін
функциясы
қатысты инвариантты болып келетінін қолданыңыз.
8. бір мезгілде екеуі нөлге тең емес екі бүтін теріс емес санның ең үлкен ортақ бөлгішін есептейтін бағдарлама құрыңыз. Бағдарлама уақытша күрделі реттілікте болуы мүмкін, бөлуді және қалдық есептейтін операциялардан тұрмауы керек (жылжыту операциясы арқылы жүзеге асырылатын жартылай бөлуге рұқсат етіледі). Ең үлкен ортақ бөлгіштің келесі қасиетін қолданыңыз (дәлелдеңіз):
,
Нұсқаулық: төмендегідей өзгеруіне қатысты функциясының инварианттілігін қолданыңыз:
функциясына қатысты инварианттылығын дәлелдеуді ұмытпаңыз.
15 практикалық жұмыс. Программаны верификациялаудың логика-математикалық әдістері
Мысал Геометриялық фигураның (үшбұрыш) ауданы мен периметрін есептеудің абстарктілі әдістерін қолдана отырып абстрактілі базалық классты ұйымдастрыңыз. (Берілімдер өрісінде қабырғаларынң ұзындықтары және олардың арасындағы бұрыштың градусы енгізілсін). Туынды класстарды анықтаңыз:
1) тікбұрышты үшбұрыш;
2) тең бүйірлі үшбұрыш;
3) өзінің ауданы мен перимтрін функция арқылы есептейтін тең қабырғалы үшбұрыш.
Бағдарлама мәтіні
publicclass Triangle_figure {
abstractclass Triangle {
Triangle(double side_1, double side_2, double corner) /*екі қабырғаның ұзындығы және арасындағы бұрышы*/
{ this.side_1 = side_1;
this.side_2 = side_2;
this.corner = corner * rad;
}
publicabstractdouble area();
publicabstractdouble perimeter();
publicabstract String toString();
publicabstractboolean equals(Triangle obj);
publicdouble getSide_1() {
return side_1;
}
publicdouble getSide_2() {
return side_2;
}
publicdouble getCorner() {
return corner;
}
privatedouble side_1;
privatedouble side_2;
privatedouble corner;
privatefinalstaticdoublerad = 0.017453292519943; // гардусты радианға ауыстыру
}
class RecTriangle extends Triangle {
RecTriangle(double side_1, double side_2, double corner) {
super(side_1, side_2, corner);
}
@Override //Жаңа әдісті қарастыру
publicdouble area() {
return .5 * getSide_1() * getSide_2();
}
@Override
publicdouble perimeter() {
return getSide_1() + getSide_2() + Math.sqrt((Math.pow(getSide_1(), 2) + Math.pow(getSide_2(), 2)));
}
@Override
public String toString() {
return "class " + RecTriangle.class.getName();
}
@Override
publicboolean equals(Triangle var) {
return (getSide_1() == var.getSide_1()) && (getSide_2() == var.getSide_2())
&& (getCorner() == var.getCorner());
}
}
class IsosTriangle extends Triangle {
IsosTriangle(double side_1, double side_2, double corner) {
super(side_1, side_2, corner);
}
@Override
publicdouble area() {
return (.5 * getSide_1() * getSide_2() * Math.sin(getCorner()));
}
@Override
publicdouble perimeter() {
return (2 * getSide_1()) + getSide_2();
}
@Override
public String toString() {
return "class " + IsosTriangle.class.getName();
}
@Override
publicboolean equals(Triangle var) {
return (getSide_1() == var.getSide_1()) && (getSide_2() == var.getSide_2())
&& (getCorner() == var.getCorner());
}
}
class Equil_Triangle extends Triangle {
Equil_Triangle(double side_1, double side_2, double corner) {
super(side_1, side_2, corner);
}
@Override
publicdouble area() {
return (Math.sqrt(3.0) / 4) * Math.pow(getSide_1(), 2);
}
@Override
publicdouble perimeter() {
return (3 * getSide_1());
}
@Override
publicboolean equals(Triangle var) {
return (getSide_1() == var.getSide_1()) && (getSide_2() == var.getSide_2())
&& (getCorner() == var.getCorner());
}
@Override
public String toString() {
return "class " + Equil_Triangle.class.getName();
}
}
publicclass Test {
Triangle triangle = null;
RecTriangle recTriangle = new RecTriangle(3, 4, 90); //тікбұрышты үшбұрыш
IsosTriangle isosTriangle = new IsosTriangle(4, 6, 45);//тең бүйірлі үшбұрыш
Equil_Triangle equilTriangle = new Equil_Triangle(5, 5, 60); //тең қабырғалы үшбұрыш
triangle = recTriangle;
System.out.println(triangle.toString());
System.out.printf("%s%.2f\n", "area: ", triangle.area());
System.out.printf("%s%.2f\n", "perimeter: ", triangle.perimeter());
System.out.printf("%s%b\n", "equals: ", triangle.equals(equilTriangle));
System.out.println();
triangle = isosTriangle;
System.out.println(triangle.toString());
System.out.printf("%s%.2f\n", "area: ", triangle.area());
System.out.printf("%s%.2f\n", "perimeter: ", triangle.perimeter());
System.out.printf("%s%b\n", "equals: ", triangle.equals(equilTriangle));
System.out.println();
triangle = equilTriangle;
System.out.println(triangle.toString());
System.out.printf("%s%.2f\n", "area: ", triangle.area());
System.out.printf("%s%.2f\n", "perimeter: ", triangle.perimeter());
System.out.printf("%s%b\n", "equals: ", triangle.equals(equilTriangle));
System.out.println();
}
}}
Тапсырмалар
1. Екі тастың лақтырылуын модельдейтін программа жазыңыз. Программа random()(java.lang пакетінің Math классы) функциясын қолдану керек және нәтижені генерациялау керек. Содан кейін екі мәннің қосындысын есптеу керек (әрбір тас 0-ден 6-ға дейін бүтін мәнді көрсетуі керек). Әр қосынды неше рет түсетінін массив арқылы көрсетіңіз. Сіздің бағдарламаңыз тасты 300 рет тастау керек.
2. а, в және с сандары берілген. Егер осы сандарды үшбұрыштың қабырғалары ретінде қарастырсақ, онда егер үшбұрыш шықпаса 0 мәнін, басқа жағдайда 3 басып шығарсын. 2 және бір үшбұрыштың түріне қарай басып шығарсын.
3. Комплекс сандардың қосындысын, айырмасын, көбейтіндісін және бөліндісін есептейтін бағдарлама құрыңыз. (Ескерту: аталған әдістер жүзеге асырылатын Complex классын ұйымдастырыңыз.
Әдебиеттер
1 Нурбекова Ж. К. Теоретико-методологические основы обучения программированию: монография. – Павлодар, 2004. – 225 с.
2 Зимняя И. А. Ключевые компетенции – новая парадигма результата образования// Высшее образование сегодня. – 2003. – № 5. – С.34 - 42. http://www.orenipk.ru/seminar/09.htm
3 Райцев А. В. Развитие професссиональной компетентности студентов в образовательной системе современного вуза: дис. ... д-ра пед.наук: 13.00.08. – СПб. : РГПУ, 2004. – 309 с.
4 Государственный общеобязательный стандарт образования РК. Специальность 050602 – Информатика. 3.08.066-2004. Издание официальное : МОН РК. – Астана, 2004.
5 Государственный общеобязательный стандарт образования РК. Специальность 050602 – Информатика. 3.08.317-2006. Издание официальное : МОН РК. – Астана, 2006. – 40 c.
6 Бидайбеков Е. Ы., Гриншкун В. В. Интеграционные методы преподавания алгоритмических языков в университетском курсе информатики //Материалы международной научно-методической конференции «Математическое моделирование и информационные технологии в образовании и науке». – Алматы : АГУ им. Абая, 1998.
7 Кожахметов С. Т. Математико-методическое обеспечение обучения программированию на основе объектно-ориентированного подхода при подготовке специалистов по информатике: дис. …канд.пед.наук : 13.00.02. – Алматы : АГУ, 1999.
8 Хакимова Т. Методические и содержательные аспекты использования структурного подхода при изучении языков программирования студентами-математиками: дис. …канд.пед.наук : 13.00.02. – Алматы : АГУ, 1999.
9 Талпаков Н. Ә. Математикалық логика элементтері мен логикалық бағдарламалауды мектеп информатика курсында оқыту әдістемесі : пед.ғыл. канд. …дис. : 13.00.02. – Алматы : АГУ, 1999.
10 Самойлова И. П. Методика обучения логическому (хорновскому) программированию будущих учителей информатики: дисс. …канд. пед. Наук : 13.00.02. – М. : РГПУ, 2003. – 170 с.
11 Косова И.С. Использование языка LISP при обучении функциональному программированию будущих учителей математики и информатики: дис. …канд. пед. наук : 13.00.02. – М. : РГПУ, 2003. – 196 с.
12 Толкачев Ф. В. Система упражнений по императивному программированию в фундаментальной подготовке будущих учителей информатики: дис. …канд. пед. наук : 13.00.02. – М. : РГПУ, 2003. – 232 с.
13 Жангисина Г. Д. Методологические основы преподавания языков программирования в высшей школе: дис. ...д-ра пед.наук : 13.00.02. – Караганда, 2002.
14 Математическая энциклопедия /Гл.ред. И. М. Виноградов. – М. : Советская Энциклопедия, 1984. – Т.4. – С.645 - 650.
15 Александров П. С. Введение в теорию множеств и общую топологию. – М. : Наука, 1977. – 367 с.
16 Гончаров С. С. Счетные булевы алгебры и разрешимость. – Новосибирск : Научная книга, 1996. – 364 с.
17 Гончаров С. С. Математическая логика. – Новосибирск : Изд-во НГУ, 2007. – Ч. I. – 166 с.
18 Ершов Ю. Л. Определимость и вычислимость. – Новосибирск : Научная книга, 1996. – 300с.
19 Мальцев А. И. Алгебраические системы. – М. : Наука, 1970. – 392 с.
20 Мальцев А. И. Алгоритмы и рекурсивные функции. – М. : Наука, 1986. – 368 с.
21 Робинсон А. Введение в теорию моделей и метаматематику алгебры. – М. : Наука, 1967. – 376 с.
22 Роджерс Х. Теория рекурсивных функций и эффективная вычислимость. – М. : Мир, 1972. – 624 с.
23 Сикорский Р. Булевы алгебры: Пер. с англ. – М. : Наука, 1969. – 375 с.
24 Тьюринг А. Может ли машина мыслить? Пер. с англ. – М. : Наука, 1962. – 562 с.
25 Дроботун Б. Н. Методическая система обучения логико-алгебраическим дисциплинам в высших учебных заведениях: дисс. ... д-ра пед. наук. – Алматы, 2008. – 442 с.
26 Фокин Р. Р. Метамодель обучения информатике в высшей школе: дисс. … д-ра пед. наук: 13.00.02. – СПб. : РГПУ, 2000. – 408 с.
27 Большой экономический словарь / Под ред. А. Н. Азрилияна. Фонд «Правовая культура». – М. : 1994. – 528 с.
28 Ломакина О. Е. Профессиональная компетентность учителя: теория и практика: Учеб. – метод. пособие. – Волгоград : Перемена, 2000. – 152 с.
29 Власов Д. М. Проектирование развития современной профессиональной компетентности будущего учителя математики (аспект экономической культуры): дис. ... канд. пед. наук. – М. , 2001. – 215 с.
30 Розов Н. Ценности гуманитарного образования //Высшее образование в России. – 1996. – № 1. – С. 85 - 89.
31 Маркова А. К. Психология труда учителя : Кн. для учителей. – М. : Просвещение, 1993. – 192 с.
32 Пискунов А. И. Педагогическое образование : цель, задачи и содержание //Педагогика. – 1995. – № 4. – С. 59 – 68.
33 Каррано Ф. М., Причард Дж. Дж. Абстракция данных и решение задач на С++. Стены и зеркала. – М. : Издательский дом «Вильямс», 2003 – 848 с.
34 Нурбекова Ж. К. Фундаментальное и опережающее обучение программированию студентов по специальности «Информатика»: дисс. …д-ра пед.наук. – Алматы, 2007.
35 Джарасова Г. С. Экспериментальное исследование формирования логической культуры будущих информатиков //Вестник ПГУ. – 2009. – №1. – С.62 – 69.
36 Краткий словарь по логике /Д. П. Горский, А. А. Ивин, А. Л. Никифиров; под ред. Д. П. Горского. – М. : Просвещение, 1991. – 208 с.
37 А. И. Кострикин. Введение в алгебру. – М. : Наука, 1977. – 495 с.
38 Гончаров С. С., Дроботун Б. Н., Никитин А. А. Методические аспекты изучения алгебраических систем в высшем учебном заведении: моногр. – Новосибирск : Изд-во НГУ, 2007. – 251 с.
39 Философский энциклопедический словарь. – М. : Советская энциклопедия, 1983. – 840 с.
40 Джарасова Г. С. Обучение будущих информатиков применению рекурсивного метода программирования //Материалы научно-практической конференции «Информационные и коммуникационные технологии в образовании». – Екатеринбург : ГОУ ДПО ИРРО, 2009. – С.280 – 282; 308 с.
41 Швецкий М. В. Методическая система фундаментальной подготовки будущих учителей информатики в педагогическом вузе в условиях двухступенчатого образования. : дисс. ... д-ра пед. наук. –СПб. , 1994. – 446 с.
42 Бороненко Т. А., Рыжова Н. И. Об уточнении понятия "информатика" //Новые информационные технологии в образовании. //Тезисы докладов II Всероссийской научно-практической конференции "Черноземье-95". – Воронеж : Воронеж. пед. ун-т, 1995. – С.38 – 39.
43 Математический,энциклопедический словарь. – М. : Сов.энциклопедия, 1995. – 847 с.
44 Рыжова Н. И. Развитие методической системы фундаменталной подготовки будущих учителей информатики в предметной области: дисс. …д-ра пед. наук. – СПб , 2000. – 429 с.
45 Ершов А. П. Компьютеризация школы и математическое образование //Информатика и образование. – 1992. – № 5 – 6. – С.3 –12.
46 Семенов А. Л. Математическая информатика в школе //Информатика и образование. – 1995. – № 5. – С.54 – 58.
47 Кондаков Н. И. Логический словарь-справочник. – М. : Изд-во «Наука». – 720 с.
48 Кириллов В. И., Старченко А. А. Логика. – М. , 1982. – 450 с.
49 Гетманова А. Д. Логика. – М. , 1995.
50 Дорофеев Г. В., Петерсон Л. Г. Математика. 6 класс. Часть 2. – М. : «Баласс», «Ювента», 2004. – 128 с. : ил.
51 Нагибин Ф. Ф., Канин Е. С. Математическая шкатулка : Пособие для учащихся 4-8 кл. сред. шк. – 5-е изд. – М. : Просвещение, 1988. – 160 с. : ил.
52 Галеева Р. А. Тренируем мышление. Задачи на сообразительность /Р. А. Галеева, Г. С. Курбанов, И. В. Мельченко – Изд. 2-е – Ростов н/Д. : Феникс, 2006. – 272 с. : ил. – (Большая перемена).
53 Клименченко Д. В. Задачи по математике для любознательных: Кн. для учащихся 5 – 6 кл. сред. шк. – М. : Просвещение, 1992. – 192 с. : ил.
53 Игнатьев. Е. И. В царстве смекалки, или Арифметика для всех : Книга для семьи и школы. Опыт математической хрестоматии в 3 книгах /Худож. Н. Я. Бойко. – Ростов н/Д. : Кн. Изд-во, 1995. – 616 с.
54 Логические задачи /О. Б. Богомолова. – М. : БИНОМ. Лаборатория знаний, 2005. – 271 с. : ил.
55 Информатика. Задачник-практикум в 2 т. /Л. А. Залогова, М. А. Плаксин, С. В. Русаков и др. Под ред. И. Г. Семакина, Е. К. Хеннера: Том. 2. – 2-е изд. – М. : Бином. Лаборатория знаний, 2005. – 278 с. : ил.
56 Шарыгин И. Ф., Шевкин А. В. Математика: Задачи на смекалку: Учеб. пособие для 5 – 6 кл. общеобразоват. учреждений. – 5-е изд. – М. : Просвещение, 2000. – 95 с. : ил.
Достарыңызбен бөлісу: |