49314 (Управляющие структуры языка "Си". Программирование с использованием указателей)

2016-07-28СтудИзба

Описание файла

Документ из архива "Управляющие структуры языка "Си". Программирование с использованием указателей", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49314"

Текст из документа "49314"

Херсонский национальный технический университет

Лабораторная работа №1, 2

по дисциплине

«Программирование»

Выполнила

студентка группы 1зКСС

Малахова Т.Н.

Проверил

Дроздова Е.А.

Херсон 2005

Лабораторная работа №1

Управляющие структуры языка «Си»

Цель работы: Изучение приемов использования операторов ветвления и операторов циклов в С.

Теоретические сведения:

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

Блоки и составные операторы.

Любая последовательность операторов, заключенная в фигурные скобки, является составным оператором (блоком). Составной оператор не должен заканчиваться (;), поскольку ограничителем блока служит сама закрывающаяся скобка. Внутри блока каждый оператор должен ограничиваться (;).

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

Пустой оператор.

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

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

Операторы ветвления.

К операторам ветвления относятся if, if else, ?, switch и goto. Общий вид операторов ветвления следующий:

if (логическое выражение)

оператор;

if (логическое выражение)

оператор_1;

else

оператор_2;

? : ;

Если значение логического выражения истинно, то вычисляется выражение_1, в противном случае вычисляется выражение_2.

switch (выражение целого типа)

{

case значение_1:

последовательность_операторов_1;

break;

case значение_2:

последовательность_операторов_2;

break;

. . .

case значение_n:

последовательность_операторов_n;

break;

default:

последовательность_операторов_n+1;

}

Ветку default можно не описывать. Она выполняется, если ни одно из вышестоящих выражений не удовлетворено.

Оператор цикла.

В Турбо Си имеются следующие конструкции, позволяющие программировать циклы: while, do while и for. Их структуру можно описать следующим образом:

Цикл с проверкой условия наверху:

while ( логическое выражение)

оператор;

Цикл с проверкой условия внизу:

do

оператор;

while (логическое выражение);

Универсальный оператор цикла:

for (инициализация; проверка; новое_значение)

оператор;

Задание:


Составить и получить распечатку программы выбора всех четных чисел от 1 до 1000.

Составить и получить распечатку программы выбора всех чисел, заканчивающихся на цифру 5, от 1 до 1000.

Написать программу с использованием цикла do-while, которая ожидает нажатия клавиши ‘ъ’ и по нажатии её завершает работу.

Программа 1: распечатывает все четные числа от 1 до 1000:

#include

int vit;

int main( void )

{

vit = 2;

while (vit <= 1000)

{

vit = vit +2;

printf("%d\n", vit);

}

system("PAUSE");

return 0;

}

Программа 2: распечатывает все числа от 1 до 1000, которые заканчиваются на цифру 5:

#include

#include

int den;

int main()

{

den = 5;

while (den <= 1000)

{

den = den +10;

printf("%d\n", den);

}

system("PAUSE");

return 0;

}

Программа 3:Программа ожидает нажатия клавиши «Ъ» и по её нажатии завершает работу:

#include

#include

#include

//#include

int getkey;(void);

{

int key, lo, hi;

key=bioskey(0);

lo = key & 0X00FF;

hi = (key & 0X0FF00) >> 8;

return((lo==0) ? hi +256: lo);

}

main()

{

clrscr();

int input;

do

{

input = getkey();

printf("Program is running \n");

}

while (input!= ']');

}

Лабораторная работа N2

Программирование с использованием указателей

Цель работы: Oзнакомиться с понятием указателя, научиться использовать их при программировании на С.

Теоретические сведения

Указатель - это переменная, которая содержит в памяти адрес данных. Переменная-указатель содержит местоположение значения. То есть, переменная-указатель указывает на значение, так как она содержит его адрес.

Указатели предоставляют эффективные средства доступа и изменения данных. Так как указатели содержат адреса данных, то при поиске значений в памяти у компьютера сокращается объем работы. Указатели не привязывают данные к какому-либо определенному имени переменной. Они могут содержать адрес любого не именованного значения.

Суть переменных-указателей.

Так как указатели являются обычными переменными, для них действительны все правила именования обычных переменных. Как и в случае с обычной переменной, нужно сначала объявить указатель и только потом его использовать. В Си указатели могут быть на все существующие в языке типы данных; можно создать указатель на целое, символьное данное, и так далее. В зависимости от того, в каком месте программы объявлен указатель, он может быть локальным или глобальным (как и для обычных переменных, использовать глобальные без нужды не рекомендуется).

Единственная разница между обычными переменными и указателями заключается в их содержимом. Указатели содержат не само значение, а его адрес.

В Си имеет два оператора, относящихся к указателям:

& - оператор "адрес значения"

* - оператор "значение по адресу"

Объявление указателей.

Если нужно объявить переменную для хранения, например, возраста то можно сделать это следующим образом:

int age = 20;

Такое объявление переменной age подразумевает несколько моментов. Во-первых, сообщается Си, что нужна переменная с именем age, и Си резервирует для этой переменной место в памяти. Во-вторых, Си узнает, что age будет использоваться для хранения только целых чисел. В-третьих, при объявлении эта переменная инициализируется значением 20.

Пусть нужно объявить переменную-указатель, которая не содержит возраст, а указывает на age, переменную, где находятся нужные данные. Для объявления указателя на переменную age нужно сделать следующее:

int *p_age;

В этой строке резервируется место для переменной с именем p_age. Однако это не обычная целочисленная переменная. Так как перед ней стоит *, Си определит, что это переменная-указатель.

Присваивание значений указателям.

Указатель может содержать адреса значений только соответствующего ему типа. Например, p_age может указывать только на целочисленные переменные. Си не инициализирует указатели при их объявлении. Если age объявлена как показано выше, и нужно, чтобы p_age содержала адрес age, нужно присвоить его переменной p_age:

p_age=&age;

Вместо занесения адреса переменной age в переменную p_age при помощи оператора присваивания можно одновременно объявлять и инициализировать указатели.

int age=20;

int *p_age=&age;

Можно присваивать различные значения переменной age следующим оператором:

age=35;

Либо можно сделать то же самое другим путем:

*p_age=35;

Эта строка подразумевает "взять ячейку памяти, на которую указывает p_age и занести туда значение 35".

Объявление массивов указателей.

Если нужно зарезервировать большое количество указателей для различных данных, можно объявить массив указателей, причем каждый его элемент будет являться указателем одного и того же указанного типа. Следующий пример резервирует массив из 10 указателей на переменную целого типа:

int *iptr[10];

Можно присвоить адрес любому элементу из iptr таким же образом, как и любому другому указателю, не входящему в массив:

iptr[4]=&age;

В следующей строке резервируется массив из 20 указателей на переменные символьного типа:

char *cpoint[20];

Задание:

Составить программу для определения максимального элемента одномерного массива. Массив первоначально заполняется нулями, затем данные вводятся с клавиатуры. Заменить нулем все элементы, равные максимальному. Массив задать при помощи указателя. Зарезервировать память под массив при помощи функций динамического распределения памяти.

Программа: определяет максимальный элемент одномерного массива:

#include

#include

#include

int* arr;

void zero();

void in();

int max();

void out();

void main()

{

arr=(int*)malloc(10);

clrscr();

zero();

out();

getch();

in();

int maxEl=max();

int i;

for(i=0;i<10;i++)

if(*(arr+i)==maxEl) *(arr+i)=0;

else ;

clrscr();

out();

getch();

}

void zero()

{

int i;

for(i=0;i<10;i++)

*(arr+i)=0;

}

void in()

{

printf("\nEnter elements of array:");

printf("\n");

int i;

for(i=0;i<10;i++)

scanf("\n%i",arr+i);

}

int max()

{

int mx=*arr;

int i=1;

for(i;i<10;i++)

if(mx<*(arr+i)) mx=*(arr+i);

else ;

return mx;

}

void out()

{

int i;

for(i=0;i<10;i++)

{

printf("%i",*(arr+i));

printf(" ");

}

system("PAUSE");

return 0;

}

Результат работы программы: Массив первоначально заполняется нулями, затем данные вводятся с клавиатуры. Заменяются нулем все элементы, равные максимальному. Массив задаётся при помощи указателя. Память под массив зарезервирована при помощи функций динамического распределения памяти.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее