Перевод из одной системы в другую

Автор: Пользователь скрыл имя, 24 Декабря 2012 в 16:50, контрольная работа

Описание работы

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

Работа содержит 1 файл

информатика.docx

— 45.49 Кб (Скачать)

Приведенный ниже синтаксис  описывает имя, аргументы и текст программы, составляющие тело процедуры Function. 
Синтаксис: 
[Public I Private] [Static] Function Имя [(СписокАргументов)]  
[As Тип]  
[Инструкции]  
[Имя = Выражение]  
[Exit Function]  
[Инструкции]  
[Имя = Выражение] End Function  
Синтаксис инструкции Function содержит те же элементы, что и sub. Инструкция Exit Function приводит к немедленному выходу из процедуры Function. 
Подобно процедуре Sub, процедура Function является самостоятельной процедурой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Однако в отличие от процедуры sub, когда требуется использовать возвращаемое функцией значение, .процедура Function может применяться в правой части выражения, как и любая другая встроенная функция, например, cos. 
Процедура Function вызывается в выражении по своему имени, за которым следует список аргументов в скобках. 
Для возврата значения из функции следует присвоить значение имени функции. Любое число таких инструкций присвоения может находиться в любом месте процедуры. 
Переход в подпрограмму и возвращение из подпрограммы  
В VBA от первоначальных версий BASIC сохранилась конструкция подпрограммы GoSub- Return, которая в настоящее время редко используется. Для полноты изложения вкратце напомним синтаксис этой инструкции. 
Синтаксис: 
GoSub строка  
строка  
Return  
Аргумент строка может быть любой меткой строки или номером строки. В качестве метки строки может быть любая комбинация символов, начинающаяся с буквы и заканчивающаяся двоеточием. 
Допускается использование инструкций GoSub и Return в любом месте процедуры, но GoSub и соответствующая инструкция Return должны находиться в одной процедуре. Подпрограмма может содержать несколько инструкций Return. Первая обнаруженная инструкция Return приводит к передаче управления назад к инструкции, непосредственно следующей за последней выполненной инструкцией GoSub. 
Вызов процедуры  
Вызов процедуры sub из другой процедуры можно произвести несколькими способами. 
Первый способ вызова процедуры Sub: ИмяПроцедуры СписокФактическихПараметров

       
 

ИмяПроцедуры

Имя вызываемой процедуры

 
 

СписокФактическихПараметров

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

 
       

Если требуется использовать несколько процедур с одинаковыми  названиями, при их вызове после  имени процедуры через точку  надо указывать имя модуля, на котором  они расположены. А именно, ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров 
Второй способ вызова процедуры sub производится с помощью инструкции Call. 
ИмяПроцедуры (СписокФактическихПараметров)  
Обратите внимание, что в этом случае список фактических параметров заключается в скобки. В первом способе скобки не использовались. 
VBA позволяет вводить фактические параметры через имена аргументов в любом порядке и опускать необязательные (optional). При этом после имени аргумента ставятся двоеточие и знак равенства, после которого помещается значение аргумента (фактический параметр). 
Приведенный ниже пример показывает основные способы передачи параметров в процедуры. 
Dim с As Double ',  
'  
' с - глобальный параметр '  
Function F(ByVal x As Integer) As Integer  
F = x ^ 2  
End Function  
Sub Assistant(ByVal a As Integer, ByVal b As Integer)  
'  
' Процедура, находящая сумму двух чисел и выводящая  
' результат в диалоговом окне  
'  
с = а + b  
'  
MsgBox CStr(c)  
End Sub  
'  
Sub Main ()  
'  
' Процедура, находящая сумму двух чисел и выводящая  
' результат в диалоговом окне  
Dim x, у As Double  
' x, у — переменные, используемые в качестве фактических параметров  
' Вызов процедуры с конкретными числами как фактическими параметрами  
'  
Assistant 1, 3  
' Первоначальное присвоение переменным значений,  
' с последующим вызовом процедуры  
'  
х = 1: у = 1 Assistant x, у + 2  
' Использование функции как фактического параметра  
'  
х = 1: у = 3  
Assistant F(x), у  
'  
' Вызов процедуры с указанием фактических параметров по имени  
'  
Assistant a:=l, b:=3  
End Sub  
Приведем пример процедуры с необязательными параметрами. Процедура СторонаТреугольника позволяет найти длину недостающей стороны прямоугольного треугольника, где переменные А и В отведены под длины катетов, а переменная с — под гипотенузу. Например, формула 
=СторонаТреугольника(;В2;С2)  
вычисляет катет А по введенным в ячейки В2 и С2 длинам катета В и гипотенузы С. При работе с необязательными переменными необходимо использовать функцию isMissing, возвращающую значение True, если соответствующий аргумент не был передан в процедуру, и False в противном случае. 
Function СторонаТреугольника(Optional A,  
Optional В, Optional С)  
If Not (IsMissing(A)) And Not (IsMissing(В)) Then  
СторонаТреугольника = Sqr(А ^ 2 + В ^ 2)  
End If  
If Not (IsMissing(A)) And Not (IsMissing(C)) Then  
СторонаТреугольника = Sqr(С ^ 2 - А ^ 2)  
End If  
If Not (IsMissing(B)) And Not (IsMissing(C)) Then  
СторонаТреугольника = Sqr(C ^ 2 - В ^ 2)  
End If  
End Function  
Назначение значений по умолчанию необязательным параметрам  
Для необязательного параметра можно определить значение по умолчанию. В следующем примере, если значение параметра ь не передано в функцию, то ему присваивается указанное по умолчанию значение 8. 
Function Сумма (a As Double, Optional b As Double = 8)  
Сумма = a + b End Function  
Использование неопределенного количества параметров  
Как правило, количество передаваемых параметров в процедуру совпадает с количеством определенных у этой процедуры параметров. Однако ключевое слово ParamArray предоставляет возможность ввода в процедуру произвольного, заранее не указанного числа параметров (например, как это происходит при использовании функции рабочего листа СУММ (sum)). В качестве примера приведем процедуру, которая выполняет то же действие, что и функция рабочего листа СУММ. Отличием функции СуммаПользователя от СУММ является то, что в ней в каждое поле ввода диалогового окна мастера функций можно вводить только либо число, либо ссылку на ячейку, а не на диапазон, как при работе с функцией СУММ. 
Function СуммаПользователя(ParamArray Массив())  
s = 0  
For Each a In Массив  
s = s + а Next a  
СуммаПользователя = s  
End Function  
Рекурсивные процедуры  
В VBA возможно создание рекурсивных процедур, т. е. процедур, вызывающих самих себя. Стандартным примером рекурсивной процедуры является процедура вычисления факториала, т. е. функции, возвращающей результат произведения первых п натуральных чисел, где п — аргумент функции. Для этой функции имеется стандартное обозначение:  
Fact(n) =n!, где Fact (0) =1.  
Ясно, что  
Fact(n) = n Fact (n - 1}  
Основываясь на данном соотношении, приводимая ниже рекурсивная функция вычисляет значение факториала. 
Function Fact(n As Integer) As Integer  
If n<l Then  
Fact = 1 Else  
Fact = Fact(n - 1) n  
End If  
End Function  
Другим стандартным примером применения рекурсивных функций является нахождение наибольшего общего делителя двух целых чисел по алгоритму Евклида. Наибольший общий делитель (нод) двух целых чисел — это наибольшее целое, на которое делятся оба числа. Например, HOД(10, 14} = 2 и НОД (15, 31} = 1. 
Алгоритм Евклида состоит в следующем:

  1. Если а делится на b, то НОД(а, b) = b
  2. В противном случае — НОД(а, b) = НОД(b, a Mod b) Приводимая ниже рекурсивная функция программирует алгоритм Евклида.

Function НОД(Целое1 As Long, Целое2 As Long) As Long  
If Целое2 Mod Целое1 = 0 Then  
НОД = Целое1 Else  
НОД = НОД(Целое2, Целое1 Mod Целое2)  
End If  
End Function  
Несмотря на элегантность рекурсивных процедур, применять их надо с осторожностью, т. к. неаккуратное использование может привести к проблемам с памятью — многократный вызов такой процедуры быстро исчерпывает стековую память. 
Область определения переменной  
Область определения переменной задает область, в которой может быть использована переменная. В VBA имеется три соответствующих уровня переменных:

  1. Переменные уровня процедуры используются только в процедуре, в которой они описаны при помощи инструкции Dim, размещенной в процедуре.
  2. Переменные уровня модуля используются только в модуле, в котором они описаны при помощи инструкции Dim, размещенной в области описания модуля, т. е. перед описанием процедур.
  3. Общие переменные, используемые во всех модулях данного проекта. Описываются при помощи инструкции Public, размещенной в области описания модуля.

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

Задача:

а) Переведите числа. 101001110011,11011112®8, 10,16

101001110011,11011112 = 101 001 110 011, 110 111 100 = 5163,6748

101001110011,11011112 = 1010011100111101111 : 2 = 1*218+0*217+1*216+0*215+0*214+1*213+1*212+1*211+0*210+0*29+1*28+ 1*27+1*26+1*25+0*24+1*23+1*22+1*21+1*20=262144+65536+8192+4096

+2048+256+128+64+32+8+4+2+1=34251110 : 27= 34251110 : 12810=2675,867187510

101001110011,11011112 = 1010 0111 0011 1101 1110 = 539еf

 

 

 


Информация о работе Перевод из одной системы в другую