Современные информационные технологии/ 2.
Вычислительная техника и программирование
Мурадилова Г.С., Балгабаева
Р.Н.
Ш.Уәлиханов атындағы Көкшетау
мемлекеттік университеті,, Қазақстан
«КӨП
АҒЫНДЫ ҚОСЫМШАЛАР» ТАҚЫРЫБЫН БЕРУ ӘДІСТЕМЕСІ
«Java
технологиялардың негіздері»
элективті курсын оқитын студенттерге «Көп ағынды
қосымшалар» тақырыбын беруде келесі программалау
жаттығуларын, есептерді және бақылау сұрақтарын
практикалық сабақ барысында беруге болады.
Жұмыс мақсаттары
Практикалық
сабақтың мақсаттары: көп
ағынды қосымшаларды іске асыру принциптерін
оқып-үйрену; көп ағынды қосымшаларын
әзірлеуді дағдыландыру; көп ағынды жағдайларда
бөлінетін объектілерге амалдардың синхрондауын алу;
синхрондаудың бөлімшелері мен объектілері.
Жұмыс барысында J2SE
тұғырнамасының келесі кластары мен интерфейстері зерделеді:
java.lang.* пакетінің кластары
мен интерфейстері - Runnable, Thread;
жарияланатын айрықша
жағдайдың класы java.lang.Exception;
java.io.* пакетінің кластары -
FileReader, FileWriter, IOException, BufferedReader, FileInputStream, FileOutputStream;
Программалау жаттығулары
1. Берілген аралықта long түрдегі бүтін сандарды жай
сандарға тестілейтін көп ағынды қосымшаны іске
асырыңыз. Қосымшаның басты ағыны сандардың
үйлесімді тізбектерін қалыптастырады және
әрқайсысына жеке
өңдеу ағынын жасайды.
2. Берілген аралықта long түрдегі бүтін сандарды жай
сандарға тестілейтін көп ағынды қосымшаны іске
асырыңыз. Ол үшін элементтердің санынан 10-15% тең
ағындардың тіркелген саны құрылады,
әрқайсысы тізбектегі тексерілмеген элементке кездейсоқ
түрде қатынайды, тексерілген элементтер тізімнен алып тасталынады.
3. Бірінші және екінші
жаттығуларда іске асырылған әдістердің салыстырмалы
бағалауын жүргізіңіз.
Есептер
1. Келесі кодтың компиляция мен
орындау нәтижесінде не пайда болады?
class Base {
int i;
Base() { add(1); }
void add(int k) { i += k; }
void print() { System.out.println(i); }
}
class Extension
extends Base {
Extension() { add(2); }
void add(int k) { i += k*2; }
}
public class Qd073 {
public static void main(String[] args) {
bogo(new Extension());
}
static void
bogo(Base b) {
b.add(8);
b.print();
}
}
2. Келесі кодтың компиляция мен
орындау нәтижесінде не пайда болады?
public abstract
class Main {
class TestOutput{
LinkedList numbers=new LinkedList();
TestOutput(long count )
{
for (long
i=0;i<count;i++){
numbers.add(Math.random());
}
}
public void addNumbers(long count){
for (long i=0;i<count;i++)
numbers.add(Math.random());
}
public void writeToFile(String
fileToWrite)
throws IOException
{
java.io.FileWriter fw=
new
java.io.FileWriter(fileToWrite);
try{
Iterator i=numbers.iterator();
while (i.hasNext()){
Double d=(Double)i.next();
fw.write(d.toString());
i.remove();
}catch (IOException e){
throw e;
}
finally{
fw.close();
}
}
}
public static void main(String[] args) {
try{
(
new
TestOutput(Long.parseLong(args[1]))).writeToFile(
args[0]);
}
catch (IOException e)
{
System.err.print(e);
}
}
}
}
Бақылау
сұрақтары
1. Барлық операциялар
орындалғаннан кейін қосымшаның басты ағыны мен одан
пайда болған ағындардың жұмысы қалай
жүреді?
2. TreeSet мен HashSet
кластарының айырмашылығы қандай?
3. Hashmap класы қандай деректер
құрылымының негізінде
іске асырылады?