Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
jответы.docx
Скачиваний:
29
Добавлен:
11.05.2015
Размер:
76.47 Кб
Скачать

1.Представление данных ЭВМ. Двоичный, двоично-десятичный код.

Для представления информации в памяти ЭВМ используется двоичный способ кодирования.

Ячейка памяти имеет размер 8 бит (1 байт).Каждый байт имеет свой номер (его называют адресом)

Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта

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

2. Представление программ. Исходный код. Откомпилированный код

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

3. Компиляция программного кода

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду(абсолютный код, объектный модуль, иногда на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа напроблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).

4. Создание проекта Visual C

Создавать проекты Visual C++ можно несколькими способами:

  • Использовать шаблоны проектов, такие как Шаблон консольного приложения CLR (C++), помогающие быстро создавать простые проекты.

  • Можно также использовать мастера приложений, помогающие в создании решений. Решение может содержать множество проектов и может быть написано на любом языке, входящем в состав Visual Studio. Среда разработки Visual Studio может обрабатывать зависимости между проектами, конфигурации отдельных проектов, развертывание проектов, и управление исходным кодом. Этот метод хорошо работает для крупномасштабных приложений.

  • Можно создать простой текстовый файл и сохранить его с расширением CPP. Используя мастер приложений Win32, создайте пустой проект. Добавьте вновь созданный CPP-файл в среду разработки Visual Studio. Этот метод хорошо работает в случае очень простого консольного приложения.

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

Перед началом программирования необходимо задать проект. Проект содержит все исходные материалы для приложения, такие как файлы исходного кода, файлы ресурсов, такие как значки, ссылки на внешние файлы, на которые опирается программа, и данные конфигурации, такие как параметры компилятора. При построении проекта Visual C# вызывает компилятор C# и другие внутренние средства для создания исполняемой сборки из файлов проекта. Для создания нового проекта в меню Файл следует указать Создать и щелкнуть Проект. После выбора проекта и нажатия на кнопку ОК, Visual Studio создает проект и можно начинать написание кода. Файлы проекта, ссылки, параметры и ресурсы отображаются в Обозревателе решений справа. Проект может включать любое число дополнительных файлов с расширением CS, которые могут быть связаны с определенной формой Windows. В предыдущем примере Обозревателя решений в файле program.cs находится точка входа для приложения. Отдельный файл CS может содержать любое число определений классов и структур. Чтобы добавить в проект новые или существующие файлы или классы, в меню Проект выберите команду Добавить новый элемент или Добавить существующий элемент.

5.Подключение библиотек. Заголовочный файл. Прототипы функций.

Подключение библиотек.Библиотеки предоставляют возможность использовать при разработке программы готовые фрагменты кода .В библиотеки могут быть включены подпрограммы, структуры данных, классы, макросы. Для языка C++ разработано много библиотек различного назначения. Некоторые библиотеки используются по умолчанию, их подключение к проекту осуществляется автоматически .Другие библиотеки можно использовать по требованию , для этого следует подключить директивой #include их заголовки и/или сделать соответствующие настройки проекта. Файлы, содержащие библиотеки, имеют расширение *.lib (статическая) и *.dll (динамическая).

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

Компоненты библиотеки подключаются с помощью заголовочных файлов:

<vector> – одномерный массив элементов;

<list> – двусвязный список элементов;

<queue> – очередь элементов;

<stack> – стек элементов;

<ctime> – дата и время;

<algorithm> – основные алгоритмы;

<cstdlib> – функции обработки данных (поиск, сортировка, обработка строк в стиле C, генератор случайных чисел);

<string> – строка;

<iostream> – стандартные потоки ввода/вывода;

<complex> – комплексные числа;

<c_math> – общие математические функции;

<new> – работа с динамической памятью.

< conio.h > консольный ввод-вывод

<stdio.h> стандартный заголовочный файл ввода/вывода

<fstream> набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл. Для манипуляции с данными файлов используются объекты, называемые потоками («stream»).

Заголовочный файл  или подключаемый файл — в языках программирования файл, механически «вставляемый» компилятором в исходный текст в том месте, где располагается некоторая директива #include <file.h> в Си.

В языках программирования Си и C++, заголовочные файлы — основной способ подключить к программе типы данных, структуры, прототипы функций, перечислимые типы, и макросы, используемые в другом модуле. Имеет по умолчанию расширение .h; иногда для заголовочных файлов языка C++ используют расширение .hpp. Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике исполняемый код в заголовочные файлы не помещают. Например, идентификаторы, которые должны быть объявлены более чем в одном файле, удобно описать в заголовочном файле, а затем его подключать по мере надобности. Подобным же образом работает модульность и в большинстве ассемблеров.

Прототип функции

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

В общем виде прототип функции должен выглядеть таким образом:

тип имя_функции(тип имя_парам1, тип имя_парам2, ..., имя_парамN);

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

6. 1) *h, *hpp - Заголовочные файлы библиотеки механически «вставляемый» компилятором в исходный текст *c, *cpp исходный файл

7. Структура программы на С

1. заголовок

2. включение необходимых внешних файлов

3. ваши определения для удобства работы

4. объявление глобальных переменных

Перед использованием переменной в Си её необходимо объявить! Т.е. указать компилятору какой тип данных она может хранить и как она называется.

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

5. описание функций - обработчиков прерываний

6. описание других функций используемых в программе

7. функция main - это единственный обязательный пункт !

8. Стандартные числовые типы данных. Размер, диапазон, операции.

ТИП ДАННЫХ

РАЗМЕР В БАЙТАХ

ТОЧНОСТЬ

ИНТЕРВАЛ ЗНАЧЕНИЙ

SINGLE

4

ЦИФР

ОТ 0.71Е-45 ДО 3.4Е+38

REAL, float

6

11 ЦИФР

ОТ 2.94Е-39 ДО 1.7Е+38

DOUBLE

8

15 ЦИФР

ОТ 4.94Е-324 ДО 1.79Е+308

EXTENDED

10

19 ЦИФР

ОТ 3.3Е-4932 ДО 1.18Е+4932

COMP

8

ТОЛЬКО ЦЕЛЫЕ

- +9.2Е+18

Int 4 от -2 147 483 648 до +2 147 483 647

9. Консольный ввод-вывод <conio.h>

Существует два вида консольного ввода и вывода :

  1. Printf- ввод ,scanf- вывод

  2. <<- вывод, >>-ввод

. conio.h - заголовочный файл для работы с консолью и он поддерживает функцию _getch(), которая извлекает символ из потока ввода. Определяет, было ли нажатие клавиш клавиатуры. Форматирование и вывод («печать») строки напрямую в и из консоль

10. Форматный ввод- вывод <stdio.h>

Форматный ввод/вывод

Функции printf() и scanf() выполняют форматный ввод и вывод, то есть они могут читать и писать данные в разных форматах. Данные на консоль выводит printf(). А ее "дополнение", функция scanf(), наоборот — считывает данные с клавиатуры. Обе функции могут работать с любым встроенным типом данных, а также с символьными строками, которые завершаются символом конца строки ('0').

#include <stdio.h> // Подключаем заголовочный файл void main() { char* a; //Объявляем переменную а printf("Vvedite text:\n"); //Приглашение ввести текст scanf (a); //Вводим текст и присваиваем его на переменную puts(a); //Ввыводим текст с переменной а }

11. Операции с числовыми данными. Приоритет операций

12. Вещественные типы данных. Представление в памяти

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

знаковый разряд обозначается буквой s, экспонента - e, а мантисса - m.

14. Алгоритмическая конструкция «выбор»

Алгоритмический язык

Блок-схема

действие 1

действие 2

...

действие n

15. Алгоритмическая конструкция «цикл»

18. Выделение динамической памяти .Операторы new , delete

Для этого вам необходимо знать всего два оператора:

  • new - выделение памяти, если выделение памяти не произошло возвращается нулевой указатель;

  • delete - освобождение памяти, не во всех компиляторах после освобождения памяти указателю присваивается 0.

#include <iostream>

using namespace std;

int main() {

// создание объекта типа int со значением 45

// и сохранение его адреса в указателе obj

int* obj = new int(45);

// освободили память на которую указывал obj

cout<<"*obj="<<*obj<<endl;

delete obj;

// елементы массива нельзя инициализировать

// им задается значение по умолчанию

// в случае классов вызывается конструктор по умолчанию

int* array = new int[10];

cout<<"array:";

for(unsigned int i=0; i<10; i++)

cout<<array[i]<<" ";

cout<<endl;

delete [] array;

// для избежания возможных ошибок

// указателю лучше присвоить 0 (при доступе

// к нулевому указателю генерируется системная ошибка,

// а значит ошибка не останется незамеченной)

array=0;

...

}

19. Выделение динамической памяти. Подпрограммы malloc, calloc, free

Динамическое распределение памяти — способ выделения оперативной памяти компьютера для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения программы.

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

По мере создания в программе новых объектов, количество доступной памяти уменьшается. Отсюда вытекает необходимость постоянно освобождать ранее выделенную память. В идеальной ситуации программа должна полностью освободить всю память, которая потребовалась для работы. По аналогии с этим, каждая процедура (функция или подпрограмма) должна обеспечить освобождение всей памяти, выделенной в ходе выполнении процедуры. Некорректное распределение памяти приводит к т.н. «утечкам» памяти, когда выделенная память не освобождается. Многократные утечки памяти могут привести к исчерпанию всей оперативной памяти и нарушить работу операционной системы.

Другая проблема — это проблема фрагментации памяти. Выделение памяти происходит блоками — непрерывными фрагментами оперативной памяти (таким образом, каждый блок — это несколько идущих подряд байтов). В какой-то момент, в куче попросту может не оказаться блока подходящего размера и, даже, если свободная память достаточна для размещения объекта, операция выделения памяти окончится неудачей.

Для управления динамическим распределением памяти используется «сборщик мусора» — программный объект, который следит за выделением памяти и обеспечивает её своевременное освобождение. Сборщик мусора также следит за тем, чтобы свободные блоки имели максимальный размер, и, при необходимости, осуществляет дефрагментацию памяти.

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