Algoritmos e Estruturas de dados Flashcards
Estruturas de sequenciação, decisão e repetição. Modularização. Estruturas elementares de dados. Implementação em uma linguagem de alto nível.
Quando e por quem o C/C++ foi inventado?
A historia começa pela linguagem BCPL, desenvolvida por Martin Richards, a qual influenciou a linguagem B, inventada por Ken Thompson e esta levou ao desenvolvimento do C que teve inicio nos anos 70 por Dennis Ritchie. Em 1980 Bjarne Stroustrup acrescentou várias extensões à linguagem. Em 1983, o nome foi alterado para C++.
O que é um interpretador de comandos?
O interpretador lê o codigo fonte linha a linha, executando uma instrução por vez. Este sempre estará presente na execução do programa.
O que é um compilador?
Um compilador lê o programa inteiro e converte-o em um código executavel. Uma vez compilado o programa poderá ser executado sem a presença do compilador.
Qual a diferença entre tempo de compilação e tempo de execução?
Os termos estão ligados à erros sobre os eventos que acontecem durante a compilação ou execução do codigo-fonte, respectivamente.
O que é uma função em C?
É uma sub-rotina que contém uma ou mais declarações e realiza uma ou mais tarefas. Convencionou-se que uma função sempre possui parenteses, ex: somar().
Escreva o código abaixo utilizando uma função separada da função main.
#include
int main ()
{
printf (“meu primeiro programa em C!! \n”);
return 0;
}
include
void hello()
{
printf (“meu primeiro programa em C!! \n”);
}
int main () { hello(); return 0; }
O que é um argumento de uma função?
Como é chamada uma função que utiliza argumentos?
É um valor que é passado para a função no momento em que ela é chamada. São chamadas funções parametrizadas.
Escreva uma função que receba o valor 100 e calcule seu valor quadrático (1002)
include <cstdio></cstdio>
int square(int x)
{
printf (“%d elevado ao quadrado eh %d\n”, x, x * x);
}
int main () { int num = 100; square(num); return 0; }
Retorno de valores, escreva uma rotina mull() que calcule o produto entre 5 e 8 e retorne o valor para que a função main o exiba.
include <cstdio></cstdio>
int produto(int a, int b) { return(a \* b); }
int main () { int num; num = produto(5 , 8); printf ("O produto de 5 e 8 eh %d\n", num); return 0; }
O que deve ser observado sobre funções que retornam valores?
a variável que recebe o valor de retorno deve ser do mesmo tipo que o valor retornado. Quando não especificado, a linguagem C assume que é int.
Quais as regras para nomes de funções ou identificadores?
Devem começar com letras (a,A,…,z,Z) .
Em C, um identificador pode possuir até 32 caracteres.
A linguagem C é CaseSensitive.
Quais os 5 tipos de dados utilizados em C?
A linguagem C não possui cadeia de caracteres String. Para isso é utilizado um vetor de caracteres.
char - 8bits
int - 16bits
float - 32bits
double - 64bits
void - sem retorno
Quais são os modificadores de tipo utilizados em C e qual a função de cada um?
signed - extende a valores negativos e positivos
unsigned - limita a valores positivos
long - extende a capacidade de armezanamento
short - reduz a capacidade de armazenamento
O que são variáveis globais?
são declaradas fora do escopo das funções e podem ser acessadas por todas as funções do programa.
o que são variaveis locais?
são declaradas dentro de um bloco e estão restritas somente a esse bloco.
Como se define uma constante em C?
a definição é feita no inicio do programa e diz ao pre-compilador para substituir um nome por um valor
#define constante 8
O que são códigos de barra invertida?
são constantes especiais para uso específico:
\b - retrocesso
\n - Nova linha
\r - retorno de carro
\t - tabulação horizontal
\v - tabulação vertical
\a - sinal sonoro
" - imprime “
|’ - imprime ‘
O que são e quais são os operadores em C?
[Consulta]
É um simbolo que diz ao compilador para realizar manipulações matemáticas ou lógicas. São divididos em três classes:
aritméticos: +, =, *, /, %,
relacionais: >, >=, <, <=, ==, !=,
lógicos: &&, ||, !
Operadores de Endereço:
& - endereço de uma variavel
* - conteudo do endereço
são utilizados com pointers para acesso a endereços de memória:
int var, *x; //declara a variavel var e o ponteiro *x
x = &var; // x recebe o endereço de var
var = *x; //var recebe o conteudo do endereço *x
O que são expressões em C?
É a combinação de operadores, constantes e variáveis.
O que se afirma em C quanto ao uso de parenteses e espaçamentos?
o uso de parenteses redundantes ou adicionais não causa erros ou diminuit a velocidade de execução da expressão. É interessante utilizá-los para facilitar a leitura do codigo.
Qual o esqueleto (estrutura) de um programa em C?
#include <cstdio></cstdio> //declara de bibliotecas e constantes
int produto; //declara variaveis globais
void func(); //declara protótipos de funções
- *int main ()** //declaração obrigatoria da função main
- *{**
int x; // declaracao de variaveis locais
// comandos da funcao principal
return 0;
}
//funções do programador
Regra de comandos e blocos
todo comando é finalizado com um ponto-virgula ;
todo bloco de comandos é definido entre chaves {}
Especificações de conversão em C utlizando scanf() ou prinf()
%d - Número decimal inteiro (int).
- *%i** - equivalente a %d.
- *%u** - Número decimal natural (unsigned int), ou seja, sem sinal.
- *%o** - Número inteiro representado na base octal.
- *%x** - Número inteiro representado na base hexadecimal.
- *%X** - Hexadecimal com letras maiúsculas
- *%f** - Número decimal de ponto flutuante.
- *%e** - Número em notação científica,
- *%E** - Número em notação científica com o “e”maiúsculo
- *%g** - Escolhe automaticamente o mais apropriado entre %f e %e.
- *%p** - Ponteiro: exibe o endereço de memória do ponteiro em notação hexadecimal.
- *%c** - Caractere: imprime o caractere que tem o código ASCII correspondente ao valor dado.
- *%s** - Sequência de caracteres (string, em inglês).
- *%%** - Imprime um %
Como é utilizada a declaração if-else
if (condição 1) {
comandos;
}
else if (condição 2) {
comandos;
}
else {
comandos;
}
Escreva um programa que receba duas variaveis inteiras e apresente o maior valor.
include
int a,b;
int maior(int x, int y) { if (x \> y) return x; else if (y \> x) return y; else return 0; }
int main () { int resultado; printf("Digite os numeros para comparar, separados por espaco\n"); scanf("%d%d", &a, &b); resultado = maior(a,b); if (resultado == 0) printf ("Os valores sao iguais"); else printf("O maior numero eh %d\n", resultado); return 0; }
Escreva um algoritmo que leia um valor real informado pelo o usuário e retorne “positivo” se > 0, “negativo” se < 0, ou “neutro” se = 0;
include <cstdio></cstdio>
float a;
int main () { printf("Digite um valor real\n"); scanf("%f", &a); if (a \> 0) printf ("positivo"); else if ( a \< 0) printf("negativo"); else printf("neutro"); return 0; }
escreva um algoritmo que receba um par de coordenadas e informe em qual quadrante está o ponto referente as coordenadas.
float a,b;
int CalculaQuadrante(int x, int y) { if (a \> 0) if (b \> 0) return 1; else return 4; else if ( a \< 0) if (b \> 0) return 2; else return 3; else return 0; }
int main () { printf("Digite um par de coordenadas\n"); scanf("%f,%f", &a, &b); int result = CalculaQuadrante(a, b); if (result == 1) printf("O ponto esta no primeiro quadrante"); else if (result == 2) printf("O ponto esta no segundo quadrante"); else if (result == 3) printf("O ponto esta no terceiro quadrante"); else if (result == 4) printf("O ponto esta no quarto quadrante"); else printf("O ponto esta sobre algum eixo"); return 0; }
Como é utilizada a declaração switch?
switch (variavel) {
caso cte1:
comandos;
break;
caso cten:
comandos;
break;
default:
comandos;
}
Escreva um programa que receba um valor entre 1 e 7 e apresente o dia da semana correspondente.
include <cstdio></cstdio>
int dia=0;
int main() { printf("Informe um valor entre 1 e 7\n"); scanf("%d", &dia); switch (dia) { case 1: printf("domingo"); break; case 2: printf("segunda-feira"); break; case 3: printf("terça-feira"); break; case 4: printf("quarta-feira"); break; case 5: printf("quinta-feira"); break; case 6: printf("sexta-feira"); break; case 7: printf("sabado"); break; default: printf("dia invalido"); } }
Como é utilizada a declaração for
for (valor inicial; valor final; incremento){
comandos;
}
Fazer uma rotina para contar as ocorrencias da letra ‘a’ em uma string.
#include #include
char dig;
int cont=0;
int main() { printf("Vou contar quantas vezes vc digitou a letra \"a\", digite algo e pressione \"enter\". "); printf("Digite \"Q\" para sair\n"); for( ; ; ) { scanf("%s", &dig); if (dig == 'Q') break; else if (dig == 'a') cont++; } printf("voce digitou a letra a %d ", cont); printf(" vezes"); return 0; }
Como é utlizada a declaração while?
while (condição) {
comandos;
}
ou
do {
comandos;
} while (condição);