Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti
Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para resolver um problema. Um mesmo problema pode ser solucionado por algoritmos diferentes. Um programa é a definição desses passos por meios de comandos em uma determinadalinguagem. Aula 01. Programação Básica
Compilador É uma ferramenta que traduz um código (fonte) escrito em uma linguagem de programação mais familiar aos humanos, para um outro código (binário) em linguagem de máquina, criando um arquivo executável. Um IDE não é um compilador, ele utiliza o compilador. Um compilador não executa seu programa, ele somente cria um executável. Além de definir erros de compilação, o compilador também mostra mensagens de aviso (preste atenção nelas!). Aula 01. Programação Básica
Variáveis Variáveis são espaços reservados na memória para guardar para guardar dados. O nome de uma variável deve seguir algumas regras e ajudar no compreendimento do programa. Uma variável deve ter um tipo de dado associado a ela (integer, character, float, boolean). A mudança de um tipo para outro é chamada de casting. A declaração de uma variável normalmente é feita no começo do programa (embora, em algumas linguagens de programação, podendo ser feita no meio). Aula 01. Programação Básica
Variáveis Variáveis são espaços reservados na memória para guardar para guardar dados. Python n = 0 c = c P ascal var n : integer; var c : char; C int n; char c; Fortran integer :: n character :: c Aula 01. Programação Básica
Entrada esaída É a maneira como o programa e o usuário se comunicam. A entrada e saída básica de um computador é feita através de mensagens, sem utilização do mouse ou qualquer interface gráfica. Normalmente são utilizadas funções específicas de leitura e escrita de variáveis. Aula 01. Programação Básica
Entrada esaída É a maneira como o programa e o usuário se comunicam. Python n = input() print(n) P ascal readln(n); writeln(n); C scanf(" d", &n); printf(" d", n); Fortran read(*,*) n write(*,*) n Aula 01. Programação Básica
Expressões São operações envolvendo os manipulações nos valores das variáveis. A atribuição é a forma como colocamos um valor na memória alocada para determinada variável. Além de atribuir um valor, podemos realizar diversas operações sobre eles como somas, multiplicações e comparações. Aula 01. Programação Básica
Expressões São operações envolvendo os manipulações nos valores das variáveis. Python i = 10 c = c P ascal i := 10; c := c ; C i = 10; c = c ; Fortran i = 10 c = "c" Aula 01. Programação Básica
Condicional É um comando que realiza ações de acordo com determinadas condições. A ação condicional é um dos principais recursos da programação e é normalmente ativada pelo comando if. A condição do if deve resultar numa variável lógica, podendo ser, portanto, qualquer expressão lógica ou uma variável lógica, caso elaexistir. Associado ao comando if, podemos ter um conjunto de ações a serem executadas no caso de as condições não serem verdadeiras, normalmente ativado pelo comando else. Aula 01. Programação Básica
Condicional É um comando que realiza ações de acordo com determinadas condições. Python if <condição>: <ações> Pascal if (<condição>) then begin <ações>; end; C if (<condição>) { <ações>; Fortran if (<condição>) then <ações> end if Aula 01. Programação Básica
Repetição com Contador Repete ações e comandos um número de determinado de vezes, dado por uma variável contadora. A cada repetição o valor do contador é modificado. O contador pode ser modificado pelas ações (C e Pascal) ou não pode ser modificado até o fim da repetição (Fortran). Modificando o contador dentro da repetição corremos o risco de criar um loop infinito ou algum outro tipo de erro. Normalmente o contador incrementa 1 em cada passo, mas é possível incrementá-lo com outros valores. Aula 01. Programação Básica
Repetição com Contador Repete ações e comandos um número de determinado de vezes, dado por uma variável contadora. Python for i in range (10): <ações> Pascal for i := 0 to 9 do begin <ações>; end; C for (i=0; i<10; i++) { <ações>; Fortran do i = 0, 10 <ações> end do Aula 01. Programação Básica
Repetição com Condição Repete ações e comandos enquanto uma determinada condição é satisfeita. As variáveis utilizadas na condição (se existirem) podem e devem ser livremente modificadas pelas ações da repetição. Se a condição não for satisfeita antes do loop, todas as ações serão ignoradas na execução. Se a condição sempre for satisfeita, todas as ações serão executadas um número infinito vezes (loopinfinito). é sempre possível reescrever uma repetição com contador utilizando uma repetição com condição. Aula 01. Programação Básica
Repetição com Condição Repete ações e comandos enquanto uma determinada condição é satisfeita. Python while i == 10: <ações> Pascal while (i = 10) do begin <ações>; end; C while (n == 10) { <ações>; Fortran do while (x == 10) <ações> end do Aula 01. Programação Básica
Vetores É uma sequência de variáveis do mesmo tipo que pode ser acessado através de um índice. Normalmente é armazenado de forma sequencial na memória e seu tamanho deve ser fixo e dada naentrada. Os índices de um vetor são dados por inteiros e podem começar do valor 0 (C), do valor 1 (Pascal) ou de um valor definido pelo usuário (Fortran). Todos os elementos devem ser do mesmo tipo e o tamanho do vetor não pode ser modificado no meio do programa. Uma repetição com contador é normalmente utilizada para percorrer todos os elementos do vetor, sendo o contador, o índice do vetor. Aula 01. Programação Básica
Vetores É uma sequência de variáveis do mesmo tipo que pode ser acessado através de um índice. Python v = [] Pascal i : Array[1..100] of integer; C int n[100]; Fortran integer, dimension(100) :: x Aula 01. Programação Básica
Exercício Faça um programa em C que dado um vetor v com n números inteiros, ordene seus elementos de forma crescente. Assuma que o vetor já foilido. Aula 01. Programação Básica
Exercício : Solução Faça um programa em C que dado um vetor v com n números inteiros, ordene seus elementos de forma crescente. Assuma que o vetor já foilido. for (int i = 0; i < n-1; i++) { menor = i; for (int j = i+1; j < n; j++) { if (v[j] < v[menor]) menor = j; aux = v[i]; v[i] = v[menor]; v[menor] = aux; Aula 01. Programação Básica
Programação de Computadores II 2. A Linguagem C 2019.1
C vs Pascal Possuem a mesma origem: ALGOL. São linguagens de programação estruturada. São da mesma época: Pascal de 1969 e C de 1972. Os sistemas UNIX foram feitos em C e os sistema da Apple foram feitos empascal. Hoje em dia C é muito mais usado.
C vs Python Python é uma linguagem muito mais nova, de 1991. C é muito mais eficiente, os programas rodam mais rápido. Seu objetivo é melhorar a compreensão do código e gerar códigos menores. Python possui muitas bibliotecas prontas, C precisa que muita coisa seja programada do zero. Python é bom para prototipagem e integração de componentes
Hello World /* Hello World program */ #include <stdio.h> int main () { printf ("Hello World.\n"); return 0;
Definição de Programa Um programa em C começa após o cabeçalho int main() { e termina ao encontrar o return. /* Hello World program */ #include <stdio.h> int main () { printf ("Hello World.\n"); return 0;
Comentário Um comentário em C pode ser delimitado por /* e */ ou conter somente uma linha começando com //. /* Hello World program */ #include <stdio.h> int main () { printf ("Hello World.\n"); return 0;
Comentário Um comentário em C pode ser delimitado por /* e */ ou conter somente uma linha começando com //. // Hello World program #include <stdio.h> int main () { printf ("Hello World.\n"); return 0;
Include Algumas funções de C estão declaradas em bibliotecas e para serem usadas essas bibliotecas devem ser incluídas no começo do programa usando #include < >. /* Hello World program */ #include <stdio.h> int main () { printf ("Hello World.\n"); return 0;
argc eargv Ao executarmos o programa em linha de comando podemos passar valores extras para o programa, como parâmetros da função main(). /* Hello World program */ #include <stdio.h> int main (int argc, char*argv[]) { printf ("Hello World.\n"); return 0;
argc eargv Ao executarmos o programa em linha de comando podemos passar valores extras para o programa, como parâmetros da função main(). O número de parâmetros passados é guardado na variável inteira argc. Os parâmetros são guardados em ordem no vetor de strings argv. # include <stdio.h> int main( int argc, char * argv [] ) { printf( "argc = %d\ n", argc ); for( int i = 0; i < argc; ++i ) { printf( "argv[ %d ] = %s\ n", i, argv[ i ] ); ~raphaelmachado$ gcc teste-input.c -o teste-input ~raphaelmachado$./teste-input argc = 1 argv[ 0 ] =./teste-input ~raphaelmachado$./teste-input xyx 43 argc = 3 argv[ 0 ] =./teste-input argv[ 1 ] = xyx argv[ 2 ] = 43
Chaves As chaves { e são os grandes delimitadores de escopo em C. Indicam o começo e fim do programa, de funções e procedimentos, de repetições e condições. /* Hello World program */ #include <stdio.h> int main (int argc, char*argv[]) { printf ("Hello World.\n"); return 0;
Entrada esaída As funções de entrada e saída em C estão localizadas na biblioteca stdio.h (Standart In and Out). Assim, é preciso acrescentar #include <stdio.h> ao começo do programa, para usá-las. /* Hello World program */ #include <stdio.h> int main (int argc, char*argv[]) { printf ("Hello World.\n"); return 0;
Entrada esaída A função básica de saída de dados no C é a printf. Recebe, como entrada, uma string e, opcionalmente, uma lista de variáveis a ser impressa (ver nos próximos slides). /* Hello World program */ #include <stdio.h> int main (int argc, char*argv[]) { printf ("Hello World.\n"); return 0;
Entrada esaída printf() É a forma de imprimirmos valores na tela. O texto deve estar entre aspas e cada variável deve ser representada pelo seu código. As variáveis devem vir depois, separadas por vírgula namesma ordem. #include <stdio.h> int main () { int i, j; float x; printf ("Os valores sao: return 0; d d f\n", i, j, x); Para pular a linha na impressão deve-se usar o \n.
Entrada esaída scanf() É a forma de lermos valores. Cada variável deve estar representada pelo seu código entre aspas e seus nomes devem vir depois, separados por vírgula na mesma ordem. #include <stdio.h> int main () { int i, j; char c; printf ("Digite 2 numeros e um caracter: "); scanf (" d d c", &i, &j, &c); printf ("Os valores sao: d d c\n", i, j, c); return 0; Antes de cada variável é necessária colocar o símbolo &.
Variáveis inteiro 4 bytes short n; %hi inteiro 4 bytes int n; %d inteiro 8 bytes long n; %li inteiro 16 bytes long long n; %lli real 4 bytes float f; %f real 8 bytes double f; %f caracter 1 bytes char c; %c unsigned Todos os tipos inteiros podem ser declarados como unsigned, forçando o valor a ser sempre positivo, assim, dobrando o limite máximo da variável.
Variáveis Boolean Não existe o tipo boolean em C. Normalmente usamos um inteiro, onde 1 representa verdadeiro e 0 representa falso. String Não existe o tipo string em C, um string é um vetor de caracteres que pode ser declarado com chaves (char str[100];) ou asterisco (char* str;).
Expressões adição subtração multiplicação divisão resto atribuição incremento decremento a + b a - b a * b a / b a % b a = b a + = b a - = b Incrementar Ao incrementar 1 em C podemos fazer: i = i+1 ou i++ Decrementar Ao decrementar 1 em C podemos fazer: i = i-1 ou i
Incrementação Em C podemos incrementar de duas formas: i++ ou ++i i++ retorna, depois incrementa. // x recebe v[0] // i recebe 1 i = 0; x = v[i++] ++i incrementa, depois retorna. // x recebe v[1] // i recebe 1 i = 0; x = v[++i]
Operadores lógicos e a && b ou a b não!b igual a = = b diferente a!= b menor a < b maior a > b menor e igual a < = b maior e igual a > = b Atribuição e Comparação Em C = é atribuição e == é comparação de igualdade.
Condicional if O condicional deve ter a condição entre parênteses e as ações entre chaves. O if pode vir acompanhado por um else, com ações também entre chaves. Um if ou else sem chave realiza somente uma ação. #include <stdio.h> int main () { int i; if (i > 10) printf("e maior que 10\n"); else printf("nao e maior que 10\n"); if (i == 100) { printf ("E igual a 100.\n"); i = 0; printf ("O valor foi zerado.\n"); return 0;
Exemplo 1 Verifica se um número está entre 0 e 100. #include <stdio.h> int main() { int num; printf ("Digite o numero: "); scanf (" d", &num); if (num >=0 && num <= 100) printf ("Sim\n"); else printf ("Não\n"); return 0;
Exemplo 2 Verifica se um número é par ou não. #include <stdio.h> int main() { int num; printf ("Digite o numero: "); scanf (" % d", &num); if (num %2 == 0) printf ("Sim\n"); else printf ("Nao\n"); return 0;