Авторские Материалы о событиях в Израиле на Ближнем Востоке и в мире

IsraMir.com - Израильская журналистика

Default color brown color green color red color blue color
Вы сейчас тут: Новости arrow Техотдел arrow Свет ученья arrow String как Array
Skip to content
String как Array Версия для печати Отправить на e-mail
Sunday, 12 March 2006 | Д-р Евгений Канель, Зэев Фрайман для раздела Ученье – свет
StringкакArrayisramir.comПри обучении основам программирования используется огромное количество задач и упражнений с использованием литерных переменных; этот тип в языке PASCAL определяется как string и легко доступен для множества разнообразных операций. При переходе к Java сходу обнаруживается, что, по большому счету, практически все эти упражнения придется переделывать в смысле формулировки задания как минимум – в Java литерный тип оказывается «закрытым» на изменения введенного литерного значения.
 
В результате и перед учителями, и перед авторами задачников, и перед министерством образования возникает очень непростая задача: переформулировать фактически целый класс задач так, чтобы все-таки можно было использовать заложенные в них полезные и в дидактическом, и в сугубо программистском смысле возможности.
 
Сегодня мы хотим представить вам такую задачу. Вот как она формулировалась в государственном экзамене (письменном) на аттестат зрелости по предмету «Основы компьютерных наук».
 
  1. Напиши подпрограмму, которая принимает в качестве ввода два значение: непустое литерное значение и целое число, значение которого лежит в пределах от 1 до длины введенного литерного значения (нет необходимости проверять соответствие введенных значений требованиям задания)
  2. Напиши программу которая принимает в качестве ввода литерные значения до момента, когда будет введено пустое значение и выполняет следующие операции:
    1. Для каждого введенного литерного значения вводится дополнительно целое число, значение которого лежит в пределах от 1 до длины введенного литерного значения
    2. Для каждой пары «литерное значение – целое число» программа использует написанную в пункте №1 подпрограмму. В качестве вывода программа должна показать литерное значение до и после преобразования
    3. Программа в качестве дополнительного итогового результата выведет надпись YES, если для всех введенных литерных значений по крайней мере по одному значению начиналось с каждой литеры из набора от ‘a’ до ‘z’. В противном случае программа выведет надпись NO. Например, если среди введенных литерных значений ни одно  не начиналось с r, программа выведет NO.
 
А вот решение, сделанное на Java; естественно, что, выполняя «в целом и общем» требования задачи, работает она несколько иначе – и, главное, в качестве задания для ученика требует иной формулировки.
 
А каково ваше мнение на этот счет?
 
 
/**
 * @author (Kanel & Fraiman)
*/
import java.util.*;
 
public class myArray_2
{
 
 
 
public String charToEnd(String s,int m){
         if((m>0)&&(m
                              return s.substring(0,m)+s.substring(m+1)+s.charAt(m);
                              else {IO.writeln("Error!");return s;}
        }
 
 public void arrayPrintMissed(boolean[] arrCurr, char first){
     for(int i=0;i
         if(!arrCurr[i])IO.write((char)(i+first)+" ");
        }
        IO.writeln();
    }
 
public void inputStrings(char first, char last){
     int m; char firstChar;String newS;
     boolean[] arrTest= new boolean[last-first+1];
     boolean[] arrCurr= new boolean[last-first+1];
 
     Arrays.fill(arrTest,true);
     Arrays.fill(arrCurr,false);
   
     String s=IO.readString(" Enter the first string");
    
     while(!s.equals("")){
         firstChar=s.charAt(0);
         if( (firstChar>=first)&&(firstChar<=last))arrCurr[firstChar-first]=true;// the arrCurr update
         m=IO.readInt("Enter the place for char to be moved ");
          newS=charToEnd(s,m);
             IO.writeln("Before moving: "+s);
             IO.writeln("After moving: "+newS);
          s=IO.readString(" Enter the next string or empty string to stop");
        }
        if (Arrays.equals(arrTest,arrCurr))
                 IO.writeln("Yes,there were strings  started at each  letter from checking domain");
                      else {IO.writeln("No, the letters have been missed:");
                                  arrayPrintMissed(arrCurr,first);}
      }
    
 public static void main(String[] args){
          IO.writeln("Enter the checking domain:('a'..'z') or other");
          char first=IO.readChar("Enter the first letter");
          char last= IO.readChar("Enter the last letter");
          myArray_2 a=new myArray_2();
          a.inputStrings(first,last);
        }
}
           
 
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:


Автотранслитерация: выключена

Защитный код

Powered by jComments