Difference between revisions of "컴퓨터프로그래밍및실습"

From DISLab
Jump to navigation Jump to search
Tag: Replaced
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== 개요 ==
* [[컴퓨터프로그래밍및실습 (2022년)]]
=== 대상 ===
한국외국어대학교 정보통신공학과 2학년


== 교재 ==
# 절대 JAVA - 자바프로그래밍의 기초부터 안드로이드까지 (강환수, 조진형) INFINITY BOOKS
# 배포하는 강의자료
== 실습 사이트 ==
* [https://hufs.goorm.io/teach/lecture/32013/정보통신공학과-컴퓨터프로그래밍및실습-2022년-2학기-박상원 구름(Goorm) 사이트]를 활용한 실습 및 과제
== 참고 자료 ==
=== 실습 도구 ===
==== Java compiler ====
* 두 가지 버전이 필요합니다. Karel을 이용한 실습을 위하여 [https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html Java SE 1.6] 버전이 필요합니다.
* 그 외의 실습을 위하여 [https://www.oracle.com/java/technologies/downloads/archive Java SE 1.7 이후 버전]이 필요합니다.
* JAVA_HOME 환경 변수 설정 (예: JAVA_HOME, C:\Program Files\Java\jdk-11.0.8)
** Windows 10의 경우 다음 메뉴를 선택하여 환경 변수 설정함 : 설정 / 정보 / 고급 시스템 설정 / 환경 변수
[[File:환경변수설정1.jpg|500px|top]]
[[File:환경변수설정2.jpg|300px|top]]
[[File:환경변수설정3.jpg|300px|top]]
[[File:환경변수설정JAVA_PATH.jpg|500px|top]]
==== Visual Studio Code (vscode) ====
* 설치
** [https://code.visualstudio.com/ vscode 다운로드]  - 본인의 운영체제에 해당하는 것을 다운로드하여 설치합니다.
* Extension 설치
** vscode를 설치한 다음 확장 메뉴(Ctrl-<shift>-X)를 선택하여 Extension 설치합니다.
** Vscode에서 설치해야 할 Extensions
*** Java를 위한 확장들
**** Extension Pack for Java
**** Debugger for Java
**** Language Support for Java(TM) by Red Hat
**** Project Manager for Java
*** 한국어 메뉴 지원
**** Korean Language Pack for Visual Studio Code
*** 프로젝트 관리
**** IntelliCode
**** Maven for Java
**** Maven dependency explorer
*** Unified Modeling Language(UML) 지원
**** PlantUML
**** PlantUML Previewer
**** PlantUML Grammer
*** Windows Subsystem for Linux (WSL) 지원
**** Remote - WSL
== 강의 자료 ==
=== 1주차 - 오리엔테이션 ===
==== 1교시 Java와 프로그래밍의 중요성 ====
* 오리엔테이션 - 강의 방법, 강의 내용
*도구로서의 프로그래밍 언어
**조각가 로댕의 예술 작품은 무엇인가?
**조각가 로댕의 도구는 무엇인가?
* 구름 사이트 가입 방법
** 가입한 후 이름, 학번, 학과를 반드시 기입할 것. 이름에 학번, 학과 등을 붙이지 말 것.
** 이름의 적절한 예 : 홍길동, 부적절한 예 : 홍길동_2022012345
==== 2교시 실습 환경 구축 (각자 노트북을 가져올 것) ====
*Java 설치법
*Vscode 설치법
==== 3교시 기본 예제 프로그램 및 설명 ====
[[File:Week01.FirstClass.java.png|thumb|FirstClass]]
# 첫 번째 Java 프로그램 @ [https://www.amazon.com/Java-Programming-Language-4th/dp/0321349806 The Java Programming Language (Ken Arnold, '''James Gosling''', David Holmes)]<syntaxhighlight lang="java">
public class FirstClass {
    public static void main(String[] args) {
        System.out.println("hello");
    }
}
</syntaxhighlight>[[File:OS 계통도.png|thumb|운영체제 계통도]]
# 첫 번째 C 프로그램  @ [https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?crid=1G1CYHDA4ZI1T&keywords=the+c+programming+language&qid=1657084498&s=books&sprefix=The+C+programm%2Cstripbooks-intl-ship%2C257&sr=1-1 The C Programming Language (Brian W. Kernighan, '''Dannis M. Ritchie''')] - Unix의 창시자<syntaxhighlight lang="c">
#include <stdio.h>
int main()
{
    fprintf(stdio, "hello\n");
}</syntaxhighlight>
#* C/C++ Extension 설치
#* [https://code.visualstudio.com/docs/cpp/config-mingw MinGW-w64 설치]<syntaxhighlight lang="text">
$ pacman -Syu  // 설치 후 실행
$ pacman -Syu  // Run "MSYS2 MSYS" from Start menu.
$ pacman -S --needed base-devel mingw-w64-x86_64-toolchain</syntaxhighlight>
#* Path에 C:\msys64\mingw64\bin 등록함
#* vscode 실행<syntaxhighlight lang="msdos">
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .</syntaxhighlight>
#* Build [[File:Vscode에서 mingw64로 빌드.png|thumb|mingw64 g++ build]]
#** 터미널 / 작업 실행 선택
#* 실행 : 터미널에서 직접 helloworld.exe를 실행한다.
# 첫 번째 C++ 프로그램 @ [https://www.amazon.com/Programming-Language-hardcover-4th/dp/0321958322/ref=sr_1_1?crid=F2JY4HN7ARX1&keywords=the+c%2B%2B+programming+language&qid=1657084583&s=books&sprefix=the+c%2B%2B+programming+language%2Cstripbooks-intl-ship%2C226&sr=1-1 The C++ Programming Language ('''Bjarne Stroustrup''')]<syntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
int main()
{
    cout << "hello" << endl;
}</syntaxhighlight>
* Unix에서 프로세스가 만들어지면 생성되는 세 개의 파일. 모든 프로세스는 세 개의 파일이 열려(open)있다.
** Standard input, standard output, standard error
** Standard output 예제<syntaxhighlight lang="c">#include <stdio.h>
#include <fcntl.h>
int main()
{
    int fd;
    char buf[10];
   
    strcpy(buf, "hello\n");
    fd = open("stdoutput.c", O_RDONLY);
    printf("%d\n", fd);
    write(1, buf, sizeof(buf));
}</syntaxhighlight>
** 실행 결과<syntaxhighlight lang="text">
3
hello</syntaxhighlight>
==== 4교시 HUFS Karel 프로그래밍 ====
pom.xml을 다음과 같이 수정한다.
<syntaxhighlight lang="xml">
...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
  </properties>
  <dependencies>
    ...
    <dependency>
      <groupId>hufs.karel</groupId>
      <artifactId>oopkarel3</artifactId>
      <version>3.0</version>
    </dependency>
  </dependencies>
...
</syntaxhighlight>
첫 번째 HUFS Karel 프로그램
[[File:HKarel 초기 화면.png|thumb|첫 번째 HUFS Karel 실행 화면]]
<syntaxhighlight lang="java">
package cp.week01;
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;
public class FirstHKarelProgram extends HufsProgram {
    @Override
    protected void onStart() {
        HKarel karel = (HKarel)getHObject("철수");
        karel.move();
        karel.move();
    }
    public static void main(String[] args) {
        HufsProgram.main(args, new HKarel("철수"));
    }
   
}
</syntaxhighlight>
두 번째 HUFS Karel 프로그램
[[File:SecondHKarelProgram 실행 화면.png|thumb|SecondHKarelProgram 실행 화면]]
[[File:SecondHKarelProgram 에러 화면.png|thumb|SecondHKarelProgram 실행할 경우 발생하는 오류]]
<syntaxhighlight lang="java">
package cp.week01;
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;
public class SecondHKarelProgram extends HufsProgram {
    HKarel karel;
    @Override
    protected void onInit() {
        karel = new HKarel("철수", 5, 5);
        karel.setColor(BLUE);
        karel.setColorOfBody(YELLOW);
        karel.setColorOfFoot(GREEN);
        karel.setColorOfMouth(RED);
        add(karel);    // 생성한 HKarel을 월드에 추가
    }
    @Override
    protected void onStart() {
        while (true) {
            if (karel.frontIsBlocked())
                karel.turnLeft();
            karel.move();
        }       
    }
   
    public static void main(String[] args) {
        HufsProgram.main(args, null);
    }
}
</syntaxhighlight>
[[File:SecondHKarelProgram 실행 화면 2.png|thumb|수정한 SecondHKarelProgram 실행 화면]]
두 번째 HUFS Karel 프로그램 수정 버전 - 생성한 객체를 월드에 추가해야 나타남
<syntaxhighlight lang="java">
package cp.week01;
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;
public class SecondHKarelProgram extends HufsProgram {
    HKarel karel;
    @Override
    protected void onInit() {
        karel = new HKarel("철수", 5, 5);
        karel.setColor(BLUE);
        karel.setColorOfBody(YELLOW);
        karel.setColorOfFoot(GREEN);
        karel.setColorOfMouth(RED);
        add(karel);    // 생성한 HKarel을 월드에 추가
    }
    @Override
    protected void onStart() {
        while (true) {
            if (karel.frontIsBlocked())
                karel.turnLeft();
            karel.move();
        }       
    }
   
    public static void main(String[] args) {
        HufsProgram.main(args, null);
    }
}
</syntaxhighlight>
=== 2주차 ===
=== 3주차 ===
=== 4주차 ===
=== 5주차 ===
=== 6주차 ===
=== 7주차 ===
=== 8주차 - 중간고사 ===
=== 9주차 ===
=== 10주차 ===
=== 11주차 ===
=== 12주차 ===
=== 13주차 ===
=== 14주차 ===
=== 15주차 - 기말고사 ===
[[category:컴퓨터프로그래밍및실습]]
[[category:컴퓨터프로그래밍및실습]]

Latest revision as of 16:32, 20 July 2022