Министерство образования и науки РФ Федеральное агентство по образованию Саратовский государственный технический университет ЦИКЛИЧЕСКИЕ СТРУКТУРЫ В LABVIEW Методические указания к выполнению лабораторной работы по дисциплине «Среды инженерного проектирования и вычислительного моделирования» студентами специальности 220400 и направления 230100 Одобрено редакционно-издательским советом Саратовского государственного технического университета Саратов 2010 Цель работы: ознакомиться с возможностями организации циклических вычислений в среде программирования LabVIEW. Основные понятия В программировании часто приходится использовать повторение выполнение части кода. LabVIEW предлагает две структуры циклов для облегчения реализации этого процесса. Оба цикла можно найти в подпалитре Structures палитры Function. Цикл с фиксированным числом итераций (For Loop) выполняет код внутри его границ (поддиаграммы) некоторое число итераций (count). Терминал счетчика итераций (iteration terminal) содержит текущее число завершенных итераций цикла; 0 – во время первой итерации, 1 – во время второй итерации и т.д. до N-1, где N – заданное количество повторений цикла. Цикл по условию (While Loop) выполняет код внутри его границ до тех пор, пока логическое значение (Boolean value), подключенное к терминалу условия выхода из цикла (condition terminal) не перейдет в состояние ЛОЖЬ (False). Если значение соответствует Истина (True), то выполняется следующая итерация. Работает в двух режимах Stop If True и Continue If True, которые переключаются с помощью контекстного меню, вызванного на границе циклической структуры. Сдвиговые регистры (Shift registers), применяемые в цикле по условию и в цикле с фиксированным числом итераций, являются особым типом переменной, используемой для передачи величин из одной итерации цикла в последующую. Сдвиговый регистр создается нажатием правой кнопки мыши на левой или правой границе цикла и выбором опции Add Shift Register в контекстном меню. Сдвиговый регистр состоит из пары терминалов, расположенных друг напротив друга на вертикальных сторонах границы цикла. В правом терминале хранятся данные, полученные при завершении итерации цикла. Эти данные «сдвигаются» в конце итерации и появляются в левом терминале в начале следующем итерации. Сдвиговый регистр может содержать любой тип данных – числовой, логический, строковый, массива и т.п. Сдвиговый регистр автоматически подстраивается к типу данных первого объекта, к которому вы его подсоедините. После создания регистра он окрашен в черный цвет, но затем присваивает себе цвет типа данных, к источнику которых он подсоединен. 2 а) б) г) в) Рис. 1. Сдвиговые регистры Вы можете сконфигурировать сдвиговый регистр для запоминания значений, полученных во время нескольких предыдущих итераций. Это весьма полезная функция для усреднения величин данных, полученных при различных итерациях. Чтобы обеспечить доступ к данным от предыдущих итераций, создайте дополнительные терминалы, щелкнув правой кнопкой мыши по левому терминалу регистра и выбрав опцию Add Element в контекстном меню. Примеры решения поставленных задач Задача № 1. Вывести таблицу умножения. Значение множителя вводить с клавиатуры. Решение. Интерфейс виртуального прибора представлен на рис. 2. Для решения данной задачи используется структура WHILE LOOP, значения второго множителя определяются счетчиком итераций (значение i отсчитывается от 0), условием выхода из цикла является проверка на 3 равенство: если второй множитель равен 10, происходит выход из цикла на следующей итерации. а) б) Рис. 2. Вид панелей виртуального прибора: а - соответствует лицевой панели, б – блокдиаграмме Задача 2. Вывести сумму всех целых чисел от а до b (значения а и b вводятся с клавиатуры; b > а). Решение. Интерфейс виртуального прибора представлен на рис. 3. а) б) Рис. 3. Вид панелей виртуального прибора: а - соответствует лицевой панели, б – блокдиаграмме Для решения данной задачи используется структура FOR LOOP, число итераций определяет количество действий суммирования (в рассмотренном примере их два: 3+4+5=12). Сдвиговые регистры в данной 4 задаче используются в двух экземплярах: первый сдвиговый регистр используется для инкрементирования (увеличения на 1) в цикле числа а, а второй – для накапливания суммы чисел. Задача 3. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, ...) Дано натуральное число n ( n 3). а) Вывести n -й член последовательности Фибоначчи. б) Вывести сумму первых n членов последовательности Фибоначчи. Решение. Интерфейс виртуального прибора представлен на рис. 4. а) б) Рис. 4. Вид панелей виртуального прибора: а - соответствует лицевой панели, б – блокдиаграмме 5 Для решения данной задачи используется структура WHILE LOOP. Сдвиговые регистры в данной задаче используются в двух экземплярах: первый сдвиговый регистр имеет два входных элемента, используется для получения последующего члена последовательности Фибоначчи как суммы двух предыдущих членов последовательности, причем нулевое значение определяет значения двух первых членов последовательности. Второй сдвиговый регистр используется для накопления суммы членов последовательности Фибоначчи, причем нулевое значение определяет сумму двух первых членов последовательности. Поскольку на первой же итерации вычисляется сумма первых трех членов последовательности, то необходимо количество итераций сократить на три, что выполняется с использованием функции SUBTRACT. Условием выхода из цикла является проверка на равенство: если счетчик итераций возвращает значение N-3, происходит выход из цикла на следующей итерации. Варианты задач для самостоятельной работы Исходные данные для своего варианта определите исходя из предпоследней и последней цифр в зачетной книжке по табл. 1,2. Задачи раздела 1 1. Вывести все целые числа от 20 до 35; 2. Вывести квадраты всех целых чисел от 10 до b (значение b вводится с клавиатуры; b > 10). Функция возведения в степень в LabVIEW именуется Power of X. 3. Вывести третьи степени всех целых чисел от а до 50 (значение а вводится с клавиатуры; а < 50). Функция возведения в степень в LabVIEW именуется Power of X. 4. Одна штука некоторого товара стоит 20,4 руб. Вывести таблицу стоимости 2, 3,..., 20 штук этого товара. 5. Вывести таблицу соответствия между весом в фунтах и весом в килограммах для значений 1,2,..., 10 фунтов (1 фунт = 453 г). 6. Вывести таблицу перевода расстояний в дюймах в сантиметры для значений 10, 11, ...,22 дюйма (1 дюйм = 25,4 мм). 7. Вывести таблицу перевода 1, 2, ... 20 долларов США в рубли по текущему курсу (значение курса вводится с клавиатуры). 8. Вывести значения sin2, sin3,..., sin20. 9. Вывести таблицу стоимости 50, 100, 150,..., 1000 г сыра (стоимость 1 кг сыра вводится с клавиатуры). 10. Вывести таблицу стоимости 100, 200, 300, ..., 2000 г конфет 6 (стоимость 1 кг конфет вводится с клавиатуры). 11. Вывести следующие числа: 2.1, 2.2, 2.3,..., 2.8. 12. Вывести следующие числа: 3.2, 3.2, 3.3, ..., 3.9. 13. Вывести следующие числа: 2.2, 2.4, 2.6, ..., 4.2. 14. Вывести следующие числа: 4.4, 4.6, 4.8, ..., 6.4. 15. Около стены наклонно стоит палка длиной 4,5 м. Один ее конец находится на расстоянии 3 м от стены. Нижний конец палки начинает скользить в плоскости, перпендикулярной стене. Вывести значение угла между палкой и полом (в градусах) с момента начала скольжения до падения палки через каждые 0,2 м. Табл. 1 Определение номера задачи раздела 1 Последняя цифра зачетки Предпоследняя цифра зачетки 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 11 6 1 11 6 1 11 6 1 2 12 7 2 12 7 2 12 7 2 3 13 8 3 13 8 3 13 8 3 4 14 9 4 14 9 4 14 9 4 5 15 10 5 15 10 5 15 10 5 6 1 11 6 1 11 6 1 11 6 7 2 12 7 2 12 7 2 12 7 8 3 13 8 3 13 8 3 13 8 9 4 14 9 4 14 9 4 14 9 10 5 15 10 5 15 10 5 15 10 Задачи раздела 2 1. Вывести сумму всех целых чисел от 100 до 500; 2. Вывести сумму всех целых чисел от а до 500 (значение а вводится с клавиатуры; а < 500); 3. Вывести сумму всех целых чисел от -10 до b (значение b вводится с клавиатуры; b > -10); 4. Вывести сумму всех целых чисел от а до b (значения а и b вводятся с клавиатуры; b > а). 5. Вывести произведение всех целых чисел от 8 до 15; 7 6. Вывести произведение всех целых чисел от а до 20 (значение а вводится с клавиатуры; 1 < а < 20 7. Вывести произведение всех целых чисел от 1 до b (значение b вводится с клавиатуры; 1 < b < 20); 8. Вывести произведение всех целых чисел от а до b (значения а и b вводятся с клавиатуры; b > a). 9. Вывести среднее арифметическое всех целых чисел от 1 до 1000; 10. Вывести среднее арифметическое всех целых чисел от 100 до b (значение b вводится с клавиатуры; b > 100); 11. Вывести среднее арифметическое всех целых чисел от а до 200 (значения а вводятся с клавиатуры; а < 200); 12. Вывести среднее арифметическое всех целых чисел от а до b (значения а и b вводятся с клавиатуры; b > a). 13. Вывести сумму кубов всех целых чисел от 20 до 40; 14. Вывести сумму квадратов всех целых чисел от а до 50 (значение а вводится с клавиатуры; 0 < а < 50); 15. Вывести сумму квадратов всех целых чисел or 1 до b (значение b вводится с клавиатуры; 1 < b < 100); 16. Вывести сумму квадратов всех целых чисел от а до b (значения а и b вводятся с клавиатуры; b > a). 17. Дано натуральное число Вывести сумму n. n 2 (n 1) 2 ...( 2n) 2 . Функция возведения в степень в LabVIEW именуется Power of X. 1 1 1 1 ... . 2 3 4 n 2 3 4 10 ... . 19. Вывести сумму 3 4 5 11 1 1 1 20. Вывести сумму 1 . Операцию возведения в ... 8 3 32 3 18. Вывести сумму 1 степень не использовать. 1 1 1 1 ... (1) n 1 . 2 3 4 n 3 5 11 x x x 22. Вывести сумму x . Функция возведения в ... 3 5 11 21. Вывести сумму 1 степень в LabVIEW именуется Power of X. 23. Вывести сумму 2 3 4 11 1 x x 2 x 3 ... x10 . Функция 3 4 5 12 возведения в степень в LabVIEW именуется Power of X. 8 24. Рассмотрим последовательность, образованную дробями: 1/1, 2/1, 3/2,..., в которой числитель (знаменатель) следующего члена последовательности получается сложением числителей (знаменателей) двух предыдущих членов. Числители двух первых дробей равны 1 и 2, знаменатели 1 и 1. Вывести N-й член этой последовательности. Вывести первые N членов этой последовательности 25. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9,..., 24 часа, если первоначально была одна амеба. 26. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить прирост суммы вклада за первый, второй, ..., десятый месяц; сумму вклада через три, четыре, ..., двенадцать месяцев. 27. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить пробег лыжника за второй, третий, ..., десятый день тренировок; какой суммарный путь он пробежал за первые 7 дней тренировок. 28. В некотором году (назовем его условно первым) на участке в 100 гектар средняя урожайность ячменя составила 20 центнеров с гектара. После этого каждый год площадь участка увеличивалась на 5%, а средняя урожайность на 2%. Определить урожайность за второй, третий, ..., восьмой год; площадь участка в четвертый, пятый. ..., седьмой год; какой урожай будет собран за первые шесть лет. 29. Вывести сумму 22 + 23 + 24 + ...+210. Операцию возведения в степень не использовать. 30. Вывести сумму -12+22-32+42-…+102. Операцию возведения в степень и условную структуру не использовать. 31. Создать виртуальный прибор для возведения натурального числа в квадрат, учитывая следующую закономерность: 12=1, 22 = 1 + 3, 32 = 1 + 3 + 5, 42 =1+3 + 5 + 7 … n2= 1 + 3 + 5 + 7 + 9 + ... + (2n-1) 32. Найти сумму 12+22+32+ ... + 102. Операцию возведения в степень не использовать, а учесть особенности получения квадрата натурального числа, отмеченные в предыдущей задаче. 33. Составить программу возведения натурального числа в третью степень, учитывая следующую закономерность: 13=1 9 23 = 3 + 5 З3 = 7 + 9 + 11 43= 13+ 15+ 17+ 19 53 = 21 +23 + 25 + 27 + 29 34. Вычислить сумму 1! + 2! + 3! + ... + n!, где k! = 1 * 2 *3 ... *k (значение n вводится с клавиатуры; 1 < n < 10). 35. Вывести сумму 1 1 1 1 1 ... , где k! = 1 * 2 *3 ... *k. 1! 2! 3! n! Значение n вводится с клавиатуры; 1 < n < 10. x1 x 2 x 3 xn 36. Вывести сумму 1 , где k! = 1*2*3 ...*k. ... 1! 2! 3! n! Значение n вводится с клавиатуры; 1 < n < 10. 37. Вывести сумму 1 2 3 ... 10 . Функция квадратного из числа в LabVIEW именуется Square Root. 38. Вывести сумму корня cos1 cos1 cos2 cos1 ... cosN ... . sin1 sin1 sin2 sin1 ... sinN 3 6 ... 3(n 1) 3n . Функция корня 39. Вывести сумму квадратного из числа в LabVIEW именуется Square Root. 40. Дано натуральное число n. Вывести 1 1 1 ... . sin1 sin1 sin 2 sin1 ... sinn 41. Дано натуральное число n. Вывести сумму n слагаемых 2 2 2 ... 2 . Функция корня квадратного из числа в LabVIEW именуется Square Root. Табл. 2 Определение номера задачи раздела 2 Последняя цифра зачетки Предпоследняя цифра зачетки 0 1 2 3 4 5 6 7 8 9 0 1 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 10 Окончание табл. 2 Последняя цифра зачетки Предпоследняя цифра зачетки 0 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 21 31 41 10 20 30 40 9 22 32 1 11 21 31 41 10 23 33 2 12 22 32 1 11 24 34 3 13 23 33 2 12 25 35 4 14 24 34 3 13 26 36 5 15 25 35 4 14 27 37 6 16 26 36 5 15 28 38 7 17 27 37 6 16 29 39 8 18 28 38 7 17 30 40 9 19 29 39 8 18 Форма отчетности Создать файл документа Microsoft Word. В нем отразить в виде отчета: фамилию-имя студента, № учебной группы и № зачетной книжки, формулировки решенных задач, скрин-шоты виртуальных приборов, пояснения к решению задач или блок-схему алгоритма. Носитель с файлом-отчетом сдать преподавателю. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА 1. Тревис Дж. LabVIEW для всех. М.: ДМК Пресс; ПриборКомплект, 2005. 544 с. 2. Суранов А.Я. LabVIEW: справочник по функциям. М.: ДМК Пресс, 2005. 512 с. ISBN 5-94074-207-6 11