목록프로그래밍언어 (42)
꿈 많은 사람의 이야기
펄 배열 2번째 이야기를 시작합니다. 몇몇 특징과, push, pop에 대해서 볼까해요! 먼저 아래와 같은 특징이 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @who = (qw(fred array soojin lee))[2,3]; #이런식으로 잘라서 넣을 수도 있다. print($who[0].", ".$who[1]."\n "); @fred = (7,8,9); @barney = (2,1,0); @backfred = @fred[@barney]; #barney가 2,1,0 이니까 $fred[2] 와 같은 값이 들어간다. -> 슬라이스로 들어가게됨 #@fred[2,1,0] 또는 ($fred[2], $fred[1], $fred[0]), 또는 (9,8,7) 과 동일하다. for($i = ..
펄에는 배열이란것이 있습니다.(거의 모든 언어가 다 있지만..) 배열이란 것은 연속된 메모리 공간에 변수를 담아두는 겁니다. 예를 들어 $a $b 를 선언하면 연속된 메모리 공간이 아닌 멀리 떨어진 메모리 공간에 저장될 수 있습니다. 하지만 배열로 선언하면 연속적으로 붙어 있게 되죠. 펄에서 배열을 사용하는 방법은 @arr = () 처럼 사용하게 됩니다. @는 배열이라는 일종의 표시에요 1 2 3 4 5 6 7 8 9 10 @words = ("camel", "llama", "ap"); #배열은 위와 같이 @로 시작하고 값을 넣게 된다. #push, pop으로 값을 넣을 수도 있다. #만약 인용부호를 안두고 작성하는 방법은 @word2 = qw(camel llama ap); #로 하면 된다고 한다. #그리..
펄에도 다른 언어와 마찬가지로 주석이 있죠! 주석은 프로그램적으로 실행되는 것이 아니라 일종의 설명을 써놓는 부분입니다. 2가지 방법이 있습니다 1줄 주석과 여러줄 주석! 한줄 주석은 # 으로 시작해요! 여러줄 주석은 =pod =cut 으로 진행됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 =pod 이것은 펄의 여러 줄 주석이다. 펄은.. 그냥 Larry라는 사람이 쉽게 간편하게 사용할 수 있게 스스로 만든 언어이다. 귀차니즘이 많은 프로그래머였음 펄은 함수 혹은 클래스와 같은 루틴으로 실행되는 것이 아니라, 파일에 있는 Perl문 전체가 실행될 하나의 큰 루틴이다. 즉, C에서와 같은 main루틴은 없다. Perl은 인터프리터 + 컴파일러 라고 한다. 인터프리..
펄에도 역시 조건문(if)문이 있습니다! 다른 언어랑 비슷해요 if~else로 구성되어 집니다! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 print("당신의 이름은? \n"); $name = ; #사용자가 입력하는 방법이다. print $name; #근데 $name의 값은 종료하는 뉴라인 하나를 갖는다. -> aab라고 입력하면 aab\n이 된다.이것을 제거 하기 위해 chomp함수를 사용한다. #chomp함수는 스칼라 변수를 그것의 유일한 인수로 받아서 만약 존재한다면 변수의 문자열 값에서 뒤에 오는 뉴라인을 제거한다. chomp($name); print("Hello $name! \n"); #이런식으로 출력이 가능하다. if($name eq "soojin"){ #eq는 문자..
너무 오랜만에 펄 정리를 쓰네여 지난 번 까지 펄을 이클립스, 아파치랑 연동했는데요 이제 아파치 서버를 구동시켜서 펄 웹페이지를 띄어보겠습니다! 먼저 아파치를 실행해야겠죠?? 실행합니다. 그리고 이제 아파치 폴더에 다른 폴더를 하나 만듭니다. 전 아래 사진처럼 했어요 c드라이브 -> Apache24 -> htdocs 안에 perl 폴더를 만들었습니다. 자 그럼 아래 소스를 기반으로 펄 파일을 생성합니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #!C:\Perl64\bin\perl.exe @array = (); for($i = 0 ; $i
call by reference와 call by value는 그림으로 보면 이렇게 된다 call by value는 값만 복사가 되기 때문에 원본의 값이 변경이 되지 않는다. call by reference는 주소값이 전달이 되기 때문에 두 번째 참조 변수가 해당 객체의 값을 변경하면 첫 번째 참조 변수가 가르키는 객체의 값도 변경이 된다. 다음 예제를 봐보자 int a = 5; int b = 10; add(a, b); //call by value System.out.println(a+", "+b); 단순히 이렇게 값만 전달해주면 add메소드에서 a를 + 5하고, b를 +10 해도 원본의 a, b의 값은 변하지 않는다. 즉 add 연산이 끝나고 프린트를 해도 a = 5, b = 10이 출력이 된다. 하지만..
Map 컬렉션은 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있다. 여기서 키와 값은 모두 객체이다. 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. 밑은 Map 컬렉션에서 공통적으로 사용 가능한 Map 인터페이스의 메소드들이다. 기능 메소드 설명 객체 추가 V put(K key, V value) 주어진 키와 값을 추가, 저장되면 값을 리턴 객체 검색 boolean containsKey(Object key) 주어진 키가 있는지 여부 b..
1 2 3 4 5 6 7 8 9 10 일반적인 2차원 배열 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private void test01(){ int[][] arr = new int[5][5]; boolean b = false; int number = 1; for(int i = 0 ; i
자바로 간단한 로또 프로그램을 만든다. 난수로 6개의 배열에 값을 저장하고 중복을 체크도 한다. (이 부분은 값을 적게해서 비교를 빠르게 해보는 예제이다. 실제로 해보려면 로또 숫자만큼 6을 변경해주면 된다 45인가..?) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public void start() { int[] lotto = new int[6]; boolean check = false; int cnt = 0; Random rand = new Random(); while(cnt
자바는 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장(wrapper) 객체라고 하는데 그이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다. 포장 클래스는 java.lang 패키지에 포함되어 있는데 다음과 같이 기본 타입에 대응되는 클래스들이 있다. 기본 타입 포장 클래스 byte Byte char Character short Short int Integer long Long float Float double Double boolean Boolean 박싱(boxing)과 언박싱(unboxing)기본 타입의 값을 포장 객체로 만드는 과정을 박싱(boxing)이라 하고 반대로 포장 객체에서..