Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Помещение тела цикла for в заголовок
Цель работы: ознакомиться с особенностями цикла for и научиться помещать простое тело цикла в заголовок.
Теоретические сведения Циклы (итерационные структуры) позволяют повторять выполнение отдельных операторов или групп операторов. Число таких повторений в некоторых случаях фиксировано, в других случаях определяется в процессе счета. Наиболее общей формой цикла в С является for ( [необязательное выражение1; необязательное выражение 2; необязательное выражение 3] ); оператор; Каждое выражение в заголовке цикла можно опускать. Хотя в принципе каждое выражение может быть использовано программой как угодно, обычно 1–е выражение служит для инициализации переменной цикла, 2-е выражение служит для проверки на окончание цикла, 3-е - для изменения значения переменной цикла. Формально алгоритм for можно описать так : 1. Если 1-е выражение присутствует , то оно вычисляется . 2. Вычисляется 2-е выражение , если оно вырабатывает значение 0, то цикл прекращается . 3. Исполняется тело цикла. 4. Вычисляется 3-е выражение. Появление оператора continue приводит к немедленному переходу к шагу 4. Цикл for можно свести к циклу while следующим образом : for (выражение 1; выражение 2; выражение 3); оператор; приводится к: выражение 1; while ( выражение 2); { оператор; выражение 3; }
Поскольку все 3 выражения в цикле for можно опустить, то For ( ; ; ) ; представляет собой бесконечный цикл. Листинг программы, отображающей ASCII-символы # include <stdio.h> Main() { unsigned char c; for (c=32; c<128; c++) { if ((c%128)= =0 ) printf (“%c”, c); } return 0; } Тело цикла можно поместить в заголовок цикла. Пример: Программа, выводящая четные числа от 10 до 0 # include <stdio.h> Main () { int i; for (i=10; i>=0;i-=2) printf (“\n %d “,i); } Эту программу можно записать, поместив все действия в заголовок : #include <stdio.h> Main () { int i; for (i=10; i>=0; printf (“\n %d “,i),i-=2) ; }
Задание: 1. Написать программу, вычисляющую сумму квадратов чисел от 1 до 100. 2. Написать программу, вычисляющую факториал числа N (N!). 3. Написать программу, определяющую все четные и ненулевые числа от -23 до 23, и выводящую их на экран.
Контрольные вопросы 1. Что такое цикл? 2. Для чего служат выражения в заголовке цикла for? 3. Для чего служит оператор continue? 4. Как можно поместить тело цикла в заголовок?
Лабораторная работа №15 Одномерные массивы Цель работы: Изучение приемов объявления и обращения к массивам, использования директивы defineпри работе с массивами. Теоретические сведения Массивы – это набор объектов одинакового типа, доступ к которым осуществляется прямо по индексу в массиве. Обращение к массивам в С осуществляется и с помощью указателей. Массивы можно описывать следующим образом: тип_данных имя_массива [ размер массива ]; Используя имя массива и индекс, можно адресоваться к элементам массива: имя_массива [ значение индекса ] Значения индекса должны лежать в диапазоне от нуля до величины, на единицу меньшей, чем размер массива, указанный при его описании. Вот несколько примеров описания массивов: char name [ 20 ]; int grades [ 125 ]; float income [ 30 ]; double measurements [ 1500 ]; Первый из массивов ( name ) содержит 20 символов. Обращением к элементам массива может быть name [0], name [1], ...,name[19]. Второй массив ( grades ) содержит 125 целых чисел. Обращением к элементам массива может быть grades [0],grades [1],...,grades[124]. Третий массив ( incomе ) содержит 30 вещественных чисел. Обращением к элементам массива может быть income [0], incom[1],...,income[29]. Четвертый массив (measurements) содержит 1500 вещественных чисел с двойной точностью. Обращением к элементам массива может быть measurements[0], measurements[1],...,measurements[1499]. /* Программа, иллюстрирующая использование массивов */ /*Файл array.с*/ #include <stdio.h> #define size 1000 int data [size]; Main ( ) { extern float average (int a[ ], int s ); int i; for ( i=0; i<size ; i++) data [ i ]= i; printf ( “\nСреднее значение массива data =%f\n”,average (data,size)); } float average (int a[ ] ,int s ) { float sum=0.0; int i; for ( i=0; i<s ; i ++) sum+=a[ i ]; return sum/s; } В программе заводится массив на 1000 целых чисел. При помощи функции average подсчитывается сумма элементов этого массива. Первым формальным параметром функции average является массив. В качестве второго параметра функции передается число суммируемых значений в массиве a. Обратите внимание на использование константы size (размер). Если изменяется размерность массива, задаваемая этой константой, то это не приводит к необходимости менять что-либо в самом коде программы.
Задание: Составить программу, решающую задачу определения максимального и минимального значений в одномерном массиве, введенном с клавиатуры. В качестве исходных значений задаются массив чисел с плавающей точкой и размер такого массива.
Контрольные вопросы 1. Что такое массив? 2. Как задать массивы разных типов? 3. Как осуществлять доступ к элементам массива? 4. Как задать размерность массива с помощью директивы define?
Лабораторная работа №16
Программирование с использованием указателей
Цель работы:ознакомиться с понятием указателя, научиться использовать их при программировании на С. Теоретические сведения Указатель – это переменная, которая содержит в памяти адрес данных. Переменная-указатель содержит местоположение значения. То есть, переменная-указатель указывает на значение, так как она содержит его адрес. Указатели предоставляют эффективные средства доступа и изменения данных. Так как указатели содержат адреса данных, то при поиске значений в памяти у компьютера сокращается объем работы. Указатели не привязывают данные к какому-либо определенному имени переменной. Они могут содержать адрес любого не именованного значения. Суть переменных-указателей Так как указатели являются обычными переменными, для них действительны все правила именования обычных переменных. Как и в случае с обычной переменной, нужно сначала объявить указатель и только потом его использовать. В С указатели могут быть на все существующие в языке типы данных; можно создать указатель на целое, символьное данное, и так далее. В зависимости от того, в каком месте программы объявлен указатель, он может быть локальным или глобальным (как и для обычных переменных, использовать глобальные без нужды не рекомендуется). Единственная разница между обычными переменными и указателями заключается в их содержимом. Указатели содержат не само значение, а его адрес. В С имеет два оператора, относящихся к указателям: & - оператор "адрес значения" * - оператор "значение по адресу" Объявление указателей Если нужно объявить переменную для хранения, например, возраста, то можно сделать это следующим образом: int age = 20; Такое объявление переменной age подразумевает несколько моментов. Во-первых, сообщается С, что нужна переменная с именем age, и С резервирует для этой переменной место в памяти. Во-вторых, С узнает, что age будет использоваться для хранения только целых чисел. В-третьих, при объявлении эта переменная инициализируется значением 20. Пусть нужно объявить переменную-указатель, которая не содержит возраст, а указывает на age, переменную, где находятся нужные данные. Для объявления указателя на переменную age нужно сделать следующее: int *p_age; В этой строке резервируется место для переменной с именем p_age. Однако это не обычная целочисленная переменная. Так как перед ней стоит *, С определит, что это переменная-указатель. |
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 292. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |