Простейшие примеры программирования на языке С++

Характеристика этапов компиляции. Виды выделяемой памяти при работе программы. Базовые типы данных и операторы языка С++. Коды программ по работе с массивами и выполнению простейших операций. Особенности создания и использования собственных функций.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 16.04.2017
Размер файла 434,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

Новосибирский государственный технический университет

Факультет мехатроники и автоматизации

Кафедра электропривода и автоматизации промышленных установок

Расчетно-графическая работа

по дисциплине: "Диагностика и надежность электромеханических систем"

Выполнили: студенты гр. ЭМ-33

Анкудинова Л.В.,

Казмухамбетова К.Б.,

Пестова О.Д.

г. Новосибирск - 2017

Модуль 1. Описать этапы компиляции на примере

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

1. Препроцессинг: Первый этап заключается в замене директив (препроцессоры) чистыми инструкциями С. Обычно это означает вставку заголовка (#include) или определение макрокоманд (#define). В конце этого этапа генерируется чистый код С.

Препроцессирование - это процесс, на вход которого подаётся текст (текстовый файл) и на выходе формируется текст. Во время работы препроцессор занимается тем, что видоизменяет исходный текстовый файл. И только после этого изменённый текстовый файл в дальнейшем попадает в компиляцию. Команды препроцессора (их называют директивами) начинаются на символ #, который должен первым не пробельным символом в строке. Первыми директивами препроцессора, с которыми сталкиваются начинающие, являются директивы #include и #define.

2. Ассемблирование: Этот этап заключается в преобразовании кода С в код языка ассемблера (символическое представление машинного языка). Сгенерированный код зависит от архитектуры, для которой он предназначен.

Язык ассемблера - тип языка программирования низкого уровня. Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и аргументов. Также, язык ассемблера обеспечивает связывание частей программы и данных через метки, выполняемое при ассемблировании (для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес).

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

Пример программ: Программа суммирует значения всех элементов массива. Интересна работой с массивами и реализацией цикла типа "for".

3. Компиляция: Этот этап заключается в генерации объектного кода (или бинарного кода) из кода на языке ассемблера. Результатом его работы является объектный файл, полученный на основе всего того текста, что был предоставлен в компиляционном листе. Поэтому можно говорить, что каждый объектный файл проекта соответствует одному компиляционному листу проекта.

Объектный файл - это бинарный файл, фактически состоящий из набора функций.

4. Линковка: Линковка - то же, что и компоновщик. Компоновщик (от англ. link editor, linker) - программа, которая производит компоновку - принимает на вход один или несколько обратных модулей и собирает по ним исполнимый модуль. Определенные или экспортируемые имена - функции и переменные, определенные в данном модуле и предоставляемые для использования другим модулям.

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

Типы выделяемой памяти:

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

· Автоматическая память - область памяти, выделяемая при вызове функции в рамках этой функции;

· Динамическая память - область памяти, выделяемая во время работы программы.

Задача 1.1 Станция

Задача 1.2 Беспрерывный ввод чисел с клавиатуры

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

Модуль 2

Большинство программ на языке C++ используют типы данных, представленные в табл. 1.

Таблица 1. Базовые типы данных языка С++

Таблица 2. Базовые операторы языка С++

Операции

Краткое описание

=

Присваивание

+/?

Сложение / Вычитание

++

Увеличение на 1

??

Уменьшение на 1

+=

Сложение с присваиванием

?=

Вычитание с присваиванием

?=

Умножение с присваиванием

/=

Деление с присваиванием

n++

Постфиксный инкремент

++n

Префиксный инкремент

n??

Постфиксный декремент

??n

Префиксный декремент

&&

Логическая операция "И"

||

Логическая операция "ИЛИ"

!

Логическое отрицание

==

Проверка на равенство

!=

Проверка на неравенство

enum

Перечисление

Тип char служит для определения символьных переменных и строк. Символьная переменная - это один символ, заключенный в одинарные кавычки, например: 'а', '+', '&'. Строка символов в языке C++ - это массив символов, заканчивающийся нуле­вым байтом. Конец символьной строки (нулевой байт) обозначается символом NULL ('\0'). Строки символов заключаются в кавычки, например: "Строка символов".

Чтобы использовать переменную в программе, ее нужно объявить - указать тип переменной и ее имя. Оператор объявления переменных языка C++ в общем виде выглядит так: тип переменной, имя 1,..., имяN;

Например: int i; float x,y,z; char c,s [64];

При таком объявлении с - это символьная переменная (хранит один символ), a s [64] - это строка символов (массив символов).

Задача 2.1

Вывести на экран строку размером в 50 символов, подсчитать количество элементов без пробелов, отдельно подсчитать пробелы. Нужно использовать, например, Char [50], символы вводить с клавиатуры, вывод это printf соотвественно, а чтобы считать из потока ввода нужно использовать fgets(someString, <sizeOfString>, stdin)

#include <iostream>

#include <locale>

#include <stdio.h>

#include <stdlib.h>

using namespace std;

int main()

{

setlocale(LC_CTYPE,"Russian");

int probels = 0;

char Char [50];

srand(time(NULL));

for (int i=0; i<50; i++)

{

int symbol_id;

if(rand() %2)

symbol_id='a'+(rand() %26);

else

symbol_id=' ';

Char [i]= symbol_id;

printf(" %c", Char [i]);

if (Char [i]== ' ') probels++;

}

printf("\n");

printf("probelov: %d",probels);

return 0;

}

Результат:

Задача 2.2

Заполните двумерный массив размером 40 элементов рандомными значениями, нужно определить количество четных чисел, нечетных и подсчитать сумму всех значений в массиве. Необходимо использовать функцию rand() которая определена в заголовочном файле <stdlib.h> если выбираете C++ то библиотека <cstdlib>.

#include <iostream>

#include <locale>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

using namespace std;

#define N 4

int main()

{

setlocale(LC_CTYPE,"Russian");

srand(time(NULL));

int array [N] [N];

for (int i=0; i<N; i++)

{

for(int j=0; j<N; j++)

{

array [i] [j]= rand() %100;

printf("A [ %d] [ %d]= %d \t", i,j,array [i] [j]);

}

printf("\n");

}

printf("\n");

int cnt_chet=0, cnt_nechet=0,summa=0;

for(int i=0; i<N; i++)

{

for(int j=0; j<N; j++)

{

if((array [i] [j] %2)== 0)

cnt_chet++;

else

cnt_nechet++;

summa+=array [i] [j];

}

} printf("chetnyh chisel: %d; Nechetnyh chisel: %d; summa vseh chisel: %d", cnt_chet, cnt_nechet, summa);

return 0;

}

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

Модуль 3

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

Каждая функция в языке Си должна быть определена, то есть должны быть указаны:

· тип возвращаемого значения;

· имя функции;

· информация о формальных аргументах;

· тело функции.

В языке Си нельзя определять одну функцию внутри другой.

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

· тип возвращаемого значения;

· имя функции;

· типы формальных аргументов в порядке их следования.

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

Общий вид вызова функции:

Переменная = ИмяФункции(СписокФактическихАргументов);

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

· return(ВозвращаемоеЗначение);

· return ВозвращаемоеЗначение;

Разбиение программ на функции дает следующие преимущества:

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

· Одну и ту же функцию можно использовать в разных программах.

· Функции повышают уровень модульности программы и облегчают ее проектирование.

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

enum - это тип перечисление, в enum записываются константы и каждой новой константе присваивается порядковый номер.

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

struct Name

{

type atrib;

// остальные элементы структуры

} structVar1, structVar2,...;

Объявление структуры всегда должно начинаться с ключевого слова struct. Необязательно, чтобы структура имела имя, но тогда такая структура обязательно должна иметь структурные переменные, объявленные между закрывающей фигурной скобкой и точкой с запятой, строка 5. Обязательно в объявлении структуры должны присутствовать фигурные скобочки, они обрамляют тело структуры, в котором объявляются её атрибуты (элементы), строка 3. Структурные переменные, при объявлении структуры, указывать необязательно, строка 5.

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

struct_name structVariable;

Задача 3.1

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

Задача 3.2

Создайте свой тип, структуру, которая будет включать в себя базовые типы, используя одну из выше перечисленных задач, задайте поля структуре. Как пример, расписание имеет время(дату), день недели, и что нужно сделать. Т.е struct SheduleOfWeek {int time; char [50] whatToDo; enum/int dayOfWeek;}

#include <iostream>

#include <cstring>

#include <locale>

#include <cstdlib>

#include <stdio.h>

using namespace std;

struct SheduleOfWeek {

int time;

char whatToDo [100];

int dayOfWeek;

};

int main() {

setlocale(LC_CTYPE, "Russian");

SheduleOfWeek Day1;

SheduleOfWeek Day2;

// day 1 specification

Day1.time = 16;

strcpy(Day1.whatToDo, "Защитить РГР");

Day1.dayOfWeek = 4;

// day 2 specification

Day2.time = 15;

strcpy(Day2.whatToDo, "Защитить курсовую");

Day2.dayOfWeek = 3;

// Print Day1 info

cout " "День 1 Время: " " Day1.time " endl;

cout " "День 1 Задание: " " Day1.whatToDo " endl;

cout " "День 1 День недели: " " Day1.dayOfWeek " endl;

cout " "\n" " endl;

// Print Day2 info

cout " "День 2 Время: " " Day2.time " endl;

cout " "День 2 Задание: " " Day2.whatToDo " endl;

cout " "День 2 День недели: " " Day2.dayOfWeek " endl;

return 0;

}

==========

#include <iostream>

#include <locale>

using namespace std;

// Define the enum data type Days

enum Days

{

Monday = 0,//Monday Понедельник = 0

Tuesday,//Tuesday Вторник = 1

Wednesday,//Wednesday Среда = 2

Thursday,//Thursday Четверг = 3

Friday,//Friday Пятница = 4

Saturday,//Saturday Суббота = 5

Sunday//Sunday Воскресенье = 6

};

int main(void)

{

setlocale(LC_CTYPE, "Russian");

Days WhatDay = Friday;

switch (WhatDay)

{

case 0:

cout " "1 > Понедельник" " endl;

break;

case 1:

cout " "2 > Вторник" " endl;

break;

case 2:

cout " "3 > Среда" " endl;

break;

case 3:

cout " "4 > Четверг" " endl;

break;

case 4:

cout " "5 > Пьятница" " endl;

break;

case 5:

cout " "6 > Суббота" " endl;

break;

case 6:

cout " "7 > Воскресенье" " endl;

break;

default: cout " "День недели с другой планеты" " endl;

}

return 0;

}

Размещено на Allbest.ru

...

Подобные документы

  • История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.

    курсовая работа [28,8 K], добавлен 06.05.2014

  • Совокупность программ, используемых в работе на компьютере. Функциональное назначение программного обеспечения, правовые нормы его использования. Операционная система и сервисные программы. Разработка компьютерных программ на языке программирования.

    презентация [5,0 M], добавлен 10.10.2016

  • Особенности работы с процедурами и двумерными массивами, последовательность вызова процедур. Способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним. Набор программы, ее отладка и тестирование данных.

    лабораторная работа [112,1 K], добавлен 03.10.2010

  • Изучение и анализ функциональных возможностей СУБД. Структура языка реляционных БД SQL (Structured Query Language). Типы данных SQL. Операторы DDL - операторы определения объектов базы данных. Примеры использования операторов манипулирования данными.

    курсовая работа [39,6 K], добавлен 21.07.2012

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива.

    курсовая работа [1,7 M], добавлен 06.01.2014

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

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

    курсовая работа [717,6 K], добавлен 17.01.2013

  • Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.

    дипломная работа [276,6 K], добавлен 26.01.2011

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

    курсовая работа [441,7 K], добавлен 03.07.2011

  • Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.

    курсовая работа [1,7 M], добавлен 19.05.2014

  • Решение инженерных задач при работе с визуальными данными. Базовые структуры данных. Базовые операции над многомерными числовыми массивами. Калибровка камер, элементы восстановления пространственной структуры. Анализ движения, слежение за объектами.

    курсовая работа [4,5 M], добавлен 21.06.2011

  • Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.

    курсовая работа [454,1 K], добавлен 13.06.2014

  • Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.

    курсовая работа [20,0 K], добавлен 05.03.2015

  • Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.

    курсовая работа [233,5 K], добавлен 14.12.2012

  • Основные понятия и назначение языка программирования СИ. Скалярные типы данных. Арифметические, логические и битовые операции над переменными целочисленного, вещественного, символьного, перечислимого типов. Примеры программ, выполняющие операции над ними.

    презентация [269,9 K], добавлен 26.07.2013

  • Общие положения о курсовой работе. Цели и задачи курсового проекта, его содержание. Рекомендации к созданию программы, некоторые требования к ее работе. Пример программы "Меню". Образцы оформления титульного листа к курсовой работе и к заданию для нее.

    методичка [15,2 K], добавлен 29.11.2009

  • Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.

    контрольная работа [31,2 K], добавлен 12.12.2009

  • Создание программы на языке программирования С#, которая проверяет наличие в матрице хотя бы одного столбца, содержащего положительный элемент, поиск его номера. Упорядочивание его элементов по возрастанию. Листинг программы и инструкция по работе с ней.

    курсовая работа [1,9 M], добавлен 28.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.