Для чего нужны методы
Перейти к содержимому

Для чего нужны методы

  • автор:

Для чего нужны методы

Обычно классы отражают некоторые объекты окружающей действительности. Но иногда нам приходится работать с сущностями, которые не имеют конкретного воплощения. Например, сущность «животное». Есть конкретные животные — кошка, собака и так далее, но животное как таковое не имеет конкретного воплощения. Или сущность «геометрическая фигура». Есть прямоугольник, квадрат, круг, треугольник, но сама по себе геометрическая фигура также не имеет конкретного воплощения. И обычно для описания подобных сущностей применяются абстрактные классы .

В языке Python все инструменты для создания абстрактных классов определены в специальном модуле abc , который надо дополнительно подключать в приложении

import abc

Ключевыми компонентами этого модуля является класс ABC и аннотация @abstractmethod . Класс ABC упрощает создание абстрактного класса, и все определяемые абстрактные классы наследуются от этого класса. Аннотация @abstractmethod предназначеня для создания абстрактного метода.

Абстрактные классы определяются как обычные классы за тем исключением, что они наследуются от класса ABC из модуля abc . Например, определим абстрактный класс геометрической фигуры:

import abc class Shape(abc.ABC): pass

Как правило, абстрактные классы объявляют некоторый общий функционал для классов наследников. Причем некоторый функционал может не иметь никакой реализации — его реализацию должны определить классы-наследники. Подобный функционал оформляется в классе в виде абстрактных методов. Например, класс геометрической фигуры может иметь методы вычисления периметра, площади и т.д. Мы не можем определить общую формулу для вычисления площади всех фигур — для каждой конкретной фигуры принцип вычисления площади может отличаться. Поэтому в классе фигуры мы можем определить метод вычисления площади как абстрактный. Для этого применяется аннотация @abstractmethod из модуля abc :

import abc class Shape(abc.ABC): @abc.abstractmethod def area (self): pass # площадь фигуры

В данном случае метод area() определен как абстрактный. Так как ему не нужен конкретный функционал, в нем вызывается оператор pass

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

import abc class Shape(abc.ABC): @abc.abstractmethod def area (self): pass # площадь фигуры shape = Shape() # ! Ошибка - так нельзя print(shape)

Классы-наследники должны реализовать все абстрактные методы абстрактного класса. Например, определим класс прямоугольника:

import abc class Shape(abc.ABC): @abc.abstractmethod def area (self): pass # площадь фигуры # класс прямоугольника class Rectangle(Shape): def __init__(self, width, height): self.width = width self.height = height def area (self): return self.width * self.height rect = Rectangle(30, 50) print("Rectangle area:", rect.area()) # Rectangle area: 1500

Здесь класс прямоугольника Rectangle принимает через конструктор ширину и высоту и использует их для вычисления площади в методе area() .

Подобным образом можно определить и другие типы фигур. Например, добавим класс круга:

import abc class Shape(abc.ABC): @abc.abstractmethod def area (self): pass # площадь фигуры # класс прямоугольника class Rectangle(Shape): def __init__(self, width, height): self.width = width self.height = height def area (self): return self.width * self.height # класс круга class Circle(Shape): def __init__(self, radius): self.radius = radius def area (self): return self.radius * self.radius * 3.14 def print_area(shape): print("Area:", shape.area()) rect = Rectangle(30, 50) circle = Circle(30) print_area(rect) # Area: 1500 print_area(circle) # Area: 2826.0

В данном случае для вывода площади фигуры определена функция print_area, которая принимает любую фигуру.

При этом абстрактные классы также могут определять конструктор, атрибуты, неабстрактные методы, которые также могут применяться в классах-наследниках:

import abc class Shape(abc.ABC): def __init__(self, x, y): self.x = x self.y = y @abc.abstractmethod def area (self): pass # абстрактны метод def print_point(self): # неабстрактный метод print("X:", self.x, "\tY:", self.y) # класс прямоугольника class Rectangle(Shape): def __init__(self, x, y, width, height): super().__init__(x, y) self.width = width self.height = height def area (self): return self.width * self.height rect = Rectangle(10, 20, 100, 100) rect.print_point() # X: 10 Y: 20

Здесь абстрактный класс Shape через конструктор принимает координаты X и Y для точки, относительно которой создается фигура (например, для прямоугольника это могут быть координаты верхнего левого угла, для круга — центр). И также определен неабстрактный метод print_point, который выводит координаты точки на консоль.

Для чего нужен предмет «Численные методы»?

Я студент 2-го курса. Целых 5 месяцев нас учили разным методам (методам Ньютона, Рунге Кутта и т.п.). Когда я спрашивал препода «где можно воспользоваться этими полученными знаниями» она ничего ни сказала, сказала только про то что с помощью них (методов) можно только решать уравнения.
И теперь с прашиваю хабраюзеров: ДЛЯ ЧЕГО НУЖЕН ПРЕДМЕТ «Численные методы»?

  • Вопрос задан более трёх лет назад
  • 13860 просмотров

Комментировать
Решения вопроса 1

на этот вопрос сложно отвечать из-за его простоты. Примерно так же дети спрашивают для чего трава зеленая. Начинать им расказывать про фотосинтез?

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

Ответ написан более трёх лет назад
Нравится 5 1 комментарий
StrangeAttractor @StrangeAttractor

Примерно так же дети спрашивают для чего трава зеленая. Начинать им расказывать про фотосинтез?

— конечно: для детей это можно сформулировать как «чтобы питаться солнечным светом и углекислым газом». Понятно, что за этим последует вопрос про углекислый газ и питаются ли им лягушки, но на это всё тоже можно и нужно найти простые и в то же время научно-верные ответы.

Ответы на вопрос 3

storoj

думаю, полезно, когда у тебя есть какой-то дискретный сигнал и нужно его так или иначе обработать математически (не знаю как правильно выразиться)
вот однажды я пришел на собеседование и была такая задача
представим, что у нас есть некий девайс с акселерометром-гироскопами и наша задача как-нибудь примерно рассчитать изменение его координат в пространстве.
я не знаю правильного ответа, не уверен что он существует, но я думал так: у нас есть дискретные данные гироскопа/акселерометра, с каким-то шагом по времени, раз так, то мы можем проинтегрировать численно чтобы получить уравнение координаты. или можно построить полином какой-нибудь степени и проинтегрировать аналитически. вот тут как раз вступают в дело численные методы.

когда я учился в универе, то тоже не всегда понимал — как это всё использовать. и поэтому частенько сдавал и забывал. и сути многих вещей до конца не понимал, так как не видел ни физического смысла, ни области применения. если бы я сейчас пошел в универ, то намного серьезнее бы отнесся к таким предметам.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

Как минимум стоит его изучать, чтобы понять, что иногда допустимо и приближенное решение
итерационные процессы, где конечный результат зависит от предыдущих, типа динамическое программирование
дихотомия — даёт начальное понятие о бинарном поиске

можно провести много параллелей с весьма полезными вещами 🙂

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
nurtay1994 @nurtay1994 Автор вопроса

без вас бы я второстепенно относился бы к этому предмету.

«Спасибо, вам большое за ваши ответы . » Теперь намого серьёзнее буду относится к этому предмету.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

habrahabr

  • Хабр
  • +1 ещё

Хабр недоступен у некоторых провайдеров?

  • 1 подписчик
  • 16 апр.
  • 100 просмотров

Методы исследования, используемые при написании дипломной работы

Методы исследования, используемые при написании дипломной работы

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

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

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

Что такое методы в дипломной работе

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

Метод исследования дипломного проекта — это использование принципов мировоззрения по отношению к процессам познания.

Если говорить проще, то методология исследования — это способ соотносить данные исследования с другими фундаментальными науками, важнейшей из которых является философия. Это соотношение и станет методологической основой исследования дипломной работы.

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

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

Классификация методов исследования

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

  • общие (теоретические, универсальные) методы исследования в дипломной работе;
  • частные (эмпирические или практические) методы исследования в дипломной работе.

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

Теоретические методы исследования

Эти методы являются универсальными и служат для систематизации фактов в научной работе.

При написании дипломной работы используют в основном следующие теоретические методы:

  • анализ;
  • синтез;
  • моделирование;
  • аналогия;
  • дедукция;
  • индукция;
  • обобщение;
  • классификация;
  • абстрагирование;
  • формализация;
  • конкретизация;
  • аналогия.

Давайте рассмотрим каждый теоретический метод исследования подробнее.

Анализ

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

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

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

Синтез

В отличие от предыдущего метода синтез соединяет отдельные элементы (свойства, признаки) в единое целое для более детального изучения.

Методы синтеза и анализа часто используют вместе как методологическую основу исследования. Это позволяет сначала найти различия, а потом элементы, которые объединяют полученные результаты.

Моделирование

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

Аналогия

При методологической основе в виде аналогии производится поиск сходства предметов и явлений по определённым признакам. И на этом сходстве делают выводы.

Дедукция

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

Индукция

В противоположность к предыдущему индуктивный метод основан на принципе от частного к общему. И побуждает вести рассуждения от конкретных моментов к общей картине.

Обобщение

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

  • индуктивное обобщение (эмпирическое) — переход от более конкретных свойств или характеристик предмета и явления к более общим;
  • аналитическое обобщение — переход от одного мнения к другому в ходе мыслительного процесса без применения эмпирической действительности, то есть конкретных опытов.

Классификация

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

Классифицировать можно на основе разных признаков. Например:

  • по физическим свойствам (весу, размеру, объёму);
  • по материалу (пластик, дерево, металл, фарфор);
  • по жанрам (скульптура, живопись, литература);
  • по архитектурным стилям.

Классифицировать можно и по геополитическим факторам, хронологическим и прочим другим.

Абстрагирование

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

Абстрагирование

Метод абстрагирования — один из самых важных и основных методов исследования в дипломной работе гуманитарного уклона. С его помощью смогли отметить незаметные на первый взгляд, но важнейшие закономерности в таких науках, как педагогика, психология, философия.

Формализация

Суть метода формализации — передать структуру или сущность явления (объекта) через знаковую модель, используя для этого математические схемы, формулы или символы.

Конкретизация

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

Аналогия

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

Этот метод не является стопроцентно верным и не всегда даёт надёжные результаты. Однако в целом его эффективность довольно высокая. Чаще всего его используют в тех случаях, когда определённые предметы или явления нельзя изучить напрямую (например, при исследовании планет земной группы, при определении их свойств, условий для потенциального заселения населением Земли).

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

Практические (частные) методы исследования

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

Частные методы исследования в дипломной работе используются непосредственно для сбора конкретных данных о явлении или объекте. Эти методы помогают описать и выявить новые явления и предметы, найти закономерности или доказать гипотезы.

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

  • наблюдение;
  • сравнение;
  • измерение;
  • эксперимент;
  • измерение;
  • практическое моделирование;
  • беседа и интервью;
  • опрос и анкетирование;
  • описание.

Давайте подробнее рассмотрим каждый практический метод.

Наблюдение

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

Сравнение

Метод сравнения считается одним из самых популярных. Его используют для сопоставления двух или нескольких объектов исследования по какому-то одному признаку.

Эксперимент

Метод эксперимента толкуется как воспроизведение наблюдения или явления в определённых условиях. Экспериментом может служить также опыт, целью которого будет проверка (опровержение или подтверждение) имеющихся положений. Главное — сохранить два критерия граммотного исследования: доказательность и повторяемость. Ведь задача эксперимента заключается не только в том, чтобы продемонстрировать наглядные результаты или открыть новое свойство, но и показать, что его можно повторить на практике.

Эксперимент

Измерение

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

Практическое моделирование

В общем смысле модель — это структурированный уменьшенный образ чего-то, имитация одного или нескольких объектов.

Моделирование может быть:

  • предметным (при воспроизведении отдельной части объекта);
  • знаковым (при использовании формул, чертежей, схем и прочего);
  • мысленным (при проведении операций в виртуальном мире или в своём воображении).

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

Беседа и интервью

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

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

Опрос и анкетирование

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

Основное отличие опроса от анкетирования состоит в форме их проведения. Опрос, как правило, может быть как устным, так и письменным. А вот анкетирование предполагает только письменный формат. Нередко во время анкетирования ответ можно давать в графическом виде.

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

Описание

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

Кстати! Для наших читателей сейчас действует скидка 10% на любой вид работы.

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

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

  • экономика;
  • педагогика/психология;
  • филология.

Экономика

Для экономической дисциплины характерны точные методы исследований:

  • разные виды анализа: позитивный, нормативный, функциональный, статический, динамический. Экономико-математическое моделирование;
  • метод финансовых коэффициентов;
  • сценарный метод прогнозирования экономических явлений;
  • метод единства исторического и логического;
  • остроение экономических гипотез;
  • метод «при прочих равных условиях».

Педагогика и психология

В этих социальных науках основной акцент делают на изучении поведения и проявления личностных качеств, используя следующие методы:

  • изучение продуктов творчества учеников;
  • интервью и беседа;
  • изучение групповой дифференциации;
  • включённое наблюдение;
  • педагогические контрольные испытания (тестирование);
  • анкетирование (опрос);
  • ранжирование;
  • шкалирование;
  • регистрация.

Филология

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

  • разные виды анализа: композиционный, дискурсный, мотивный, интертекстуальный, дистрибутивный, контекстный, семантический;
  • лингвистический эксперимент;
  • биографический метод;
  • контент-анализ;
  • лексикографическая статистика;
  • дифференциальный анализ оппозиций;
  • нарративный метод;
  • дихотомия;
  • трансформационный синтез и анализ;
  • метод «Конкретное литературоведение»;
  • семиотический метод.

Другая методология исследования

Совершенно иную систему для методологической основы исследования в дипломных работах предложил академик А.Я. Флиер. По его мнению, все методы разделяются на два типа:

  • гуманитарные;
  • социально-научные.

Давайте посмотрим, какие методики входят в эти разные типы и в чем они отличаются друг от друга.

Гуманитарные методологии

Среди гуманитарных методологий научных исследований встречаются:

  • историческая;
  • герменевтическая;
  • феноменологическая;
  • историко-психологическая;
  • культурный символизм и постструктурализм.

Историческая методология

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

Герменевтическая методология

Исследует культуру, раскрывая (дешифруя) изначальные смыслы культурных явлений, заложенные в них при создании.

Феноменологическая методология

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

Историко-психологическая методология

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

Культурный символизм и постструктурализм

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

Социально-научные методологии

Социально-научные методологии представлены:

  • эволюционизмом;
  • циклическими и волновыми моделями культурной динамики;
  • структурным функционализмом;
  • структурализмом;
  • пограничными методологиями.

Давайте подробнее расскажем о каждой методологии.

Эволюционизм

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

Циклические и волновые модели культурной динамики

Эти виды методов описывают культуры как отдельные «самодостаточные организмы» (цивилизации), а происходящие в них процессы как замкнутые циклы или повторяющиеся волновые движения.

Структурный функционализм

Метод интерпретирует культурно-исторические процессы как функциональные, решающие какие-то имманентные социальные задачи по удовлетворению интересов и потребностей людей.

Структурализм

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

Пограничные методологии

Такие методы определяют новые проблемные области культурно-исторической науки (постмодернизм).

Как написать методы в дипломной работе

Отлично! Теперь мы знаем, какие методы исследования существуют. Если повезёт, мы даже понимаем, какие методологические основы нам можно использовать в нашей работе.

Чтобы облегчить себе работу, можно использовать стандартные речевые конструкции при формулировке методологии и методов исследования. Например:

  • в основу настоящей работы легли положения . методологии;
  • работа основана на положениях . методологии;
  • методологическую основу/базу исследования составили положения … методологии;
  • в исследовании/ работе использованы следующие методы …, методы исследования — это … и так далее.

Есть и стандартные конструкции, используемые при описании методов исследований:

  • изучение … восходит к . ;
  • в … веке … были подробно изучены и описаны …;
  • проблемами . занимались . ;
  • огромный вклад в разработку проблемы . внёс . /внесла работа/исследование/труд . ;
  • большое значение имеют работы . ;
  • работы последних лет позволяют говорить о . ;
  • опыт истории … показывает, что . ;
  • в настоящее время господствующей точкой зрения является …;
  • такой подход характерен для …;
  • начало изучению этого вопроса было положено трудами . в работах . ;
  • заметное место в работах … занимает положение …;
  • в числе разрабатываемых в этом русле проблем можно назвать …;
  • ……. подробно освещено в работах . ;
  • связь …показана в . и так далее.

При написании заключения стоит сделать упор на описание структуры работы со следующими стандартными конструкциями:

  • всё вышесказанное определило структуру работы, которая состоит из введения, … глав, заключения, списка литературы, приложения (последнее указывается, если в работе есть приложение);
  • логика, цели и задачи исследования определили структуру работы, которая состоит из …;
  • во введении даётся общая характеристика работы, обосновывается актуальность темы и её социальная значимость, определяются цель, задачи, методологическая основа исследования и методы исследования, а также даётся краткий обзор разработанности проблемы;
  • первая глава посвящена …,
  • во второй главе рассматривается/ говорится о…, в первой главе были рассмотрены …, вторая глава начинается с . затем . ;
  • заключение представляет собой выводы по работе/ в заключении приведены основные выводы и так далее.

Пример описания методов в дипломной работе

Чтобы разобраться, как описать методологическую основу исследования в дипломной работе, изучите наш пример:

Тема: профилактика дисграфии у детей с общим недоразвитием речи

Цель исследования: выявление предпосылок возникновения дисграфии у детей старшего дошкольного возраста с ОНР и детей без речевой патологии.

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

  1. Изучение теоретического и методического аспекта проблемы исследования по данным специальной литературы.
  2. Теоретическое обоснование и разработка методики экспериментального исследования.
  3. Экспериментальное изучение состояния разных сторон устной речи и психических процессов и функций, обеспечивающих формирование письменной речи, определение типологии выявленных недостатков у дошкольников с ОНР.
  4. Обработка полученных экспериментальных данных
  5. Разработка комплекса методических приёмов дифференцированной коррекционно-логопедической работы, направленной на развитие предпосылок письменной речи у детей с ОНР.

В соответствии с намеченной целью и задачами исследования нами были определены следующие методы:

  1. Теоретический анализ педагогической, психологической и методической литературы по теме исследования.
  2. Наблюдение.
  3. Беседа, анкетирование.
  4. Анализ продуктов деятельности детей.
  5. Изучение медико-педагогической документации.
  6. Экспериментальный метод, включающий проведение констатирующего эксперимента, анализа и обобщения полученных данных.

Заключение

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

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

И совершенно нормально, что вы не знаете их все. А зачем, когда есть специальный сервис помощи студентам? Знать такие вещи — это работа специалистов. А ваша задача — получить от жизни и молодости всё, что можно!

Что такое алгоритмы и какими они бывают

Ты можешь разрабатывать микросервисы и знать все уровни модели OSI, но какой ты программист, если не можешь объяснить ребёнку, что такое алгоритм?

Иллюстрация: Катя Павловская для Skillbox Media

Антон Сёмин

Антон Сёмин

Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.

Август Вилакия

Ведущий бэкенд-разработчик мобильного приложения «Альфа-Банка».

Иногда совсем простые вопросы о профессии вводят в ступор даже опытных специалистов. Примерно так происходит, когда у разработчика с 5–10-летним стажем спрашивают: «Что такое алгоритм?»

Но для того мы здесь и собрались, чтобы дать понятные ответы на «глупые» вопросы. В этой статье расскажем, что такое алгоритмы, для чего они нужны и какими бывают.

  • Что такое алгоритмы
  • Для чего их используют
  • Какие у них есть свойства
  • Что такое псевдокод
  • Что такое блок-схемы и как их рисовать
  • Примеры линейных, ветвящихся, циклических и рекурсивных алгоритмов и блок-схем

Что такое алгоритм

В широком смысле алгоритм — это последовательность действий, которые нужно выполнить, чтобы получить определённый результат.

Слово «алгоритм» произошло от имени персидского математика Абу Абдуллаха аль-Хорезми. В своём труде «Китаб аль-джебр валь-мукабала» учёный впервые дал описание десятичной системы счисления. А наука алгебра получила своё название в честь его книги.

Мы часто пользуемся алгоритмами в повседневной жизни. Например, когда хотим приготовить кофе в капсульной кофемашине, руководствуемся примерно таким алгоритмом:

1. Устанавливаем капсулу.

2. Проверяем уровень воды в специальном отсеке.

3. Если воды недостаточно — доливаем.

4. Ставим чашку под кран кофемашины.

5. Запускаем кофемашину.

6. Выключаем кофемашину, когда чашка наполнилась.

7. Достаём кружку.

Если не перепутать порядок шагов, то с помощью такой инструкции любой сможет порадовать себя чашкой горячего кофе. Достаточно лишь знать, как установить капсулу и включить/выключить кофемашину.

С компьютерами намного сложнее. Им неизвестно, что значит «установить капсулу», «долить воду», «запустить кофемашину» и так далее. Чтобы запрограммировать робота-баристу под определённую модель бытовой техники, алгоритм придётся расписать более детально:

1. Возьми штепсельную вилку шнура питания кофемашины.

2. Вставь штепсельную вилку в розетку.

3. Проверь, есть ли вода в отсеке для воды.

4. Если воды недостаточно:

4.1. Подними крышку отсека.

4.2. Возьми кувшин с водой.

4.3. Лей воду из кувшина в отсек, пока он не заполнится.

4.4. Закрой крышку отсека.

4.5. Поставь кувшин с водой на стол.

5. Открой крышку кофемашины.

6. Возьми из коробки капсулу с кофе.

7. Вставь капсулу в отсек для капсулы.

8. Закрой крышку кофемашины.

9. Поверни рычаг кофемашины вправо.

10. Когда чашка наполнится, поверни рычаг кофемашины влево.

11. Возьми кружку.

12. Принеси кружку хозяину.

Конечно, если мы собираем робота с нуля, то даже такой детализации будет недостаточно. Каждую процедуру ещё нужно будет реализовать на языке программирования (например, на C++ или Python), что само по себе — нетривиальная задача. Тем не менее описание стало более точным и формальным.

C научной точки зрения определение алгоритма, которое мы дали выше, не совсем точное. Ведь не всякую последовательность действий, приводящую к результату, можно назвать алгоритмом.

Алгоритм в информатике — это понятный исполнителю набор правил для решения конкретного множества задач, который получает входные данные и возвращает результат за конечное время.

Для чего нужны алгоритмы

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

Не нужно изобретать велосипеды

Представьте, что оформляете загранпаспорт. Если будете всё делать сами и без инструкции, около 40 минут потратите только на выяснение необходимых справок и порядка оформления. Куда проще воспользоваться «Госуслугами», потому что алгоритм там уже составлен — делаете, что вам говорят, и ждёте результат. А ещё проще — обратиться к посреднику, который подготовит все справки и оформит паспорт за неделю.

Это очень бытовой пример, но программирование примерно так и работает. Разработчики изучают алгоритмы, чтобы писать быстрый и эффективный код, — распознают типовую задачу и подбирают для неё оптимальный алгоритм.

Допустим, нужно отсортировать в порядке возрастания числа в списке из 1000 элементов. Можно пройтись по списку 1000 раз: на каждой итерации находить наименьшее число и переставлять его в начало списка. В этом случае общее количество шагов будет равно 1 000 000 — современный компьютер справится с этим за секунду.

А если нужно упорядочить массив из 10 000 000 элементов? Тогда компьютеру придётся выполнить 10 14 шагов, что потребует гораздо больше времени. Надо оптимизировать!

Разработчик, не сведущий в computer science, начнёт ломать голову над более эффективным решением. А опытный специалист применит алгоритм быстрой сортировки, который в среднем случае даст «время» 16 × 10 7 шагов.

Знатоки скажут, что ещё проще было бы воспользоваться библиотечной функцией сортировки (например, sorted() в Python). Тем не менее даже встроенные алгоритмы бывают недостаточно эффективными и разработчикам приходится писать собственные функции для сортировки. Но это уже совсем другая история ��

Алгоритмы позволяют решать «нерешаемые» задачи

Теперь представьте: вы живёте в XX веке где-нибудь в США и зарабатываете тем, что ездите по городам и продаёте мультимиксеры. Чтобы сэкономить время и деньги, вам нужно придумать кратчайший маршрут, который позволит заехать в каждый город хотя бы один раз и вернуться обратно.

Это знаменитая задача коммивояжёра , для которой практически невозможно подобрать лучшее решение. Простой перебор здесь не поможет. Уже при 10 городах количество возможных маршрутов будет равно 3,6 млн, а при 26 — даже самым мощным компьютерам понадобится несколько миллиардов лет, чтобы перебрать все варианты.

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

Свойства алгоритмов

Информатик и автор классических учебников по программированию Дональд Кнут выделял следующие свойства алгоритмов:

  • конечность,
  • определённость,
  • наличие ввода,
  • наличие вывода, или результативность,
  • универсальность,
  • эффективность.

Рассмотрим каждое подробно.

Конечность. Алгоритм должен решать задачу за конечное число шагов. Необходимость этого критерия очевидна: программа, которая решает задачу бесконечно долго, никогда не приведёт к результату.

Определённость. Исполнитель (компьютер, операционная система) должен однозначно и верно интерпретировать каждый шаг алгоритма.

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

Наличие вывода, или результативность. Алгоритм должен выдавать конкретный результат. Например, если мы ищем подстроку в строке и такая подстрока в ней присутствует, то на выходе мы должны получить позицию этой строки. Если такой подстроки нет — алгоритм должен вернуть соответствующее значение, например -1.

Универсальность. Алгоритм должен решать задачи с разными входными данными. Например, хорошая функция для сортировки массивов должна одинаково хорошо справляться с массивами из 10, 100 и 1 000 000 элементов.

Эффективность. Это требование продиктовано ограниченными ресурсами компьютеров. На заре развития вычислительной техники каждая секунда работы процессора, каждый байт памяти были на счету. И хотя современные компьютеры гораздо мощнее своих предшественников, они тоже могут «тормозить» из-за неэффективных алгоритмов.

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

Представьте, что вы изучили какой-нибудь язык программирования, например Go, и устроились бэкенд-разработчиком в IT-компанию. В вашей команде, помимо бэкендеров, есть фронтенд-разработчики, которые пишут код на JavaScript.

Вы придумали крутой алгоритм, который ускорит работу приложения, и хотите рассказать о нём коллегам. Но как это сделать, если они программируют на другом языке?

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

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

Никак не обозначается
или обозначается как начало функции:

Операторы ввода и вывода:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *