3 курс (заочка) - Кроссплатформенные технологии программирования / Лабы (выполнить первые 4)
.pdfОглавление |
|
|
Лабораторработа№1:Осиновыаятаксиса |
Java..................................................................... |
2 |
Лаборатработа№2:Основырнаябъектно |
-ориентированногопрограммирования ................ |
6 |
Лабораторнаяработа№3:АлгоритмA* («A star») |
.................................................................... |
10 |
Лабораторнаяработа№4:Рисованиефракталов |
...................................................................... |
17 |
Лабораторнаяработа№5Выбор. исохфракталованение |
....................................................... |
27 |
Лабораторнаяработа№6Многопоточный. генефракталовтор |
............................................ |
34 |
Лабораторнаяработа№7Веб. |
-сканер ........................................................................................ |
40 |
Лаборатработа№8:М рнаядифицированныйвеб |
-сканер...................................................... |
50 |
Лаборабота№1т рная |
:Основысинтаксиса |
Java |
Вданной лабораторнойработев |
ыизуч ите |
основысинтаксисаJava |
помощьюнесколькихпростызадачпрограммирования.Далеевыузн,к кете |
|
|
использоватькомпиляJavaвирмашиуальордляJavaзапусканую |
|
|
программы.Отваспотрешитьебуетсяследующиезадачи: |
|
|
Простыечисла |
|
|
Создайтепрограмму,котораянаходитвыводвсепростыечисла |
|
|
меньше100. |
|
|
1Создайте. файлсименемPrimesвэтомфайлеопишите.java,следующий |
|
|
класс: |
|
|
public class Primes { |
|
|
public static void main(String[] args) { |
|
|
} |
|
|
} |
|
|
Воспользовдакласннымвши,соберитезапуститеомьпрограмму.Так |
|
|
каквданнойпрограмменетконкрреализации,результататнойвыполненияее |
|
|
вынеувидите. |
|
|
2Внутри. созданногоклас,пометле да |
|
main(),опишитефункцию |
IsPrimeкотоопр(Int,еделяетаяn), |
явларгументияетсяпростымчислиом |
|
нет.Можнопредп,чтвходноезначениеложитьвсnбубольшегде2т. |
|
|
Полноеписаниефункциибудвыглядетьтак: |
|
|
public static boolean isPrime(int n) |
|
|
{ |
|
|
} |
|
|
Даннметвыореализоватьдйжетеповашемуусмотрению, |
однако |
простойподходзаключаетсявиспользованиициклаforДанныйциклдо. жен |
|
перебиратьчисла,начидо2но(включая)проверяяn,существуетли |
|
какое-либозначе,делящеесянабиеостаnз.Дляэтможноогока |
|
испоператоральзоватьостатк“%”. |
Нап, равняется17%7имер3,16%4 |
|
равноЕсли0какая. |
-либопеременнаяполностьюделитсяаргумент, |
|
сработаетоператорreturnЕслижезначfalseнеденааргументли. тсябез |
|
|
ос,тэтоаткапростоечисло,операторпокажетreturnОператорrettrue. ( |
urnв |
|
Javaисподвозвратальзуетсяданныхизфункции,такимспособом |
|
|
закрываетсяметод.) |
|
|
3После. того,какэтотучастокбудетреализован,приступайтек |
|
|
запосновноголметоданиюmain()другимциклом,котоперебираетый |
|
|
числавдиапазонеотдо2100вк |
лючительно.Необходимовывнап тестичать |
|
значения,которыевашпомощникIsPrimeпосчиталпростыми. () |
|
|
4После. завервапрограммышескомпилируйтенияпротестируйте |
|
|
её.Убедитесь,чторезулправильные.Винтернсможететатывы айти |
|
|
спискипростых |
чисел. |
|
Крт,окакгомевидноизприм,неслзабыватьерадуетобиспользовании комм:передклассомнтариевегоназначпередм стодомниегоцелью.
Когдавыпишетепрогр,крайнев писатьммыжноподкобныемментарии.
Палиндромы
Втораяпрограмма,кото руювамнеобходбудетнап, иоксмо,атьзывает явлстрокаяетсяипалиндромом.
1. Дляэтойпрограм,создклсимйтессыPalindromeенемвфайле подназваниемPalindromeНаэтотразвыможетевоспользоваться.java.
следующимкодом:
public class Palindrome {
public static void main(String[] args) { for (int i = 0; i < args.length; i++) {
String s = args[i];
} }
}
Скомпилируйтезапуститеэтупрограммувтакомвиде, зультат ранебудетотыотображен.
2Вашапервая. задачасостоитвтом,чтобысоздатьметод,позволяющий полностьюизменитьсимволыстроке.Сигнатурапоследовательность( )метода должнабытьследующей:
public static String reverseString(Strings)
Выможетереализоватьэтотметодпутемсозданиялокальной переменной,котораяначинсострокиа"",затеметсядобавлятьсимволыиз входнойстрокивыходдан,обратномныепорядке.Используйтеметод length(),котвозвращаетрыйдлинустроки,методcharAt(intкоторыйindex),
возвращаетсимволпоуказанному ндексу.Индексыначинаются0
увеличиваютсяна1Например. :
String s = "pizzeria";
System.out.println(s.length()); //Выводим8
System.out.println(s.charAt(5)); //Выводимr
Выможетеисп ператорльзовконксоединения( )ьенациистрок+
илиоп ератор+=,навашеусмотрение. 3После. того,каквыприменилиметодreverseStringсоздайтеещеодин (),
методpublic staticЭтотмедолженодboolean isPalindrome(String s).
перевернутьсловоазатемs,сравнитьпервоначальнымиданными.
Используйтемето дEqualsдляпроверкизначения(Object)равенства.Например: String s1 = "hello";
String s2 = "Hello";
String s3 = "hello"; s1.equals(s2); // Истина s1.equals(s3); // Ложь
Неиспользуйтедля==проверкиравенствастрок.Этимзанимается другойт ествJava,которыйбудетрассмотрендалее.
4Скомпилируйте. протестируйтепрог!Наэтотразаммувходными
даннымибудутаргументыкомастроки, апримердной:
java Palindrome madam racecar apple kayak song noon
Вашапрограммадолжнавывестиответ,явля |
етсяликаждоеслово |
палиндром.
5Убедитесь. вналичиикомме,гдеуказаназт вашриевначы нияй
програиспользуемыхи етодов.
Лабораторнаяработа№2 |
:Основыобъектно |
-ориентированного |
программирования |
|
|
Javaпозволяетисп бъектыльзовать.Вданнойла |
|
бораторнойработе |
необходимоиспоклпоассыодномуьзнафв,чайлтописатьобы,какэти |
|
|
объектыработают.Воткоддляпростогокласса,которыйпредставляет |
|
|
двумернуюточку: |
|
|
/ ** |
|
|
*двумерныйклассточки. |
|
|
**/ |
|
|
public class Point2d { |
|
|
/ координата** X **/ |
|
|
private double xCoord; |
|
|
/** координата Y **/ private double yCoord;
/Конструктор** инициализации**/
public Point2d ( double x, double y) { xCoord = x;
yCoord = y;
}
/ Конструктор** поумолчанию. **/ public Point2d () {
//Вызовитеконструктордвумяп араметрамиопределитеисточник. this(0, 0);
}
/** Возвращение координаты X **/ public double getX () {
return xCoord;
}
/** Возвращение координаты Y **/
public double getY () { return yCoord;
}
/** Установка значения координаты X. **/ public void setX ( double val) {
xCoord = val;
}
/** Установка значения координаты Y. **/ public void setY ( double val) {
yCoord = val;
}
}
СохраданкодвфайленитеыйсименемPoint2dсогласно.java,
требованJavaкименамклассовименамямфайлов.
Экземпляркласса можнотакжесоздать,вызвавлюбойреализованных конструкторов,например:
Point2d myPoint = new Point2d ();//создает точку (0,0)
Point2d myOtherPoint = new Point2d (5,3);//создает точку (5,3) Point2d aThirdPoint = new Point2d ();
Примечание: myPoint != |
aThirdPoint,несмотрянаточтоихзначения |
равны.Объясняэт,емчтооправенсттсяратор==иегоин,в(аерсия |
|
оператор неравенства! |
=)сравссылкинаобъива.Другимиесловамикты, == |
операторвернетtrue,еслидвессылкиуказываютнаодинтотже |
объект.В |
данномслучаеmyPointи aThirdPointссылнараобъектызныеютсякласса |
|
Point2d,поэтомуопесравненияцияmyPointвернетfalse,== aThirdPoint
несмотрянато,чтоихзначтеж!ения Длятого,чтобыпроверитьравнылисамизн,нечссылки,ния
необходимосоздатьметодвклассеPoint2d,котобудетсрыйавниватьзначения соответствующихп лейбъектовклассаPoint2d.
Рекомендации припрограммировании
Стильпрограммированияявляенеочастьюсяъемлемойприсоздании |
|
|
программногообеспечения.Присо |
|
зданприбольшаяложенийчастьвремени |
ухнаодиттладкупрограммы.Читаемыйкодиспользованиекомментариев |
|
|
немпозволяютсэконвремяпритладкепрограммыить. |
|
|
CS11 - хорвозможностьшаяизучитьиспользоватьхорошийстиль |
|
|
коди.Прчемованияжде |
приступитькзаданию,изучиинстCS11рукциие |
|
Java НаStyleс йтеclusterCSестьпрограммаGuidelinesпроверкистиля, . |
|
|
которпроавашнализякодпроиопроблемахнформирует. |
|
|
Вашизадачи: |
|
|
1. СоздайтеновыйклассPoint3dдляпредсточекв рехмернавления |
ом |
|
Евклидовпространстве.Не реализоватьбходимо: |
|
|
•созданиеновогообъPoint3dтремяктазначениямисплавающей точкой(double);
•созданиеновогообъPoint3dсоктазн чениями(0.по0, 0.0, 0.0)
умолчанию, |
|
• возмполученияжноизменвсехтртьзначниях |
енийпо |
отдельности; |
|
• методдлясравнени |
я значенийдвухобъектовPoint3d. |
Нельзяпредоставлятьнепосредсквнутэлементампвренныйим |
|
объектаклассаPoint3d . |
|
2. ДобанометодвыйьтеdistanceTo,которыйвкачествепараметра |
|
принимаетдругойобъектPoin |
t3d,вычирасмеждустояниеляетдвумяточками |
сточностьдвухзнаковпослезапятойи озвращполучензначе. етноеие |
|
3. СоздайтедругкласспназваниемLab1,которыйбудетсодержать статическийметодПомнитеmain,чтометод. долженmainбыть
общедоступным (public)свозвращзначениемvoid,вкачествеемым аргуменприниматьдолженс року(String)Этотклассдолжениметь.
следфующуюнкциональность:
•Ввкоодтрточекдинатех,находящихсяв рехмерномпространстве.
СозданобъектовтрехипаPoint3dнао |
|
снованииполучеданных. ных |
(Пред,чтполввьзагаетсякоррдитваданные.)ктныель |
|
|
• СоздайвторойстаметодическийcomputeArea,которыйпринимает |
|
|
триобъектатипаPoint3dвычисляетплощадьтреугольника,образованного |
|
|
этимиточками. Выможете(исп |
|
ользформулуГеронавать.Верните) |
получившеесязначениеплощадиформтипаdoubleте . |
|
|
• Наосновеполучеданныхисиспользованиемныхреализованного |
|
|
алгоритмапосчитайтеплощадьвыведитеполучзначепользователюн. оеи |
|
|
ПередвызовметcomputeAreaодам |
проверьтенаравенствозначений |
|
всехтрехобъектовPoint3dЕслиоднаизточекравна.другой,товыведите |
|
|
соответствующеесообщениепользоватеневычисплощадь. яйтею |
|
|
4. Скомпилируйобаисходныхфайлавмес: те |
|
|
javac Point3d.java Lab1.java |
|
|
изатемзапустит |
епрограммуLab1,тестируяеенесколькимиобразцами |
|
треугольников. |
|
|
Лабораторнаяработа№3:АлгоритмA* («A star»)
Есливыкогда |
-нибудьигрвкакуюли |
-либонагрукомпьютеренаоснове |
карт,товы,вероятно,сталкивалисьорганамикомпьютерногоуправлен |
ия, |
|
которыеумеютсамостоятельнорассчитыватьпутьизпунктаА Б.На |
|
|
самделеэтомбычнаяраспространеннаяпроблемакаквиграх,таквдругих |
|
|
видахпрограммногообеспечения |
|
- поискпуначальногот местоп ложения |
допунктаназначсуспенияшн |
|
ымпреодолениемпрепятствий. |
Одиноченьширокоспоалгоритмьзуемыйдлятакродапр блемы |
|
|
называютА*произносится( "A |
|
-star")Онявляетсянаиболее. эффективным |
алгоритмомдляпоискапутивкомпрогрьютерн.Концепцияалгммейритма |
|
|
довольнопроста, |
ачсисходналгоритмнаямест,оположенияпостепенно |
|
стрпуоисхитьтодочкиместанойазначения,используянаикратчайший |
|
|
пу,чтсдеьобыследующийатьшаг.Этогарантирбудет,чтоп путьлный |
|
|
такжеоптимальным. |
|
|
Вамнепридетсяреализовывать |
лгоритмА*;этобылоужесделаноза |
|
вас.Наделемомсуществуетдажепользовательскийинтерфейсдлятого, |
|
|
чтобыэкспериментироватьэтималгоритмом: |
|
Рисунок5Пользовате.1. интерфейсдляработыльскгорA*и.йтмом