Введение в генерацию программного кода - ответы
Количество вопросов - 133
В состав шаблона включены следующие директивы. Укажите их назначение <#@ template hostspecific="true" language="C#" #><#@ output extension=".txt" #>
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для изменения типов полей таблиц, подобные этому? alter table drawing modify (revision number)
Дан файл со следующими комментариями: //read xy=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 осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
Дан файл со следующими комментариями: //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 осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
Дан следующий запрос select 'update '|| lower(table_name) || ' set '||lower(column_name)||'_text = to_char('||lower(column_name)||') where '||lower(column_name)||' is not null;'from cols c1where 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 хранятся соответственно тип данных и длина поля.Что делает вышеприведенный запрос?
Автоматическое создание программного кода специальным приложением, при котором по заданным условиям полностью или частично формируется исходный код программы это:
Чем являются шаблоны программного кода, метаданные, правила предметной области по отношению к генерации кода?
Пусть есть программа, генерирующая запросы SELECT. Что будет являться метаданными для этой программы?
Дана следующая программа 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;
Дан файл со следующими комментариями: //read xy=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 осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
Чем является следующий код? <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>
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для переименования полей таблиц, подобные этому? alter table equipment rename column id to equipment_id
Дан следующий запрос select 'alter table '|| lower(table_name) || ' modify('||lower(column_name)|| ' varchar2(4000 char));'from colswhere 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 хранятся соответственно тип данных и длина поля. Что делает вышеприведенный запрос?
Что будет результатом выполнения следующего шаблона? <#GetMonthName(1);GetMonthName(3);GetMonthName(7);GetMonthName(11);GetMonthName(13);GetMonthName(12);#><#+ public void GetMonthName(int a){ if(a>2&&a<6) {PushIndent("\t\t"); WriteLine("Весна");} if(a>5&&a<9) {PopIndent(); WriteLine("Лето");} if(a>8&&a<12) {PopIndent(); WriteLine("Осень");PushIndent("\t");} if(a>0&&a<3||a==12) {PushIndent("\t"); WriteLine("Зима");} if(a<1||a>12) {ClearIndent(); WriteLine("Ошибка");}}#>
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><package> <procedure name="prc_save_record"> <parameter name="id" type="number" in="true" out="true"/> <parameter name="name" type="varchar2" in="true"/> <parameter name="title" type="varchar2"/> <parameter name="save_date" type="date" out="true"/> </procedure> <procedure name="prc_delete_record"> <parameter name="id" type="number"/> </procedure></package>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:for-each select="package/procedure"> procedure <xsl:value-of select="@name"/> (<xsl:for-each select="parameter"> <xsl:if test="not(position()=last())"><BR/> <xsl:text disable-output-escaping="yes"> </xsl:text> </xsl:if> <xsl:value-of select="@name"/> <xsl:text> </xsl:text> <xsl:if test="@in='true'">in </xsl:if> <xsl:if test="@out='true'">out </xsl:if> <xsl:value-of select="@type"/> <xsl:if test="not(position()=last())">, </xsl:if> </xsl:for-each>); <xsl:if test="not(position()=last())"><BR/><BR/></xsl:if> </xsl:for-each></xsl:template></xsl:stylesheet>
Каким будет результат?
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><cities> <city country="Казахстан">Астана</city> <city country="Россия">Москва</city> <city country="Узбекистан">Ташкент</city> <city country="Украина">Киев</city> <city country="Киргизия">Бишкек</city> <city country="Белоруссия">Минск</city></cities>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <H4>Столицы мира:</H4> <xsl:for-each select="cities/city">(*) </xsl:for-each> <BR/> </xsl:template></xsl:stylesheet>
Что нужно вставить вместо звездочки(*), чтобы получился следующий результат?
Столицы мира: |
Астана |
Москва |
Ташкент |
Киев |
Бишкек |
Минск |
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для удаления полей из таблиц, подобные этому? alter table equipment drop column model
Если заданы шаблоны программного кода, метаданные, правила предметной области, то что можно получить?
Дан файл со следующими комментариями: //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 осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
Какой минимум информации должны содержать метаданные, чтобы можно было сгенерировать запросы для добавления полей к таблицам, подобные этому? alter table equipment add (service_description varchar2(1000 char))
Чем является следующий код? <#@ 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;<# } #>}
Дана следующая программа 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;
Чем является следующий код? 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);
Что будет результатом выполнения следующего шаблона? <#GetMonthName(3);GetMonthName(15);GetMonthName(9);GetMonthName(0);#><#+ public void GetMonthName(int a){ if(a>2&&a<6) PutMonth(2,"Весенний месяц"); if(a>5&&a<9) PutMonth(3,"Летний месяц"); if(a>8&&a<12) PutMonth(4,"Осенний месяц"); if(a>0&&a<3||a==12) PutMonth(1,"Зимний месяц"); if(a<1||a>12) PutMonth(0,"Нет такого месяца");}#><#+ public void PutMonth(int n, string s){ for(int i=0;i<n;i++) Write("\t"); WriteLine(s);}#>
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><package> <procedure name="prc_save_record"> <parameter name="id" type="number" in="true" out="true"/> <parameter name="name" type="varchar2" in="true"/> <parameter name="title" type="varchar2"/> <parameter name="save_date" type="date" out="true"/> </procedure> <procedure name="prc_delete_record"> <parameter name="id" type="number"/> </procedure></package>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:for-each select="package/procedure"> procedure <xsl:value-of select="@name"/> (<xsl:for-each select="parameter"> <xsl:value-of select="@name"/> <xsl:text> </xsl:text> <xsl:if test="@in='true'">in </xsl:if> <xsl:if test="@out='true'">out </xsl:if> <xsl:value-of select="@type"/> <xsl:if test="not(position()=last())">, </xsl:if> </xsl:for-each>); <xsl:if test="not(position()=last())"><BR/><BR/></xsl:if> </xsl:for-each></xsl:template></xsl:stylesheet>
Каким будет результат?
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><package> <procedure name="prc_save_record"> <parameter name="id" type="number" in="true" out="true"/> <parameter name="name" type="varchar2" in="true"/> <parameter name="title" type="varchar2"/> <parameter name="save_date" type="date" out="true"/> </procedure> <procedure name="prc_delete_record"> <parameter name="id" type="number"/> </procedure></package>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:for-each select="package/procedure"> procedure <xsl:value-of select="@name"/> (<xsl:for-each select="parameter"> <xsl:value-of select="@name"/> <xsl:text> </xsl:text> <xsl:if test="@in='true'">in </xsl:if> <xsl:if test="@out='true'">out </xsl:if> <xsl:value-of select="@type"/> <xsl:if test="not(position()=last())">,<BR/> </xsl:if> </xsl:for-each>); <xsl:if test="not(position()=last())"><BR/><BR/></xsl:if> </xsl:for-each></xsl:template></xsl:stylesheet>
Каким будет результат?
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><cities> <city country="Казахстан">Астана</city> <city country="Россия">Москва</city> <city country="Узбекистан">Ташкент</city> <city country="Украина">Киев</city> <city country="Киргизия">Бишкек</city> <city country="Белоруссия">Минск</city></cities>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <H4>Столицы мира:</H4> <xsl:for-each select="cities/city">(*) </xsl:for-each> <BR/> </xsl:template></xsl:stylesheet>
Что нужно вставить вместо звездочки(*), чтобы получился следующий результат?
Столицы мира: |
Астана - Казахстан |
Москва - Россия |
Ташкент - Узбекистан |
Киев - Украина |
Бишкек - Киргизия |
Минск - Белоруссия |
Пусть есть программа, генерирующая запросы SELECT. Что будет являться правилами предметной области для этой программы?
Дана следующая программа 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;
Дан файл со следующими комментариями: //read xy=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 осуществляет этот вывод. Что будет выведено в файл в результате работы программы?
Дан следующий XML-файл: <?xml-stylesheet type="text/xsl" href="style.xsl"?><cities> <city country="Казахстан">Астана</city> <city country="Россия">Москва</city> <city country="Узбекистан">Ташкент</city> <city country="Украина">Киев</city> <city country="Киргизия">Бишкек</city> <city country="Белоруссия">Минск</city></cities>
И следующий файл стиля: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <H4>Столицы мира:</H4> <xsl:for-each select="cities/city">(*) </xsl:for-each> <BR/> </xsl:template></xsl:stylesheet>
Что нужно вставить вместо звездочки(*), чтобы получился следующий результат?
Столицы мира: |
Астана, Москва, Ташкент, Киев, Бишкек, Минск |