66615

Разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий

Отчет о прохождении практики

Информатика, кибернетика и программирование

Ввод исходных данных о материале детали и режущей части инструмента; геометрии, погрешности заточки и размерах инструмента; об условиях обработки (осевая подача, точность оборудования, размеры и погрешность заготовки и др.).

Русский

2014-08-25

198 KB

0 чел.


Выбор материала детали и инструмента

ыбор метода обработки и инструмента

Визуальная проверка и корректировка данных.

Проверка всего блока данных.

Интерактивный контроль правильности вводимых данных.

Ввод данных параметров операций.


СОДЕРЖАНИЕ

ВВЕДЕНИЕ………………………………………………………………………..3

1. СТРУКТУРА ПРЕДПРИЯТИЯ

1.1 Общая структура предприятия……………………………………….. 4

1.2 Структура ОИТ………………………………………......……………. 4

1.3 Основные задачи ОИТ ………………………………………………....4

2. АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ

2.1 Постановка задачи………………………………….............................5

2.2 Данные для реализации ……………………………………………...5

2.3 Выбор языка и среды программирования …………………………..5

3. РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

3.1 Структура автоматизированной системы….………………………..5

3.2 Разработка алгоритма подготовки и ввода данных……………….5

 3.2.1 Ввод данных метода обработки и инструмента…………...5

 3.2.2 Ввод данных о материале инструмента……………………5

 3.2.3 Ввод данных о материале детали…………………………...5

 3.2.4 Проверка и корректировка данных………………………..5

ЗАКЛЮЧЕНИЕ………………………………………………………………….хз

БИБЛИОГРАФИЧЕСКИЙ СПИСОК…………………………………………..хз

ПРИЛОЖЕНИЕ…………………………………………...……………………..хз


ВВЕДЕНИЕ

Местом прохождения практики студента пятого курса металлургического факультета группы ЗлМ-507 Бейцешвили Г.С. являлась кафедра “Технологии машиностроения, станки и инструменты” (ТМСИ)  Южно-Уральского государственного университета (ЮУрГУ).

Производственная практика проходила с 28.01.2012 по 28.02.2012.

Руководитель-преподаватель – доктор технических наук, профессор Дерябин Игорь Петрович.

Цель практики: разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий.


1. СТРУКТУРА ПРЕДПРИЯТИЯ

1.1. Общая структура ЮУрГУ

1.2. Структура кафедры ТМСИ

1.3 Основные задачи ТМСИ


2. АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ

2.1. Постановка задачи

В ходе прохождения практики руководителем практики были поставлены следующие задачи:

- Изучение и разработка алгоритмов сверления.

- Разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий.

2.2. Данные для реализации.

Для реализации поставленных задач была выдана программа, написанная на языке Turbo Basic.

2.3. Выбор языка и среды программирования.

Для реализации программного обеспечения выбор был сделан в пользу объектно-ориентированного языка C#, так как язык прост в обращении и достаточно гибок. Среда разработки – Visual Studio 2010, Net Framework 3.5.


3.
РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

3.1 Структура автоматизированной системы

Для компьютерных исследований была разработана программа моделирования обработки отверстий с расчетами параметров точности. Основные этапы структурной схемы  обработки данных (рисунок 1.) рассмотрены ниже.

Рисунок 1. Структура системы компьютерного моделирования

Этап 1. Ввод исходных  данных о материале детали и режущей части инструмента; геометрии, погрешности заточки и размерах инструмента; об условиях обработки (осевая подача, точность оборудования, размеры и погрешность заготовки и др.).

Этап 2. Выбор компьютерной модели расчета параметров точности. Сначала рассчитывается положение на режущих лезвиях точки М. В зависимости от положения точки М и наличия отверстия в заготовке (D0 = 0 или   D00) выбирается соответствующая компьютерная модель. После выбора модели рассчитываются коэффициенты.

Этап 3. Расчет параметров точности. Поскольку в процессе обработки отверстия происходит накопление погрешностей, определяющих параметры точности, то расчет производится на последнем обороте инструмента.

Этап 4. Вывод результатов моделирования, сравнение расчетных параметров с заданными значениями. При несовпадении каких-либо параметров в режиме отладки на экран дисплея выдаются причины данной погрешности и даются рекомендации по их устранению или снижению, после чего необходимо внести коррективы в некоторые исходные данные.

3.2 Разработка алгоритма подготовки и ввода данных

Для реализации программы был разработан алгоритм, представленный на рисунке 2, из которого видно, что ввод данных в программу происходит в несколько этапов.

 

Рисунок 2. Структура системы компьютерного моделирования


3.2.1 Ввод данных метода обработки и инструмента

При запуске программы выводится диалоговое окно (рисунок 3.) типа обработки, по умолчанию сразу загружается окно выбора сверления:

Рисунок 3. Выбор перехода

в котором можно выбрать режим сверления "в сплошном материале" или "по предварительно просверленному отверстию". На вкладке "сверление" можно выбрать тип сверла:

  •  спиральные
  •  перовые
  •  шнековые
  •  ружейные

Также можно выбрать, будет ли применяться для сверла двойная заточка. После того, как все параметры выбраны, нажимается кнопка "далее".

3.2.2 Ввод данных о материале инструмента 

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

Рисунок 4. Выбор материала инструмента

3.2.3 Ввод данных о материале детали

Ввод данных о материале детали (рисунок 5.) происходит после выбора материала инструмента. Далее также выбирается группа материала детали и марка стали. База данных также реализована в формате .xml.

Рисунок 5. Выбор материала детали

3.3 Проверка и корректировка данных

Для безошибочного ввода данных параметров обработки был разработан алгоритм подготовки ввода данных и проверки введенных данных, который представлен на рисунке 2.

Из этого алгоритма видно, что соблюдение правильности всех введенных данных обеспечивается в несколько этапов.

На первом этапе происходит интерактивная проверка и корректировка  всех вводимых данных. На этом этапе предусмотрено, что нельзя ввести "." вместо "," для разделения целой и дробной части числа ( программа сама исправит точку на запятую). При вводе символов проверяется каждый символ и при этом блокируется возможность ввести букву или другой нечисловой символ.

На втором этапе ввода данных по нажатию кнопки "ОК" происходит проверка на согласованность данных, например: при сверлении по предварительно просверленному отверстию нельзя ввести диаметр инструмента  < диаметра отверстия, или допуски инструмента = 0. Если параметры модели нереальны,  программа выдает сообщение об ошибке с указанием рекомендаций по исправлению ошибки (рисунок 6.).

 

Рисунок 6. Сообщение об ошибке.

На третьем этапе введенные и проверенные программой данные  выводятся в результирующую форму. Пользователь может визуально проверить параметры обработки, которые будут в дальнейшем использованы

программой для отладки. При необходимости данные можно откорректировать в соответствии с требованиями пользователя (рисунок 7.).

Рисунок 7. Визуальная проверка данных


ЗАКЛЮЧЕНИЕ

Я проходил практику в течение 6-и недель на кафедре ТМСИ Южно-Уральского Государственного Университета. В ходе прохождения практики я достиг поставленной цели – изучил различные типы сверления, разработал алгоритмы для их реализации и написал программу, рассчитывающую параметры точности и позволяющую скорректировать исходные данные для наиболее приемлемых параметров точности.


БИБЛИОГРАФИЧЕСКИЙ СПИСОК
 

  1.  Джейсон, Прайс; Майк, Гандэрлой – Visual C# .NET. Полное руководство; КОРОНА принт, 2004. - 960 c.
  2.  Рихтер, Джефри – Программирование на платформе Microsoft .NET Framework 3.5 на языке C#; Питер, 2007. - 656 c.
  3.  Робинсон, С.; Корнес, О.; Глинн, Д. и др. C# для профессионалов; М.: Лори, 2005. - 306 c.


ПРИЛОЖЕНИЕ

Пример исходного кода главного меню программы

using System;

using System.Collections.Generic;

using System.Globalization;

using System.Drawing;

using System.Linq;

using System.Windows.Forms;

using System.Reflection;

using System.IO;

using System.Threading;

using System.Text.RegularExpressions;

namespace HoleMachining {

   public partial class MainForm : Form {

       public enum EnMode {

           ModeMainMenu,                       

           ModeID1,

           ModeID9,

           ModeID10,

           ModeID23,

           ModeIDS568,

           ModeID578,

           ModeID41,

           ModeTAB1K,

           ModeOTV01,

           ModeOTV02,

           ModeOTV03,

           ModeOTV04,

           ModeOTV05,

           ModeOTV06,

           ModeOTV07,

           ModeOTV08,

           ModeOTV09,

           ModeOTV10,

           ModeUU

       }

       

       private Thread ThreadMain;

       public bool ExitEvent;

       // Строка с версией программы.

       public string VersionString = Assembly.GetExecutingAssembly().GetName().Version.ToString();

       public double Input;

       public EnMode Mode;        

       public Keys Inkey;

       

       public ManualResetEvent mreInkey;

       public ManualResetEvent mreInput;

       public Logger Log;

       public Terminal terminal;

       

       public MainMenu mainMenu;

       public ID41 id41;

       public ID1 id1;

       public ID9 id9;

       public ID10 id10;

       public ID23 id23;

       public ID578 id578;

       public IDS568 ids568;

       public TAB1K tab1k;

       public OTV01 otv01;

       public OTV02 otv02;

       public OTV03 otv03;

       public OTV04 otv04;

       public OTV05 otv05;

       public OTV06 otv06;

       public OTV07 otv07;

       public OTV08 otv08;

       public OTV09 otv09;

       public OTV10 otv10;

       public UU uu;

       /// <summary>

       /// Чтение заголовка сборки.

       /// </summary>

       /// <value>Заголовок сборки.</value>

       public string AssemblyTitle {

           get {

               // Get all Title attributes on this assembly

               object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes( typeof( AssemblyTitleAttribute ), false );

               // If there is at least one Title attribute

               if ( attributes.Length > 0 ) {

                   // Select the first one

                   AssemblyTitleAttribute titleAttribute = ( AssemblyTitleAttribute ) attributes[ 0 ];

                   // If it is not an empty string, return it

                   if ( titleAttribute.Title != "" )

                       return titleAttribute.Title;

               }

               // If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name

               return Path.GetFileNameWithoutExtension( Assembly.GetExecutingAssembly().CodeBase );

           }

       }

       public MainForm() {

           InitializeComponent();

           // Создаём экземпляр класса, передавая в качестве параметра компонент,

           // на котором будем отображать данные.

           terminal = new Terminal( pictureBox1, 80, 25 );

           // Экземпляры модулей программы.

           mainMenu = new MainMenu( this );

           id1 = new ID1( this );

           id9 = new ID9( this );

           id10 = new ID10( this );

           id23 = new ID23( this );

           id41 = new ID41( this );

           id578 = new ID578( this );

           ids568 = new IDS568( this );

           tab1k = new TAB1K( this );

           otv01 = new OTV01( this );

           otv02 = new OTV02( this );

           otv03 = new OTV03( this );

           otv04 = new OTV04( this );

           otv05 = new OTV05( this );

           otv06 = new OTV06( this );

           otv07 = new OTV07( this );

           otv08 = new OTV08( this );

           otv09 = new OTV09( this );

           otv10 = new OTV10( this );

           uu = new UU( this );

       }

       private void ExitToolStripMenuItem_Click( object sender, EventArgs e ) {

           // Завершаем работу потока.

           ExitEvent = true;

           Inkey = Keys.Q;

           mreInkey.Set();

           mreInput.Set();

           

           // Ожидаем завершения потока.

           if ( ThreadMain != null ) {

               ThreadMain.Abort();

               ThreadMain.Join();                

           }

           // Выходим из программы.

           Close();

       }

       private void MainForm_Load( object sender, EventArgs e ) {

           // Третья цифра сборки (build) будет равна числу дней начиная с 1 января 2000 года по местному времени.

           // Четвертая цифра ревизии (revision) будет установлена в количество секунд от полуночи по местному времени,

           // делёное пополам.

           int build = Assembly.GetExecutingAssembly().GetName().Version.Build;

           int revision = Assembly.GetExecutingAssembly().GetName().Version.Revision;

           DateTime bdate = new DateTime( 2000, 1, 1 );

           bdate = bdate.AddDays( build );

           bdate = bdate.AddSeconds( 2 * revision );

           // Создаём экземпляр журнала ошибок.

           Log = new Logger( String.Format( "{0}\\{1}.log", Application.StartupPath, AssemblyTitle ), true );

           Log.StartLogging( Logger.EnLogMode.lmLogToFile );

           Log.info( String.Format( "{0}, версия {1} от {2} {3}", AssemblyTitle, VersionString, bdate.ToLongDateString(), bdate.ToLongTimeString() ) );

           // Первоначальные настройки.

           Mode = EnMode.ModeMainMenu;

           // Событие для выхода из потока.

           ExitEvent = false;

           // Событие для работы с клавиатурой в потоке.

           mreInkey = new ManualResetEvent( false );

           mreInput = new ManualResetEvent( false );

           // Выводим текст в заголовке формы.

           Text = String.Format( "{0}, версия {1} от {2}", AssemblyTitle, VersionString, bdate.ToLongDateString() );

           // Выводим текст с описанием работы.

           terminal.SetColor( Color.Black, Color.LightGray );

           terminal.ClearScreen();

           terminal.Print( "ЭМУЛЯТОР КОНСОЛИ (РЕЖИМ ОТЛАДКИ)", 4, 22 );

           terminal.Print( "1. Выход из программы: Alt + X (если зависло, то через Диспетчер задач)", 6, 2 );

           terminal.Print( "2. Работу меню, списков, базы, ввода проверять при помощи пути:", 8, 2 );

           terminal.Print( "   Сверление\\в сплошном материале\\Спиральные", 9, 2 );

           terminal.Print( "3. Клавиша Q завершает работу эмулируемой программы. Клавиша ESC позволяет", 11, 2 );

           terminal.Print( "   вернуться по иерархическому меню или закрыть текущее окно выбора.", 12, 2 );

           terminal.Print( "4. Файл data.xml обязательно должен присутствовать в текущей папке.", 14, 2 );

       }

       private void pictureBox1_Paint( object sender, PaintEventArgs e ) {

           // Перерисвываем окно терминала.

           Image img = new Bitmap( pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height );

           Graphics g = Graphics.FromImage( img );

           terminal.DrawScreen(g);

           e.Graphics.DrawImage( img, pictureBox1.ClientRectangle );

       }

       public void SetInput( string Text, int Y, int X, int Length, bool Visible ) {

           // Вычисление координат для поля редактирования.

           Graphics g = pictureBox1.CreateGraphics();

           // Узнаём размеры символа для выбранного шрифта.           

           StringFormat strfmt = StringFormat.GenericTypographic;

           strfmt.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

           SizeF sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );

           g.Dispose();

           textBoxInput.Left = ( int ) ( ( X - 1 ) * sz.Width );

           textBoxInput.Top = pictureBox1.Top + ( int ) ( ( Y - 1 ) * sz.Height );

           textBoxInput.Width = ( int ) ( Length * sz.Width );

           textBoxInput.Text = Text;

           textBoxInput.Visible = Visible;

           ActiveControl = textBoxInput;

       }

       public void NotImplemented() {

           Invoke( new Action<int>( terminal.Screen ), 0 );

           Invoke( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );

           Invoke( new Action( terminal.ClearScreen ) );

           terminal.Print( "                  ", 10, 30, Color.Black, Color.Red );

           for ( int i = 11; i < 14; i++ ) {

               terminal.Print( " ", i, 30 );

               terminal.Print( " ", i, 47 );

           }

           terminal.Print( "                  ", 14, 30 );

           terminal.Print( " НЕ РЕАЛИЗОВАНО ", 12, 31, Color.Red, Color.LightGray );

       }

       // Симуляция Inkey$.

       private void MainForm_KeyDown( object sender, KeyEventArgs e ) {

           // Запоминаем нажатую клавишу.

           Inkey = e.KeyCode;

           // Устанавливаем состояние триггера.

           mreInkey.Set();

       }

       private void textBoxInput_KeyDown( object sender, KeyEventArgs e ) {

           if ( e.KeyCode == Keys.Return ) {

               e.SuppressKeyPress = true;

               NumberFormatInfo provider = new NumberFormatInfo() { NumberDecimalSeparator = "." };

               Input = 0;

               // Проверяем, является ли введённое число типом double.

               if ( ( new Regex( @"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$" ) ).IsMatch( textBoxInput.Text ) ) {

                   Input = Convert.ToDouble( textBoxInput.Text, provider );

                   if ( Input == 0 ) {

                       MessageBox.Show( "Число должно быть отличным от 0." );

                   } else {

                       textBoxInput.Visible = false;

                       ActiveControl = pictureBox1;

                       // Устанавливаем состояние триггера.

                       mreInput.Set();

                      

                   }

               } else {

                   MessageBox.Show( "Число должно иметь тип double." );

               }

           }

       }

       private void textBoxInput_Leave( object sender, EventArgs e ) {

           // Возвращаем фокус обратно на поле ввода.

           this.ActiveControl = textBoxInput;

       }

       private void Scheduler() {            

           try {

               // Переключение программ.

               do {

                   switch ( Mode ) {

                       case EnMode.ModeMainMenu: { mainMenu.MainThreadProcedure(); break; }

                       case EnMode.ModeID1: { id1.MainThreadProcedure(); break; }

                       case EnMode.ModeID9: { id9.MainThreadProcedure(); break; }

                       case EnMode.ModeID10: { id10.MainThreadProcedure(); break; }

                       case EnMode.ModeID23: { id23.MainThreadProcedure(); break; }

                       case EnMode.ModeID41: { id41.MainThreadProcedure(); break; }

                       case EnMode.ModeIDS568: { ids568.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV01: { otv01.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV02: { otv02.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV03: { otv03.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV04: { otv04.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV05: { otv05.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV06: { otv06.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV07: { otv07.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV08: { otv08.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV09: { otv09.MainThreadProcedure(); break; }

                       case EnMode.ModeOTV10: { otv10.MainThreadProcedure(); break; }

                   }

               } while ( !ExitEvent );

               Invoke( new Action<int>( terminal.Screen ), 0 );

               Invoke( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );

               Invoke( new Action( terminal.ClearScreen ) );

               Invoke( new Action<string, int, int, Color, Color>( terminal.Print ),

                   "                  ", 10, 30, Color.Black, Color.Blue );

               for ( int i = 11; i < 14; i++ ) {

                   Invoke( new Action<string, int, int>( terminal.Print ), " ", i, 30 );

                   Invoke( new Action<string, int, int>( terminal.Print ), " ", i, 47 );

               }

               Invoke( new Action<string, int, int>( terminal.Print ),

                   "                  ", 14, 30 );

               Invoke( new Action<string, int, int, Color, Color>( terminal.Print ),

                   " ЗАВЕРШЕНО ", 12, 33, Color.Blue, Color.LightGray );

               Thread.Sleep( 2000 );

           } catch ( ThreadAbortException )  { }

       }

       private void MainMenuItem_Click( object sender, EventArgs e ) {

           Graphics g = pictureBox1.CreateGraphics();

           // Узнаём размеры символа для выбранного шрифта.           

           StringFormat strfmt = StringFormat.GenericTypographic;

           strfmt.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

           SizeF sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );

           g.Dispose();

           Size = new Size( ( int ) ( 80 * sz.Width ) + panel1.Padding.Horizontal,

               ( int ) ( 25 * sz.Height ) + pictureBox1.Location.Y + panel1.Padding.Top );

           // Запускаем основной поток программы.

           MainMenuItem.Enabled = false;

           ExitEvent = false;

           Inkey = Keys.None;

           Input = 0;

           mreInkey.Reset();

           mreInput.Reset();

           // Режим главного меню.

           Mode = EnMode.ModeMainMenu;          

           

           if ( ThreadMain != null ) {

               ThreadMain.Abort();

               ThreadMain.Join();

               ThreadMain = null;

           }

           ThreadMain = new Thread( Scheduler );

           ThreadMain.Start();

           MainMenuItem.Enabled = true;

       }

   }

}


 

А также другие работы, которые могут Вас заинтересовать

33517. Периодизация русской литературы ХХ века 14.73 KB
  Периодизация русской литературы ХХ века. Принято считать что первый период развития русской литературы ХХ века начинается с 90х годов ХIХ века и заканчивается в 1917 году. С точки зрения собственно литературной как правильно отмечала эмигрантская критика это было прямое продолжение литературы предреволюционной. Но в ней вызревали качественно новые признаки и великий раскол на три ветви литературы произошел в начале 20х.
33518. Белая гвардия 15.21 KB
  Семья Турбиных типичная интеллигентная семья военных где старший брат полковник младший юнкер сестра замужем за полковником Тальбергом. Алексей Турбин на наш теперешний взгляд очень молод: в тридцать уже полковник. Особенно близок Турбин к Рощину из “Хождения по мукамâ€. В пьесе две сцены когда Алексей Турбин проявляется как характер.
33519. Идейно-тематические и художественные особенности лирики Бродского 16.94 KB
  Однако через постижение этих отдельных пространств и их бытия Бродский выводил общие законы. Бродский являет собой историка межвременных коллизий и событий исследуя которые можно понять общее для всей человеческой истории. Это значит что Бродский приверженец в своей основе классицистической поэтики использует в стихотворениях только ту лексику которая максимально отвечает его замыслу. Бродский может изменять по своему желанию устойчивые словоформы отрекается от постоянства метра в одном стихотворении.
33520. Ведущие темы в лирике Есенина 22.6 KB
  Ведущие темы в лирике Есенина. Сложная и интересная судьба поэта множество путешествий смена мест и образа жизни в сочетании с творческим подходом к осмыслению действительности обусловили богатство и разнообразие тем и мотивов лирики Есенина. Время творчества Есенина время крутых поворотов в истории России. Есенина.
33521. Тема революции в поэме С. Есенина «Анна Снегина» 18.29 KB
  Есенина Анна Снегина. Поэма Анна Онегина написанная незадолго до смерти поэта в 1924 году явилась своеобразным обобщением размышлений Есенина об этом драматическом и противоречивом времени и вобрала в себя многие мотивы и образы его лирики. Это ощущение усиливается в поэме тем что на её страницах в качестве олицетворения его юности появляется Анна Снегина – первая любовь девушка в белой накидке которая ласково сказала: Нет Несмотря на былые воспоминания автор прекрасно понимает что прошлое вернуть невозможно:...
33522. Творчество В.Набокова (роман по выбору). Проблематика, конфликты, герои 16.5 KB
  Защита Лужина Роман Защита Лужина привлекает и своим заглавием и своим содержанием писатель неоднократно объяснял его замысел: Русское заглавие этого романа – Защита Лужина – относится к шахматной защите будто бы придуманной моим героем сочинять книгу было нелегко надо был ввести роковое предназначение в жизнь Лужина и придать очертанию сада поездки событиям подобие замысловатой игры а в последних главах – настоящей шахматной атаки разрушающей до основания здоровье моего героя. У Лужина неожиданно счастливая семейная жизнь...
33523. Особенности композиции и система образов в романе М. Булгакова «Мастер и Маргарита» 22.64 KB
  Особенности композиции и система образов в романе М. Булгакова Мастер и Маргарита Роман в романе М. Сожженное в печи произведение Мастера так называемый внутренний роман возрождается будто Феникс из пепла так как он связан с персонажами романа внешнего. С внешним романом его соединяет образ Алоизия Могарыча предателя которого Мастеру изображать неинтересно поэтому что уже был в его творчестве Иуда.
33524. Проблематика романа «Мастер и Маргарита» 16.97 KB
  Более всего тема угнетения преследования неординарной талантливой личности государством присутствует в судьбе Мастера. Маргарита громит квартиру критика Латунского погубившего Мастера но отвергает предложение уничтожить своего врага. После бала у Сатаны героиня в первую очередь просит за страдающую Фриду забывая о собственном страстном желании вернуть Мастера. Именно Воланд приводит Мастера и его подругу в их вечный дом даруя им покой.
33525. Тема репрессий в поэме А.Ахматовой «Реквием» 17.6 KB
  Ахматова начала писать свою поэму Реквием в 1935 году когда ее единственный сын Лев Гумилев был арестован. Как и другие матери жены сестры Ахматова много часов стояла в молчаливой очереди что вела к петербургской тюрьме Кресты. Только в 1940 году Ахматова завершила свое произведение опубликовано же оно было в 1987 году много лет спустя после смерит автора. Ахматова рассказывает об истории создания поэмы.