Ответы на вопросы по экзамену по программированию

Вопросы к экзамену по дисциплине программирование

1.
Основные
этапы решения задач на ЭВМ. Критерии
качества программы.

2.
Жизненный
цикл программы. Постановка задачи и
спецификация программы.

3.
Алгоритм и
его свойства. Блок-схемы алгоритмов.

4.
Типовые
алгоритмы организации линейных и
разветвленных процессов.

5.
Типовые
алгоритмы организации циклических
вычислительных процессов.

6.
Принцип пошаговой детализации при
проектировании алгоритмов. Проверка
правильности
построения
алгоритма.

7.
Файлы и
файловая система. Имена файлов. Каталоги.

8.
Общая характеристика языка Си. Возможности
и особенности языка Си. Элементы, алфавит
языка Си.

9.
Программа,
функция, оператор. Константы и переменные.

10. Категории
типов данных. Представление чисел в ЭВМ
с фиксированной и плавающей
точкой.
Диапазон, точность, и затраты памяти
ЭВМ для представления чисел.

11. Представление
символов в ЭВМ. Основные типы данных,
инициализация данных.

12.
Операции и
выражения. Выражения и присваивания.
Операнды. Операции. Приоритеты
операций и
порядок вычисления. Побочные эффекты.

13
Преобразование типов. Пустой оператор.
Составной оператор.

14.
Операторы
управления вычислительным процессом.
Условные операторы условия if.

15.
Операторы
циклов
(for, while, do… while).

16.
Операторы
переходов
(break, continue, return, goto).

17.
Си.
Функции.
Основные понятия. Определение функции.
Вызовы функций.

18.
Передача
аргументов в функцию и из функции.
Определение и описание указателей.

19.
Функция
main().

20. Файловый
ввод-вывод. Ввод и вывод в стандартные
потоки. Форматированный ввод и
вывод.

21. Си.
Обработка
файлов. Ввод и вывод одного символа.
Ввод и вывод строк.

22.
Си.
Массивы.
Элементарные операции над массивами.

23.
Си. Массивы и указатели. Использование
массивов при вызове функций.

24. Связь
программ с внешним миром. Аргументы
командной строки

25. Типы
программного обеспечения. Характеристики
и области применения разных типов
ПО.

  1. Основные этапы решения задач на эвм. Критерии качества программы.

Этапы
решения задачи на ЭВМ

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


сбор информации о задаче,


формулировка условия задачи;


определение конечных целей решения
задачи;


определение формы выдачи результатов;


описание данных (их типов, диапазонов
величин, структуры и т. п.).

2.
Анализ и исследование задачи, модели:


анализ существующих аналогов;


анализ технических и программных
средств;


разработка математической модели;


разработка структур данных.

3.
Разработка алгоритма:


выбор метода проектирования алгоритма;


выбор формы записи алгоритма (блок-схемы,
псевдокод и др.);


выбор тестов и метода тестирования;


проектирование алгоритма.

4.
Программирование:


выбор языка программирования;


уточнение способов организации данных;


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

5.
Тестирование и отладка:


синтаксическая отладка;


отладка семантики и логической структуры;


тестовые расчеты и анализ результатов
тестирования;


совершенствование программы.

6.
Анализ результатов решения задачи и
уточнение в случае необходимости
математической модели с повторным
выполнением этапов 2-5.

7.
Сопровождение программы:


доработка программы для решения
конкретных задач;


составление документации к решенной
задаче, к математической модели, к
алгоритму, к программе, к набору тестов,
к использованию.

Критерии
качества.

1.
Понятность
— назначение ПО должно быть понятным,
из самой программы и документации.

2.
Полнота
— все необходимые части программы должны
быть представлены и полностью реализованы.

3.
Краткость
— отсутствие лишней, дублирующейся
информации. Повторяющиеся части кода
должны быть преобразованы в вызов общей
процедуры. То же касается и документации.

4.
Портируемость
— лёгкость в адаптации программы к
другому окружению: другой архитектуре,
платформе, операционной системе или её
версии.

5.
Согласованность

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

6.
Сопровождаемость
— насколько сложно изменить программу
для удовлетворения новых требований.
Это требование также указывает, что
программа должна быть хорошо
документирована, не слишком запутана,
и иметь резерв роста по использованию
ресурсов (память, процессор).

7.
Тестируемость
— позволяет ли программа выполнить
проверку приёмочных характеристик,
поддерживается ли возможность измерения
производительности.

8.
Удобство
использования

— простота и удобство использования
программы. Это требование относится
прежде всего к интерфейсу пользователя.

9.
Надёжность
— отсутствие отказов и сбоев в работе
программ, а также простота исправления
дефектов и ошибок:

10.
Структурированность

11.
Эффективность
— насколько рационально программа
относится к ресурсам (память, процессор)
при выполнении своих задач.

12.
Безопасность

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

1. Понятие и виды лексем.

Лексема

минимальная единица языка, имеющая самостоятельный смысл.

Виды

:

1. Ключевые (зарезервированные) слова

Их 63

Bool, class, else, enum, new, if, private, while

2. Идентификаторы

Имена различных программных объектов

Пользовательские идентификаторы не должны совпадать с ключевыми словами языка.

3. Знаки операций

В зависимости от количества операндов в C++ имеются унарные, бинарные и одна тернарная

операции.

Большинство стандартных операций можно переопределять (перегружать).

4. Константы

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

5. Разделители

Скобки, точка, запятая, пробельные символы

6. Комментарии

В C++ имеются комментарии двух видов: однострочные и многострочные.

Границы лексем определяются другими лексемами, такими, как разделители или

знаки операций.

2. Структура и основные элементы программы.

Пример программы:

3. Общее понятие типов данных.

Каждый байт памяти имеет свой адрес. По этому адресу и осуществляется доступ к данным, хранящимся в

памяти. Данные – число или буква? Программе необходимо точно представлять, какие данные хранятся в

этом байте памяти. Для разрешения подобных коллизий в языках программирования введено понятие типов

данных. Определяет:

характер данных (число, со знаком или без знака, целое или с дробной

частью, одиночный символ или текст, представляющий

последовательность символов и т.д.);

объем памяти, который занимают в памяти эти данные;

диапазон или множество возможных значений;

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

Для студентов НИУ «МЭИ» по предмету Программирование и основы алгоритмизацииТеория к экзаменуТеория к экзамену

2022-12-052022-12-05СтудИзба

Ответы: Теория к экзамену

Описание

Ответы на вопросы к экзамену по курсу «Программирование»  

1. Язык. Классификация языков программирования.
2. Критерии качества программы.
3. Жизненный цикл программного обеспечения.
4. Спецификация программы – полное и точное описание задачи.
5. Алгоритм. Свойства алгоритма. Виды алгоритмов.
6. Структурное программирование – принципы, базовые управляющие структуры, базис Вирса, базис Дейкстры.
7. Нисходящее и восходящее проектирование.
8. Понятие переменной и понятие типа данных. Идентификатор.
9. Классификация типов данных языка Паскаль.
10. Целые типы. Особенности, операции над данными целых типов, ввод и вывод..
11. Символьные типы. Особенности, операции над данными символьных типов, ввод и вывод.
12. Логический тип. Особенности, операции над данными логического типа, ввод и вывод.
13. Перечислимый тип. Особенности, операции над данными перечислимого типа, ввод и вывод.
14. Тип-диапазон. Особенности, операции над данными типа – диапазона, ввод и вывод.
15. Вещественные типы. Особенности, операции над данными типа – диапазон, ввод и вывод.
16. Выражения. Операции языка Паскаль.
17. Структура программы на языке Паскаль.
18. Объявления констант, типов и переменных.
19. Операторы языка Паскаль. Оператор присваивания и составной оператор.
20. Операторы языка Паскаль. Операторы выбора.
21. Операторы языка Паскаль. Операторы циклов.
22. Понятие массива. Одномерные и двумерные массивы.
23. Текстовые файлы.
24. Классификация методов тестирования. Статическое тестирование.
25. Классификация методов тестирования. Функциональное тестирование (тестирование на основе требований).
26. Классификация методов тестирования. Структурное тестирование.
27. Методы структурирования (метод дублирования кодов, метод объединения условий, метод флажка).
28. Понятие процедуры.
29. Понятие функции. 
30. Формальные и фактические параметры процедур и функций.
31. Параметры – константы, параметры – значения, параметры – переменные.
32. Локальные и глобальные объявления. Побочные эффекты и чистые процедуры.
33. Совместно используемые процедуры и функции.
34. Модули.
35. Процедурный тип.

Характеристики ответов (шпаргалок)

Качество

Идеальное компьютерное

Список файлов

  • Теория к экзамену.docx 423,77 Kb

Картинка-подпись

Вам все понравилось? Получите бонус — 30 рублей на Ваш счёт при покупке. Поставьте оценку и напишите комментарий к купленному файлу. После Вы сразу же получите деньги на ваш счет.

Комментарии

Сопутствующие материалы

Свежие статьи

Популярно сейчас

Ответы на популярные вопросы

То есть уже всё готово?

Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.

А я могу что-то выложить?

Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.

А если в купленном файле ошибка?

Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!

Отзывы студентов

Добавляйте материалы
и зарабатывайте!

Продажи идут автоматически

651

Средний доход
с одного платного файла

Обучение Подробнее

pencil

Узнай стоимость на индивидуальную работу!

icon
Цены в 2-3 раза ниже

icon
Мы работаем
7 дней в неделю

icon
Только проверенные эксперты


Ответы на билеты по программированию

Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +

Новых работ ежедневно

computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar

Иванна

Экономика

Маркетинг

Информатика

icon

114547
рейтинг

icon

2784
работ сдано

icon

1260
отзывов

avatar

Ludmila

Математика

Физика

История

icon

111146
рейтинг

icon

5460
работ сдано

icon

2459
отзывов

avatar

icon

76338
рейтинг

icon

1887
работ сдано

icon

1196
отзывов

avatar

Константин Николаевич

Высшая математика

Информатика

Геодезия

icon

62710
рейтинг

icon

1046
работ сдано

icon

598
отзывов

Отзывы студентов о нашей работе

Наталья

Колледж РГСУ

Анастасия спасибо! Вы лучший исполнитель, будем и дальше заказывать только у Вас.


star
star
star
star
star

Анастасия

Саяногорский политехнический техникум

Спасибо большое! Очень оперативно, все четко и по делу. Приятная цена! Советую!!!


star
star
star
star
star

Виктория

Гатчинский Педагогический Колледд

Задание сделано безупречно и досрочно. Обращусь обязательно еще не один раз.


star
star
star
star
star

arrow

Анастасия спасибо! Вы лучший исполнитель, будем и дальше заказывать только у Вас.


arrow

arrow

Спасибо большое! Очень оперативно, все четко и по делу. Приятная цена! Советую!!!


Анастасия

Саяногорский политехнический техникум


star
star
star
star
star

arrow

arrow

Задание сделано безупречно и досрочно. Обращусь обязательно еще не один раз.


Виктория

Гатчинский Педагогический Колледд


star
star
star
star
star

arrow

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

сделать курсовую

Курсовая, Система муниципального управления

Срок сдачи к 26 мар.

Решить задачу

Решение задач, технология конструкционных материалов

Срок сдачи к 11 мар.

planes
planes

Закажи индивидуальную работу за 1 минуту!


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

1. Основные термины, относящиеся к веб-разработке. Интернет. WWW. Узел. Хостинг-провайдер. Веб-страница. Веб-сайт. Скрипт. Браузер. Протокол. 2

2. Адресация в интернете. Принципы работы WWW. 6

3. Обзор основных технологий веб-программирования. Клиентские и серверные языки программирования. Front-end и back-end. 9

Клиентские языки. 11

Серверные языки. 12

4. Структура HTML документа. Специальные символы HTML. 14

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

6. Основные теги HTML (и их атрибуты), которые используются при разработке веб-форм. 14

7. Основы CSS: селекторы, атрибуты, приоритет, каскадность. Способы встраивания CSS. Единицы измерения, используемые в CSS. 15

8. Использование CSS для оформления элементов веб-страниц (шрифт, абзац, отступы, рамки, гиперссылки). 15

9. Основные макеты веб-страниц. Блочная и табличная верстка. Использование CSS при блочной верстке. 15

10. Язык JavaScript. Основные типы данных, основные операции и операторы. 15

11. Объектная модель Dynamic HTML. Объекты (window, history, navigator, location, event), методы, свойства и события. 15

12. Создание сценариев на JavaScript и обработка событий. Динамическое позиционирование объектов. Работа с таймерами. 15

13. Язык PHP. Основные типы данных, основные операции и операторы. Работа с массивами в PHP. 16

14. Создание динамических web-страниц средствами PHP. Работа с веб-формами. 16

15. Связь HTML-страниц и базы данных MySQL средствами PHP. Основные операторы, обработка данных запросов SQL. 16

Эволюция и классификация языков программирования. Понятие структурного программирования.

Развитие языков программирования :
Этап Описание
1940-1950 Машинные коды
1950-1960 Символические ассемблеры – условные мнемонические обозначения, автокоды. Программа составленная на ассемблере переводится в машинный код другой программой – ассемблером.
1960-1970 Процедурно ориентированные и объектно-ориентированные языки программирования высокого уровня.
1970-1980 Языки СУБД
1995-… Языки приближенные к человеческой логике и языки применяемые в Интернете.

Стандартизация языков :
Чтобы компиляция одной программы всегда выдавала одинаковый результат разрабатываются стандарты языков программирования. Организации по стандартизации языков :
ANSI- американский национальный институт стандартов
IEEE- институт инженеров по электротехнике и электронике.
ISO- организация международных стандартов.

Выпускается частный стандарт, определяемый разработчиком. Если язык получает распространение – разрабатывается единый стандарт.

Среда проектирования :
Средства разработки программ совершенствуются . От режима командной строки до интегрированной среды проектирования.
В настоящее время среда обработки программ представляет собой удобный графический интерфейс и большой спектр сервисов, включающих управление всеми хранимыми данными, библиотеками, утилитами просмотра, библиотеками функций, шаблонов приложений.
Компилятор при этом – составная часть среды проектирования. : Среды проектирования :VisualStudio, Delphi, CBuild т.д.

История развития и классификация :
Первые языки – машинные коды и ассемблеры : имеющие низкий уровень.
1)Fortran – выполнение математических операций
2)Algol- алгоритмические конструкции.
3)Pascal – после чего потребовался прямой доступ к памяти =>
4)C – инструментарий для разработки ОС, трансляторов и систем программирования
5) Языки функционально-логического программирования :Prolog, Lisp…
6)Визуальное программирование :Delphi ,VisualStudio.
7) Разработаны также :Perl, Rexx, Piton и др.
8) Языки обработки документов HTML , XML.

Классификация :
По уровню языка :
Высокий уровень (универсальность)
Низкий уровень
По парадигмам :

Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций)
Разработка программы ведётся пошагово, методом «сверху вниз».

Основные парадигмы программирования.

Парадигма – набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания. Иными словами – способ видения мира.

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

В настоящий момент выделяют 3 основные парадигмы программирования :
Парадигма директивного (структурного) программирование .
Объектно-ориентированного программирование.
Функционально-логического программирование.

Для поддержки программирования в соответствии с той или иной парадигмой, разработаны специальные алгоритмические языки. Многие языки поддерживают несколько парадигм программирования. Однако существуют языки ориентированные на одну парадигму.

Директивно-структурированное программирование :
Представители : С, Паскаль, Фортран, Ада.
Представляет собой последовательность операндов, которые необходимо выполнить для достижения результата. Последовательность выполнения зависит от входных данных. Алгоритм – легко понимается и легко кодируется.
В директивном программировании возникла идея локализации части кода в подпрограммы с последующим их вызовом из разных мест основной программы. Данные в виде аргументов задаются в вызове , в свою очередь подпрограмма возвращает результат.

Объектно-Ориентированное программирование (ООП) :
Представители : Делфи, С++, С#, Java, Питон и др.
Данная парадигма основное внимание уделяет не операндам, а данным в виде объектов.
Объекты взаимодействуют между собой с помощью механизма передачи сообщения.
Задача программиста – реализовать такие объекты, при взаимодействии которых можно получать желаемый результат.
В основе ООП – наследование, полиморфизм, инкапсуляция.

Функционально-логического программирование:
Представители :Lisp, Haskell, Prolog.
Основано на математическом понятии функции не изменяющие своего окружения в отличии от функции в структурных языках.
В логическом программировании программы выражены в виде формул математической логики и решение задач достигается путём вывода логических следствий из них. Программные системы необходимые для создания ИИ.

Язык Турбо Паскаль. Алфавит. Структура программы.

Современный алгоритмический язык Турбо Паскаль является структурированным языком высокого уровня и позволяет составлять программы любого назначения и размера.
Алфавитязыка представляет собой набор символов клавиатуры, воспринимаемых компилятором и разрешённых к использованию. В него входят следующие элементы:
— буквылатинского алфавита (прописные и строчные – по 26);
— цифрыот 0 до 9;
— символ подчёркивания _;
Эти элементы используются для написания идентификаторов– имён констант, переменных, типов, процедур, функций, модулей и меток. Имя идентификатора всегда должно начинаться с буквы.Строчные и прописные буквы воспринимаются одинаково. Пробел обозначает пропуск позиции и также отделяет зарезервированные (служебные) слова от идентификаторов. В именах использование пробела недопустимо.
Для обозначения арифметических и логических операций используются символы
+, — , *, /, = , >, < (умножение и деление в одну строку)

Для изменения порядка действий и других целей используются разделители и скобки
. , : ; ^ , @, $, #, ( ), [ ], {},
причём информация в фигурных скобках является комментарием и не участвует в работе программы.
Для выполнения ряда процедур используются составные символы, воспринимаемые как единый символ (пробелы между элементами таких символов запрещены):
— присвоить :=
— больше или равно >=
-меньше или равно <=
— не равно <>
— диапазон (ДВЕ точки) .. в квадратныхскобках [0 ..10]

В языке Турбо Паскаль используется большое количество зарезервированных слов. Эти слова имеют строго определённый смысл и определённое назначение в любом разделе программы. Они являются терминами программы и не могут быть использованы в качестве идентификаторов.
Основные зарезервированные слова следующие:

absolute абсолютное значение not нет
and и of чего
array массив or или
begin начать case в случае
const константа procedure процедура
do исполнить program программа
downto к меньшемуrecord запись
else в другом случае repeat повторить
end конец string строка
file файл then тогда
forдляto к
functionфункция type тип
goto идти к until до
if если uses использовать
in в var переменная
while пока
label метка with с

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

К элементарным конструкциям языка относятся константы и переменные.
Константы– это элементы данных, значения которых устанавливаются в описательной части программы и далее не изменяются. В зависимости от значения они могут быть арифметическими, символьными, строковыми и типа «множество». В описании констант могут использоваться операции и стандартные функции. Символ описания – знак равенства (=).
Переменные – это элементы данных, значения которых могут изменяться при работе программы. Они отождествляются с ячейками оперативной памяти и вводятся в программу для хранения данных и результатов. Переменная и её тип определяется идентификатором в описательной части программы, причём тип записывается через символ «двоеточие» (:).

Программа – это алгоритм, записанный средствами языка,и имеющий строго определённую структуру.
Первый раздел структурыпрограммы – заголовок, начинающийся служебным словом program,после которого записывается имя программы (не более восьми символов). Желательно, чтобы имя было значащим и отражало назначение программы. В конце заголовка, как и после каждой строки программы, ставится символ «точка с запятой» (;).

Вторымразделом структуры программы является раздел описаний.В него входят названия стандартных библиотечных модулей, а также описания данных, участвующих в работе программы: их идентификаторы, типы, диапазоны. Всего используется до семи разделов описаний.
Описание модулей производится в разделе Uses. Каждый модуль имеет своё имя и включается в раздел, если предусматривается его использование в данной программе. К основным модулям относятся:
System – основная библиотека, подключаемая к любой программе, так что её можно не указывать в описании. В модуле определён ряд типизированных констант и переменных, а также более 100 процедур и функций, в частности, ввод и вывод данных, арифметические операции и др.
Crt– процедуры и функции для работы с экраном.
Dos– процедуры и функции для работы в ОС DOS.
Printer – связь программ с печатающим устройством.
Graph– управляет графическими режимами мониторов.
Label – описание меток, с помощью которых можно осуществить прямой
переход из любого места программы к описанной метке.
Const – идентификаторы констант и указатели их значений.
Var– идентификаторы и типы переменных.
Procedur– описание дополнительных процедур, отсутствующих в
стандартных библиотеках программного обеспечения.
Function- описание дополнительных функций. Процедуры и функции
имеют имена для обращения, запись о типе функции ипоследовательность операторов, заключённых воператорные скобки begin – end.

Третий раздел структуры программы содержит собственно операторы программы (текст). Текст программы – это алгоритм решения, записанный на выбранном алгоритмическом языке. Раздел начинается со слова BEGINи заканчивается словом END, после которого ставится точка, как символ конца программы. Служебные слова Begin и End являются операторными скобками и могут также применяться для выделения текстов подпрограмм (процедур) и функций внутри основной программы. Тогда после End ставится точка с запятой. Количество слов «начало» и «конец» в программе должно быть одинаковым.

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

Понятие типа данных. Структура типов данных языка Паскаль. Типы данных Делфи.

Типы всех данных,обрабатываемых программой, должны быть заранее установлены и описаны в разделе описаний. Тип данных определяет множество значений, которые может принимать каждый объект программы, и совокупность операций, допустимых при обработке этих значений. В языке ТП имеется множество стандартных типов данных, но можно создавать новые, объявляя их в разделе описаний Type.
Стандартные типы данных объявляются в разделе Var с помощью служебных слов и делятся на две группы: простые (скалярные) и составные(структурированные (строки, массивы, записи, файлы, классы).). К простым типам относятся следующие:
-числовой
-логический
-символьный
-адресный
-перечисляемый
-ограниченный (диапазон).
Рассмотрим наиболее часто применяющиеся типы.
Числовой тип включает целые и вещественные числа,имеющие имя идиапазон.
Целые числа
Наиболее употребительными являются целые числа типа INTEGER, называемое ЦЕЛОЕ СО ЗНАКОМ и находящееся в пределах +_ 32767.
Кроме него употребляются:
BYTE — короткое целое без знака (0..255)
SHORTINT — короткое целое со знаком (-128..127)
WORD — целое без знака ((0..65531)
LONGINT — длинное целое со знаком (+- 214748 3648).

Структура типов данных языка Паскаль

Перечисляемый пользовательский тип – это один из типов, определяемых программистом, который задается перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, в круглых скобках:
В общем виде объявление перечисляемого типа имеет вид:
Type имя типа = (имя1, имя2, …, имяN);

Строки. Переменная строкового типа должна быть объявлена в разделе описания пере¬менных:
Имя: String; или Имя: String[длина];

Массивом называется упорядоченная индексированная совокупность однотипных элементов, имеющих общее имя.Различают массивы статические и динамические. Формат описания типа статистического массива:
Array [тип индексов] of <тип элементов>;
Формат описания типа динамического массива:
Array of <тип элементов>;
Множество представляют собой совокупность элементов, выбранных из заранее определенного набора значений. Все элементы множества принадлежат одному порядковому типу, число элементов в множестве не может превышать 256. Значение множественного типа заключается в квадратные скобки.
Формат описания множественного типа:
Set of тип элементов;
Арифметические операции и выражения. Последовательность выполнения математических операций. Стандартные математические функции. Примеры записи математических выражений.

Переменная — это область памяти названная своим именем, которая может меняет свое значение в процессе выполнения программы.
Выражение — это синтетическая единица языка определяющая способ вычисления некоторого значения. Выражение состоит из оперантов, знаков операций и круглых скобках.
Оперантом может быть константа, переменная или функция.
Арифметические операции используемые в выражении:
+

*
/
div-целая часть от деления
mod-остаток от деления
Порядок вычисления операций
Сначала выполняется умножение и деление, затем сложение и вычитание. Действия одного порядка выполняется поочередно с лева направо. Операция заключенная в круглых скобках выполняется раньше, записанной за скобкой.

Пример:

(a+b)/(a-b)=(a+b)/(a-b)

Стандартные арифметические функции
Функции Значения
Abs(x) |x|
Exp(x) e^x
Ln(x) Ln x
Sin(x) Sin x
Cos(x) Cos x
Arctan(x) Arctg x
Sqr(x) x^2
Sqrt(x) √x
Random(x) Случайное число x

Пример:

log_a⁡〖x=ln⁡(x)/ln⁡(a)〗

Операции отношения
=
<>
<
>
<=
>=

Условные операторы. Оператор множественного выбора. Примеры программирования задач разветвляющихся процессов.

Оператор ветвления— оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

1)if<условие> then <оператор 1> else <оператор 2>

2)if <условие> then <оператор>

3) if <условие> then
Begin
<оператор 1>;
<оператор 2>;
…………………
<операторn>;
End
Elsebegin
Begin
<оператор 1>;
<оператор 2>;
…………………
<оператор n>;
End;

4)if<условие1> then
Begin
if<условие2> then
Begin
<оператор 1>;
end
else begin
<оператор 2>;
end;

Пример задачи:
Найти максимальное число из трех данных нам величин.

Оператор выбора Case используется в том случае, когда необходимо сделать выбор не из двух или трех, а более вариантов.
case <выражение> of
значение1 :begin оператор (группа операторов);end;
значение2 :begin оператор (группа операторов);end;
. . . . . . . . . . . . . . . . . . . . . .
значениеN :begin оператор (группа операторов);end;
else beginоператор (группа операторов);end;
end;

Пример: Написать программу преобразования цифр в слова.
Program Number1;
Var
a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
if (a<0) or (a>9)
then
writeln (‘Это число не является цифрой‘)
else
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘);
end;
readln;
End.

Циклические операторы: с заданным числом повторений и выходом по условию. Примеры программирования задач циклических алгоритмов.
1) for…do -цикл с параметром
2)while…do — цикл с предусловием
3)repeat…until — цикл с пост.условием
Примеры:
1)for i:=1 to 100
write (sqr(i), )
2)i:=2;
while i<=10 do
Begin
writeln(sqr(i));
inc(i,2)
end;
3) i:=2;
Repeat
writeln(sqr(i));
i:=inc(i,2);
until i >10;

Стандартные операторы ввода и вывода данных. Форматный вывод. Примеры.
Для вывода на экран монитора сообщений и значений переменных используется команда write или writeln. Суффикс ln означает что после вывода на экран списка переменных курсор переедет на новую строку.
Пример:
b:=8.5;
writeln(b:8{всего}:4{для дробной части});
_ _ _8.5_ _ _

Оператор ввода read,readln
При вводе вводимые данные разделяются пробелом или символом окончания ввода Enter.
При вводе исходных данных перед каждой командой read желательно располагать команду write.

Форматный вывод для Delphi:FormatFloat(#.##, «элемент»).

Простые типы данных. Стандартные процедуры и функции их обработки. Примеры.
Простые типы данных:
Простые типы данных не обладают внутренней структурой. Данные такого типа называют скалярами. К простым типам данных относятся следующие типы:

Логический.
Строковый.
Численный.
Различные языки программирования могут расширять и уточнять этот список, добавляя такие типы как:

Целый
Вещественный
Дата
Время
Денежный
Перечислимый
Интервальный

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

Процедуры управления работой программы — это процедуры, управляющие логикой выполнения программы.

———————T——————————————-
¦ Процедура ¦ Описание ¦
+——————-+——————————————-+
¦ Break ¦ Завершает оператор for, while или repeat. ¦
+——————-+——————————————-+
¦ Continue ¦ Продолжает итерацию оператора for, while,¦
¦ ¦ или repeat. ¦
+——————-+——————————————-+
¦ Eхit ¦ Позволяет немедленно выйти из текущего мо-¦
¦ ¦ дуля. ¦
+——————-+——————————————-+
¦ Наlt ¦ Останавливает выполнение программы и возв-¦
¦ ¦ ращает управление операционной системе. ¦
+——————-+——————————————-+
¦ RunError ¦ Останавливает выполнение программы и гене-¦
¦ ¦ рирует ошибку этапа выполнения. ¦
L——————-+———————————————

Следующие процедуры и функции используются для работы со
строками Паскаля.

——————-T———————————————
¦ Процедура ¦ Описание ¦
+——————+———————————————+
¦ Cоncat ¦ Выполняет конкатенацию последовательности¦
¦ ¦ строк. ¦
+——————+———————————————+
¦ Cору ¦ Возвращает подстроку строки. ¦
+——————+———————————————+
¦ Delete ¦ Удаляет из строки подстроку. ¦
+——————+———————————————+
¦ Insert ¦ Добавляет в строку подстроку. ¦
+——————+———————————————+
¦ Length ¦ Возвращает динамическую длину строки. ¦
+——————+———————————————+
¦ Pоs ¦ Производит поиск подстроки в строке. ¦
+——————+———————————————+
¦ Str ¦ Преобразует численное значение в его стро-¦
¦ ¦ ковое представление. ¦
+——————+———————————————+
¦ Val ¦ Преобразует строковое значение в его чис-¦
¦ ¦ ленное представление. ¦
L——————+———————————————

Стандартные арифметические функции
Функции Значения
Abs(x) |x|
Exp(x) e^x
Ln(x) Ln x
Sin(x) Sin x
Cos(x) Cos x
Arctan(x) Arctg x
Sqr(x) x^2
Sqrt(x) √x
Random(x) Случайное число x

Структурированные типы данных. Классификация структурированных типов.

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

К структурированным типам данных относятся:
— массивы:
— записи;
— множества;
— файлы.

Массивы – совокупность связанных данных, состоящая из фиксированного числа элементов одного типа. Для определения массива достаточно указать его тип, число элементов в массиве и метод их нумерации.

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

Множества – совокупность связанных данных, состоящая из элементов одного типа. В отличие от массива (фиксированное число элементов) множество может включать произвольное число элементов.

Файл – информация, размещенная на внешних запоминающих устройствах (винчестер, магнитные диски и ленты), снабженная идентификатором и оформленная как единое целое средствами операционной системы или языка программирования. Содержимым файла могут быть программы, данные, тексты и любая другая информация.

Одномерные массивы. Описание типа–массив. Описание переменной массивового типа. Доступ к элементам массива. Ввод/вывод элементов массива. Примеры.

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

Опишем одномерный массив, состоящий из 30 целых чисел.
Type myarray = Array [1..30] Of Integer.
Напомним, что раздел типов, начинается со служебного слова TYPE, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак «равно» (в разделе переменных между именем переменной и её описанием ставится двоеточие). Тогда:
myarray — это имя нового типа;
Array — служебное слово (в переводе с английского означает «массив», «набор»);
[1..30] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, пусть в этом примере первый элемент имеет номер 1, а последний — номер 30;
Of — служебное слово (в переводе с английского -«из» );
Integer — тип всех элементов массива.

Таким образом, одномерный массив описывается следующим образом:
Array[n1..n2] Of <тип элементов>;
где n1 — номер первого элемента, n2 — номер последнего элемента, в качестве типа элементов может использоваться любой тип данных, кроме файлового. Так как каждый элемент имеет свой номер, то к каждому элементу можно обращаться непосредственно.

Для того, чтобы обратиться к i-у элемент этого массива, необходимо записать:
A[i] — сначала имя массива, а в квадратных скобках указывается номер элемента, к которому обращаемся, — i. Например, обращаемся к первому элементу массива А — А1[1], а к пятому — А[5].

Способы задания одномерных массивов
Главным недостатком Pascal является необходимость заранее задать размерность массива, чтобы при трансляции программы Паскаль выделил необходимое количество ячеек памяти для хранения элементов. Чтобы бороться с этим недостатком используют 2 метода :
Для описания массива используют предварительно определеннуюConst.
Const m=4; n=6;
Var Mas:array[1..n] of real;

Begin
For i:=1 to n do begin
Writeln (‘Введите элементы массива :’);
Read(Mas[i]);
End;

Позволяет имитировать работу с массивами переменной длины :
В разделе Constпредварительно определяют возможное максимальное значение размера массива. Затем в программе запрашивают текущее значение размера и используют это значение при заполнении и обработки массива, при этом часть массива будет не заполнена.
Type mas=array[1..100] of integer;
VarA,B=mas;

Begin
Writeln(‘Введите размерность массива А’);
Readln(n);
Writeln(‘Введите размерность массива B’);
Readln(m);
For i:=1 to n do
Readln(a[i]);
For i:=1 to m do
Readln(b[i]);

Так же массив можно задать с помощью генератора случайных чисел :
vari,n:integer;
x:array[1..100] of integer;
begin
write(Введите размерность массива Х: );
readln(n);
write(Массив X :);
randomize;
fori:=1 to n do
begin
x[i]:=random(20)-10;
write(x[i]:3);
end;

!!! Вывод массива на монитор соответственно осуществляется операторами :write и writeln.

fori:=1 to n do
begin
x[i]:=random(20)-10;
write(x[i]:3);
end;

Примечание :
!!!Над массивами разрешается операция присваивания, только если массивы одного типа. Нельзя присвоить массивы друг другу , если их описание произведены в разных частях раздела описания.
!!! Никакие другие действия над массивом в целом – не разрешены.
!!!Каждая операция производится над конкретным элементом массива.

Программирование задачи поиска максимального и минимального элементов одномерного массива.

Поиск максимального элемента в массиве
Программа на языке Паскаль:
const
m = 20;
var
arr: array[1..m] ofbyte;
max_num, max_index: byte;
i: byte;
begin
randomize;
for i := 1 to m dobegin
arr[i] := random(100);
write (arr[i]:3);
end;
max_index := 1;
max_num := arr[1];
for i := 2 to m do
if arr[i] > max_num thenbegin
max_index := i;
max_num := arr[i];
end;
writeln;
writeln (Max = ,max_num);
writeln (position: , max_index);
end.

В переменной max_num хранится текущее максимальное значение массива, а в max_index – его позиция (индекс).
В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый циклfor) и непосредственно поиск максимума (второй цикл for).
Перед первым циклом запускается процедура randomize для того, чтобы при каждом запуске программы значения массива были разными.
Изначально делается предположение, что первый элемент массива и есть максимум. Поэтому переменнойmax_index присваивается значение 1 (т.е. указатель на первый элемент массива), а max_num – непосредственно значение, хранящееся в первой ячейке массива.
Начиная со второго элемента, каждое очередное значение массива сравнивается с текущим значениемmax_num. В случае, если текущее значение массива больше, чем хранящиеся в max_num, происходит новое присваивание обоим переменным текущего значения и индекса.

Поиск минимального элемента в массиве
Программа на языке Паскаль:
const
m = 20;
var
arr: array[1..m] ofbyte;
min_num, min_index: byte;
i: byte;
begin
randomize;
for i := 1 to m dobegin
arr[i] := random(100);
write (arr[i]:3);
end;
min_index := 1;
min_num := arr[1];
for i := 2 to m do
if arr[i] <min_num thenbegin
min_index := i;
min_num := arr[i];
end;
writeln;
writeln (Min = ,min_num);
writeln (position: , min_index);
end.

В переменной min_num хранится текущее максимальное значение массива, а в min_index – его позиция (индекс).
В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый циклfor) и непосредственно поиск максимума (второй цикл for).
Перед первым циклом запускается процедура randomize для того, чтобы при каждом запуске программы значения массива были разными.
Изначально делается предположение, что первый элемент массива и есть минимум. Поэтому переменнойmin_index присваивается значение 1 (т.е. указатель на первый элемент массива), а min_num – непосредственно значение, хранящееся в первой ячейке массива.
Начиная со второго элемента, каждое очередное значение массива сравнивается с текущим значениемmin_num. В случае, если текущее значение массива меньше, чем хранящиеся в min_num, происходит новое присваивание обоим переменным текущего значения и индекса.

Методы сортировки одномерных массивов. Примеры.

Сортировка представляет собой процесс упорядочения элементов в массиве по возрастанию или убыванию, так чтобы
X[1] ≤ X[2] ≤ … ≤ X[n] или X[1] ≥ X[2] ≥ … ≥ X[n].

Существует много способов сортировки массивов, они зависят от вида массива, различаются временем выполнения сортировки и размерами используемой памяти. Как правило, чем быстрее сортировка, тем сложнее ее алгоритм. Три простых классических алгоритма сортировки, которые не являются самыми быстрыми, но сортируют любые одномерные массивы:
Сортировка выбором;
Сортировка обменом (пузырьковая);
Сортировка вставкой.
Общее описание начальных условий всех трех представленных алгоритмов: дан одномерный целочисленный массив а[1..n].
Сортировка выбором
На каждом шаге выбирают минимальный элемент из имеющихся, и помещают его на первое место в своем блоке (оставшейся части массива)
for i := 1 to n — 1 do
begin
min := a[i];
im := i;
for j:=i+1 to n do
if a[j]<min then
begin
min:=a[j];
im:=j;
end;
a[im]:=a[i];
a[i]:= min;
end;
Сортировка обменом
На каждом шаге сравнивают между собой соседние элементы массива и помещают максимальный в паре на последнее место
for i := 1 to n-1 do
for j := 1 to n-i do
if a[j]>a[j+1] then {если текущий больше следующего, то}
begin
t:=a[j]; {меняем}
a[j]:=a[j+1]; { их }
a[j+1]:=t; {местами}
end;
Сортировка вставкой
Сортировка заключается в том, что сначала упорядочиваются первые два элемента, затем делается вставка третьего элемента в и процесс повторяется
for i := 2 to n do
begin
t:=a[i]; { сохраним 2 элемент}
j:=i-1; {предшествующий}
while ((t<a[j]) and (j>0)) do
begin
a[j+1]:=a[j]; {сдвиг}
j:=j-1;
end;
a[j+1]:=t;
end;

Двумерные массивы. Описание типа – массив. Описание переменной массивового типа массив. Доступ к элементам двумерного массива. Ввод/вывод элементов двумерного массива. Примеры.

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

Обычно двумерные массивы на языке программирования Pascal описываются так:
array [1..m, 1..n] of базовый_тип
Однако можно их описывать и по-другому:
array [1..m] of array [1..n] of базовый_тип

При этом описание может быть в разделе type и тогда создается новый тип, который можно использовать при объявлении переменных. Или массив может быть описан непосредственно в разделе переменных. m и n – это константы, их можно опустить и вставить конкретные значения, но лучше так не делать. Обычно подразумевают, что в интервале от 1 до m определяется количество строк, а в интервале от 1 до n – количество столбцов массива.
1 вариант – описание массива через раздел type:
const
M = 10;
N = 5;
type
matrix = array [1..M, 1..N] ofinteger;
var
a: matrix;
2 вариант – описание массива в разделе переменных:
const
M = 10;
N = 5;
var
a: array [1..M, 1..N] ofinteger;

При использовании третьего варианта описания лучше сначала определить некоторый тип одномерного массива (строка двухмерного массива), который затем используется при описании двухмерного массива:
type a = array[1..10] ofbyte;
var b: array[1..100] of a;

Для обращения к элементу двухмерного массива необходимо указать имя массива и в квадратных скобках через запятую – значения двух индексов (первый указывает номер строки, а второй – номер столбца), на пересечение которых стоит элемент (например, a[i,2]:=6).
В языке программирования Pascal допустимо разделение индексов с помощью квадратных скобок (например, a[i][5]:= 7).

Если описывается двумерный массив как типизированная константа, то при задании значений его элементов он рассматривается как массив массивов. При этом в общих круглых скобках через запятую перечисляются заключенные в круглые скобки значения элементов строк (каждая строка в своих скобках):
type
arr = array[1..4, 1..3] ofinteger;
const
cords: arr = ((1,-1,3), (0,0,0), (1,4,0), (4,-1,-1));

Простой пример работы с двумерным массивом. Сначала заполним его данными, а затем выведем их на экран в виде таблицы.
var
matrix: array[1..3,1..5] ofinteger;
i, j: integer;

begin
writeln (Введите 15 чисел: );
for i := 1 to 3 do
for j := 1 to 5 do
read (matrix[i,j]);

for i := 1 to 3 dobegin
for j := 1 to 5 do
write (matrix[i,j], );
writeln
end;
readln;
end.

Размерность массива (т.е. количество содержащихся в нем значений) определяется произведением количества строк на количество столбцов. В примере выше в массив помещается 15 значений.
Когда пользователь вводит очередное число, то процедура read считывает его и помещает в ячейку с текущими индексами i и j. Когда i равна единице, значение j меняется пять раз, и, значит, заполняется первая строка таблицы. Когда i равна двум, значение j снова меняется пять раз и заполняется вторая строка таблицы. Аналогично заполняется третья строка таблицы. Внутренний цикл for в общей сложности совершает 15 итераций, внешний только 3.
Как пользователь вводит значения – не важно. Он может их разделять либо пробелом, либо переходом на новую строку.
Вывод значений двумерного массива организован в виде таблицы. Выводятся 3 строки по 5 чисел в каждой. Внутри строк числа разделяются пробелом.

const
M = 3;
N = 5;

var
matrix: array[1..M,1..N] ofinteger;
i, j: integer;

begin
writeln (Введите 15 чисел: );

for i := 1 to M do
for j := 1 to N do
read (matrix[i,j]);

for i := 1 to M dobegin
for j := 1 to N do
write (matrix[i,j]:5);
writeln
end;

readln
end.

ВслучаеработысDelphi:

Двумерный массив можно заполнятьс помощью элементов :TEdit,InputBox, TMemo, TStringGrid,…

Пример : приложение ввода/вывода информации с помощью InputBox:

Вцикле :a[i]:=strtoint(inputbox(‘Введитеа[’+inttostr(i)+’]’,’,’))

Примердля TMemo :
For i:=1 to 3 do
For j:=1 to 3 do
A[I,j]:=strtoit(inputbox(‘Введитеа[’+inttostr(i)+ittostr(j)+’]’,’,’)

Пример с использованием StringGrid и Edit :

m:=strtoint(edit1.Text);//считаем строчки
n:=strtoint(edit2.Text);//считаем столбцы
stringgrid1.RowCount:=m;//делаем строчки
stringgrid1.ColCount:=n;//делаем столбцы
for i:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.Cells[i,j]:=inttostr(random(100)-50);


C Programming Questions and Answers has been designed with a special intention of helping students and professionals preparing for various Certification Exams and Job Interviews. This section provides a useful collection of sample Interview Questions and Multiple Choice Questions (MCQs) and their answers with appropriate explanations.

Questions and Answers

Sr.No Question/Answers Type
1 C Programming Interview Questions

This section provides a huge collection of C Programming Interview Questions with their answers hidden in a box to challenge you to have a go at them before discovering the correct answer.

2 C Programming Online Quiz

This section provides a great collection of C Programming Multiple Choice Questions (MCQs) on a single page along with their correct answers and explanation. If you select the right option, it turns green; else red.

3 C Programming Online Test

If you are preparing to appear for a Java and C Programming Framework related certification exam, then this section is a must for you. This section simulates a real online test along with a given timer which challenges you to complete the test within a given time-frame. Finally you can check your overall test score and how you fared among millions of other candidates who attended this online test.

4 C Programming Mock Test

This section provides various mock tests that you can download at your local machine and solve offline. Every mock test is supplied with a mock test key to let you verify the final score and grade yourself.

Понравилась статья? Поделить с друзьями:
  • Ответы на вопросы по экзамену по правоохранительным органам
  • Ответы на вопросы по экзамену по общей психологии
  • Ответы на вопросы по экзамену по маркетингу
  • Ответы на вопросы по экзамену по макроэкономике
  • Ответы на вопросы по экзамену по истории беларуси