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

Вопрос№6Совместимость и преобразование типов данных

6.10.1 Основные понятия совместимости типов

Различают следующие понятия при сравнении различных типов данных:

  1. тождественность типов данных двух переменных означает, что две переменные используют один идентификатор типа данных;

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

  3. совместимость по присваиванию (A=B) двух типов данных (typeА A и typeB B) означает, что при операции присваивания переменной A можно передать значение переменной B без потери или искажения данных.

описание нового имени для существующего типа с использованием префикса typedef, которое при этом не приводит к созданию нового типа. Формат описания нового имени типа:

typedef имя_типа новое_имя_типа;

. В языках С и С++ это можно выполнить тремя способами:

  1. с помощью операций неявного преобразования типов в выражениях;

  2. с помощью явного приведения типа;

  3. с помощью переменных, хранящих данные в одной области памяти (например, объединений или указателей).

. Правила неявного преобразования:

1) типы char и int могут свободно смешиваться в арифметических выражениях: переменная типа char автоматически преобразуется в int;

2) выражения отношения и логические выражения, связанные операциями && и ||, по определению имеют значение 1, если они истинны, и 0, если они ложны;

3) к арифметической операции применяется следующая последовательность правил преобразования:

    • типы char и short преобразуются в int, а float в double;

    • если один из операндов имеет тип double, то другой преобразуется в double и результат имеет тип double;

    • если один из операндов имеет тип long, то другой преобразуется в long и результат имеет тип long;

    • если один из операндов имеет тип unsigned, то другой преобразуется в unsigned и результат имеет тип unsigned;

4) все переменные типа float в выражениях преобразуются в double − вся вещественная арифметика выполняется с двойной точностью.

ВОПРОС№7С увеличением объемов программ возникла необходимость в представлении программы в виде иерархии относительно обособленных фрагментов. Была разработана технология структурного программирования. При этом вся программа представляет собой последовательность вызовов отдельных подпрограмм. Это дает следующие преимущества:

  • сокращение объема программ за счет однократного описания повторяющихся частей программ;

  • повышение наглядности программ, и как следствие упрощение процесса создания программ;

  • сокращение времени на отладку и верификацию программ.

В языках программирования получили распространение два типа подпрограмм:

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

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

При написании подпрограмм соблюдаются следующие правила видимости имен:

  1. имя локального компонента подпрограммы (констант, переменных и т.п.) должно быть уникальным по отношению ко всей программе;

  2. в подпрограмме известны все компоненты, описанные выше по структуре дерева иерархии программы (если объявить переменную в разделе описания головной программы, то она доступна во всех подпрограммах, а если в подпрограмме, то в самой подпрограмме и вложенных в нее локальных подпрограммах);

  3. если имя локального компонента совпадает с глобальным компонентом, то в операторной части подпрограммы одноименный глобальный элемент становится недоступным.

ВОПРОС№8 Функция – это программный модуль, блок, единица из которых строится вся программа языка С. Функция выполняет какую-либо конкретную задачу. Функция начинается с ключевого слова, определяющее, тип данных, имеет имя, определяющее осмысленную функциональность( по этому имени будет осуществляться вызов из другой функции ), в скобках описывается перечень аргументов с определенным типом данных, разделенных запятыми и фигурные скобки, являющиеся телом функции:  тип данных имя( аргумент имя_1, аргуметн имя_2, . . . , аргумент имя_n )  {     /* тело функции */  } например:  void outStrDisplay( int adressStr, char *dataStr );  {      /* список операторов и вызовов функций */  } В конце функции точка с запятой не ставится, за исключением объявления прототипа функции:  тип данных имя( аргумент имя_1, аргуметн имя_2, . . . , аргумент имя_n ); например:  unsigned char stateModule( unsigned char mode, unsigned char value, . . . );