Современные информационные технологии/ 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 класы қандай деректер құрылымының  негізінде іске асырылады?