본문 바로가기

프로그래밍 공부방

Workbook Chap 5. 클래스 과제 1. 과일 가게의 재고 관리 프로그램을 작성하려 한다. 과일을 올려 놓을 선반을 클래스로 작성하시오. 실습목표 주어진 과제를 해결하기 위해 클래스를 설계할 수 있다. 요구사항 *선반의 칸을 클래스로 작성한다. *선의 칸에 표시할 정보는 제품명, 무게, 수량이다. *생성자를 호출하면 제품명은 빈 선반으로 표시하고 무게와 수량은 0으로 초기화된다. *선반에 물건을 올리는 것을 구현한다. *선반에서 물건을 내리는 것을 구현한다. 보관된 양보다 내리려는 양이 더 많으면 작업을 수행하지 않고 -1을 반환하여 오류임을 알린다. 물건을 내리고 재고가 0이 되면 제품명과 무게를 초기화한다. -> 교재에 정확하게 묘사되어 있지 않아서 한꺼번에 내리는 방식으로 수정 힌트 *객체의 내용을 기술해보고 명사와 동사를 분리.. 더보기
Workbook Chap 4. 자바의 기본 문법(3) 과제 1. 배열의 값을 오름차순으로 정렬하여 출력하시오. 실습목표 주어진 과제를 다중 for문을 사용하여 해결할 수 있다. 요구사항 *정렬할 데이터를 배열로 만든다. (3, 24, 1, 55, 17, 43, 5) *다중 for문을 사용하여 버블 정렬 알고리즘을 구현한다. *정렬 알고리즘은 버블정렬을 사용한다. *배열의 값이 정렬되는 과정을 출력한다. 힌트 *버블 정렬은 주어진 배열에서 두 개의 인접한 요소의 값을 비교하여 위치를 서로 교환한다. *배열 A에서 n개의 데이터를 오름차순으로 정렬하는 단계 1) 제 1단계 : 배열 내에서 가장 큰 데이터가 배열의 마지막 자리에 위치 배열의 인접한 두 데이터 A[i]와 A[i+1]을 비교, 왼쪽의 데이터인 A[i]가 더 크다면 두 데이터의 위치를 교환 다음은 두.. 더보기
Workbook Chap 3. 자바의 기본 문법(2) 과제 1. 입력된 숫자가 소수인지를 판단하고 그 결과를 화면에 출력한다. 실습목표 주어진 과제를 while문과 if else 문을 사용하여 해결할 수 있다. 요구사항 *while문을 사용해 반복해서 연산한다. *소수가 아닌 조건에 만족한다면 boolean형 변수를 사용하여 그 결과를 저장하고 break문을 사용해 while을 벗어난다. *while문을 벗어난 뒤 boolean형 변수의 값으로 입력된 숫자가 소수인지 아닌지를 판단하여 결과를 화면에 출력한다. 힌트 *소수는 1과 자신만을 약수로 가지는 수를 말한다. *소수를 구하는 방법 : 2부터 입력된 숫자의 1/2에 해당하는 값으로 나머지 연산을 하여 나머지가 0인 숫자가 존재한다면 입력된 숫자는 소수가 아니다. *boolean형 변수의 값이 TRUE이.. 더보기
Workbook Chap 2. 자바의 기본 문법(1) 과제 1. 주어진 반지름과 원주율을 사용해 원의 둘레를 계산해 출력하고 높이와 폭을 사용해 사각형의 넓이를 출력해보자. 실습목표 주어진 데이터를 처리하기 위해 적절한 데이터형의 변수, 연산자를 사용할 수 있다. 요구사항 *원의 반지름은 int형 변수를 사용하여 선언하고 2005로 초기화 한다. *원주율을 저장할 변수는 float형을 사용한다. *원의 넓이는 float형 변수에 저장하고 System.out.println() 메서드를 사용해 출력한다. *사각형의 높이와 폭은 각각 20050905와 20050918을 사용한다. *사각형의 높이는 저수형 변수에 저장하고 계산식에서 캐스팅을 사용하지 않는다. 힌트 *원주율 : 3.14 *원둘레 : 반지름 * 2 * 원주율 *사각형의 넓이 : 높이 * 폭 *사각형의.. 더보기
C Programming - 1.4 프로그램의 구동 컴파일, 연결 과정을 통해 생성된 실행 파일은 운영체제의 로더(loader)에 의해서 메모리에 적재된다. 또한 실행 파일에 대해 하나의 프로세스 주소공간을 갖도록 메모리 공간을 잡아준다. 왜나하면 여러 개의 프로그램이 동시에 수행하는 멀티태스킹(multitasking) 운영체제에서는 하나의 실행 프로그램을 하나의 프로세스(process)로 간주해서 관리하기 떄문이다. 이 때 프로세스 주소 공간은 다음과 같이 논리적으로 4개의 영역으로 구분 되는 메모리 영역을 갖는다. 1. 텍스트 세그먼트(text segment) : 프로그램 실행에 필요한 기계 코드가 실제로 저장되는 공간 2. 데이터 세그먼트(data segmant) : 전역변수(global variable)나 정적 변수(static variable)가.. 더보기
C Programming - 1.3 링커 C 프로그램 원시파일(.c로 끝나는 코드 파일)을 컴파일 전에 전처리기에서 헤더 파일의 정보를 추가해주면, 기계어로 번역된 목적파일로 바꾸어준다. 그렇지만 목적 파일에서는 라이브러리 함수 호출들이 필연적으로 포함되어 있기 때문에 컴파일 과정에서 컴파일러가 이러한 라이브러리 함수의 이름을 기억해두면 링커(linker)가 이미 컴파일 되어있는 표준 라이브러리 파일*에서 이름에 해당되는 목적 코드를 찾아 사용자가 작성한 코드와 조합시켜준다. 이러한 과정을 연결(linking)이라고 한다. 링커는 이러한 연결 작업을 독립적으로 컴파일 된 여러 개의 목적 코드를 하나의 프로그램으로 연결 완성하는 기능을 수행한다. * 표준 라이브러리 파일 : 시스템 제공 라이브러리, 상용 라이브러리, 사용자 작성 라이브러리 등이 .. 더보기
C Programming - 1.2 컴파일러 소프트웨어를 작성하기 위해 사용하는 언어를 프로그래밍 언어라고 한다. 프로그래밍 언어는 크게 기계어(machine language), 어셈블리 언어(assembly language), 고급 언어(high-level language)로 구분된다. 기계어는 0과 1을 축약한 16진수로 표현되기 때문에 인간이 알아보기 무척 어려울뿐더러 프로세세의 종류에 따라 코드의 의미가 다르게 해석되기 때문에 호환이 되지 않는다. 어셈블리 언어는 명령어와 심볼을 사용하여 기계어보다는 이해하기가 다소 수월하지만 고급언어에 비할 정도는 아니다. 이러한 언어들은 하드웨어의 동작과 기능에 맞춰 프로그램 코드를 작성해야하는 단점이 있다. 반면에 고급언어로 작성된 프로그램은 인간이 알아보기 친숙하기 때문에 배우기 쉬우며 컴퓨터의 기.. 더보기
C Programming - 1.1 컴퓨터 시스템 구조 일반적인 컴퓨터는 CPU를 중심으로 메모리(RAM/ROM) 비디오카드(VGA), 하드디스크(HDD), 입/출력 장치 등으로 구성 되는데, 이러한 하드웨어 장치를 구동하기 위해서는 소프트웨어가 필요하다. 컴퓨터의 전원이 켜지면 부팅(booting, 컴퓨터의 모든 하드웨어 장치를 제어하고 사용자의 컴퓨터 사용을 돕는 소프트웨어, 즉 운영체제를 메모리에 읽어내는 과정) 과정이 진행되는데 메모리로 읽어들이는 장치 드라이버나 윈도우즈(Windows), 리눅스(Linux)등의 운영체제들까지 모두 C 언어로 개발되었다는 점에서 C 프로그래밍의 의미가 매우 크다고 할 수 있다. 프로그래머가 만든 C 프로그램은 모두 운영체제가 제공하는 API(Application Programming Interface, 사용자가 만든 .. 더보기