Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Летняя практика КОНСПЕКТ ПО ТМиЯП.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
8 Мб
Скачать
☆

Лекция №5 «Поразрядные операции над числами»

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

Поразрядная операция «И» (&) используется для маскирования отдельных разрядов.

Операция маскирования заключается в выделении нужного разряда.

Маска – это двоичное число, которое содержит единицы нужных разрядов.

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

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

Символьные массивы и строки.

Символьные массивы в С ++ создаются и обрабатываются 2-мя способами:

  1. Традиционный;

  2. Обработка символьного массива как строки.

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

Ответственность за наличие нулевого символа и корректной обработке возлагается на программиста.

Указатели – это произвольный тип, позволяющий хранить адреса памяти, которая разместила переменные.

char *pM;

Адреса, но не сами символы, поскольку символьные массивы (как и любые иные), размещаются в памяти последовательно. Обращаться к массиву можно по адресу его первого элемента, т.е. по указателю.

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

pM = &M[0]

получает адрес нулевого элемента массива.

Операция «звездочка (*)» перед именем указателя означает операцию над содержимым памяти, на которую указывает указатель.

Стандартная библиотека С ++ включает набор строковых функций, которые позволяют копировать строки, объединять две строки, сравнивать строки.

Существуют функции sscanf и sprint аналогичные вводу-выводу с консоли. Функции работы со строками обеспечивают наибольшую компактность программ.

Лекция №6 «Передача параметров функциям по значению или по указателю»

В языке С ++ принято 2 способа передачи данных для обработки в функции: по значению или по ссылке (указателю).

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

FuncA (x, y, z)

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

FuncA (&x, &y, &z)

Таким образом если потребуется изменить некоторую переменную за счет вызова функции, функции следует передавать по указателю.

Использование ссылок.

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

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

Обработка массивов в функции.

При обработки массива внутри функции для перехода от одних элементов массива к следующему используют операцию увеличения указателя (А ++), увеличение на единицу указателя изменяет адрес, на то число, которое соответствует i указателю.

Например: если указатель целого типа, то адрес будет увеличен на 4, поскольку число занимает 4 байта. При программировании не учитывать разрядность не следует. Это соответствует указанному типу указателя.

Структуры.

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

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

Например: манипулирование переменной типа Student не требует знаний и внутренней структуры (копирование, передача функциям и т.д.)

При использовании указателей на структуре к элементам синтаксически обращаются не через точку, а через стрелку.

Объединение (union)

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

По сути одно и тоже значение представляется данными разного типа.