Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Помещение тела цикла 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...