Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177

Возможности функций в C++

14.06.2019, 23:40. Показов 1551. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В интернете есть такой пример для общего описания функций

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
using namespace std;
void fun() //описание функции
{ //тело функции состоит из одного оператора
//который выводит на экран звездочки и пробелы
cout<<"* ";
}
int main ()
{
int i, j;
for (i=0; i<5; i++)
{
for (j=0; j<5-i; j++)
fun(); //вызов функции
cout<<"\n"; //перенос строки
}
system ("pause");
return 0;
}
из него видно, что в функции выполняется вывод набора символов в строку на экране посредством оператора.
Тогда получается что ничто не мешает в теле функции выполнять и такие операторы (ардуино)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  // Останавливаем двигатели
  /* Очень не рекомендуем резко переключать направление вращения двигателей.
  Лучше дать небольшой промежуток времени.*/
  
  motor1.run(RELEASE); 
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  delay(500);
  
  // Двигаемся в обратном направлении
  motor1.run(BACKWARD);  // Задаем движение назад
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  motor1.setSpeed(255);  // Задаем скорость движения 
  motor2.setSpeed(255); 
  motor3.setSpeed(255); 
  motor4.setSpeed(255); 
  delay(1000);
?
Заранее благодарен за ответ. Я просто думал, что в теле функции можно только задать значение переменной, а в остальном каждый выкручивается как может.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2019, 23:40
Ответы с готовыми решениями:

Сделать задачу с использованием функций. Ввод-вывод значений массивов осуществить с п0м0щью функций
Задача 1.Даны коэффициенты многочленов P(x) и Q(x) 5-й степени и дано вещественное a. Вычислить P(a+Q(a)P(a+1)). Задача 2.Описать...

Возможности препроцессора C++
Тема чисто для мнтереса и не имеет практической направленности. Хотя может оказаться кому то полезной. Не рекомендуется использовать в...

Возможности Си по сравнению с Плюсами
Всем привет! Есть вопрос к тем кто очень хорошо знает СИ. Языки СИ и СИ++ разные. Каждый язык создан для определенной задачи. Конечно же ...

15
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.06.2019, 09:42
Hretgir, В функции можно вызывать другую функцию или метод класса (если вы об этом) и вообще делать все, что разрешено правилами языка.
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177
15.06.2019, 20:01  [ТС]
Конечно большое спасибо за уделённое внимание - но это не ответ, потому как вопрос звучал так
Цитата Сообщение от Hretgir Посмотреть сообщение
Тогда получается что ничто не мешает в теле функции выполнять и такие операторы (ардуино)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
* // Останавливаем двигатели
 /* Очень не рекомендуем резко переключать направление вращения двигателей.
 Лучше дать небольшой промежуток времени.*/
motor1.run(RELEASE); 
 motor2.run(RELEASE);
 motor3.run(RELEASE);
 motor4.run(RELEASE);
 delay(500);
// Двигаемся в обратном направлении
 motor1.run(BACKWARD); *// Задаем движение назад
 motor2.run(BACKWARD);
 motor3.run(BACKWARD);
 motor4.run(BACKWARD);
 motor1.setSpeed(255); *// Задаем скорость движения 
 motor2.setSpeed(255); 
 motor3.setSpeed(255); 
 motor4.setSpeed(255); 
 delay(1000);
?
Всё что нужно - указать да или нет.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.06.2019, 22:25
Цитата Сообщение от Hretgir Посмотреть сообщение
это не ответ,
Вот когда вопрос будет задан более осмысленно, тогда и ответ ему будет соответствовать.
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177
15.06.2019, 23:13  [ТС]
Вопрос - будут ли выполнены в теле функции следующие команды микроконтроллера
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
* // Останавливаем двигатели
 /* Очень не рекомендуем резко переключать направление вращения двигателей.
 Лучше дать небольшой промежуток времени.*/
motor1.run(RELEASE); 
 motor2.run(RELEASE);
 motor3.run(RELEASE);
 motor4.run(RELEASE);
 delay(500);
// Двигаемся в обратном направлении
 motor1.run(BACKWARD); *// Задаем движение назад
 motor2.run(BACKWARD);
 motor3.run(BACKWARD);
 motor4.run(BACKWARD);
 motor1.setSpeed(255); *// Задаем скорость движения 
 motor2.setSpeed(255); 
 motor3.setSpeed(255); 
 motor4.setSpeed(255); 
 delay(1000);
?
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177
17.06.2019, 22:12  [ТС]
Можно задать вопрос иначе - выполнится ли в теле функции оператор или несколько с одним типом данных?
Например один
motor4.setSpeed(255);
или
motor2.run(BACKWARD);
. Полагаться на парсер - как то ненадёжно, поэтому лучше спросить.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.06.2019, 22:17
Hretgir, так и не понял, что вас смущает. Имхо - ДА. МОЖНО.
Обоснование в посте 2.
1
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177
18.06.2019, 21:58  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
Hretgir, так и не понял, что вас смущает.
не знаю, я привык что подобные вещи называются процедурами, как в FPC Lazarus. Возможно я чего-то не понял.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.06.2019, 23:13
В Си, насколько я помню, нет понятия "процедуры". Есть функции (и методы, но это те же функции, просто привязанные к классу). Функция может возвращать значение, а может и не возвращать. Тогда в паскале-подобных языках она называется процедурой, но в Си такая несущественная разница терминологически не обозначается.
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,214
Записей в блоге: 177
19.06.2019, 23:03  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
паскале-подобных языках она называется процедурой
я ещё не достиг такого опыта, чтобы отличать Си от Паскаля по образу и подобию, для меня разница в синтаксисе и терминах, ну и в профилизации.
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
22.06.2019, 13:30
Hretgir, в Си-подобных языках (C/C++/Java/C# и др.) функции (или методы классов), которые возвращают тип void - аналогичны процедурам в Паскале. Но можно использовать функции которые возвращают результат какого-либо типа, но его просто не использовать, или использовать в качестве показателя успешности завершения работы функции. Например, если функция вернула 0, то "успешное завершение", если другое число - то какая-либо ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//функция возвращает пустой тип void (аналог процедуры)
void fun1() {
    //тело функции состоящее из любого числа команд, разделенных ;
}
 
//функция возвращает тип, например int
int fun2() {
    //тело функции состоящее из любого числа команд, разделенных ;
    return 0; //возвращаемое (вычисляемое) значение, может быть формальностью
}
 
//вызовы этих функций далее по тексту
int a = fun2(); //в переменную "а" занесется результат, возвращаемый функцией
fun2(); //функция выполнится, а результат просто нигде не сохранится
fun1(); //функция выполнится, а результат не предусмотрен
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
22.06.2019, 14:47
Цитата Сообщение от Hretgir Посмотреть сообщение
Вопрос - будут ли выполнены в теле функции следующие команды микроконтроллера
Будут, если вы обеспечите доступность объектов motor1...motor4 в области видимости функции (передадите их туда через параметры, или сделайте функцию членом класса, как и эти объекты, или сделаете их глобальными - тут выбор за вами).
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
22.06.2019, 16:23
Hretgir, достаточно просто слегка подучить ассемблер (принципы как работает машина), что бы понимать, что есть функции, процедуры, методы, и что по сути являются операторами переходов. Основное для чего нужны управляющие конструкции языка (типа for, if-else, while, goto и т.д) это скакать пот адресам памяти с тем или иным условием (без этих операторов как и без функций, поток управления просто движется сверху вниз по коду).
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.06.2019, 17:00
ildwine, DrOffset, _stanislav, Случай тут почти клинический. Человека явно кто-то напугал. И он "дует на воду", "боится куста". Вот бы узнать этого негодяя, его испугавшего!
Hretgir, Не берите в голову.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
22.06.2019, 17:15

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Случай тут почти клинический.
функцияфобия? (риторический)

0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
22.06.2019, 17:24
Цитата Сообщение от Hretgir Посмотреть сообщение
но это не ответ, потому как вопрос звучал так
а как ты в том же ардуино запихиваешь все это хозяйство
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  // Останавливаем двигатели
 /* Очень не рекомендуем резко переключать направление вращения двигателей.
  Лучше дать небольшой промежуток времени.*/
  
  motor1.run(RELEASE); 
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  delay(500);
  
  // Двигаемся в обратном направлении
  motor1.run(BACKWARD);  // Задаем движение назад
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  motor1.setSpeed(255);  // Задаем скорость движения 
  motor2.setSpeed(255); 
  motor3.setSpeed(255); 
  motor4.setSpeed(255); 
  delay(1000);
в функцию loop и вопросов не возникает?
loop такая же функция как и самописная
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2019, 17:24
Помогаю со студенческими работами здесь

Расширьте возможности dcl
Упражнение 5.20. Расширьте возможности dcl, чтобы dcl обрабатывала объявления с типами аргументов функции, квалификаторами вроде const и...

Реализовать на Си (файлы) по возможности, с презентабельным выводом на экран
создать файл, содержащий сведения об учете материальных ценностей заведения. структура записи: наименование, заводской номер изделия, дата...

Как можно посмотреть возможности gcc?
В терминале можно запустить команду man gcc и она очень удобно и компактно выводит все функции gcc , а нет где нибудь этого же списка но с...

Нужна библиотека для возможности отсылать сообщения клавиатуры через порт PS/2 в обход API функций
Перепробовал кучу различных вариантов эмуляции клавиш, пришел к выводу что единственным рабочим будет на прямую через порт. Видел несколько...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru