- •Форматный ввод/вывод данных.
- •1.Форматный вывод
- •2.Форматный ввод .
- •Операции языка с.
- •Лабораторная работа №1 Данные. Типы данных. Приведение типов. Циклы Теоретическая часть Типы данных
- •Оператор sizeof
- •Преобразования типов.
- •Примеры программ
- •Задание на лабораторную работу № 1
- •Операторы организации условных и безусловных переходов.
- •If (проверка_условия) инструкция_1; else инструкция_2;
- •Примеры программ
- •Задание на лабораторную работу № 2
- •Массивы.
- •Строки символов.
- •Структуры.
- •Оператор typedef.
- •Битовые поля.
- •Смеси (объединения).
- •Перечисляемый тип данных.
- •Примеры программ
- •Задание на лабораторную работу № 3
- •Примеры программ
- •Классы памяти.
- •Указатели на функции.
- •Рекурсия.
- •Примеры программ
- •Задание на лабораторную работу № 5
- •Контрольные вопросы:
- •Рекомендуемая литература
Рекурсия.
Рекурсией называется такой способ вызова, когда функция обращается к самой себе. Важным моментом при составлении рекурсивной программы является организация выхода. Здесь легко допустить ошибку, заключающуюся в том, что функция будет последовательно вызывать саму себя бесконечно долго. Поэтому рекурсивный процесс должен шаг за шагом так упрощать задачу, чтобы в конце концов для нее появилось не рекурсивное решение.
Перегрузка функций в файле (только С++)
Перегрузка функций применяется для приведения поведения программы в соответствии с ее типами данных. Преимущество использования перегрузки для программиста состоит в том, что ему достаточно указать только одно имя функции, а компилятор сам возьмет на себя задачу контроля типа параметров и вызова правильной версии функции.
Пример
int max(int a, int b){
return (a > b ? a:b);
}
char* max(const char*s1, const char* s2){
return (strcmp(s1,s2) ? s1:s2);
}
int max(int a, char* s){
return (a > strlen(s) ? a : strlen(s));
}
Перегружаемые функции должны находиться в одной области определения, иначе произойдет не перегрузка, а сокрытие.
Не могут перегружаться функции, имеющие совпадающие типы и число аргументов, но разные типы возвращаемых значений.
Не могут перегружаться функции, имеющие неявно совпадающие типы аргументов, например int и int&.
Примеры программ
Пример1. Получение адреса числа, объяснение того, что в функции передаются копии значений
#include<stdio.h>
#include<conio.h>
void mikado(int bah)
{
int pooh = 10;
printf("B mikado(), pooh = %d и &pooh = %u\n", pooh,&pooh);
printf("В mikado(), bah = %d и &bah = %u", bah, &bah);
}
void main(void)
{
int pooh = 2, bah = 5;
void mikado(int bah);
clrscr();
printf("В main(), pooh =%d и &pooh = %u\n", pooh, &pooh);
printf("В main(), bah = %d и &bah = %u\n", bah, &bah);
mikado(pooh);
getch();
}
Пример2. Обмен значений переменных
#include <stdio.h>
#include <conio.h>
int interchange (int *u, int *v);
void main (void)
{
int x=5,y=10;
clrscr();
printf("В начале x=%d и &x=%u, y=%d и &y=%u\n",x,&x,y,&y);
interchange(&x,&y);
printf("Теперь x=%d, y=%d\n",x,y);
}
interchange (int *u,int *v)
{
int temp;
temp =*u;
*u=*v;
*v=temp;
return (0);
}
Задание на лабораторную работу № 5
Название работы: Функции.
Цель работы: Изучение способов объявления функций, классов памяти функций, рекурсии, перегрузки функций в файле.
1. Напишите функцию, возводящую число (целое число) в степень (целое число).
Контрольные вопросы:
Объявление функций.
Определение функций.
Вызов функций.
Классы памяти функций.
Указатели на функцию.
Рекурсия, перегрузка функций в файле.
Рекомендуемая литература
Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих. - М.: Мир, 1988.- 512 с.
Б. Керниган, Д. Ритчи. Язык программирования Си. - М.: Финансы и статистика, 1992.
Скляров В.А. Программирование на языках С и С++: Практ пособие. – М.: Высш. шк., 1996. – 240 с: ил.
Вирт Н. Алгоритмы + структуры данных = программы. -М.: Мир, 1985 г.