Вы находитесь на странице: 1из 9

Подпишитесь на DeepL Pro и переводите документы большего объема.

Подробнее на www.DeepL.com/pro.

Подготовка к лекциям по информатике сем1 построение


ПК и введение в программирование
Компьютерные науки (Познаньский технологический университет)

Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)


Studocu не спонсируется и не поддерживается каким-либо колледжем или университетом.

Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)


- память только для чтения, PROM - память только для записи,
1. Что такое информатика - область знаний, EPROM - стираемая (УФ) память только для чтения, EEPROM - 25. SDRAM - динамическая, синхронная память, построенная на
занимающаяся проблемами обработки и передачи стираемая и электрически программируемая (Flash) память. конденсаторах и транзисторах. Синхронная, потому что работает в
данных. 22. Связывание памяти - увеличение количества слотов, соответствии с тактовым генератором процессора.
2. Алгоритм - это последовательность информации для увеличение количества адресов, увеличение длины слотов, DRAM - полупроводниковая память с произвольным доступом,
выполнения определенного задания. В каждом алгоритме можно увеличение количества линий на шине адреса биты которой представлены состоянием
выделить серию инструкций, которые являются подробным 23. Сокращение времени доступа к памяти. Сокращение зарядные конденсаторы. Они не требуют постоянного питания, а
рецептом для выполнения процедуры. времени доступа к памяти предполагает увеличение тактовой только периодического обновления содержимого, поэтому
3. Процедурные и декларативные языки программирования - частоты памяти за счет увеличения тайминга шины FSB. потребляют меньше энергии. Ячейка динамической памяти состоит
п о д р а з у м е в а ю т структуру и представление данных в Некоторые материнские платы позволяют изменять временные из меньшего количества элементов, чем аналогичная ячейка
компьютере, выполнение действий и операций. параметры работы памяти (CAS Latency(CL), RAS-to-CAS статической памяти. Перечисленные особенности п о з в о л я ю т
Процедурные И.п. - хранят процедуры, которые выполняет Delay(tRCD), RAS Precharge Time(tRP), Cycle Time(Tras), Command увеличить количество элементов в микросхемах, снизить
компьютер (процедура - программный модуль, выполняющий Rate(CR), xxxMHz). При изменении частоты шины процессора производственные затраты, создавать микросхемы памяти с
определенные задачи) изменяются параметры памяти. большей емкостью.
И.п. Декларативный - позволяет искать данные в больших 24. Что включает в себя обновление памяти - Обновление
коллекциях. памяти подразумевает периодическое обновление 26.ПЗУ и типы - память, доступная только для чтения. Типы:
4. Разница между численными и символьными вычислениями содержимого памяти, поскольку в противном случае данные PROM - память только для записи, EPROM - стираемая (УФ)
- Числовые вычисления - это обработка конкретных чисел. могут исчезнуть (конденсаторы р а з р я д я т с я ). память только для чтения, EEPROM - стираемая и
Символьные вычисления - операции, выполняемые над Обновление должно происходить через регулярные промежутки электрически программируемая (Flash) память.
математическими выражениями (символами). Программы из группы времени и сразу после каждой операции чтения и заключается
символьных вычислений называются программами компьютерной в записи считанного значения обратно в те же ячейки 27. Специализированная цифровая система - не требует
алгебры. Например, Matlab. п а мят и. программы, система может выполнять только один (конкретный)
5. Чем занимается программная инженерия - она занимается алгоритм обработки информации, приводящий к результатам
улучшением и оптимизацией программного обеспечения. Хорошее обработки. Микропроцессорная система для обработки
программное обеспечение должно быть: совместимым с информации требует входных данных и подробного набора
требованиями пользователя, надежным, эффективным, простым в инструкций, называемого программой, которая реализует
обращении, эргономичным. Причины развития: высокая сложность обработку данных, приводящую к п о л у ч е н и ю результатов.
операционных систем, уникальность отдельных проектов, Микропроцессорная система способна на более обширную и
кажущаяся легкость внесения у л у ч ш е н и й . разностороннюю обработку данных, в зависимости от введенной
6. Что такое база данных - это собрание информации из программы.
определенной области, хранящейся таким образом, чтобы ее
можно было легко проанализировать. Любая коллекция данных - Блок-схема микропроцессорной системы:
28.
это база данных, не обязательно компьютерная. Компьютерная база +ом отдельных частей
данных делится на записи. Простейшая база данных - это
таблица, состоящая из записей.
29. Арифметико-логическое устройство ALU - это устройство
7. Компьютерная сеть - система взаимосвязанных
выполняет такие операции, как: сложение, вычитание,
с е т е в ы х устройств, позволяющих осуществлять обмен
согласование битов, сравнение значений 2-х слов, произведение и
информацией между устройствами, подключенными к этой
операции алгебраической суммы, отрицание, альтернатива, выбор
сети (обмен данными внутри с е т и , использование 1 сетевого
типа операции осуществляется управляющим сигналом.
принтера, общение пользователей с помощью сетевого
Микросхема не имеет собственной памяти, поэтому
программного обеспечения). Типы: LAN (локальная), MAN
взаимодействует с регистром.
(городская), WAN (всемирная).
30. Структура микропроцессора - в каждом микропроцессоре
8. Интернет - глобальная компьютерная сеть, позволяющая
можно выделить следующие элементы: АЛУ, интерпретатор команд,
обмениваться информацией благодаря единому способу
регистры, шина данных и шина адреса.
кодирования и передачи информации с использованием протокола
31. Примеры регистров микропроцессора: регистры данных,
TCP/IPv4 в настоящее время или TCP/IPv6 в будущем. Интранет -
регистры адреса, счетчик команд, регистр команд, указатель стека.
внутренняя локальная сеть внутри компании или учреждения. Веб-
32. Какова функция стека - это линейная структура данных, в
сервер предоставляет доступ к своим ресурсам внутри компании
которой данные добавляются в верхнюю часть стека и
или учреждения.
извлекаются из верхней части стека. Элементы стека ниже
9. DEC=419 BIN=1 1010 0011 HEX=1A3
вершины стека можно только п р о с м а т р и в а т ь .
10. HEX=3F3 BIN=0011 1111 0011 DEC =1011
33. Шина - совокупность линий и коммутационных схем,
11. Соотношение между количествами информации -
используемых д л я передачи сигналов между
8 бит=1байт, 1кбайт=1024 бита, 1Мб=1024^2байт,
взаимосвязанными устройствами в микропроцессорных системах;
1Гб=1024^3байт.
состоит из трех взаимодействующих шин: управляющая -
12. Цифровое кодирование информации - любая информация
определяет, должен ли сигнал быть записан или прочитан;
в компьютере существует только в двоичной форме, поэтому
адресная - определяет, из какой ячейки памяти должен быть
необходимы правила, преобразующие различные формы
прочитан (записан) сигнал; шина данных - по этой шине
информации в строку двоичных цифр. Процесс преобразования
передаются данные. Примеры: PCI, PCI Express, PCMCIA, USB,
информации называется кодированием и заключается в
AGP, COM.....
преобразовании любого кода в двоичный код. В свою очередь,
34. Адресный цикл - при выполнении любой команды процессора
аббревиатурой двоичного кода является шестнадцатеричный
из памяти происходит следующее: загрузка в систему управления,
код.
выполнение команды. Фаза загрузки: 1.считывание команды из
13. Что такое код ASCI - используется для кодирования текста и
счетчика команд, точнее считывается адрес ячейки с новым кодом
передачи его между цифровыми устройствами в дополнение к
команды, этот адрес передается по шине данных, 2.извлечение
алфавитно-цифровым символам, он также кодирует управляющие
кода команды из памяти и помещение его в ИК, 3.модификация
символы принтера, присваивает алфавитно-цифровым и
счетчика команд IPC=PC+1. Выполненная фаза: 1.декодирование
управляющим символам последовательность из 8 двоичных
кода команды 2.посылка управляющих сигналов, реализующих
цифр. Кодировка ASCI состоит из 83 символов. Используя код
заданную команду.
ASCI, мы можем сохранить любой текст в виде
35. Режимы адресации
последовательности битов и наоборот.
*опосредованная адресация (аргумент берется непосредственно
14. Сравнение комбинаторной и последовательной
из команды),
систем - Комбинаторная система - система, в которой
*регистровая адресация (операнды располагаются во внутренних
состояние выходов системы зависит только от состояния
регистрах микропроцессора),
входов. Последовательная система - система, в которой
*прямая адресация (адрес операнда находится непосредственно в
состояние выходов з а в и с и т о т с о с т о я н и я
команде),
входов и предыдущего состояния выходов.
* Промежуточная адресация (мы обращаемся к одному из рабочих
15. Синхронные и асинхронные системы - асинхронная
регистров процессора или к ячейке памяти),
(несинхронная) система - это цифровая система, выходы которой
*базисно-индексная адресация (косвенный режим).
определяются последовательно. Время изменения состояния
выходов не контролируется. Синхронная система - это
36. Задачи и типы ввода-вывода. Цепи, опосредующие обмен
система, с о с т о я н и е каждого выхода которой
информацией между памятью, процессором и внешними
определяется тактовым генератором.
устройствами. Микросхемы ввода/вывода могут быть
Это устраняет ошибку, которая может возникнуть, когда входной
предназначены для работы только с определенным устройством,
импульс возникает, а цепь не срабатывает из-за чрезмерного
например, с мышью PS/2, или работать с несколькими
времени распространения (срабатывания).
устройствами, например, с USB. Различают микросхемы
16. Для чего нужен регистр и его типы - цифровая схема,
ввода/вывода:
используемая для кратковременного хранения определенной
порции битов данных. На вход подается информация, которая *Ко-адресация с оперативной памятью (эти схемы
должна быть сохранена в регистре. В этот м о м е н т н а рассматриваются как определенный набор регистров, которые
у п р а в л я ю щ и й вход подается управляющий сигнал, выбираются по адресам, н а п р и м е р , графическая карта -
который сохраняет информацию с входа. Информация, для отображения графики.
хранящаяся в регистре, появляется на выходе. Типы: *Изолированный - выбор объекта ввода/вывода осуществляется
скользящие (EC и WY) последовательные, (EC и WY) путем подачи предварительного управляющего сигнала. Адресное
параллельные, (EC)последовательные-(WY)параллельные, пространство микросхемы ввода-вывода и памяти может
( E C )параллельные-(WY)последовательные, синхронные, перекрываться, выбор определяется управляющим сигналом
асинхронные. (управление IDE-приводом).
17. Что такое шина - в микропроцессорной системе необходимо
37. Режим DMA - техника, позволяющая некоторым устройствам
обеспечить передачу информации между различными схемами обращаться к оперативным модулям памяти напрямую, а значит,
микропроцессорной системы, самый простой способ - соединить без посредничества процессора, не занимая его вычислительной
каждую схему с каждой, что, однако, физически невозможно, мощности.
поэтому таких соединений меньше, а путь, по которому общаются 38. В семейство процессоров INTEL 80x86 входят процессоры
схемы, называется шиной. Она состоит из двух или более схем, INTEL 8086, 8088, 80186, 80188, 80286, 80386, 80486 и Pentium(-,
которые являются передатчиками или (и) приемниками 2, 3,
информации. 4). Их общая черта - нисходящая совместимость. Характеристики:
*64-битная шина данных и 32-битная шина адреса, *Трехрежимная
18. Комбинатор - цифровая комбинаторная схема, выполняющая
работа (реальный режим, защищенный виртуальный режим,
операцию сложения двух (или более) двоичных чисел.
виртуальный режим 8086), *Аппаратные механизмы, облегчающие
Существует 2 типа: сумматор с параллельным переносом и
поддержку дизайна операционной системы (виртуальная память,
сумматор с последовательным переносом.
многозадачность, защита ресурсов), *Суперскалярная архитектура
19. U2 (two's complement code) в настоящее время является
(конвейерная работа, два конвейера для обработки инструкций с
наиболее распространенным способом записи целых и дробных
фиксированной точкой), *Реализация программного ветвления с
чисел, представленных в формате с фиксированной точкой в
предсказанием, *Сегментация памяти и подкачка,
битах. В нем операции сложения и вычитания выполняются так
*Внутренний арифметический блок с плавающей точкой,
же, как и для беззнаковых двоичных чисел. Свое название код
работающий в конвейерном режиме, *Два внутренних раздельных
получил от способа вычисления противоположных чисел. Для
кэша (CACHE): для данных и для программного кода, *Возможность
n-битных чисел, противоположные значения получаются путем
работы с CACHE-памятью второго уровня.
вычитания из числа удвоенного веса самого старшего бита (2-2n-1
= 2n).
39. Основные элементы блок-схемы процессора Pentium:
20. Приоритетные декодеры и кодеры. Декодер -
внешние шины: данных, адреса, CU: MMU: блок управления
комбинационная схема, имеющая n входов и k выходов (k=2n).
памятью, CODE CACHE, CODE TLB, OREFETCHER+BTP, BIU: блок
Ее работа заключается в преобразовании двоичного кода
связи, CONTROLLER UNIT, V и U: (64b очередь, декодер, уровень 1
(длины n) или любого другого кода в код "1 из k".
и 2)
Приоритетный кодер - схема кодера со следующими
EU: DATA CACHE, DATA TLB, ADDRESS GENERATION UKLAD, ALU POTOK
функциями
U и V и REGISTERING, COPROCESOR.
изменения: на вход кодера может подаваться более 1 40. Сегментные регистры - регистры процессора, созданные для
выделенного сигнала, каждому входу присваивается свой хранения начального адреса области памяти, в которой
приоритет. На выходе о т о б р а ж а е т с я кодовый номер размещаются команды, данные или стек программы. Различают: CS
входа, выделенного сигналом с наивысшим приоритетом. (сегментный регистр кода программы), DS (сегментный регистр
21. Разделение полузависимой памяти. Оперативная память - данных), SS (сегментный регистр стека), ES, FS, GS (вспомогательные
эфемерная память, используется для записи и чтения. Эта память регистры для данных).
подразделяется на: DRAM - медленная, дешевая, легко
миниатюризируется и используется в качестве оперативной
памяти в компьютерах; SDRAM - быстрая, дорогая, используется в
качестве кэша в процессорах. ПЗУ - энергонезависимая память,
предназначенная только для чтения. Она подразделяется на: ROM
Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)
41.* Адресация в реальном времени - адреса имеют длину 20 *Conditional - позволяет выполнить определенную инструкцию в
бит. зависимости от значения выражения. В C++ все значения,
Регистры, с другой стороны, имеют длину 16 бит. Поэтому, чтобы отличные от 0, с ч и т а ю т с я истинными, равные 0 -
получить физический ложными. Булевы выражения считаются только до тех пор, пока
адрес ячейки памяти, содержимое сегментного регистра не будет определено их значение.
умножается на 16 и добавляется смещение (OFFSET). если (условие)
* Адресация в защищенном режиме - сегментные регистры {инструкц
содержат селекторы, указывающие на поле в массиве ия} else
дескрипторов. Из указанного элемента массива дескрипторов {инструкци
процессор берет 32-битный базовый адрес, который суммируется я} int a=4;
со смещением. В результате получается линейный адрес, если (a > 5)
который преобразуется в физический адрес при включении cout<<"a больше 5"; else
механизма подкачки. if
cout<<"a меньше 5"; else
42.Таблица дескрипторов - в режиме cout<<"a равно 5";
защищенная структура процессора x86, расположенная в
выделенном сегменте и содержащая дескрипторы
всех сегментов, содержащихся в оперативной памяти. Зная
размер массива дескрипторов, можно определить
максимальный размер виртуальной памяти, к которой может
обращаться один процесс.

43.Различия в реальной и виртуальной адресации - В


реальном режиме процессор 80286 совместим с 8086 на уровне
результирующего кода, то есть процессор может выполнять
скомпилированные программы от 8086 без внесения в них каких-
либо изменений. В режиме виртуальных адресов совместимость
с процессором '86 распространяется только на исходные формы
программ. Результирующая программа для 8086 будет
ошибочно выполняться п р о ц е с с о р о м '286,
работающим в режиме виртуальных адресов.

44. Многозадачность в однопроцессной системе -


одновременное выполнение нескольких задач, каждая из
которых находится на разной стадии выполнения. В общем
случае один процесс выполняется в течение определенного
периода времени, а затем уступает место другому процессу,
который также выполняется в течение определенного периода
времени. Система реализует многозадачность путем
переключения процессора между задачами, так что каждая
задача получает определенное количество времени для своих
нужд. На однопроцессорных платформах это переключение
процессора между отдельными процессами.
45. Цель использования кэш-памяти и взаимодействия с
микропроцессором - все более быстрые процессоры требуют
все более быстрых микросхем памяти. Это приводило к тому, что
процессору приходилось ждать несколько тактов, прежде чем
получить данные из памяти. Чтобы устранить это ограничение,
была введена кэш-память как буфер с малым временем доступа.
Его использование привело к увеличению вычислительной
производительности процессоров. Драйвер кэша постоянно
следит за тем, хранится ли необходимая информация в кэше.
Если это так, то происходит попадание в кэш, то есть данные не
нужно искать и извлекать с самого начала, так как они уже
находятся в кэш-памяти и поэтому могут быть отправлены
непосредственно в процессор, что значительно увеличивает
производительность. Второй случай - это пропуск кэша, то есть
адреса и данные, отсутствующие в кэше, должны быть получены
процессором. Для этого необходимо обратиться к (более
медленной) памяти, где хранятся эти данные, и извлечь их, что, в
свою очередь, замедляет работу ЦП и приводит к снижению
производительности.

46.Процессорная конвейерная система - предполагает


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

47.*FSB (Front Side Bus) - шина, соединяющая процессор с


контроллером памяти.
*FCore - частота ядра процессора (fsb x множитель).
*DDR (Double Data Rate) - в 2 раза большая пропускная
способность (FSBx2).

48.Сложность алгоритма - зависимость между


вычислительной мощностью и размером входных данных
задачи.

49. *Итеративный алгоритм - алгоритм, который получает


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

50.*NWD - даны 2 числа. Проверяем, что оба числа делимы на


последовательные цифры, начиная с 2. Произведение
полученных цифр даст NWD. 36,18|2; 18,9|3; 6,3|3; 2,1|STOP,
потому что больше нет общих делителей, т.е. NWD(36,18)=2x3x3

* F(n): F(n)= 1) 0 для n=0


2) 1 для n=1
3) F(n-1)+F(n-2) для n>1
Последовательность Фибоначчи выражается
рекурсивной формулой: F(n)=F(n-2)+F(n-1), когда
F(1)=1 и F(2)=1.
Это легко вычислить:
F(3)=F(1)+F(2)=1+1=
2
F(4)=F(2)+F(3)=1+2=
3
F(5)=F(3)+F(4)=2+3=
5
*2^n - Мы делаем предположения для n: Когда n
принадлежит целым числам n<0, n=0, n>0, когда n принадлежит
измеримому l... Предположим, что алгоритм применим к целым
числам, тогда: Когда n=0, то n^0=1, когда n>0, то результат
равен n-кратному произведению цифры 2, т.е. когда n=3, то
результат=2*2*2. Когда n<0, то результат равен 1/(n-
кратному произведению цифры 2).
*n! - Дайте n, когда n=0, то результат=1, когда n>0, то
результат =1*2*3*...*n, т.е. произведение последовательных
натуральных чисел, оканчивающихся на n.
*является ли n простым числом - я проверяю, дает ли n при
делении на все числа в диапазоне от 2 до n-1 остаток от деления,
если да, то n - простое число.
*Q-уравнение У меня есть уравнение в виде Ax^2+Bx+C=0.
Я проверяю, какие коэффициенты имеет уравнение. Если A=0,
то это не квадратное уравнение. Если A≠0 и Δ=0, то x= -B/2A,
если A≠0 и Δ>0, то x1=(-B-sqrΔ)/2A; x2=(-b+sqrΔ)/2A, если A≠0 и
Δ<0, то решений нет.

Инструкции: присваивание, условные, вложенные


51.
условные, инструкции для реализации циклов
вычислений, select, break, continua, jump, typedef -
синтаксис (примеры).

*Присвоение - в языках программирования это инструкция, в


которой значение присваивается определенному месту (l-
значению), которое будет в нем храниться.
Например, int x=5; a=20; d=a+x;
Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)
Пример:
* Условно-вложенный cd51 char s [8], FindChar ; // безусловное завершение выполнения инструкции внутреннего цикла
cd51 * Условная вложенность - инструкция if...else... Укажите строку s и попытка выполнения следующего цикла.
Выполняет серию тестов до тех пор, пока не возникнет одна из for (i = 0 ; i < strlen (s) ; i++) // strlen() - возвращает cd51 *Инструкции по подаче - goto
следующих ситуаций: длину строки
-одно из условий в операторе if или else if истинно. В этом if (s [i] == findchar) break ; // символ Инструкция goto рассматривается программистами как наследство
с л у ч а е выполняются инструкции, следующие за этим для findChar от BASIC, потому что с ее помощью мы можем делать переходы к
условием if (i < strlen (s)) cout << " " << i << '; объявленной метке. Большинство доморощенных программистов
- ни одно из проверенных условий не является истинным. считают ее использование примером плохого знания, но на самом
Программа выполняет инструкцию, начиная с последней *continue - Эта инструкция завершает выполнение кода цикла - то деле использование goto, когда это оправдано, имеет смысл.
инструкции else (если таковая имеется) есть, если в цикле встречается инструкция continue, программа Дизайн goto прост:
-если условие выполнено, он просто выполняет пропускает следующие за ней инструкции и переходит к goto label_name; // a w
инструкцию. например. повторной проверке условия. Эта инструкция приводит к программный код, который мы
если (условие) преждевременному завершению, размещаем:
{if(condition2) label_name:
{ инструкция1} instructions_label;
else {Инструкция2} Ограничения инструкции goto не позволяют ей переходить через
} определение переменной; за каждой меткой должна следовать как
else {Инструкция3} минимум одна инструкция. Эта инструкция может быть полезна,
например, для немедленного выхода из многократно вложенного
цикла. Кроме того, goto не может вызвать переход к выполнению
char c ; инструкции, которая находится за пределами функции, содержащей
clrscr () ; goto.
cout << "Введите
символ" ; cin >> c ; *Typedef- Язык C++ позволяет вам определять собственные типы
if (c >= 'A' && c <= 'Z') данных путем
cout << "буква Использование инструкции typedef. Эта инструкция является
большая" ; средством, с помощью которого программа может
else if (c >= 'a' && c <= расширяют основные типы данных языка C. Общая форма
'z') cout << "буква mala" ; оператора typedef - na-.
else if (c >= '0' && c <= говорящий,
'9') typedef declaration_type;
cout << где объявление_типа идентично объявлению переменной, за
"цифра/n" ; else исключением того, что вместо имени_
cout << "другой символ" ; переменной используется имя типа. Например, в
инструкции typedef int count;
* петли пример: main()
for - этот цикл в C имеет очень широкое {
применение, он может работать как с постоянными, так и с typedef int group[10]; /* Создайте новый тип 'group' */ group
условными итерациями. totals; /* Присвоение нового типа данных
переменная */
для (инициация; условие; инструкция1) инструкция2 ; for (i = 0; i < 10; i++)
{ totals[i] = 0;
double a = 10 ; возврат (0);
int n ; }
cout << "Введите число в диапазоне
[1..30]: " ; cin << n ; 52. Какие стандартные типы вы знаете?
если (n > 0 && n <= 30) Тип Булево Тип
{ Целое число
for (int i = 1 ; i <= n ; i++) a += (double)i ; Тип
cout << n << " !"= " << a << '\n' ; Плавающее
} число
else cout << "Число вне диапазона" ; Тип Характер
return 0 ; *char - символьный тип. Он может использоваться для хранения
} символов в коде ASCII (American Standard Code for Information
Interchange) или любом другом коде, используемом на конкретной
дополнительно петли: машине. Поэтому в нем безопасно хранить числа в диапазоне 0 ...
127. 127. В общем случае тип char имеет длину 1 байт и поэтому
пока может использоваться для хранения чисел в диапазоне -128 ... 127
while (переменная < 100) (если со знаком) или 0 ... 255 (если б е з з н а к а ).
{ *int - целочисленный тип. Переменные этого типа могут
инструкция_ принимать положительные или отрицательные целые значения.
1; *short int - короткий целочисленный тип
инструкция_ *long int - целое число длинного типа
2; *float - тип с плавающей запятой одинарной точности.
инструкция_ *double - тип с плавающей точкой двойной точности.
3; *long double - тип long с плавающей точкой двойной точности.
} *void - пустой тип, указывающий на отсутствие значения
(используется в ANSI C).
пока: ¯ Ни одна переменная не может иметь тип void. Только параметры,
На передаваемые в функцию, могут иметь тип void (тогда это означает,
{ что в функцию ничего не передается) или возвращаться функцией
инструкция_ (функция ничего не возвращает). Кроме того, тип void может
1; использоваться при создании некоторых составных типов.
инструкция_ Для каждого из целочисленных типов: int, short int, long int и char
2; возможны следующие модификаторы:
инструкция_ *unsigned - беззнаковый тип (только положительные значения)
3; *bool - возвращает true (1) или false (0)
}
while (variable > 10); 53. Как определить производные (собственные) типы?
Производные типы - создаются из фундаментальных типов с
* Переключатель п о м о щ ь ю операторов объявления
- инструкция требует целочисленного значения, которое * - указатель на заданный тип - int
может быть константной переменной, вызовом функции или *w; & - ссылка на заданный тип
выражением. Switch не работает с типами данных с [] - массивы заданного типа
плавающей точкой. () - функция, возвращающая заданный тип, с параметрами заданного
- значение, следующее за каждой меткой case, должно быть типа
константой.
- C++ не позволяет использовать метки case с диапазоном 54. Какие диапазоны достоверности переменной (объекта) вам
значений, каждое значение должно отображаться в отдельной известны?
метке case. - время жизни объекта - с момента определения объекта до
- После каждой группы выполненных инструкций необходимо момента прекращения его существования,
использовать оператор break. Он заставляет программу выйти из - диапазон действия имени - диапазон, в котором имя
оператора switch. Если вы не используете инструкцию break, известно компилятору,
программа продолжит выполнение инструкции после - локальная область видимости - от точки объявления до конца
последующих меток case. блока,
- набор инструкций для каждой метки или меток должен быть - глобальная область видимости - для имени, объявленного вне
заключен в фигурные скобки. класса или функции, область видимости от места объявления до
- инструкция после метки по умолчанию выполняется, если н е конца файла, содержащего это объявление,
встречается н и к а к о й другой метки. - область видимости класса - имя, видимое только
Пример: методами данного класса, производных и дружественных
char c ; классов
clrscr () ;
cout << "Введите символ" ; cin >> c 55.Что такое перечисление?
; switch (c) Тип перечисления enum.
{ Тип перечисления - это очень умное решение для улучшения
случай "A": читаемости кода и
случай "B": который уменьшает количество ошибок в программе. Он
... используется, когда мы знаем количество определенных
cout << "Прописная состояния системы, и если мы в состоянии их вычислить.
буква" ; break ; Классическим случаем может быть тип
случай "a": используется для расчета дней недели:
случай "b":
... enum days_week = {понедельник=1, вторник, среда,
cout << "Нижний четверг, пятница, суббота, воскресенье};
регистр" ; случай
"0": Однако такая конструкция малопригодна. Лучше всего
случай "1": комбинировать тип enum с оператором typedef, в результате чего
... получается новый тип:
cout << "Цифра" ;
break ; typedef enum {понедельник=1, вторник, среда,
по умолчанию : четверг, пятница, суббота, воскресенье} дни недели;
cout << "Другой знак" ;
} 56. Структура программы на C++
Структура программы:
*Break - позволяет выйти из цикла Эта инструкция переводит #include <iosteram>
программу в конец текущего цикла. Синтаксис для цикла for: #include <studio.h>//директивная область
для (инициализация, тест, обновление) #include
{
/ Последовательность инструкций 1 // область декларирования и/или определения
если (условие выхода из цикла) break ; int main (void) // глава функции
/ Последовательность обучения 2 главная
} {
/ Последовательность обучения 3 // начало составной инструкции

Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)


cout<< "Привет! оператор. Э т о сокращение от выражения:
//инструкция по эксплуатации a = a + 1; //or
вернуть 0; // область декларирования и/или определения a += 1;
//инструкция по эксплуатации Синтаксис:
} Арифметические операторы, операторы отношения,
57. ++переменная
//конец составной инструкции логические операторы, побитовые операторы. переменная++
Операторы *Уменьшающий
отношений оператор
больше чем. > Он вычитает число 1 из переменной, в которой встречается этот
меньше, чем. < оператор. Это сокращение от выражения:
больше или равно z... >= a = a - 1;
меньше или равно z.. <= или a -= 1;
равно z. == Синтаксис:
отличается от ... !=

*оператор ">" означает: больше, чем.


4 > 2; /true
3 > 8; //false
1 > 1; //false
переменная > 6;
переменная >
переменная;
Все выражение имеет значение true, когда условие истинно

*Оператор "<" означает: меньше, чем.


21 < 15; //false
11 < 23; /true
84 < 84; //false
переменная < 8;
переменная <
переменная;
Выражение истинно только в том случае, если значение,
стоящее в левой ч а с т и , меньше значения, стоящего в
правой части.

*оператор ">=" больше или равно.


2 >= 3; //false
14 >= 13; /true
13 >= 13; /true
переменная >= 17;
переменная >=
переменная;
Выражение истинно только в том случае, если значение,
стоящее в левой ч а с т и , больше или равно значению,
стоящему в правой части.

*оператор "<=" меньше или равно


21 <= 3; //false
10 <= 18; /true
19 <= 19; /true
переменная <= 42;
переменная <=
переменная;
Выражение истинно только в том случае, если значение,
стоящее в левой части, меньше или равно значению, стоящему
в правой части.

Оператор * "==" используется для сравнения двух


значений. Если значения равны, выражение будет
истинным, и наоборот.
42 == 42; /true
4 == 14; //false
переменная == 1;
переменная ==
переменная;
Если числа одинаковы, то выражение верно.

Оператор * "!=" используется для сравнения двух значений.


Если значения равны, выражение будет ложным, и наоборот.
28 != 28; //false
6 != 11; /true
переменная != 15;
переменная !=
переменная;

Логические операторы
Эти операторы используются для вычисления значения 'true' или
'false'. Истинное условие дает значение 1, в то время как ложное
условие дает значение 0.

*Логическое отрицание превращает истину в ложь, а ложь - в


истину. Например, если выражение: a==b истинно, а к нему
если применить выражение !(a==b), то результат будет
ложным. Синтаксис:
!аргумент
* Логический продукт
Результат логического произведения истинен только в том
случае, если оба аргумента также истинны. Если истинен
только один из них
false, то результат будет
ложным. Синтаксис:
аргумент1 && аргумент2
* Логическая сумма
Результат логической суммы истинен, если хотя бы один аргумент
истинен. Только если оба
false, то результат будет ложным. Например:
01001010 - переменная1
00101001 - переменная2
01101011 -
результат
Синтаксис:
аргумент1 || аргумент2
* Рациональность
Результат будет истинным, если значения обоих аргументов
о д и н а к о в ы . Синтаксис:
аргумент1 == аргумент2
* Неравенство
Результат будет истинным, если значения двух аргументов
различны. Синтаксис:
аргумент1 != аргумент2

Операторы присваивания
Аргумент, стоящий слева от присваивания (слева от знака =),
должен быть единственным значением. Помимо оператора =,
существуют и другие. Они имеют значение в соответствии со
следующей схемой:
a op= b
Это равносильно:
a = a op b
Где op - оператор, стоящий слева от знака =. Например: a *= b;
равна нотации (или сокращенной нотации, если хотите): a
= a * b;

Арифметический оператор:
* Оператор if
Это единственный оператор в C++, для которого требуется 3
аргумента.
условие ? выражение1 : выражение2
Условие всегда вычисляется в начале. Если оно истинно (
!= 0 ) это
условие равно 0, то вычисляется выражение2.

*Увеличить оператора
Он добавляет число 1 к переменной, у которой встречается этот
Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)
сравните эти способы?
-- * Аргументы функции по значению: есть формальные изменять переменные (даже локальные) вне этой функции.
переменн аргументы и текущие аргументы. Формальные аргументы - это то,
ая что функция говорит сама себе в параметрах, а текущие
переменна аргументы - это то, что мы используем в данный момент в 61.Что такое перегрузка функций.
я конкретном вызове функции. Перегрузка функций: происходит, когда в заданной области
Побитовые операторы * Передача аргументов по ссылке: (по имени), передача видимости имеется более одной функции с одинаковым именем.
cd57 аргументов по ссылке позволяет этой функции Какая из этих функций будет выполнена, зависит от количества или
cd57 Побитовые типа аргументов, с к о т о р ы м и вызывается функция.
операторы
Побитовые операторы работают отдельно с отдельными битами 62. Как определяются массивы и как они
переменных передаются в функции (примеры)?
Массив - это последовательность объектов одного типа,
*Перемещение битов влево занимающих непрерывную область в памяти. Массивы являются
Мы предполагаем, что операция происходит над переменными типа производным типом, т. е. если взять тип int, то массив будет иметь
unsigned char. тип int.
Если переменная имеет значение, Массивы передаются, предоставляя функции только адрес начала
представленное в двоичной форме: этого массива. Имя массива также является адресом его нулевого
00100100 элемента.
то результатом такой операции будет переменная << 2: определение, например, int number[20];
10010000
эта команда сдвигает биты влево на две позиции. В аргументе Что появится на экране монитора в результате
63.
теряются биты, которые окажутся не на своих местах в результате выполнения фрагмента программы .....
сдвига. справа вставляет нули на место отсутствующих битов.
Синтаксис: 64. Дайте определение и напишите, для чего используются
переменная << количество бит указатели? Указатель - это переменная (называемая переменной-
*Переместите биты вправо. указателем), которая содержит адрес первой ячейки памяти, в
Если переменная имеет значение, представленное в которой хранится другая переменная. Если переменная занимает
Мы предполагаем, что операция происходит над переменными типа более одной ячейки памяти, то указатель указывает на первую из
unsigned char двоичной формы: этих ячеек. Для каждого указателя указывается его тип. Указатель
00100100 типа int указывает на переменную типа int. Таким образом,
то результатом такой операции переменная >> 1 будет: компилятор знает, сколько ячеек в памяти занимает переменная,
00010010. начинающаяся в ячейке, на которую указывает указатель.
эта команда сдвигает биты влево на одну позицию. В аргументе Указателям присущи два оператора. Это оператор разбиения на
теряются биты, которые окажутся не на своих местах в результате части, который записывается в виде звездочки (*), и оператор
сдвига. left вставляет нули на место отсутствующих битов. выборки адреса &. Оба эти оператора являются префиксными
Синтаксис: (пишутся перед переменной) и унарными операторами.
переменная >> количество бит Использование указателей: указатели используются в различных
* Отрицание битов ситуациях, в частности, когда мы имеем дело с:
Побитовое отрицание преобразует все нули в единицы и единицы в - совершенствование работы с советами директоров
нули в переменной. Если у нас есть переменная со значением: - Функции могут изменять значение переданных им аргументов
10011010 - доступ к специальным ячейкам памяти
то его побитовое отрицание выглядит следующим образом: - резервирование областей памяти
01100101 int x=1; //объявление переменной int
Синтаксис: int *pointer; //декларация указателя на тип int
~ переменная pointer = &x; //адрес переменной в указатель
*Битное соединение *indicator = 99; //запись эквивалентна "x=99;"
Конъюнкция битов - это умножение отдельных битовUw. Первая строка представленного кода не требует пояснений, поэтому
Конъюнкция дает результат, равный единице в данной позиции, мы не будем ее подробно анализировать. Во второй строке мы
если во всех переменных в этой позиции есть единица. Если в объявили указатель на тип int, поэтому, как вы можете догадаться,
одной позиции только единица, то результат равен 0. Пример: объявление указателя выглядит следующим образом:
01101011 - переменная1 <модификатор> <тип> *имя;
11001101 - переменная2 Таким образом, простое объявление указателя на переменную
01001001 - result данного типа отличается от объявления переменной только
Работает с целочисленными наличием дополнительного символа '*' перед именем переменной.
аргументами Синтаксис:
переменная1 и переменная2 Как определяются динамические массивы?
65.
*Симметричное различие Динамические массивы - их размер может быть определен во время
Результат симметричной разности равен 1 в данной позиции выполнения.
только в том случае, если только одна переменная в этой позиции Что-то вроде этого
равна 1. В противном случае он равен 0.
01101011 - переменная1 int *t;
11001101 - переменная2 int size; cin>>size;
10100110 - result t = new int[size]; или
Работает с целочисленными int size;
аргументами Синтаксис: cin>>size; int
переменная1 ^ переменная2 t[size];
*Альтернативный бит
Результатом побитовой альтернативы является 1 в данной Приведите пример определения структуры. Как мы
66.
позиции, если хотя бы одна переменная в данной позиции равна 1. получаем доступ к компонентам структуры?
В противном случае он равен 0.
01101011 - переменная1 Структура - это тип, содержащий переменные любого типа
11001101 - переменная2 (называемые полями). Структура позволяет упаковать
11101111 - result логически связанные данные в одну область памяти, которая
Работает с целочисленными может быть отправлена как один аргумент.
аргументами Синтаксис: Структура в C++:
переменная1 | переменная2 Структуры в C++ объявляются так же, как и в C, но помимо полей они
могут содержать функции (называемые методами) и наследоваться
Что
58. такое инкрементация и декрементация от других классов и структур. Структура отличается в C++ от класса
переменной? Инкрементация/декрементация - это только предполагаемой областью видимости ее полей и методов -
добавление/вычитание единицы из переменной для класса это private, а для структур - public. Однако
#include <iostream> использование структур вместо классов не является хорошей
using namespace std; практикой программирования, так как затушевывает структуру
программы.
int main() /* объявление
{ */ struct city {
int a = 5; long population;
cout << a << endl; char* river;
cout << ++a << endl; city(long population,char * river):
//прединкрементация cout << a++ << population(population), river(strdup(river)) {}; /*конструктор*/
endl; //послеинкрементация cout << a inline char* wez_rzeke() {return river};
<< endl; ~city() {free( (void*)river );} /*деструктор*/.
вернуть 0; };
} В таких структурах доступ к первичным компонентам
Вышеупомянутая программа выведет нас на экран: о с у щ е с т в л я е т с я с помощью операций:
5 struci rect screen;
6 a1 = screen.p1.x
6 b1 = screen.p1.y;
7
Как видно из приведенных выше примеров, мы различаем 2 типа 67. Приведите пример определения класса и определения
инкрементации объекта класса.
- Так называемые пре-инкремент и пост-инкремент. Оба они
увеличивают значение переменной на 1, но между ними есть * Определение класса: Определение класса состоит из двух
разница. Так, оператор предварительной инкрементации частей: заголовка, состоящего из ключевого слова class, за
(++a) которым следует имя класса, и тела класса, разделенного парой
возвращает значение, уже увеличенное на 1 (в данном случае это фигурных скобок и заканчивающегося точкой с запятой.
будет 6), в то время как оператор post-increment класс TPunkt
(a++) {
возвращает значение переменной до процесса инкрементации };
(здесь он вернет значение 6, в то время как значение переменной *Создание объектов: Все, что было написано до сих пор,
'a' уже будет равно 7). относилось к классу, т.е. к нашему рецепту создания объекта. Сам
процесс создания объекта называется инстанцированием или
Точно так же обстоит дело с оператором декрементации - конкретизацией класса. Создание объектов происходит так же, как
преддекрементацией (--a) и постдекрементацией (a--). и создание переменных. Например.
//classname name_instance
59.Приведите примеры использования int i; //переменная типа int с именем i
операторов: sizeof, cast. TPunkt p1;//объект класса TPunkt с именем p1
* Оператор sizeof Объекты обозначаются точкой " . " или через " -> "
Оператор sizeof передает число байт, равное размеру выражения
или спецификатора типа. Он может быть в одной из двух форм: 68. Как мы можем ссылаться на компоненты класса?
sizeof (specifier_type);
sizeof expression; В самом программном коде доступ к переменным внутри класса,
* Оператор проекции которые называются полями, зависит от того, имеем ли мы дело с
Изменение типа данных: оператор приведения переменной типа класса или с указателем на этот объект:
Оператор cast используется для перехода от одного типа данных к - В случае переменной типа class доступ к полям осуществляется с
другому: (тип_данных)x; помощью
где data_type обозначает тип данных, в который должно оператор разбивки на части, который является (.)
быть преобразовано значение переменной x. object.field = value; значения полю в объекте
Например, декларация: - Если мы имеем дело с индикатором, оператор разбивки
(поплавок)5; это стрелка -> (дефис и символ
изменит целочисленную константу 5 (типа int) на константу с большинства) объект->поле = значение;
плавающей точкой 5.0 (типа float).

60. Как можно передать аргументы в функции -


Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)
void methodCleanVirtual() { // реализация чистого виртуального метода
// возвращаем
инструкции метода;
}};
int main() {
69. Для чего используются метки private, protected // абстрактный объектХ; //
ошибка, класс является абстрактным
и public? Метки public, private, protected Неабстрактный объектY; //
корректный возврат 0;
Создав новый класс, мы можем решить, что нужно разделять, а что }
нет. Пример:
классная посудомойка
{
общественность:
int nr_program ;
float
temp_water ;
char name[80]
;

bool plukaj( nr_program, temp_water ) ;


bool susz( nr_program ) ;
частный:
int pressure_water ;
int load ;

bool releasevalves( no_program ) ;


};

Это типы доступа к компонентам класса:

общественности - находится в свободном доступе.


private - доступен только функциям-членам класса и
дружественным функциям этого класса.
protected - доступен так же, как и компонент private, но при этом
дополнительно доступен для классов, производных от этого класса.

Эти наклейки можно размещать в любом порядке, а также


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

При определении класса мы можем ограничить доступ к


определенным компонентам класса. Существует три типа
доступа к компонентам:
публичный
означает, что ингредиенты, заявленные после
этой этикетки, доступны из любой точки
программы,
частный
означает, что компоненты, объявленные после
этой метки, доступны только компонентным
функциям этого класса; глобальные (обычные)
функции не имеют доступа к этим компонентам,
поэтому нет доступа к этим данным и из главной
функции,
protected
как и в случае с private, с той лишь разницей,
что к таким компонентам могут обращаться
классы, производные от этого класса (это будет
объяснено в разделе "Наследование").
70. Для чего нужны конструктор и деструктор?
* Конструктор в объектно-ориентированном программировании
- это специальный метод класса для создания объекта этого
класса.
Задачи строителя:
При вызове конструктора выполняются следующие задачи:
- вычисление размера объекта
- распределение объектов в памяти
- очистка (обнуление) области памяти, зарезервированной
для объекта (только в некоторых языках)
- запись информации в объект, связывающей его с
соответствующим классом (ссылка на методы класса)
- выполнение кода базового класса (в некоторых
языках не требуется)
- выполнение кода вызванного конструктора
За исключением последнего пункта, вышеперечисленные задачи
выполняются внутри языка и зашиты в его компиляторе или
интерпретаторе, а в некоторых языках представляют собой код
базового класса.
*Деструктор - в объектно-ориентированных языках
программирования специальный метод, вызываемый программой
перед удалением объекта и почти никогда не вызываемый
непосредственно в коде, использующем этот объект.
Функционально он противоположен конструктору.
Деструктор предназначен для выполнения действий,
составляющих его "уничтожение", кроме освобождения памяти,
занимаемой самим о б ъ е к т о м , и подготовки объекта к
физическому удалению. После выполнения этих действий
объект переходит в состояние сингулярности, и обычно с ним
больше ничего нельзя сделать, кроме физического удаления.
Деструктор обычно выполняет такие действия, как закрытие
соединения с файлом/сокетом/пунктом, снятие регистрации с
других объектов, иногда также отмечая факт удаления, а также
удаление подчиненных объектов, которые объект создал или
были назначены ему в качестве подчиненных (если он является
единственным владельцем) или с н я т и е
р е г и с т р а ц и и с его использования (если он является
общим объектом).

71.Для чего используется этот индикатор?


Каково назначение этого указателя? Каждый объект класса
имеет свою собственную копию набора полей. Функции-
составляющие, с другой стороны, хранятся в единственном
экземпляре; указатель this позволяет определить владельца
данных, на которые ссылается функция-составляющая; если
вы хотите избежать неприятностей, никогда не изменяйте
значение указателя this!

72.Объясните природу преемственности?


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

73.Приведите пример абстрактного класса.


В C++ абстрактный класс - это класс, в котором объявлен хотя
бы один чисто виртуальный метод. Любой класс, наследующий
от абстрактного класса и не желающий сам быть абстрактным,
должен реализовать все унаследованные виртуальные методы.

Класс Abstract {
public:
virtual void methodCleanVirtual() = 0; }

// чистый виртуальный метод


class Non-Abstract : public Abstract {

// наследование
общественность:
Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)
1. Запишите число 416D в
двухкубиковом,
шестнадцатикубиковом и
десятичном порядке

416:2 = 208 остаток 0


208:2 = 104 отдых 0
104:2 = 52 отдых 0
52:2 = 26 отдых 0
...............................
416:16 = 26 отдых 0
26:16 = 1 остаток от 10 - т.е. A

416 = 1A0H

2. Сколько w в
десятичной и двоичной системе -
3F3H
Преобразование в десятичную
систему: 3*16 +F*1622 +3*16(0) =
1011B
1011:2=505 остаток 1
505:2 = 252 остаток 1
252:2 = 126 отдых 0
126:2 = 63 отдых 0
63:2 = 31 отдых 1
31:2 = 15 остаток 1
15:2 = 7 отдых 1
7:2 = 3 остатка 1
3:2 = 1 остаток 1

1011D = 1111110011B

Загружено Karol Scisowski (55p4jtjqmg@privaterelay.appleid.com)

Вам также может понравиться