игра брюс 2048
Главная / Искусственный интеллект и робототехника / Введение в генерацию программного кода / Тест 3

Введение в генерацию программного кода - тест 3

Упражнение 1:
Номер 1
Дан файл со следующими комментариями:
  
//a=1
//b=a+2
//c=6
//a=c-b
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        var = line[2].ToString();
        if (!vars.Contains(var))
        {
            program.Add("int " + line.Substring(2) + ";");
            vars.Add(var);
        }
        else
            program.Add(line.Substring(2));
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) int a; a=1; int b; b=a+2; int c; c=6; a=c-b;  

 (2) int a=1; int b=a+2; int c=6; int a=c-b;  

 (3) int a=1; int b=a+2; int c=6; a=c-b;  

 (4) int a=1; int b; b=a+2; int c=6; a=c-b;  


Номер 2
Дан файл со следующими комментариями:
  
//a=1
//b=a+2
//c=6
//a=c-b
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        var = line[2].ToString();
        if (!vars.Contains(var))
        {
            program.Add("int " + line[2] + ";");
            vars.Add(var);
        }
        program.Add(line.Substring(2) + ";");
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) int a=1; int b=a+2; int c=6; a=c-b;  

 (2) int a=1; int b=a+2; int c=6; int a=c-b;  

 (3) int a; a=1; int b; b=a+2; int c; c=6; a=c-b;  

 (4) int a=1; int b; b=a+2; int c=6; a=c-b;  


Номер 3
Дан файл со следующими комментариями:
  
//a=1
//b=a+2
//c=6
//a=c-b
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
string line;
string var;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        var = line[2].ToString();
        program.Add("int " + line.Substring(2) + ";");
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) int a=1; int b=a+2; int c=6; a=c-b;  

 (2) int a; a=1; int b; b=a+2; int c; c=6; a=c-b;  

 (3) int a=1; int b; b=a+2; int c=6; a=c-b;  

 (4) int a=1; int b=a+2; int c=6; int a=c-b;  


Упражнение 2:
Номер 1
Дана следующая программа
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
string rest;
int k;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("//")) k = 2; else k = 0;
        var = line[k].ToString();
        rest = line.Substring(k);
        if (!vars.Contains(var))
        {
            program.Add("int " + rest + ";");
            vars.Add(var);
        }
        else
            program.Add(rest + ";");
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Каким должен быть входной файл, чтобы на выходе работы программы получить следующий результат?
  
int a=1;
int b=a+2;
int c=6;
a=c-b;
  
  

Ответ:

 (1) a=1 //b=a+2 c=6 //a=c-b  

 (2) //int a=1; //int b=a+2; //int c=6; a=c-b;  

 (3) //a=1 //b=a+2 //c=6 //a=c-b  

 (4) a=1 b=a+2 c=6 a=c-b  


Номер 2
Дана следующая программа
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
string rest;
int k;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("//")) k = 2; else k = 0;
        var = line[k].ToString();
        rest = line.Substring(k);
        if (!vars.Contains(var))
        {
            program.Add("int " + rest + ";");
            vars.Add(var);
        }
        else
            program.Add(rest + ";");
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Каким должен быть входной файл, чтобы на выходе работы программы получить следующий результат?
  
int a=1;
int b=2;
int x=a+b;
int y=b-a;
  
  

Ответ:

 (1) a=1 b=2 //x=a+b //y=b-a  

 (2) a=1 //b=2 //x=a+b //y=b-a  

 (3) //x=a+b //y=b-a a=1 b=2  

 (4) //int a=1; //int b=2; //int x=a+b; //int y=b-a;  


Номер 3
Дана следующая программа
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
string rest;
int k;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("//")) k = 2; else k = 0;
        var = line[k].ToString();
        rest = line.Substring(k);
        if (!vars.Contains(var))
        {
            program.Add("int " + rest + ";");
            vars.Add(var);
        }
        else
            program.Add(rest + ";");
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Каким должен быть входной файл, чтобы на выходе работы программы получить следующий результат?
  
int x=1;
int b=2;
int a=x+b;
x=x+b;
int y=a-x;
  
  

Ответ:

 (1) x=1 b=2 a=x+b //x=x+b //y=a-x  

 (2) //x=1 //b=2 //a=x+b x=x+b //y=a-x  

 (3) x=1 b=2 a=x+b x=x+b y=a-x  

 (4) //int x=1; //int b=2; //int a=x+b; x=x+b; //int y=a-x;  


Упражнение 3:
Номер 1
Дан файл со следующими комментариями:
  
//read x
y=x+5;
//write y
//z=2*x+y
//write z
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
string line;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("read")) 
            program.Add("Console.Read(" + line[7].ToString() + ");");
        else
        if (line.Contains("write")) 
            program.Add("Console.WriteLine(" + line[8].ToString() + ");");
        else
        if (line.Contains("//")) 
            program.Add("int " + line.Substring(2) + ";");
        else
            program.Add(line);
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) int x; Console.Read(x); int y; y=x+5; Console.WriteLine(y); int z; z=2*x+y; Console.WriteLine(z);  

 (2) Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (3) int x; int y; int z; Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (4) Console.Read(x); y=x+5; Console.WriteLine(y); int z=2*x+y; Console.WriteLine(z);  


Номер 2
Дан файл со следующими комментариями:
  
//read x
y=x+5;
//write y
//z=2*x+y
//write z
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
string line;
string var;
string lineoutput;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("read"))
        {
            var = line[7].ToString();
            lineoutput="Console.Read(" + line[7].ToString() + ");";
        }
        else
            if (line.Contains("write"))
            {
                var = line[8].ToString();
                lineoutput="Console.WriteLine(" + line[8].ToString() + ");";
            }
            else
                if (line.Contains("//"))
                {
                    var = line[2].ToString();
                    lineoutput = line.Substring(2) + ";";
                }
                else
                {
                    var = line[0].ToString();
                    lineoutput =line;
                }
        if (!vars.Contains(var)) { vars.Add(var); program.Add("int " + var + ";"); }
        program.Add(lineoutput);
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) Console.Read(x); y=x+5; Console.WriteLine(y); int z=2*x+y; Console.WriteLine(z);  

 (2) Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (3) int x; int y; int z; Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (4) int x; Console.Read(x); int y; y=x+5; Console.WriteLine(y); int z; z=2*x+y; Console.WriteLine(z);  


Номер 3
Дан файл со следующими комментариями:
  
//read x
y=x+5;
//write y
//z=2*x+y
//write z
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
string line;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("read"))
            program.Add("Console.Read(" + line[7].ToString() + ");");
        else
            if (line.Contains("write"))
                program.Add("Console.WriteLine(" + line[8].ToString() + ");");
            else
                if (line.Contains("//"))
                    program.Add(line.Substring(2) + ";");
                else
                    program.Add(line);
    }
}
Output.PutResult(program, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (2) Console.Read(x); y=x+5; Console.WriteLine(y); int z=2*x+y; Console.WriteLine(z);  

 (3) int x; Console.Read(x); int y; y=x+5; Console.WriteLine(y); int z; z=2*x+y; Console.WriteLine(z);  

 (4) int x; int y; int z; Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  


Номер 4
Дан файл со следующими комментариями:
  
//read x
y=x+5;
//write y
//z=2*x+y
//write z
  
  Также имеется приведенный ниже программный код:
  
List<string> program = new List<string>();
List<string> vars = new List<string>();
List<string> declarations = new List<string>();
string line;
string var;
string lineoutput;
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        if (line.Contains("read"))
        {
            var = line[7].ToString();
            program.Add("Console.Read(" + line[7].ToString() + ");");
        }
        else
            if (line.Contains("write"))
            {
                var = line[8].ToString();
                program.Add("Console.WriteLine(" + line[8].ToString() + ");");
            }
            else
                if (line.Contains("//"))
                {
                    var = line[2].ToString();
                    program.Add(line.Substring(2) + ";");
                }
                else
                {
                    var = line[0].ToString();
                    program.Add(line);
                }
        if (!vars.Contains(var)) { vars.Add(var); declarations.Add("int " + var + ";"); }
        
    }
}
declarations.AddRange(program);
Output.PutResult(declarations, resultpath);
  
  В переменной filepath хранится путь к файлу с комментариями. Переменная resultpath содержит путь, куда выводится результат работы программы, а метод Output.PutResult осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
  

Ответ:

 (1) Console.Read( x); y=x+5; Console.WriteLine( y); int z=2*x+y; Console.WriteLine( z);  

 (2) int x; Console.Read(x); int y; y=x+5; Console.WriteLine(y); int z; z=2*x+y; Console.WriteLine(z);  

 (3) int x; int y; int z; Console.Read(x); y=x+5; Console.WriteLine(y); z=2*x+y; Console.WriteLine(z);  

 (4) Console.Read( x); y=x+5; Console.WriteLine( y); z=2*x+y; Console.WriteLine( z);  


Упражнение 4:
Номер 1
Чем является следующий код?
  
<#@ template debug="false" language="C#" #>
<#@ output extension=".cs" #>
<# string[] vars = new string [] {"A", "B", "C"}; #>
class MyClass {
<# 
  foreach (string variable in vars)
  { #>
  private int <#= variable #> = 0;
<# } #>
}
  
  

Ответ:

 (1) шаблоном XSLT 

 (2) кодом на ASP 

 (3) незавершенным кодом 

 (4) шаблоном T4 


Номер 2
Чем является следующий код?
  
List<string> program = new List<string>();
string line;
Regex pattern = new Regex(@"^//\s*(?<val>.*?)\s*=", RegexOptions.Singleline);
using (StreamReader sr = File.OpenText(filepath))
{
    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        foreach (Match m in pattern.Matches(line))
        {
            program.Add("private int " + m.Groups["val"].Value + ";");
        }
        program.Add(Regex.Replace(line,@"^//\s*",""));
    }
}
Output.PutResult(program, filepath);
  
  

Ответ:

 (1) регулярным выражением 

 (2) программой с применением регулярных выражений 

 (3) шаблоном T4 

 (4) программой с применением XML 


Номер 3
Чем является следующий код?
  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <xsl:for-each select="VARIABLES/VARIABLE[@Active='true']">
      const int <xsl:value-of select="VAR"/> =
      <xsl:value-of select="VAL"/>;<BR/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
  
  

Ответ:

 (1) XML-файлом 

 (2) шаблоном T4 

 (3) шаблоном XSLT 

 (4) файлом метаданных 


Упражнение 5:
Номер 1
Чем является незавершенный код с точки зрения генерации кода?

Ответ:

 (1) код, генерация которого завершилась неудачно 

 (2) любая часть завершенного кода 

 (3) сгенерированный код, который нуждается в последующей ручной модификации для возможности применения его в приложении 

 (4) код приложения, часть которого была сгенерирована автоматически без ручной модификации, а часть была разработана вручную 


Номер 2
Каковы основные шаги в разработке и верификации программного кода?

Ответ:

 (1) сбор данных, разработка инструкции, составление документации 

 (2) проектирование, разработка, тестирование, отладка 

 (3) разработка, отладка, настройка, распространение 

 (4) проектирование, разработка, установка, настройка 


Номер 3
Что выполняется, если меняются требования к приложению?

Ответ:

 (1) если приложение уже применяется в работе, то эти требования отменяются 

 (2) при необходимости выполняется перепроектирование, изменяется, удаляется или добавляется код с последующим тестированием и отладкой 

 (3) код разрабатывается или генерируется заново 

 (4) заново генерируется код, но в тестировании он уже не нуждается, так как предыдущий вариант кода был уже протестирован 


Упражнение 6:
Номер 1
Выберите верные утверждения касательно применения генераторов

Ответ:

 (1) для генерации кода необходимо создать шаблоны, ввести метаданные, разработать генератор и запустить его 

 (2) практически всегда в программном проекте имеется код, который требуется разработать вручную 

 (3) если имеется генератор, то применение кода, разработанного вручную не имеет никаких приемуществ 

 (4) если требования и генерируемому коду изменились, то достаточно только изменить шаблоны, чтобы учесть их 


Номер 2
Выберите верные утверждения касательно применение генератора

Ответ:

 (1) достаточно тестировать только ручной код, сгенерированный код в тестировании не нуждается, так как генератор и шаблоны были уже протестированы 

 (2) сгенерированный код необходимо тестировать также, как и ручной 

 (3) производительность генератора является главным критерием его работы 

 (4) отдельным этапом процесса верификации является тестирование самого генератора и шаблонов на соответствие текста сгенерированного кода ожидаемому результату 


Номер 3
Выберите верные утверждения касательно применения генераторов

Ответ:

 (1) отладка сгенерированного кода необходима также как и отладка ручного кода 

 (2) нет необходимости отладки сгенерированного кода 

 (3) если тестирование сгенерированного кода завершилось неудачей, выполняется отладка генератора и шаблонов 

 (4) производительность сгенерированного кода зависит от производительности генератора 


Упражнение 7:
Номер 1
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для переименования полей таблиц, подобные этому?
  
alter table equipment rename column id to equipment_id
  
  

Ответ:

 (1) имя таблицы, имя поля, тип поля 

 (2) имя таблицы, имя поля 

 (3) имя таблицы, имя поля, новое имя поля 

 (4) имя таблицы, имя поля, новый тип поля 


Номер 2
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для добавления полей к таблицам, подобные этому?
  
alter table equipment add (service_description varchar2(1000 char))
  
  

Ответ:

 (1) имя таблицы, имя поля, новое имя поля 

 (2) имя таблицы, имя поля 

 (3) имя таблицы, имя поля, новый тип поля 

 (4) имя таблицы, имя поля, тип поля 


Номер 3
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для удаления полей из таблиц, подобные этому?
  
alter table equipment drop column model
  
  

Ответ:

 (1) имя таблицы, имя поля, новое имя поля 

 (2) имя таблицы, имя поля, тип поля 

 (3) имя таблицы, имя поля 

 (4) имя таблицы, имя поля, новый тип поля 


Номер 4
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для изменения типов полей таблиц, подобные этому?
  
alter table drawing modify (revision number)
  
  

Ответ:

 (1) имя таблицы, имя поля, новое имя поля 

 (2) имя таблицы, имя поля, тип поля 

 (3) имя таблицы, имя поля, новый тип поля 

 (4) имя таблицы, имя поля 


Упражнение 8:
Номер 1
Дан следующий запрос
  
select 'alter table '|| lower(table_name) || ' modify('||lower(column_name)||  ' varchar2(4000 char));'
from cols
where cols.data_type like '%VARCHAR2%'
  and data_length between 1000 and 3999
  order by table_name, column_name
  
  Представление cols в Оракл содержит информацию о полях таблицы в базе данных. В поле column_name хранится имя поля, а в поле table_name содержится имя таблицы, в которой находится поле. В полях же data_type и data_length хранятся соответственно тип данных и длина поля. Что делает вышеприведенный запрос?
  

Ответ:

 (1) увеличивает длину текстовых полей, размерность которых составляет от 1000 до 3999 

 (2) генерирует запросы, которые увеличивают длину текстовых полей до 4000, размерность которых составляет от 1000 до 3999 

 (3) уменьшает длину текстовых полей, размерность которых составляет 4000 на величину от 1000 до 3999 

 (4) генерирует запросы для добавления текстового поля длиной 4000, если в таблице есть другие поля размерностью от 1000 до 3999 


Номер 2
Дан следующий запрос
  
select 'alter table '|| lower(table_name) || ' add('||lower(column_name)||'_text varchar2(4000 char));'
from cols
where cols.data_type='NUMBER'
  order by table_name, column_name
  
  Представление cols в Оракл содержит информацию о полях таблицы в базе данных. В поле column_name хранится имя поля, а в поле table_name содержится имя таблицы, в которой находится поле. В полях же data_type и data_length хранятся соответственно тип данных и длина поля. Что делает вышеприведенный запрос?
  

Ответ:

 (1) добавляет новое текстовое поле 

 (2) генерирует запрос для каждого целочисленного поля, создающее новое текстовое поле с аналогичным именем и добавлением суффикса к нему 

 (3) генерирует запрос для замены всех числовых полей на текстовые с аналогичным именем и добавлением суффикса 

 (4) создает новое текстовое поле для каждого целочисленного поля, с аналогичным именем и добавлением суффикса к нему 


Номер 3
Дан следующий запрос
  
select 'update '|| lower(table_name) || ' set '||lower(column_name)||'_text = 
to_char('||lower(column_name)||') where '||lower(column_name)||' is not null;'
from cols c1
where 
c1.data_type='NUMBER'
and exists
    (select 1 
    from cols c2 
    where c1.table_name = c2.table_name
    and lower(c1.column_name||'_text') = lower(c2.column_name)
    and c2.data_type like '%CHAR%')
order by c1.table_name, c1.column_name    
  
  Представление cols в Оракл содержит информацию о полях таблицы в базе данных. В поле column_name хранится имя поля, а в поле table_name содержится имя таблицы, в которой находится поле. В полях же data_type и data_length хранятся соответственно тип данных и длина поля.
Что делает вышеприведенный запрос?
  

Ответ:

 (1) генерирует запросы, записывающие значение из целочисленного поля в текстовое, для случаев, когда в таблице имеются оба поля, причем имя текстового поля аналогично имени целочисленного поля, но с добавлением окончания 

 (2) записывает значение из целочисленного поля в текстовое, причем имя текстового поля аналогично имени целочисленного поля, но с добавлением окончания 

 (3) генерирует запросы, заменяющие целочисленное поле на текстовое или наоборот, для случаев, когда в таблице нет хотя бы одного поля, причем имя текстового поля аналогично имени целочисленного поля, но с добавлением окончания 

 (4) генерирует запросы, записывающие значение из текстового поля в целочисленное, для случаев, когда в таблице имеются оба поля, причем имя текстового поля аналогично имени целочисленного поля, но с добавлением окончания 




Главная / Искусственный интеллект и робототехника / Введение в генерацию программного кода / Тест 3