U E D R , A S I H C RSS

새싹교실/2012/AClass/2-2회차 (rev. 1.11)

새싹교실/2012/AClass/2-2회차

한송이

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, 에 관해 설명하고, 그것이 정확히 어떤 것인지, 어떤 문제가 생기는지 서술.
call by value
가인수의 값이 바뀌더라도 실인수의 값은 변하지 않는다
값의 복사에 의해서 전달하는 방식
Call by Reference
주소 값을 복사해서 전달하는 방식을 콜 바이 레퍼런스라고 한다.
Reference 주소라고 생각하면 된다.

4.Linked List 삽입, 탐색을 짜고, 함수화해보세요.
난 Linked List가 매우 어렵다

5.Struct란?
서로 다른 유형의 변수들을 새로운 하나의 자료형으로 묶어서 정의한 것
struct 구조체이름
{
변수 선언;
배열 및 포인터도 선언 가능;
구조체도 선언 가능;
};

6.Object Oriented Programming에 관해서 설명해보세요.
객체를 기본 단위로 하는 프로그래밍의 방법
절차형 언어(C,pascal 등)의 크고 복잡한 프로그램을 작성하기 어려운 문제점 해결을 위해 개발
C++,JAVA,C#

7.객체지향의 특성에 관해서 찾아보고, 서술해보세요.
캡슐화
중요하고 세부적인 구현 방법은 캡슐 안에 넣는 방법
데이터와 행위는 보이지 않게 숨기고, 외부에서는 인터페이스와 최종 결과만을 드러남
추상화
복잡한 개념이나 사물의 필수적인 특징으로 표현하는 방법
추상화를 통해서 객체가 가진 특성 중 필수 속성만으로 객체를 표현
상속
클래스의 기능을 확장하는 방법중의 하나
기존 클래스를 수정하지 않고, 정의되어 있는 내용을 확장사용
다형성
외부에서 보이는 모습은 한가지 형태지만, 실질적으로 쓰이는 기능은 여러 가지 역할을 수행
가상함수, 템플릿, 오버로딩 등의 방법을 이용해 다형성 제공

8.Class란?(책참조)
같은 속성, 공통의 행위, 공통의 관계성 같은 의미를 가지는 객체들의 집합으로 이루어지는 것이 일반적

class 이름
{
액세스지정:
멤버변수;
멤버함수;
.....
};

9.Overloading이란?
함수명이 동일하더라도 매개 변수가 다르면 C언어에서와는 다르게 다른 함수로 인식하는 것이다
함수 오버로딩의 조건
->매개변수정보 즉 갯수나 타입이 달라야한다.
이유 : 호출할 함수를 매개 변수의 정보까지 참조해서 호출 한다.

10.public과 private에 관해서 알아봅시다.
public은 공용부분
->객체 외부에서 사용될 수 있는 자료나 함수가 정의
->클래스 정의 시 키워드 private이 생략되면 public 키워드가 나올 때까지의 부분을 전용멤버로 간주
private은 전용부분
-> private 영역에서 정의된 자료형이나 함수는 오직 해당 객체 내부의 멤버함수만이 사용
->외부에 대해 자료의 정보가 은폐
->전용부분에는 함부로 변경되어서는 안될 자료와 객체 외부에서 호출되어서는 안될 멤버함수를 정의

황혜림

<동적할당하는 방법>
int *p=(int*)malloc(sizeof(int));
int **Dp=(int**)malloc(sizeof(int*));

<Swap 짜보기>
#include <stdio.h>

void swap(int *a, int *b);

int main()
{
	int c=10;
	int d=3;

	swap(&c,&d);

	printf("%d %d",c,d);

	return 0;
}

void swap(int *a, int *b)
{
	int temp;

	temp=*a;
	*a=*b;
	*b=temp;
} <call by value, call by reference에 관해 설명하고, 그것이 정확히 어떤 것인지, 어떤 문제가 생기는지 서술.>
call by reference : 주소 값을 인자로 전달하는 함수 호출이다. 함수에 인자로 값을 넘겨 호출 받은 함수가 인자를 받을 때 새로운 메모리 영역에 그 값 자체를 복사하는 것이 아니고 단지 인자로 넘어온 메모리 영역을 가리키는 포인터만 생성할 뿐이다.

call by value : 함수를 호출하면 값을 복사해서 전달한다.
예를 들어 두 변수의 값을 바꾸는 함수를 만들 경우 값을 복사해서 넘기면 (call by value) 그 함수에서만 값이 바뀌고 함수에서 빠저 나올 경우에는 원래 변수가 가지고 있던 값이 바뀌지 않고 그대로 있게 된다.
<Linked List 삽입, 탐색을 짜고, 함수화해보세요.>

<Struct란?>
정수나 실수 또는 문자열 들의 단순한 형태로 나타낼 수 없는 복잡한 데이터를 표현할 때 사용 “타입이 다른 변수들의 집합”이라고 할 수 있다.

<Object Oriented Programming에 관해서 설명해보세요.>
객체지향 프로그래밍이란 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍을 뜻한다.

<객체지향의 특성에 관해서 찾아보고, 서술해보세요.>
객체지향 프로그래밍의 주요 특성들로 캡슐화, 상속 및 다형성을 들 수 있다. 캠슐화는 정보 은닉 또는 추상화 개념으로 해석될 수 있으며, 상속은 코드 재사용과 연관이 있다. 다형성은 상속의 개념 속에서 하나의 이름으로 여러 가지로 해석되는 것을 의미한다.

<Class란?(책참조)>
클래스는 그 값을 객체라고 부르는 하나의 데이터형으로 볼 수 있다.

<Overloading이란?>
c++은 같은 함수 이름으로 두 가지 이상의 정의를 가질 수 있다. 이것은 다양한 상황에서 직관적으로 호감이 가는 이름을 재사용할 수 있는 것을 의미한다. 같은 한수 이름으로 두 가지 이상의 함수정의가 주어지는 것을 함수 이름 오버로딩이라 부른다.

<public과 private에 관해서 알아봅시다.>
private: 다음에 나오는 모든 아이템들은 제한적이라고 말할 수 있다.
제한적이라는 의미는 클래스의 멤버 함수 내부를 제외하고 다른 어떤 곳에서도 private:로 선언된 멤버 변수를 참조할 수 없음을 의미한다.
public: 이후에 모든 아이템들은 공용이라고 하며 public으로 선언된 멤버들의 사용에 따른 어떠한 제약도 존재하지 않는다.

Koistudy 126~130번, 146번, 148번, 149번
126.
#include <stdio.h>
#include <iostream>
using namespace std

int main()
{
int arr[10000];
int n;
int i;
int smallest;
int temp1=0;
int temp2=0;
int largest;

cin>>n;

for(i=0;i<n;i++)
{
cin>>arr[i];
}
smallest=arr[0];

for(i=1;i<n;i++)
{
if(arr[i]<smallest)
{
smallest=arr[i];
temp1=i+1;
}
}

largest=arr[0];
for(i=1;i<n;i++)
{
if(arr[i]>largest)
{
largest=arr[i];
temp2=i+1;
}
}
cout<<temp2<<":"<<largest<<endl;
cout<<temp1<<":"<<smallest<<endl;
return 0;
} 127.
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
	int n1,n2,n3;

	cin>>n1>>n2;
	n3=0;
	while(n1!=0){
		if(n1%2!=0)
		{
			n3=n3+n2;
		}
		n1=n1>>1;
		n2=n2<<1;
	}
	cout<<n3;

	return 0;
}

128.
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
	int n;
	
	cin>>n;
	
	while(n!=0)
	{
		cout<<n%10;
		n=n/10;
	}

	return 0;
}

129.
130.
146.
#include <stdio.h>
#include <iostream>
using namespace std;

int sum(int num);

int main(){
	int n;
	
	cin>>n;
	cout<<sum(n);
	return 0;
}

int sum(int num)
{
	if(num==1)
		return 1;
	return num+sum(num-1);	
} 148.
149.

나머지는 내일까지 꼭 해서 갈께!!!!ㅜㅜ

도상희


1.동적할당하는 방법
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 Reference
-참조에 의한 호출, 주소값을 넘겨준다.
-변수에 변화를 원할 경우 사용한다.


4.Linked List 삽입, 탐색을 짜고, 함수화해보세요.
-오늘중으로 수정할게요!


5.Struct란?
하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의하는 것이다.
C++에서 struct의 기본 접근자가 public, 클래스는 private이다.


6.Object Oriented Programming에 관해서 설명해보세요.
프로그램을 단순한 명령어와 함수라는 개념에서 벗어나 여러 개의 독립 단위를 생성, 객체들의 모임으로 프로그래밍 하는 기법, 각각의 객체들은 메시지를 주고 받을 수 있으며, 데이터를 유연하게 처리 할 수 있게 된다.


7.객체지향의 특성에 관해서 찾아보고, 서술해보세요.
객체지향 프로그래밍의 주요 특성들로 캡슐화, 상속 및 다형성을 들 수 있다. 캡슐화는 정보 은닉 또는 추상화 개념으로 해석될 수 있으며, 상속은 코드 재사용과 연관이 있다. 다형성은 상속의 개념 속에서 하나의 이름으로 여러 가지로 해석되는 것을 의미한다.


8.Class란?(책참조)
문법적으로 보았을 때 클래스는 구조체와 거의 같은 개념이다. 다만 클래스를 사용할 때는 함수까지도 멤버로 넣어서 사용한다는 점이 다르다. 관련된 변수와 함수들을 하나의 가방에 모아놓은 것이 클래스다. 구조체와 마찬가지로 클래스도 사용자 정의 타입을 만들 수 있다. 다시 말해서 우리가 어떤 클래스를 만들어서 정의하면, 그 클래스는 새로운 타입이 되는 것이다.


9.Overloading이란?
C++은 같은 함수 이름으로 두 가지 이상의 정의를 가질 수 있다. 이것은 다양한 상황에서 직관적으로 호감이 가는 이름을 재사용할 수 있는 것을 의미한다. 같은 함수 이름으로 두 가지 이상의 함수정의가 주어지는 것을 함수 이름 오버로딩(overloading)이라 부른다.


10.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;
}

127
#include <iostream>
using namespace std;
int main(){
	int a,b;
	int n1,n2,n3;
	cin>>a>>b;
	n1=a, n2=b, n3=0;

	while(1){
		if(n1%2==1){
			n3 = n3 + n2;
		}
		n1=n1>>1;
		n2=n2<<1;
		if(n1==0){
			break;
		}
	}
	cout<<n3<<endl;

	return 0;
}


128
#include <iostream>
using namespace std;
int main(){

	int num;
	cin>>num;
	do{
		cout<<num%10;
		num=num/10;
	}while(num!=0);
	
	return 0;
}

129
130

146
#include <iostream>
using namespace std;
int sum(int);
int main(){
	int num;
	cin>>num;
	cout<<sum(num);
	return 0;
}
int sum(int n){
	if(n<=1){
		return 1;
	}else{
		return n + sum(n-1);
	}
}

148
#include <iostream>
using namespace std;
void star(int);
int main(){
	int num, sum=0;
	cin>>num;
	sum=2*num-1;
	star(sum);
	return 0;
}
void star(int n){
	cout<<"*";
	if(n<=1){
		return;
	}else{
		return star(n-1);
	}
}


149
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:44
Processing time 0.0397 sec