Презентация Локальные и глобальные переменные, классы памяти онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Локальные и глобальные переменные, классы памяти абсолютно бесплатно. Урок-презентация на эту тему содержит всего 45 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Локальные и глобальные переменные, классы памяти
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:45 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:218.50 kB
- Просмотров:69
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
![Основные понятия Локальное](/documents_6/3329557be6962821e870e4a56dfeade3/img1.jpg)
Содержание слайда: Основные понятия
Локальное объявление – объявление типа или переменной, находящееся внутри какой-либо пользовательской функции программы.
Глобальное объявление – объявление типа или переменной, находящееся вне какой-либо пользовательской функции программы.
Локальная переменная – переменная, объявленная внутри какой-либо пользовательской функции программы.
Глобальная переменная – переменная, объявленная вне какой-либо пользовательской функции программы.
№3 слайд
![Пример Программа запрашивает](/documents_6/3329557be6962821e870e4a56dfeade3/img2.jpg)
Содержание слайда: Пример
Программа запрашивает у пользователя размер целочисленного массива (ограничен – максимально 30 элементов). Затем осуществляется ввод массива и поиск максимального и минимального элементов массива. Найденные значения выводятся на экран. Данная программа должна быть реализована с использованием функционального подхода: необходимо реализовать функции ввода массива и поиска максимума и минимума массива.
№4 слайд
![Пример int array , num void](/documents_6/3329557be6962821e870e4a56dfeade3/img3.jpg)
Содержание слайда: Пример
int array[30], num;
void Input(void);
void GetMinMax(int *, int *);
int main(int argc, char *argv[])
{
printf("Введите количество элементов: ");
scanf("%d",&num);
if((num<1)||(num>30)) {
puts("Некорректный ввод!");
return 0;
}
Input(); //Ввод массива
int max, min;
GetMinMax(&max,&min);
printf("Максимум: %d\nМинимум: %d\n",max,min);
return 0;
}
№7 слайд
![Основные понятия Время жизни](/documents_6/3329557be6962821e870e4a56dfeade3/img6.jpg)
Содержание слайда: Основные понятия
Время жизни – промежуток времени в течении которого под переменную выделена память, следовательно она содержит некоторое значение и к ней можно обращаться.
Видимость переменной – область программы, в которой к данной переменной можно обращаться, т.е. переменная «видна» в этой области.
№8 слайд
![Пример Функция поиска в](/documents_6/3329557be6962821e870e4a56dfeade3/img7.jpg)
Содержание слайда: Пример
Функция поиска в списке точек одной точки (структура POINT с двумя вещественными полями), расположенной наиболее близко центру координат.
POINT FindNearest(POINT list[],int num)
{
POINT pnt = list[0];
double min = sqrt(pow(pnt.x,2.0) + pow(pnt.y,2.0));
for(int i=0;i<num;i++){
double dist = sqrt(pow(list[i].x,2.0) +pow(list[i].y,2.0));
if(dist < min) {min = dist; pnt = list[i];}
}
return pnt;
}
№9 слайд
![Классы памяти В языке С](/documents_6/3329557be6962821e870e4a56dfeade3/img8.jpg)
Содержание слайда: Классы памяти
В языке С существует возможность управления временем жизни переменных. Для этого используются классы памяти, которые определяют некоторую специфику переменной. Для использования определенного класса памяти переменную необходимо объявить с указанием ее класса памяти:
класс памяти тип имя [=инициализация];
В языке С имеются четыре класса памяти:
автоматический (auto);
регистровый (register);
статический (static);
внешний (extern).
№10 слайд
![Класс auto Класс памяти auto](/documents_6/3329557be6962821e870e4a56dfeade3/img9.jpg)
Содержание слайда: Класс auto
Класс памяти auto используется для создания локальных переменных в функциях. Переменная создается в момент вызова функции в стеке и уничтожается при ее завершении.
Данный класс памяти используется по умолчанию, при объявлении переменных его использовать необязательно.
№11 слайд
![Класс register Класс памяти](/documents_6/3329557be6962821e870e4a56dfeade3/img10.jpg)
Содержание слайда: Класс register
Класс памяти register используется для создания целочисленных (или производных от целочисленного типа) переменных в регистрах процессора с целью ускорения доступа к ним.
Обычно с таким классом объявляют индексные переменные, используемые в циклах:
for(register int i=0;i<n;i++) ...
№12 слайд
![Класс static Класс памяти](/documents_6/3329557be6962821e870e4a56dfeade3/img11.jpg)
Содержание слайда: Класс static
Класс памяти static используется для создания статических переменных.
Данный класс памяти используется по умолчанию при описании глобальных переменных. Переменные с таким классом памяти создаются в сегменте данных программы и «живут» в процессе выполнения программы.
Данный класс памяти можно использовать и для локальных переменных. В таком случае значение этой переменной не теряется между вызовами функции, в которой она описана.
№16 слайд
![Функция main При запуске](/documents_6/3329557be6962821e870e4a56dfeade3/img15.jpg)
Содержание слайда: Функция main
При запуске программы в нее из операционной системы или другой программы могут быть переданы параметры командной строки.
Командная строка – строка, содержащая имя запускаемой программы (абсолютный путь к файлу программы) и следующие за ним параметры, представляющие собой некоторые символьные данные. Разделение имени программы и ее параметров осуществляется пробелами (одним или несколькими).
Например:
c:\programs\proga.exe first second
№18 слайд
![Функция main Функция main](/documents_6/3329557be6962821e870e4a56dfeade3/img17.jpg)
Содержание слайда: Функция main
Функция main может возвращать целочисленное значение, которое может интерпретироваться операционной системой или вызвавшей программой как результат выполнения данной программы (код ошибки).
Принято следующее правило: если программа выполнилась корректно, то ее результат должен быть равен нулю.
№19 слайд
![Функция main Пример в](/documents_6/3329557be6962821e870e4a56dfeade3/img18.jpg)
Содержание слайда: Функция main
Пример: в программу в качестве параметров командной строки передаются целые числа. Программа должна вычислить сумму этих чисел и вернуть полученное значение.
int main(int argc, char *argv[])
{
if(argc < 2) return 0;
int summa = 0;
for(int i=1;i<argc;i++) summa += atoi(argv[i]);
return summa;
}
№22 слайд
![Пример Написать программу](/documents_6/3329557be6962821e870e4a56dfeade3/img21.jpg)
Содержание слайда: Пример 2
Написать программу подбора пароля к rar-архиву, если известно, что пароль состоит из трех цифр. Имя архива передается в параметрах командной строки. При реализации программы предполагается, что программа-распаковщик rar-архивов (unrar.exe) находится в том же каталоге, что и сама программа. Для вызова программы-распаковщика используется функция из библиотеки stdlib.h:
int system(const char *command);
№23 слайд
![Пример include lt stdlib.h gt](/documents_6/3329557be6962821e870e4a56dfeade3/img22.jpg)
Содержание слайда: Пример 2
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc < 2) {puts("Не указано имя архива!"); return 0;}
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++){
char psw[5] = “ ”;
psw[0] = i+48; psw[1] = j+48; psw[2] = k+48;
char cmd[50] = "unrar.exe e -p";
strcat(cmd,psw); strcat(cmd,argv[1]);
int res = system(cmd);
if(!res){printf("Пароль: %s\n",psw); return 0; }
}
puts(“Пароль не найден!”);
return 0;
}
№24 слайд
![Неопределенное число](/documents_6/3329557be6962821e870e4a56dfeade3/img23.jpg)
Содержание слайда: Неопределенное число параметров
В языке С допускается создание функций, имеющих неопределенное число параметров. Для реализации функции с неопределенным числом параметров необходимо описать ее заголовок (и прототип, если он есть) в следующем виде:
тип имя(список фиксированных параметров, ...)
№26 слайд
![Неопределенное число](/documents_6/3329557be6962821e870e4a56dfeade3/img25.jpg)
Содержание слайда: Неопределенное число параметров
Для доступа к значениям нефиксированных параметров используются типы и макросы для работы со стеком из библиотеки stdarg.h.
Работа по извлечению значений нефиксированных параметров заключается в следующем:
объявить переменную типа va_list;
установить ее на последний фиксированный параметр в функции с помощью макроса va_start;
произвести работу с заданным списком значений, используя макрос va_arg;
завершить работу со списком параметров, используя макрос va_end.
№27 слайд
![Неопределенное число](/documents_6/3329557be6962821e870e4a56dfeade3/img26.jpg)
Содержание слайда: Неопределенное число параметров
Макрос установки переменной для работы со стеком на первый нефиксированный параметр:
va_start(va_list ap, lastfix);
Первым параметром ap макроса является имя переменной для работы со стеком, вторым параметром lastfix – имя последнего фиксированного параметра.
№28 слайд
![Неопределенное число](/documents_6/3329557be6962821e870e4a56dfeade3/img27.jpg)
Содержание слайда: Неопределенное число параметров
Макрос для получения значения следующего нефиксированного параметра:
va_arg(va_list ap, type);
Первый параметр ap макроса – имя переменной для работы со стеком. Второй параметр type макроса – имя типа получаемого значения (системный или пользовательский тип данных).
№33 слайд
![Указатели на функции](/documents_6/3329557be6962821e870e4a56dfeade3/img32.jpg)
Содержание слайда: Указатели на функции
Например, если функция в качестве параметра принимает два целых числа, а возвращает вещественное значение, то указатель на эту функцию будет описан в виде:
double (*ptr)(int,int);
Указатель на функцию, принимающую в качестве параметра строку и целое число, и возвращающую строку будет иметь вид:
char *(*ptr)(const char *,int);
№34 слайд
![Указатели на функции](/documents_6/3329557be6962821e870e4a56dfeade3/img33.jpg)
Содержание слайда: Указатели на функции
Установка указателя на функцию осуществляется простым присвоением указателю имени функции:
указатель = имя функции;
Вызов функции, через установленный на нее указатель, осуществляется так же, как и обычный вызов функции:
указатель(список фактических параметров);
№35 слайд
![Пример Вывести на экран](/documents_6/3329557be6962821e870e4a56dfeade3/img34.jpg)
Содержание слайда: Пример
Вывести на экран таблицу значений на промежутке [0,2π] с шагом π/6 одной из функции (1 – sin, 2 – cos). Номер функции задан в целочисленной переменной num. Фрагмент программы:
double (*ptr)(double);
if(num == 1) ptr = sin;
else if(num == 2) ptr = cos;
else return 0;
const double pi = 3.14159265358979323;
double x = 0.0;
while(x <= 2.0*pi){
printf(“func(%lf) = %lf\n”,x,ptr(x));
x += (pi/6.0);
}
№36 слайд
![Массивы указателей на функции](/documents_6/3329557be6962821e870e4a56dfeade3/img35.jpg)
Содержание слайда: Массивы указателей на функции
Еще одной конструкцией языка С, встречающейся на практике, является массив указателей на функции. Объявление такого массива, на примере одномерного массива, имеет вид:
тип (*имя[размер])(список типов формальных параметров);
Установка указателя на функцию осуществляется простым присвоением элементу массива имени функции:
массив[индекс] = имя функции;
Вызов функции, через установленный на нее элемент массива указателей, осуществляется так же, как и обычный вызов функции:
массив[индекс](список фактических параметров);
№37 слайд
![Пример Вывести на экран](/documents_6/3329557be6962821e870e4a56dfeade3/img36.jpg)
Содержание слайда: Пример
Вывести на экран таблицу значений на промежутке [0,2π] с шагом π/6 одной из функции (1 – sin, 2 – cos, 3 – tan). Номер функции задан в целочисленной переменной num. Фрагмент программы:
double (*ptrs[3])(double);
ptrs[0] = sin; ptrs[1] = cos; ptrs[2] = tan;
if((num < 1)||(num > 3)) return 0;
const double pi = 3.14159265358979323;
double x = 0.0;
while(x <= 2.0*pi){
printf(“func(%lf) = %lf\n”,x,ptrs[num-1](x));
x += (pi/6.0);
}
№42 слайд
![Пример Написать программу](/documents_6/3329557be6962821e870e4a56dfeade3/img41.jpg)
Содержание слайда: Пример 1
Написать программу поиска различных расстановок восьми ферзей на шахматной доске так, чтобы они не «били» друг друга. Программа должна отобразить на экране матрицу 8×8, состоящую из нулей (пустая клетка на шахматной доске) и единиц (ферзь на шахматной доске), а также общее число найденных комбинаций. При реализации использовать рекурсию.
--X----- {2,5,3,1,7,4,6,0}
-----X--
---X----
-X------
-------X
----X---
------X-
X-------
№43 слайд
![Пример include lt stdio.h gt](/documents_6/3329557be6962821e870e4a56dfeade3/img42.jpg)
Содержание слайда: Пример 1
#include <stdio.h>
void PutFerz(int,int [], int *);
int main(int argc, char *argv[])
{
int I[8] = {0}, Count = 0;
PutFerz(0,I,&Count);
printf("Количество комбинаций: %d\n",Count);
return 0;
}
int Check(int n, int I[])
{
for(int i=0;i<n;i++){
if(I[i]==I[n]) return 1;
if(abs(n-i)==abs(I[n]-I[i])) return 1;
}
return 0;
}
№44 слайд
![Пример void Show int I , int](/documents_6/3329557be6962821e870e4a56dfeade3/img43.jpg)
Содержание слайда: Пример 1
void Show(int I[], int *count)
{
for(int i=0;i<8;i++){
for(int j=0;j<8;j++)
printf("%d",i==I[j]);
printf("\n");
}
puts("========");
(*count)++;
}
void PutFerz(int n, int I[], int *count)
{
for(I[n]=0;I[n]<8;I[n]++){
if(Check(n,I)) continue;
if(n==7) Show(I,count);
else PutFerz(n+1,I,count);
}
}
Скачать все slide презентации Локальные и глобальные переменные, классы памяти одним архивом:
Похожие презентации
-
Cоставные части программы, локальные и глобальные переменные. Функции
-
Функции. Прототип функции. Локальные, глобальные переменные. Формальные параметры (язык C)
-
Функции. Локальные переменные. Передача параметров. Рекурсия. Рисование рекурсивных картинок
-
Классы памяти и область действия объектов
-
Вложенные классы и перечисления. Локальные и анонимные классы
-
Java. SE. 01. Java fundamentals. Введение в язык java. Типы данных, переменные, операторы. Простейшие классы и объекты
-
ООП 3. Классы, объекты и память
-
Лекция 1. Классы памяти (auto, register, extern, static. ) в C
-
Алгоритмический язык. Запись переменных и констант. 9-11 класс
-
Обработка строковых переменных