Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

Самостоятельная работа

Дано натуральное число n. Пусть

Вычислить

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

Классы памяти

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

Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа двух задания и выполнения самостоятельной работы.

Необходимый уровень знаний:

  • работа с функциями.

1 Задача

Цель: работа со статическими переменными с блочной областью видимости.

Распечатать значения автоматической и статической переменной, которые определены в функции.

Дополнительное условие: функция вызывается в цикле в теле главной программы.

#include<stdio.h>

void trystat(void);

int main(void)

{

int count;

for (count = 1; count<=3; count++)

{

printf("Здесь итерации %d:\n",count);

trystat();

}

return0;

}

// функция приращения значения каждой переменой после вывода на экран их значений

void trystat(void)

{

intfade= 1;

// переменная запоминает состояние, связанное с увеличение значения на 1

static int stay = 1;

printf("fade = %d è stay = %d\n", fade++, stay++);

}

2 Задача

Цель: работа со статической переменной с внешним связыванием.

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

// заголовочный файл

Extern.cpp

#include <stdio.h>

// внешнее объявление переменной

externintunits= 0;

void critic(void)

{

printf("Тебе не повезло! Попробуй еще раз.\n");

scanf("%d", &units);

}

// заголовочный файл

Exstern1.cpp

intmain()

{

// повторное объявление переменной

extern int units;

printf("Сколько футов весит бочонок рома?\n");

scanf("%d", &units);

while(units !=56)

critic();

printf("Нужно это поискать!\n");

return0;

}

Самостоятельная работа

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

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

Указатели и одномерные массивы

Цель: применение на практике знаний работы с указателями. Понятие адреса, адресная арифметика. Работа с массивом фиксированной длины. Выделение памяти под массив в динамической области. Указатели и одномерные массивы.

Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа трех заданий и выполнения самостоятельной работы.

Обязательное зачетное задание.

Необходимый уровень знаний:

  • понятие указателя;

  • адресная арифметика;

  • одномерные массивы;

  • связь одномерных массивов и указателей.

1 Задача

Цель: инициализация указателя адресом.

#include <stdio.h>

int main(){

int x=5;

// инициализация адресом переменной x

int *y = &x;

printf("Znachenie ykazatelya: %d\n\n", *y);

printf("Prisvoennii ykazatelu adress peremennoi: %d \n\n", y);

return0;

}

2 Задача

Выделение памяти для переменной-указателя. Присваивание значения переменной, используя указатель.

Дополнительное условие: связь указателей с одномерными массивами.

#include <stdio.h>

#include <malloc.h>

intmain()

{

// указатель на целую переменную

int*y;

// выделение участка динамической памяти размеромsizeof(int)

y = (int*)malloc(sizeof(int));

// увеличение значения переменнойyв 10 раз

*y=10;

printf("There are : %d \n, %d \n", y,*y);

// освобождение памяти

free(y);

return0;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]