- •1)Понятие информатики, информации, кодирования информации.
- •4)Понятие алгоритма, рекурсивные функции.
- •5)Понятия алгоритма, системы текстовых замен.
- •6)Способы описания языков программирования: бнф-нотации, синтаксические диаграммы.
- •8)Объект и его атрибуты. Специализация и реализация типа данных.
- •9)Сигнатура операции, факторы, затрудняющие реализацию операций.
- •Факторы, затрудняющие реализацию операций:
- •(36)Понятие подпрограммы(пп),назначение подпрограмм, использование подпрограмм.
- •(38)Передача параметров в подпрограмму,параметры входные и выходные,параметры,передаваемые по значению и адресу.
- •(39)Использование подпрограмм,параметры,формальные,локальные,глобальные,обращения к подпрограммам,фактические параметры.
- •(40)Передача параметров массивов в подпрограмму,примеры.
- •(44)Параметры шаблона функции,использование функции,пример.
8)Объект и его атрибуты. Специализация и реализация типа данных.
Объект данных: контейнер для хранения значений данных. Он характеризуется набором атрибутов. Атрибуты определяют количество значений и логическую структуру. Одни объекты данных создаются и существуют с самого начала выполнения программы. Другие создаются в процессе выполнения. У каждого объекта есть время жизни.
Элементарный ОД: хранящиеся в нём значения используются как единое целое. Если объект представляет собой или содержит другие объекты, то он называется структурой.
Постоянные атрибуты: тип, местоположение, имя. Значения могут изменяться.
Переменная: объект, имеющий тип, имя и значение, который может изменяться при выполнении.
Константа: объект, чьё значение в программе не изменяется.
Тип данных определяется спецификацией, включающей в себя атрибуты значения и операции.
К реализации типа данных относится способ представления в компьютере и способ представления операции через алгоритмы и процедуры. Спецификация и реализация типа не зависит от синтаксического представления. Атрибуты объектов представляются с помощью описания или определения типов. Значением может быть множество констант.
9)Сигнатура операции, факторы, затрудняющие реализацию операций.
Сигнатура - это имя функции плюс спецификация формальных параметров.
Сигнатура функции(операции) — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках. Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.
Факторы, затрудняющие реализацию операций:
1. невозможность определить результат для некоторых аргументов 2. неявные аргументы 3. побочные эффекты 4. самоизменение
10)Подтипы, объявление типов и операций, перегруженные операции.
Подтипы как подмножество значений некоторого базового типа с тем же набором операций. Подтип не вводит никаких дополнительных операций над данными и не определяет никакого нового типа.
Объявление используется, чтобы уведомить компилятор о существовании элемента
Обьявление типов данных для переменных. int, double, char и так далее.
Перегрузка операций - это средство языка, позволяющее вводить операции над типами, определяемыми пользователем.
Перегруженные операции - когда символ операции обозначает не одну, а общую операцию, например сложение (+). Перегружать операции нужно с добавлением оператора operator.
Перегружаемость - возможность использования в различных случаях для одной и той же операции операндов различных типов. Так, например, операция сложения позволяет "смешивать" типы int, double, float и другие в одном выражении. Такой полиморфизм обеспечен внутренними механизмами языка С++.
Для удобства чтения и написания кода разрешается перегрузка некоторых операций. Оператор перегрузки записывается с помощью ключевого слова operator. Разрешена перегрузка следующих операций:
бинарные +,-,/,*,%,<<,>>,==,!=,<,>,<=,>=,=,+=,-=,/=,*=,%=,&=,|=,^=,<<=,>>=,&&,||,&,|,^;
унарные +,-,++,--,!,~;
оператор присваивания =;
оператор индексации [].
Перегрузка операций позволяет использовать операционную нотацию (запись в виде простых выражений) к сложным объектам - структурам и классам. Запись выражений с использованием перегруженных операций упрощает восприятие исходного кода, так как более сложная реализация сокрыта.
31) По способу доступа файлы можно разделить на последовательные, чтение и запись в которых производится сначала файла байт за байтом, и файлы с произвольным доступом, допускающие чтение и запись в указанную позицию.Форматизированный и не форматизированный в/в ???
32)
Стандартные операции работы с файлами хранятся в библиотеке stdio.h. Функция открытия файла называется fopen(). Команда открытия (создания пустого) файла запишется так: FILE *f1,*f2;
f1 = fopen("f1.txt","r"); //”r” значит будем читать из файла
f2 = fopen("f2.txt","w"); //”w” значит будем записывать в файл
Закрывается файл с помощью функции fclose():fclose(fo);
33)Работа с текстовыми файлами
Для работы надо подключить заголовочный файл
#include <fstream>
Существуют входные, выходные и двунаправленые потоки
Пример открытия :
1)входного потока ifstream in(“infile.txt”);
2)выходного потока ofstream out(“infile.txt”);
3)поток ввода-вывода fstream both(“infile.txt”);
Считывание данных из файла in>>x;
Запись данных в вайл out<<x;
После работы с файлами их надо обязательно закрыть in.close(); out.close();
Пример программы
#include <fstream>
using namespace std;
int main (){
ofstream out(“outfile.txt”);
for (double i=0;i<10;i+=0.5)
out<<i<<’ ‘; //запись данных в текстовый файл
out.close();
}
34)Работа с двоичными(бинарными) файлами
Для работы надо подключить заголовочный файл
#include <fstream>
Для открытия двоичных файлов необходимо открыть входной поток, используя спецификатор режима ios::binary.
Пример
ifstream in(“infile.dat”,ios::binary);
Функция get считывает 1 символ (1 байт) в переменную ch типа char и возвращает ссылку на этот поток
in.get(ch);
Функция put записывает символ ch в поток и возвращает ссылку на этот поток.
in.put(ch);
Считываются абсолютно все символы учитывая пробел, \n и тд.
Пример вывода содержимого файла на экран
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char next;
ifstream in(“infile.dat”,ios::binary);
in.get(next);
//функция eof возвращает true если файл считан до конца
while (! in.eof())
{
cout<<next;
in.get(next);
}
in.close();}
В двоичных файлах могут храниться последовательности целых и вещественных типов, где каждое значение занимает от 2 до 10 байт, размеры которых за ранее не известны в этом случае использовать функции get и put невозможно. Для считывании и записи блоков используется функции read() и write()
пример read() double i; in.read((char*)&i, sizeof(double));
(char*)&i – в какую переменную будут записаны данные из потока.
sizeof(double) – сколько байт считываем
пример write() int i; out.write((char)&i,sizeof(int));
Записывает в i указанное число байт(sizeof(int))
Пример программы
#include <fstream>
using namespace std;
int main ()
{
char next;
ofstream out(“outfile.dat”,ios::binary);
for (double i=0;i<10;i+=0.5)
out.write((char*)&i,sizeof(double)); //запись данных в двоичный файл
out.close();
}
35) Для обеспечения прямого доступа используется внутренний указатель файла, который определяет текущий индекс обрабатываемого байта файла(байты файла нумеруются как элементы массива с нуля) и используются две пары фунцкций:
seekg(n) – устанавливает указатель на позицию с номером n внутри файла для чтения.
Пример
in.seekg(3);
seekp(n) – устанавливает указатель на позицию с номером n внутри файла для записи.
Пример
out.seekp(3);
Константы позиционирования:
in.seekg(3,ios::beg);//устанавливает указатель на позицию с номером 3 относительно начала файла
in.seekg(3,ios::end);//устанавливает указатель на позицию с номером 3 относительно конца файла
in.seekg(3,ios::cur);//перемещает указатель на 3 индекса относительно текущей позиции
//streampos – специальный тип данных который используется для хранения индекса в файле.
streampos n=in.tellg(); - возвращает текущую позицию указателя потока ввода
streampos n=in.tellp(); - возвращает текущую позицию маркера потока вывода
