Реферат по предмету "Информатика, программирование"


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

Херсонскийнациональный технический университетЛабораторная работа №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
{
vit = vit +2;
printf("%d\n", vit);
}
system(«PAUSE»);
return0;
}
Программа2: распечатывает все числа от 1 до 1000, которыезаканчиваются на цифру 5:
#include
#include
int den;
int main()
{
den = 5;
while (den
{
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знакомитьсяс понятием указателя, научиться использовать их при программировании на С.
 
Теоретическиесведения
 
Указатель- это переменная, которая содержит в памяти адрес данных. Переменная-указательсодержит местоположение значения. То есть, переменная-указатель указывает назначение, так как она содержит его адрес.
Указателипредоставляют эффективные средства доступа и изменения данных. Так какуказатели содержат адреса данных, то при поиске значений в памяти у компьютерасокращается объем работы. Указатели не привязывают данные к какому-либоопределенному имени переменной. Они могут содержать адрес любого неименованного значения.
Сутьпеременных-указателей.
 Так как указателиявляются обычными переменными, для них действительны все правила именованияобычных переменных. Как и в случае с обычной переменной, нужно сначала объявитьуказатель и только потом его использовать. В Си указатели могут быть на всесуществующие в языке типы данных; можно создать указатель на целое, символьноеданное, и так далее. В зависимости от того, в каком месте программы объявленуказатель, он может быть локальным или глобальным (как и для обычныхпеременных, использовать глобальные без нужды не рекомендуется).
 Единственнаяразница между обычными переменными и указателями заключается в их содержимом.Указатели содержат не само значение, а его адрес.
 ВСи имеет два оператора, относящихся к указателям:
 &- оператор «адрес значения»
 *- оператор «значение по адресу»
 Объявлениеуказателей.
 Еслинужно объявить переменную для хранения, например, возраста то можно сделать этоследующим образом:
 intage = 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при помощи оператора присваивания можно одновременно объявлять иинициализировать указатели.
 intage=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
if(*(arr+i)==maxEl) *(arr+i)=0;
else ;
clrscr();
out();
getch();
}
void zero()
{
int i;
for(i=0;i
*(arr+i)=0;
}
void in()
{
printf("\nEnter elements of array:");
printf("\n");
int i;
for(i=0;i
scanf("\n%i",arr+i);
}
int max()
{
int mx=*arr;
int i=1;
for(i;i
if(mx
else ;
return mx;
}
void out()
{
int i;
for(i=0;i
{
printf("%i",*(arr+i));
printf(" ");
}
system(«PAUSE»);
return0;
}
Результатработы программы: Массив первоначально заполняетсянулями, затем данные вводятся с клавиатуры. Заменяются нулем все элементы,равные максимальному. Массив задаётся при помощи указателя. Память под массивзарезервирована при помощи функций динамического распределения памяти.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.