한송이 ¶
1.동적할당하는 방법
포인터 변수 = (형변환)malloc(sizeof(자료형)
2.Swap 짜보기#include <stdio.h> #include <iostream> int swap(int *a, int* b); int main(){ int a,b; a=5; b=10; swap(&a,&b); printf("%d %d\n",a,b); return 0; } int swap(int *a, int *b) { int temp; temp=*a; *a=*b; *b=temp; return 0; }
3.call by value, 에 관해 설명하고, 그것이 정확히 어떤 것인지, 어떤 문제가 생기는지 서술.
9.Overloading이란?
call by value
가인수의 값이 바뀌더라도 실인수의 값은 변하지 않는다
주소 값을 복사해서 전달하는 방식을 콜 바이 레퍼런스라고 한다.
4.Linked List 삽입, 탐색을 짜고, 함수화해보세요.가인수의 값이 바뀌더라도 실인수의 값은 변하지 않는다
값의 복사에 의해서 전달하는 방식
Call by Reference주소 값을 복사해서 전달하는 방식을 콜 바이 레퍼런스라고 한다.
Reference 주소라고 생각하면 된다.
난 Linked List가 매우 어렵다
5.Struct란?서로 다른 유형의 변수들을 새로운 하나의 자료형으로 묶어서 정의한 것
6.Object Oriented Programming에 관해서 설명해보세요.struct 구조체이름
{
변수 선언;
배열 및 포인터도 선언 가능;
구조체도 선언 가능;
};배열 및 포인터도 선언 가능;
구조체도 선언 가능;
객체를 기본 단위로 하는 프로그래밍의 방법
7.객체지향의 특성에 관해서 찾아보고, 서술해보세요.절차형 언어(C,pascal 등)의 크고 복잡한 프로그램을 작성하기 어려운 문제점 해결을 위해 개발
C++,JAVA,C#
C++,JAVA,C#
캡슐화
8.Class란?(책참조)중요하고 세부적인 구현 방법은 캡슐 안에 넣는 방법
데이터와 행위는 보이지 않게 숨기고, 외부에서는 인터페이스와 최종 결과만을 드러남
추상화 데이터와 행위는 보이지 않게 숨기고, 외부에서는 인터페이스와 최종 결과만을 드러남
복잡한 개념이나 사물의 필수적인 특징으로 표현하는 방법
추상화를 통해서 객체가 가진 특성 중 필수 속성만으로 객체를 표현
상속추상화를 통해서 객체가 가진 특성 중 필수 속성만으로 객체를 표현
클래스의 기능을 확장하는 방법중의 하나
기존 클래스를 수정하지 않고, 정의되어 있는 내용을 확장사용
다형성기존 클래스를 수정하지 않고, 정의되어 있는 내용을 확장사용
외부에서 보이는 모습은 한가지 형태지만, 실질적으로 쓰이는 기능은 여러 가지 역할을 수행
가상함수, 템플릿, 오버로딩 등의 방법을 이용해 다형성 제공
가상함수, 템플릿, 오버로딩 등의 방법을 이용해 다형성 제공
같은 속성, 공통의 행위, 공통의 관계성 같은 의미를 가지는 객체들의 집합으로 이루어지는 것이 일반적
class 이름
{
{
액세스지정:
멤버변수;
멤버함수;
.....
멤버변수;
멤버함수;
.....
};
함수명이 동일하더라도 매개 변수가 다르면 C언어에서와는 다르게 다른 함수로 인식하는 것이다
10.public과 private에 관해서 알아봅시다.함수 오버로딩의 조건
->매개변수정보 즉 갯수나 타입이 달라야한다.
이유 : 호출할 함수를 매개 변수의 정보까지 참조해서 호출 한다.
이유 : 호출할 함수를 매개 변수의 정보까지 참조해서 호출 한다.
public은 공용부분
->객체 외부에서 사용될 수 있는 자료나 함수가 정의
->클래스 정의 시 키워드 private이 생략되면 public 키워드가 나올 때까지의 부분을 전용멤버로 간주
private은 전용부분->클래스 정의 시 키워드 private이 생략되면 public 키워드가 나올 때까지의 부분을 전용멤버로 간주
-> private 영역에서 정의된 자료형이나 함수는 오직 해당 객체 내부의 멤버함수만이 사용
->외부에 대해 자료의 정보가 은폐
->전용부분에는 함부로 변경되어서는 안될 자료와 객체 외부에서 호출되어서는 안될 멤버함수를 정의
->외부에 대해 자료의 정보가 은폐
->전용부분에는 함부로 변경되어서는 안될 자료와 객체 외부에서 호출되어서는 안될 멤버함수를 정의
도상희 ¶
1.동적할당하는 방법
int* a = (int*)malloc(sizeof(int));
int* a = (int*)malloc(sizeof(int));
2.Swap 짜보기
#include <stdio.h> void swap(int*,int*); int main(){ int a, b; a=3; b=5; printf("swap전-> a: %d, b: %d\n",a,b); swap(&a,&b); printf("swap후-> a: %d, b: %d\n",a,b); return 0; } void swap(int* a, int*b){ int temp; temp=*a; *a=*b; *b=temp; }
3.call by value, call by reference에 관해 설명하고, 그것이 정확히 어떤 것인지, 어떤 문제가 생기는지 서술.
Call by Value
-값에 의한 호출, 값을 복사해서 넘겨준다.
-변수에 변화가 없어야 하는 경우 사용한다.
Call by Value
-값에 의한 호출, 값을 복사해서 넘겨준다.
-변수에 변화가 없어야 하는 경우 사용한다.
Call by Reference
-참조에 의한 호출, 주소값을 넘겨준다.
-변수에 변화를 원할 경우 사용한다.
-참조에 의한 호출, 주소값을 넘겨준다.
-변수에 변화를 원할 경우 사용한다.
4.Linked List 삽입, 탐색을 짜고, 함수화해보세요.
-오늘중으로 수정할게요!
-오늘중으로 수정할게요!
5.Struct란?
하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의하는 것이다.
C++에서 struct의 기본 접근자가 public, 클래스는 private이다.
하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의하는 것이다.
C++에서 struct의 기본 접근자가 public, 클래스는 private이다.
6.Object Oriented Programming에 관해서 설명해보세요.
프로그램을 단순한 명령어와 함수라는 개념에서 벗어나 여러 개의 독립 단위를 생성, 객체들의 모임으로 프로그래밍 하는 기법, 각각의 객체들은 메시지를 주고 받을 수 있으며, 데이터를 유연하게 처리 할 수 있게 된다.
프로그램을 단순한 명령어와 함수라는 개념에서 벗어나 여러 개의 독립 단위를 생성, 객체들의 모임으로 프로그래밍 하는 기법, 각각의 객체들은 메시지를 주고 받을 수 있으며, 데이터를 유연하게 처리 할 수 있게 된다.
7.객체지향의 특성에 관해서 찾아보고, 서술해보세요.
객체지향 프로그래밍의 주요 특성들로 캡슐화, 상속 및 다형성을 들 수 있다. 캡슐화는 정보 은닉 또는 추상화 개념으로 해석될 수 있으며, 상속은 코드 재사용과 연관이 있다. 다형성은 상속의 개념 속에서 하나의 이름으로 여러 가지로 해석되는 것을 의미한다.
객체지향 프로그래밍의 주요 특성들로 캡슐화, 상속 및 다형성을 들 수 있다. 캡슐화는 정보 은닉 또는 추상화 개념으로 해석될 수 있으며, 상속은 코드 재사용과 연관이 있다. 다형성은 상속의 개념 속에서 하나의 이름으로 여러 가지로 해석되는 것을 의미한다.
8.Class란?(책참조)
문법적으로 보았을 때 클래스는 구조체와 거의 같은 개념이다. 다만 클래스를 사용할 때는 함수까지도 멤버로 넣어서 사용한다는 점이 다르다. 관련된 변수와 함수들을 하나의 가방에 모아놓은 것이 클래스다. 구조체와 마찬가지로 클래스도 사용자 정의 타입을 만들 수 있다. 다시 말해서 우리가 어떤 클래스를 만들어서 정의하면, 그 클래스는 새로운 타입이 되는 것이다.
문법적으로 보았을 때 클래스는 구조체와 거의 같은 개념이다. 다만 클래스를 사용할 때는 함수까지도 멤버로 넣어서 사용한다는 점이 다르다. 관련된 변수와 함수들을 하나의 가방에 모아놓은 것이 클래스다. 구조체와 마찬가지로 클래스도 사용자 정의 타입을 만들 수 있다. 다시 말해서 우리가 어떤 클래스를 만들어서 정의하면, 그 클래스는 새로운 타입이 되는 것이다.
9.Overloading이란?
C++은 같은 함수 이름으로 두 가지 이상의 정의를 가질 수 있다. 이것은 다양한 상황에서 직관적으로 호감이 가는 이름을 재사용할 수 있는 것을 의미한다. 같은 함수 이름으로 두 가지 이상의 함수정의가 주어지는 것을 함수 이름 오버로딩(overloading)이라 부른다.
C++은 같은 함수 이름으로 두 가지 이상의 정의를 가질 수 있다. 이것은 다양한 상황에서 직관적으로 호감이 가는 이름을 재사용할 수 있는 것을 의미한다. 같은 함수 이름으로 두 가지 이상의 함수정의가 주어지는 것을 함수 이름 오버로딩(overloading)이라 부른다.
10.public과 private에 관해서 알아봅시다.
public : 모든 곳으로부터의 접근을 허용한다.
private : 자신의 멤버 함수 외에는 접근할 수 없다.
public : 모든 곳으로부터의 접근을 허용한다.
private : 자신의 멤버 함수 외에는 접근할 수 없다.
11. Koistudy 126~130번, 146번, 148번, 149번
126
#include <iostream> using namespace std; int main(){ int n, i, min, min_n=0, max, max_n=0; int arr[10000]; cin>>n; for(i=0 ; i<n ; i++){ cin>>arr[i]; } min=arr[0]; max=arr[0]; for(i=0 ; i<n ; i++){ if(min>arr[i]){ min=arr[i]; min_n=i; } if(max<arr[i]){ max=arr[i]; max_n=i; } } cout<<max_n+1<<" : "<<max<<endl; cout<<min_n+1<<" : "<<min<<endl; return 0; }
-다른 문제도 오늘 중으로 올릴게요!